Date & Time
20:00 UTC Wednesday 6th July 2016
GoToMeeting Details
Goals
- To progress the SNOMED CT Template syntax
Attendees
- Chair: Linda Bird
- Project Group: Michael Lawley, Daniel Karlsson, Alejandro Lopez Osornio, Ed Cheetham, Rob Hausam, Harold Solbrig
Apologies
Agenda and Meeting Notes
Description | Owner | Notes |
---|---|---|
Welcome, introductions and apologies | Linda Bird | |
Agenda review | Linda Bird | Review agenda for today's meeting |
Recap of last meeting | Linda Bird | STEP 1 - Convert SNOMED CT Expression Template into FHIR Structure Definition (for use as Target of Mapping) CONDITION RESOURCE
[[ [1..1] @findingWithExplicitContext ]]: #[1..2] @RGa { 246090004 |Associated finding| = ([[ [0..1] @associatedFinding ]]: #[0..1] @RGb { 246112005 |Severity| = [[ [0..1] @severity]], 363698007 |Finding site| = [[ [0..1] @findingSite]] }) 408732007 |Subject relationship context| = 410604004 |Subject of record|, 408731000 |Temporal context| = [[ [1..1] @temporalContext ]], 408729009 |Finding context| = [[ [1..1] @findingContext ]] }
SCT_ConditionTemplate: SNOMEDCTExpressionTemplate findingWithExplicitContext [1]: Coding group [1..2]: RelationshipGroupElement associatedFinding [1]: Coding group [0..1]: RelationshipGroupElement severity [0..1]: Coding findingSite [0..1]: Coding subjectRelationship [1]: Coding = 410604004 |Subject of record| temporalContext [1]: Coding findingContext [1]: Coding STEP 2 - Define Mapping Rules from Source Structure (FHIR Resource) to Target Structure (SNOMED CT Expression Template) SOURCE STRUCTURE Condition: Resource code [1]: CodeableConcept (coding [1..*] - system, version, code, display, userSelected [0..1] - text [0..1]) category [0..1]: CodeableConcept (values: complaint | symptom | finding | diagnosis) clinicalStatus [0..1]: code (values: active | relapse | remission | resolved) verificationStatus [1]: code (values: provisional | differential | confirmed | refuted | entered-in-error | unknown) severity [0..1]: CodeableConcept bodySite [0..1]: CodeableConcept TARGET STRUCTURE SCT_ConditionTemplate: SNOMEDCTExpressionTemplate findingWithExplicitContext [1]: CodeableConcept group [1..2]: RelationshipGroupElement associatedFinding [1]: CodeableConcept group [0..1]: RelationshipGroupElement severity [0..1]: CodeableConcept findingSite [0..1]: CodeableConcept subjectRelationship [1]: CodeableConcept = 410604004 |Subject of record| temporalContext [1]: CodeableConcept findingContext [1]: CodeableConcept RULES rule_1: for source.code as code where verificationStatus != "entered-in-error" then { rule_1a: for code where code in memberOf("http://snomed.info/sct?fhir_vs=isa/404684003") make target.findingWithExplicitContext = 413350009 |Finding with explicit context|, target.group as groupA then { rule_1aa: for code make groupA.associatedFinding = code rule_1ab: for code where severity in memberOf("http://snomed.info/sct?fhir_vs=isa/272141005") OR findingSite in memberOf("http://snomed.info/sct?fhir_vs=isa/123037004) make groupA.group as groupB then { rule_1aba: for source.severity as sev where severity in memberOf("http://snomed.info/sct?fhir_vs=isa/272141005") make groupB.severity = sev rule_1abb: for source.bodySite as bs where findingSite in memberOf("http://snomed.info/sct?fhir_vs=isa/123037004) make groupB.findingSite = bs } rule_1ac: for code make groupA.subjectRelationship = 410604004 |Subject of record| rule_1ad: for code make groupA.temporalContext = 410512000 |Current or specified time| rule_1ae: for source.clinicalStatus as cs, source.verificationStatus as vs make groupA.findingContext as fc then { rule_1aea: for vs make fc.code = translate ('status-to-findingContext-map', cs, vs) rule_1aeb: for vs make fc.system = "http://snomed.info/" rule_1aec: for vs make fc.display = "http://snomed.info/sct?lookupPT(coding.code, 900000000000509007) } } rule_1b: for code where code in memberOf("http://snomed.info/sct?fhir_vs=isa/413350009 ") make target.findingWithExplicitContext = code then { rule_1ba: } } |
Outstanding question - Q1 | Linda Bird | Do we need to support naming of SNOMED CT Relationship Groups within the SNOMED CT Expression Template syntax? For example: [[ .... ]]: @RelationshipGroupName { .......}
|
Outstanding question - Q2 | Linda Bird | What syntax should we use to define cardinality constraints?
|
Outstanding question - Q3 | Linda Bird | What is the expected behaviour when a cardinality constraint in an Expression Template is not met? |
Outstanding question - Q4 | Linda Bird | Are there any other template requirements that we haven't yet considered for other use cases (e.g. for concept authoring) |
Confirm next meeting date/time | Linda Bird | Next meeting to be held at 20:00 UTC on Wednesday 20th July |
Meeting Files
2 Comments
Michael Lawley
Regarding the descendantOf (404684003 |Clinical finding|) style functions. These can currently be done using the fluentpath function memberOf and an implicit SNOMED CT ValueSet:
For example, memberOf("http://snomed.info/sct?fhir_vs=isa/404684003") would be the equivalent of << 404684003 |Clinical finding| – if it was important to exclude the "self" bit then you'd have to add in an extra clause to exclude that case.
For the preferredTerm (en-us, coding.code) function, I've raised a question about invoking $lookup from fluentpath, but I feel the need to point out that the SNOMED CT notion of preferredTerm is relative to a language reference set, not an ISO 639-x language code.
Linda Bird
Thanks for the information about using the memberOf function for subsumption testing. Where can I find a specification of what functions and URIs patterns (after the "?") are allowed?
With respect to the preferredTerm .... yes I am very aware that preferred terms are defined in each language refset. I just didn't have time to look up the language refset id at the time. I have corrected this now, with a 'made-up' syntax, until an official one becomes available.
Thanks again!