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:
Apologies
Observers
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]: CodeableConcept RGa [1..2]: RelationshipGroupElement associatedFinding [1]: CodeableConcept RGb [0..1]: RelationshipGroupElement severity [0..1]: CodeableConcept findingSite [0..1]: CodeableConcept subjectRelationship [1]: CodeableConcept = 410604004 |Subject of record| temporalContext [1]: CodeableConcept findingContext [1]: CodeableConcept 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..*]: CodeableConcept TARGET STRUCTURE SCT_ConditionTemplate: SNOMEDCTExpressionTemplate findingWithExplicitContext [1]: CodeableConcept RGa [1..2]: RelationshipGroupElement associatedFinding [1]: CodeableConcept RGaa [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 descendantsOf (404684003 |Clinical finding|) make target.findingWithExplicitContext = 413350009 |Finding with explicit context|, target.RGa as rga then { rule_1aa: for code make rga.associatedFinding = code rule_1ab: for code where severity in descendantsOf (272141005 | Severities|) OR findingSite in descendantsOf (123037004 |Body structure|) make rga.RGb as rgb then { rule_1aba: for source.severity as sev where severity in descendantsOf (272141005 | Severities|) make rgb.severity = sev rule_1abb: for source.bodySite as bs where findingSite in descendantsOf (123037004 |Body structure|) makergb.findingSite = bs } rule_1ac: for code make rga.subjectRelationship = 410604004 |Subject of record| rule_1ad: for code make rga.temporalContext = 410512000 |Current or specified time| rule_1ae: for source.clinicalStatus as cs, source.verificationStatus as vs make rga.findingContext as fc then { rule_1aea: for vs make fc.coding as coding then { rule_1aeaa: for vs make coding.code = translate ((clinicalStatus,verificationStatus), 'status-to-findingContext-map', code) rule_1aeab: for vs make code.system = "http://snomed.info/" rule_1aeac: for vs make code.display = preferredTerm (en-us, coding.code) } } } rule_1b: for code where code in descendantsOf (413350009 |Finding with explicit context|) 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
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:
Apologies
Observers
Agenda and Meeting Notes
Do we need to support naming of SNOMED CT Relationship Groups within the SNOMED CT Expression Template syntax? For example: [[ .... ]]: @RelationshipGroupName { .......}
- Note: This requirement comes from the need for a stable name for each relationshipgroup, in the FHIR Structure Definition used to represent the SNOMED Expression Template that is the target of a mapping (examples above).
- A possible alternative would be to not include relationship group names in the template, and instead rely on a reproducible approach to automatically generating these names (e.g. RG1, RG1.1, RG1.2, RG2, RG2.1). However, because these names are used in the mapping code, we would need to ensure that they are absolutely stable - so given this, is this approach appropriate?
Description | Owner | Notes |
---|---|---|
Welcome, introductions and apologies | Linda Bird | |
Agenda review | Linda Bird | Review agenda for today's meeting |
Recap of last week's 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]: CodeableConcept RGa [1..2]: RelationshipGroupElement associatedFinding [1]: CodeableConcept RGb [0..1]: RelationshipGroupElement severity [0..1]: CodeableConcept findingSite [0..1]: CodeableConcept subjectRelationship [1]: CodeableConcept = 410604004 |Subject of record| temporalContext [1]: CodeableConcept findingContext [1]: CodeableConcept 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..*]: CodeableConcept TARGET STRUCTURE SCT_ConditionTemplate: SNOMEDCTExpressionTemplate findingWithExplicitContext [1]: CodeableConcept RGa [1..2]: RelationshipGroupElement associatedFinding [1]: CodeableConcept RGaa [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 descendantsOf (404684003 |Clinical finding|) make target.findingWithExplicitContext = 413350009 |Finding with explicit context|, target.RGa as rga then { rule_1aa: for code make rga.associatedFinding = code rule_1ab: for code where severity in descendantsOf (272141005 | Severities|) OR findingSite in descendantsOf (123037004 |Body structure|) make rga.RGb as rgb then { rule_1aba: for source.severity as sev where severity in descendantsOf (272141005 | Severities|) make rgb.severity = sev rule_1abb: for source.bodySite as bs where findingSite in descendantsOf (123037004 |Body structure|) makergb.findingSite = bs } rule_1ac: for code make rga.subjectRelationship = 410604004 |Subject of record| rule_1ad: for code make rga.temporalContext = 410512000 |Current or specified time| rule_1ae: for source.clinicalStatus as cs, source.verificationStatus as vs make rga.findingContext as fc then { rule_1aea: for vs make fc.coding as coding then { rule_1aeaa: for vs make coding.code = translate ((clinicalStatus,verificationStatus), 'status-to-findingContext-map', code) rule_1aeab: for vs make code.system = "http://snomed.info/" rule_1aeac: for vs make code.display = preferredTerm (en-us, coding.code) } } } rule_1b: for code where code in descendantsOf (413350009 |Finding with explicit context|) make target.findingWithExplicitContext = code then { rule_1ba: } } |
Outstanding questions - Q1 | Linda Bird | |
Confirm next meeting date/time | Linda Bird | Next meeting to be held at 20:00 UTC on Wednesday 20th July |
Meeting Files