Source | ch.fhir.ig.ch-rad-order#1.0.0:CH RAD-Order (R4) (v4.0.1) |
resourceType | StructureMap |
id | RadOrderQrToBundle |
canonical | http://fhir.ch/ig/ch-rad-order/StructureMap/RadOrderQrToBundle |
version | 1.0.0 |
status | draft |
publisher | HL7 Switzerland |
name | RadOrderQrToBundle |
date | 2022-02-22T11:41:58+01:00 |
description | Radiologoy QuestionnaireResponse to Bundle |
copyright | CC-BY-SA-4.0 |
jurisdictions | ch |
Usages | (none) |
/// url = 'http://fhir.ch/ig/ch-rad-order/StructureMap/RadOrderQrToBundle' /// name = 'RadOrderQrToBundle' /// status = 'draft' uses " http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse " alias QuestionnaireResponse as source uses " http://hl7.org/fhir/StructureDefinition/Bundle " alias Bundle as target uses " http://hl7.org/fhir/StructureDefinition/Patient " alias Patient as target uses " http://hl7.org/fhir/StructureDefinition/Organization " alias Organization as target uses " http://hl7.org/fhir/StructureDefinition/Practitioner " alias Practitioner as target uses " http://hl7.org/fhir/StructureDefinition/PractitionerRole " alias PractitionerRole as target uses " http://hl7.org/fhir/StructureDefinition/ServiceRequest " alias ServiceRequest as target uses " http://hl7.org/fhir/StructureDefinition/BackboneElement " alias BackboneElement as target imports " http://fhir.ch/ig/ch-orf/StructureMap/OrfQrToBundle " group RadOrderQrToBundle ( source qr : QuestionnaireResponse, target bundle : Bundle ) { qr -> bundle.identifier as documentIdentifier , documentIdentifier.system = 'urn:ietf:rfc:3986' , uuid ( ) as uuidDoc , documentIdentifier.value = ( 'urn:uuid:' + uuidDoc ) "documentIdentifier" ; qr as qrcp -> bundle.entry as e , e.resource = create ( 'Composition' ) as composition , composition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , composition.title = 'Radiologieauftrag' , composition.type as type , type.coding as coding , coding.code = '2161000195103' , coding.system = 'urn:oid:2.16.756.5.30.1.127.3.4' , coding.display = 'Imaging order (record artifact)' , composition.category as category , category.coding as coding , coding.code = '721963009' , coding.system = 'http://snomed.info/sct' , coding.display = 'Order (record artifact)' , bundle.entry as e2 , bundle.timestamp = ( now() ) as timestamp , composition.date = timestamp , e2.resource = create ( 'Patient' ) as patient , patient.id = uuid ( ) as uuid2 , e2.fullUrl = ( 'urn:uuid:' + uuid2 ) , bundle.entry as e4 , e4.resource = qrcp as questionnaireresp , questionnaireresp.id = uuid ( ) as uuid4 , e4.fullUrl = ( 'urn:uuid:' + uuid4 ) , bundle.entry as e5 , e5.resource = create ( 'ServiceRequest' ) as servicerequest , servicerequest.id = uuid ( ) as uuid5 , e5.fullUrl = ( 'urn:uuid:' + uuid5 ) then { qr.questionnaire as can -> bundle.entry as e6 , e6.resource = ( can.resolve() ) as q , q.id = uuid ( ) as uuid6 , e6.fullUrl = append ( 'urn:uuid:' , uuid6 ) then QrToBundle ( qr , q , patient , questionnaireresp , servicerequest , composition , bundle ) "orfbundle" ; qr then RadOrderQrToServiceRequest ( qr , patient , bundle , composition , servicerequest ) "servicerequest" ; } "orfbundle" ; } group RadOrderQrToServiceRequest ( source qr : QuestionnaireResponse, target patient : Patient, target bundle : Bundle, target composition : Composition, target serviceRequest : ServiceRequest ) { qr.item as grp where linkId = 'requestedService' then RequestedServiceItems ( grp , serviceRequest ) "requestedService" ; qr.item as grp where linkId = 'reason' then ReasonServiceItems ( grp , serviceRequest ) "reason" ; qr.item as grp where linkId = 'imagingService' then ImagingServiceItems ( grp , serviceRequest ) "imagingService" ; qr.item as grp where linkId = 'orderDetail' then OrderDetailServiceItems ( grp , serviceRequest ) "orderDetail" ; qr.item as grp where linkId = 'desiredRadiologist' then DesiredRadiologistServiceItems ( grp , bundle , serviceRequest ) "desiredRadiologist" ; qr.item as grp where linkId = 'diagnosisList' then DiagnosisListServiceItems ( grp , patient , bundle , serviceRequest ) "diagnosisList" ; qr.item as grp where linkId = 'caveat' then CaveatServiceItems ( grp , patient , bundle , serviceRequest ) "Caveat" ; qr.item as grp where linkId = 'previousResults' then PreviousImagingStudyResults ( grp , bundle , serviceRequest , patient ) "previousResults" ; } group RequestedServiceItems ( source src : BackboneElement, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'requestedService.service') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.category as cc , cc.coding = coding "service" ; } "valueCoding" ; } "answer" ; } group ReasonServiceItems ( source src : BackboneElement, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'reason.question') and answer.exists()) then { item.answer as answer then { answer.value : string as value -> serviceRequest.reasonCode as reasonCode , reasonCode.text = value "question" ; } "valueString" ; } "answer" ; } group ImagingServiceItems ( source src : BackboneElement, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'imagingService.type') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.code as code , code.coding = coding "service" ; } "valueCoding" ; } "answer" ; } group OrderDetailServiceItems ( source src : BackboneElement, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'orderDetail.imagingRegion') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.orderDetail as cc , cc.extension as ext , ext.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-order-detail-type' , ext.value = create ( 'Coding' ) as coding , coding.system = 'http://fhir.ch/ig/ch-rad-order/CodeSystem/ch-rad-order-order-detail-type' , coding.code = 'imagingRegion' , cc.coding = coding "imagingRegion" ; } "valueCoding" ; } "answer" ; src.item as item where ((linkId.value = 'orderDetail.imagingFocus') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.bodySite as cc , cc.coding = coding "imagingFocus" ; } "valueCoding" ; } "answer" ; src.item as item where ((linkId.value = 'orderDetail.laterality') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.orderDetail as cc , cc.extension as ext , ext.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-order-detail-type' , ext.value = create ( 'Coding' ) as coding , coding.system = 'http://fhir.ch/ig/ch-rad-order/CodeSystem/ch-rad-order-order-detail-type' , coding.code = 'laterality' , cc.coding = coding "laterality" ; } "valueCoding" ; } "answer" ; src.item as item where ((linkId.value = 'orderDetail.viewType') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.orderDetail as cc , cc.extension as ext , ext.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-order-detail-type' , ext.value = create ( 'Coding' ) as coding , coding.system = 'http://fhir.ch/ig/ch-rad-order/CodeSystem/ch-rad-order-order-detail-type' , coding.code = 'viewType' , cc.coding = coding "viewType" ; } "valueCoding" ; } "answer" ; src.item as item where ((linkId.value = 'orderDetail.maneuverType') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.orderDetail as cc , cc.extension as ext , ext.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-order-detail-type' , ext.value = create ( 'Coding' ) as coding , coding.system = 'http://fhir.ch/ig/ch-rad-order/CodeSystem/ch-rad-order-order-detail-type' , coding.code = 'maneuverType' , cc.coding = coding "maneuverType" ; } "valueCoding" ; } "answer" ; src.item as item where ((linkId.value = 'orderDetail.guidanceForAction') and answer.exists()) then { item.answer as answer then { answer.value : Coding as coding -> serviceRequest.orderDetail as cc , cc.extension as ext , ext.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-order-detail-type' , ext.value = create ( 'Coding' ) as coding , coding.system = 'http://fhir.ch/ig/ch-rad-order/CodeSystem/ch-rad-order-order-detail-type' , coding.code = 'guidanceForAction' , cc.coding = coding "guidanceForAction" ; } "valueCoding" ; } "answer" ; } group DesiredRadiologistServiceItems ( source src : BackboneElement, target bundle : Bundle, target serviceRequest : ServiceRequest ) { src -> bundle.entry as e , e.resource = create ( 'Practitioner' ) as practitioner , practitioner.id = uuid ( ) as uuid , serviceRequest.performer as performer , performer.reference = ( 'urn:uuid:' + uuid ) , e.fullUrl = ( 'urn:uuid:' + uuid ) then { src.item as item where ((linkId.value = 'desiredRadiologist.familyName') and answer.exists()) -> practitioner.name as name share name , name.family = ( item.answer.value ) ; src.item as item where ((linkId.value = 'desiredRadiologist.givenName') and answer.exists()) -> practitioner.name as name share name , name.given = ( item.answer.value ) ; } "performer" ; } group DiagnosisListServiceItems ( source src : BackboneElement, target patient : Patient, target bundle : Bundle, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'diagnosisList.primaryDiagnosis') and answer.exists()) then { item.answer as answer then { answer.value : string as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.reasonReference as reasonReference , reasonReference.reference = ( 'urn:uuid:' + uuid ) , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.text = value , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "primaryDiagnosis" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'diagnosisList.secondaryDiagnosis') and answer.exists()) then { item.answer as answer then { answer.value : string as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.text = value , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "secondaryDiagnosis" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'diagnosisList.bodyHeight') and answer.exists()) then { item.answer as answer then { answer.value : Quantity as value -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.status = 'final' , observation.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , observation.status = 'final' , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , observation.category as category , category.coding as coding , coding.code = 'vital-signs' , coding.system = 'http://terminology.hl7.org/CodeSystem/observation-category' , observation.value = value , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '8302-2' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "bodyHeight" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'diagnosisList.bodyWeight') and answer.exists()) then { item.answer as answer then { answer.value : Quantity as value -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.status = 'final' , observation.id = uuid ( ) as uuid , observation.status = 'final' , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , observation.category as category , category.coding as coding , coding.code = 'vital-signs' , coding.system = 'http://terminology.hl7.org/CodeSystem/observation-category' , observation.value = value , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '29463-7' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "bodyWeight" ; } "valueString" ; } "answer" ; } group CaveatServiceItems ( source src : BackboneElement, target patient : Patient, target bundle : Bundle, target serviceRequest : ServiceRequest ) { src.item as item where ((linkId.value = 'caveat.bloodCoagulation') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '64779008' , coding.system = 'http://snomed.info/sct' , coding.display = 'Blood coagulation disorder (disorder)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '64779008' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Blood coagulation disorder (disorder)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { answer.item as subitem where (linkId.value = 'caveat.bloodCoagulation.INR') -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.id = uuid ( ) as uuid , observation.status = 'final' , e.fullUrl = ( 'urn:uuid:' + uuid ) , condition.evidence as evidence , evidence.detail as detail , detail.reference = ( 'urn:uuid:' + uuid ) , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '34714-6' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { subitem.item as quantityitem where ((linkId.value = 'caveat.bloodCoagulation.INR.quantity') and answer.exists()) then { quantityitem.answer as answer then { answer.value : Quantity as value -> observation.value = value ; } "value" ; } "quantity" ; subitem.item as datetimeitem where ((linkId.value = 'caveat.bloodCoagulation.INR.dateTime') and answer.exists()) then { datetimeitem.answer as answer then { answer.value : dateTime as value -> observation.effective = value ; } "value" ; } "dateTime" ; } "INR" ; answer.item as subitem where (linkId.value = 'caveat.bloodCoagulation.platelets') -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.id = uuid ( ) as uuid , observation.status = 'final' , e.fullUrl = ( 'urn:uuid:' + uuid ) , condition.evidence as evidence , evidence.detail as detail , detail.reference = ( 'urn:uuid:' + uuid ) , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '26515-7' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { subitem.item as quantityitem where ((linkId.value = 'caveat.bloodCoagulation.platelets.quantity') and answer.exists()) then { quantityitem.answer as answer then { answer.value : Quantity as value -> observation.value = value ; } "value" ; } "platelets" ; subitem.item as datetimeitem where ((linkId.value = 'caveat.bloodCoagulation.platelets.dateTime') and answer.exists()) then { datetimeitem.answer as answer then { answer.value : dateTime as value -> observation.effective = value ; } "value" ; } "platelets" ; } "INR" ; } "bloodCoagulation" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.renalInsufficiency') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '723188008' , coding.system = 'http://snomed.info/sct' , coding.display = 'Renal insufficiency (disorder)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '723188008' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Renal insufficiency (disorder)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { answer.item as subitem where (linkId.value = 'caveat.renalInsufficiency.creatinineClearance') -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.status = 'final' , observation.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , condition.evidence as evidence , evidence.detail as detail , detail.reference = ( 'urn:uuid:' + uuid ) , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '33558-8' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { subitem.item as quantityitem where ((linkId.value = 'caveat.renalInsufficiency.creatinineClearance.quantity') and answer.exists()) then { quantityitem.answer as answer then { answer.value : Quantity as value -> observation.value = value ; } "value" ; } "quantity" ; subitem.item as datetimeitem where ((linkId.value = 'caveat.renalInsufficiency.creatinineClearance.dateTime') and answer.exists()) then { datetimeitem.answer as answer then { answer.value : dateTime as value -> observation.effective = value ; } "value" ; } "creatinineClearancedateTime" ; } "INR" ; answer.item as subitem where (linkId.value = 'caveat.renalInsufficiency.creatinine') -> bundle.entry as e , e.resource = create ( 'Observation' ) as observation , observation.status = 'final' , observation.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , condition.evidence as evidence , evidence.detail as detail , detail.reference = ( 'urn:uuid:' + uuid ) , observation.code as cc , cc.coding as c , c.system = 'http://loinc.org' , c.code = '77140-2' , observation.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) then { subitem.item as quantityitem where ((linkId.value = 'caveat.renalInsufficiency.creatinine.quantity') and answer.exists()) then { quantityitem.answer as answer then { answer.value : Quantity as value -> observation.value = value ; } "value" ; } "creatinine" ; subitem.item as datetimeitem where ((linkId.value = 'caveat.renalInsufficiency.creatinine.dateTime') and answer.exists()) then { datetimeitem.answer as answer then { answer.value : dateTime as value -> observation.effective = value ; } "ue" ; } "platelets" ; } "creatinine" ; } "bloodCoagulation" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.claustrophobia') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '19887002' , coding.system = 'http://snomed.info/sct' , coding.display = 'Claustrophobia (finding)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '19887002' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Claustrophobia (finding)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "claustrophobia" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.bodyPiercing') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '879862001' , coding.system = 'http://snomed.info/sct' , coding.display = 'Body piercing (finding)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '879862001' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Body piercing (finding)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "bodyPiercing" ; } "valueString" ; } "answer" ; src.item as item where (linkId.value = 'caveat.device') -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) then { item.item as subitem where ((linkId.value = 'caveat.device.choice') and answer.exists()) then { subitem.answer as answer then { answer.value : Coding as value -> condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '397578001' , coding.system = 'http://snomed.info/sct' , coding.display = 'Device in situ (finding)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "device" ; } "choise" ; item.item as subitem where ((linkId.value = 'caveat.device.specifictype') and answer.exists()) then { subitem.answer as answer then { answer.value : Coding as value -> condition.code as code , code.coding = value "devicespecific" ; } "specifictype" ; } "devicespecific" ; } "device" ; } "device" ; src.item as item where ((linkId.value = 'caveat.hyperthyroidism') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '34486009' , coding.system = 'http://snomed.info/sct' , coding.display = 'Hyperthyroidism (disorder)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '34486009' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Hyperthyroidism (disorder)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "hyperthyroidism" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.diabetes') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '73211009' , coding.system = 'http://snomed.info/sct' , coding.display = 'Diabetes mellitus (disorder)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '73211009' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Diabetes mellitus (disorder)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "diabetes" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.gravida') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '366321006' , coding.system = 'http://snomed.info/sct' , coding.display = 'Finding of gravida (finding)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '366321006' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Finding of gravida (finding)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "gravida" ; } "valueString" ; } "answer" ; src.item as item where ((linkId.value = 'caveat.contrastMediaAllergy') and answer.exists()) then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '293637006' , coding.system = 'http://snomed.info/sct' , coding.display = 'Allergy to contrast media (finding)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '293637006' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Allergy to contrast media (finding)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "contrastMediaAllergy" ; } "valueString" ; } "answer" ; src.item as item where (linkId.value = 'caveat.drugPrescription') then DesiredRadiologistServiceItemsDrugDescription ( item , bundle , serviceRequest , patient ) "DrugPrescription" ; // "caveat.drugPrescription.metformin" } group DesiredRadiologistServiceItemsDrugDescription ( source src : BackboneElement, target bundle : Bundle, target serviceRequest : ServiceRequest, target patient : Patient ) { src.item as item where (linkId.value = 'caveat.drugPrescription.metformin') then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '182817000' , coding.system = 'http://snomed.info/sct' , coding.display = 'Drug prescription (situation)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '372567009' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Metformin (substance)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "drugPrescription" ; } "valueString" ; } "metformin" ; src.item as item where (linkId.value = 'caveat.drugPrescription.betaBlocker') then { item.answer as answer then { answer.value : Coding as value -> bundle.entry as e , e.resource = create ( 'Condition' ) as condition , condition.id = uuid ( ) as uuid , e.fullUrl = ( 'urn:uuid:' + uuid ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) , condition.extension as ext1 , ext1.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-caveat-type' , ext1.value = create ( 'Coding' ) as coding , coding.code = '182817000' , coding.system = 'http://snomed.info/sct' , coding.display = 'Drug prescription (situation)' , condition.extension as ext2 , ext2.url = 'http://fhir.ch/ig/ch-rad-order/StructureDefinition/ch-rad-order-qualifier-value' , ext2.value = value , condition.category as category , category.coding as coding , coding.code = 'problem-list-item' , coding.system = 'http://terminology.hl7.org/CodeSystem/condition-category' , coding.display = 'Problem List Item' , condition.code as code , code.coding as coding2 , coding2.code = '373254001' , coding2.system = 'http://snomed.info/sct' , coding2.display = 'Substance with beta adrenergic receptor antagonist mechanism of action (substance)' , condition.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) "drugPrescription" ; } "valueString" ; } "betaBlocker" ; } group PreviousImagingStudyResults ( source grp : BackboneElement, target bundle : Bundle, target serviceRequest : ServiceRequest, target patient : Patient ) { grp.item as item where (linkId.value = 'previousResults.imagingStudy') -> bundle.entry as e , e.resource = create ( 'ImagingStudy' ) as imagingStudy , imagingStudy.id = uuid ( ) as uuid , imagingStudy.status = 'available' , imagingStudy.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) , e.fullUrl = append ( 'urn:uuid:' , uuid ) , serviceRequest.subject as subject , subject.reference = ( 'urn:uuid:' + patient.id ) , serviceRequest.supportingInfo as supportingInfo , supportingInfo.reference = ( 'urn:uuid:' + uuid ) then { item.item as dictomitem where ((linkId.value = 'previousResults.imagingStudy.StudyInstanceUid') and answer.exists()) -> imagingStudy.identifier as uid , uid.system = 'urn:dicom:uid' , uid.use = 'official' , uid.value = ( 'urn:oid:' + dictomitem.answer.value ) "uid" ; item.item as dictomitem where ((linkId.value = 'previousResults.imagingStudy.acsn') and answer.exists()) -> imagingStudy.identifier as acsn , acsn.type as type , type.coding as coding , coding.system = 'http://terminology.hl7.org/CodeSystem/v2-0203' , coding.code = 'ACSN' , acsn.use = 'usual' , acsn.value = ( dictomitem.answer.value ) "acsn" ; item.item as dictomitem where ((linkId.value = 'previousResults.imagingStudy.SeriesInstanceUid') and answer.exists()) -> imagingStudy.series as series then { dictomitem.answer as answer then { answer.value : string as value -> series.uid = value "uid" ; item.item as dictomitem where ((linkId.value = 'previousResults.imagingStudy.SopInstanceUid') and answer.exists()) -> series.instance as instance then { dictomitem.answer as answer then { answer.value : string as value -> instance.uid = value "uid" ; } ; } "answer" ; } "series" ; } "imagingStudy" ; } "previousResult" ; }
Produced 06 Apr 2023