FHIR IG analytics| Package | silfhirprofileig |
| Resource Type | StructureMap |
| Id | StructureMap-ExtractHeadInjuryChart.json |
| FHIR Version | R5 |
| Source | https://build.fhir.org/ig/savannahghi/sil_fhir_profile_ig/StructureMap-ExtractHeadInjuryChart.html |
| URL | https://fhir.slade360.co.ke/fhir/StructureMap/ExtractHeadInjuryChart |
| Version | 0.1.0 |
| Status | active |
| Date | 2026-09-11T12:18:36+00:00 |
| Name | ExtractHeadInjuryChart |
| Title | Head Injury and Craniotomy Chart Extraction |
| Description | The conscious level goes out under the chart's own four-point scale and a local code, not as a Glasgow Coma Scale total. This sheet prints four levels with its own wording -- fully conscious, conscious but confused, semi conscious, coma -- and forcing them onto GCS or AVPU would invent a precision the paper does not have. Coma carries a critically-low interpretation because that is the row that gets someone to theatre. Pupils are one Observation per eye with a SNOMED body site, because which side is dilating is the whole question, and movement and paralysis are recorded limb by limb for the same reason. |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap ExtractHeadInjuryChart
/// url = 'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractHeadInjuryChart' /// name = 'ExtractHeadInjuryChart' /// title = 'Head Injury and Craniotomy Chart Extraction' /// status = 'active' /// description = 'The conscious level goes out under the chart\'s own four-point scale and a local code, not as a Glasgow Coma Scale total. This sheet prints four levels with its own wording -- fully conscious, conscious but confused, semi conscious, coma -- and forcing them onto GCS or AVPU would invent a precision the paper does not have. Coma carries a critically-low interpretation because that is the row that gets someone to theatre. Pupils are one Observation per eye with a SNOMED body site, because which side is dilating is the whole question, and movement and paralysis are recorded limb by limb for the same reason.' uses "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" alias QR as source uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as target group ExtractHeadInjuryChart(source qr : QR, target bundle : Bundle) { qr -> bundle.type = 'transaction' "setBundleType"; // ── Other injuries ────────────────────────────────────────────────────── // A repeating coded answer, so "chest and spine" stays a different patient // from "chest". qr.item as g where (linkId = 'other-injuries') then { g.item as it where ((linkId = 'other-injuries/site') and answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'injury-other-injury-present' "cd"; it -> cg.display = 'Other injury present' "dsp"; } "coding"; } "code"; it.answer as a then { a.value as cv -> obs.component as comp then { cv -> comp.code as cc then { cv -> cc.coding as cg then { cv -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; cv -> cg.code = 'injury-site' "cd"; cv -> cg.display = 'Site of another injury' "dsp"; } "coding"; } "code"; cv -> comp.value = create('CodeableConcept') as vc then { cv -> vc.coding = cv "valueCoding"; cv.display as d -> vc.text = d "valueText"; } "codedValue"; } "siteComponent"; } "sites"; g.item as it where (linkId = 'other-injuries/detail') then { it.answer first as a then { a.value as txt -> obs.note as n, n.text = txt "text"; }; } "note"; } "otherInjuries"; } "otherInjuriesGroup"; // ── One round ─────────────────────────────────────────────────────────── qr.item as g where (linkId = 'round') then { g.item as it where ((linkId = 'round/temperature') and answer.value.ofType(Quantity).exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetVitalSignsCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '8310-5' "cd"; it -> cg.display = 'Body temperature' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as v -> obs.value = v; }; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "hivital_8310_5"; g.item as it where ((linkId = 'round/pulse') and answer.value.ofType(Quantity).exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetVitalSignsCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '8867-4' "cd"; it -> cg.display = 'Heart rate' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as v -> obs.value = v; }; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "hivital_8867_4"; g.item as it where ((linkId = 'round/respiratory-rate') and answer.value.ofType(Quantity).exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetVitalSignsCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '9279-1' "cd"; it -> cg.display = 'Respiratory rate' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as v -> obs.value = v; }; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "hivital_9279_1"; g.item as it where ((linkId = 'round/blood-pressure') and item.answer.value.ofType(Quantity).exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetVitalSignsCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '85354-9' "cd"; it -> cg.display = 'Blood pressure panel with all children optional' "dsp"; } "coding"; } "code"; it.item as sbp where ((linkId = 'round/blood-pressure/systolic') and answer.value.ofType(Quantity).exists()) -> obs.component as comp then { sbp -> comp.code as cc then { sbp -> cc.coding as cg then { sbp -> cg.system = 'http://loinc.org' "sys"; sbp -> cg.code = '8480-6' "cd"; sbp -> cg.display = 'Systolic blood pressure' "dsp"; } "coding"; } "code"; sbp -> comp then SetComponentValue(sbp, comp) "value"; } "comp_8480_6"; it.item as dbp where ((linkId = 'round/blood-pressure/diastolic') and answer.value.ofType(Quantity).exists()) -> obs.component as comp then { dbp -> comp.code as cc then { dbp -> cc.coding as cg then { dbp -> cg.system = 'http://loinc.org' "sys"; dbp -> cg.code = '8462-4' "cd"; dbp -> cg.display = 'Diastolic blood pressure' "dsp"; } "coding"; } "code"; dbp -> comp then SetComponentValue(dbp, comp) "value"; } "comp_8462_4"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "roundBloodPressure"; // ── The conscious level ─────────────────────────────────────────────── // Coma is flagged critically low. That row is what gets someone to CT and // then to theatre, and a reader should not have to interpret the wording. g.item as it where ((linkId = 'round/conscious-level') and answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-conscious-level-on-the-head-injury-chart' "cd"; it -> cg.display = 'Conscious level on the head injury chart' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as cv -> obs.value = create('CodeableConcept') as vc then { cv -> vc.coding = cv "valueCoding"; cv.display as d -> vc.text = d "valueText"; } "codedValue"; }; it.answer first as a then { a.value as cv where (code = 'conscious-coma') -> obs.interpretation as interp then { cv -> interp.coding as icg then { cv -> icg.system = 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation' "sys"; cv -> icg.code = 'LL' "cd"; cv -> icg.display = 'Critically low' "dsp"; } "coding"; } "comaInterp"; } "comaInterpretation"; it.answer first as a then { a.value as cv where (code = 'conscious-semi') -> obs.interpretation as interp then { cv -> interp.coding as icg then { cv -> icg.system = 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation' "sys"; cv -> icg.code = 'A' "cd"; cv -> icg.display = 'Abnormal' "dsp"; } "coding"; } "semiInterp"; } "semiInterpretation"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "consciousLevel"; // ── Fits ────────────────────────────────────────────────────────────── g.item as it where ((linkId = 'round/fits') and answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'http://snomed.info/sct' "sys"; it -> cg.code = '91175000' "cd"; it -> cg.display = 'Seizure' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as cv -> obs.value = create('CodeableConcept') as vc then { cv -> vc.coding = cv "valueCoding"; cv.display as d -> vc.text = d "valueText"; } "codedValue"; }; it.answer first as a then { a.value as cv where (code = 'finding-present') -> obs.interpretation as interp then { cv -> interp.coding as icg then { cv -> icg.system = 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation' "sys"; cv -> icg.code = 'A' "cd"; cv -> icg.display = 'Abnormal' "dsp"; } "coding"; } "fitInterp"; } "fitInterpretation"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "fits"; g.item as pg where ((linkId = 'round/right-pupil') and item.answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; pg -> obs.code as cc then { pg -> cc.coding as cg then { pg -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; pg -> cg.code = 'neuro-right-pupil-assessment' "cd"; pg -> cg.display = 'Right pupil assessment' "dsp"; } "coding"; } "code"; pg -> obs.bodySite as bsc then { pg -> bsc.coding as bcg then { pg -> bcg.system = 'http://snomed.info/sct' "sys"; pg -> bcg.code = '18944008' "cd"; pg -> bcg.display = 'Right eye structure' "dsp"; } "coding"; } "bodySite"; pg.item as it where ((linkId = 'round/right-pupil/size') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'neuro-pupil-size' "cd"; it -> cg.display = 'Pupil size' "dsp"; } "coding"; } "code"; it -> comp then SetComponentValue(it, comp) "value"; } "comp_neuro_pupil_size"; pg.item as it where ((linkId = 'round/right-pupil/reaction') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'neuro-pupil-reaction' "cd"; it -> cg.display = 'Pupil reaction' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_neuro_pupil_reaction"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "pupil_right"; g.item as pg where ((linkId = 'round/left-pupil') and item.answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; pg -> obs.code as cc then { pg -> cc.coding as cg then { pg -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; pg -> cg.code = 'neuro-left-pupil-assessment' "cd"; pg -> cg.display = 'Left pupil assessment' "dsp"; } "coding"; } "code"; pg -> obs.bodySite as bsc then { pg -> bsc.coding as bcg then { pg -> bcg.system = 'http://snomed.info/sct' "sys"; pg -> bcg.code = '8966001' "cd"; pg -> bcg.display = 'Left eye structure' "dsp"; } "coding"; } "bodySite"; pg.item as it where ((linkId = 'round/left-pupil/size') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'neuro-pupil-size' "cd"; it -> cg.display = 'Pupil size' "dsp"; } "coding"; } "code"; it -> comp then SetComponentValue(it, comp) "value"; } "comp_neuro_pupil_size2"; pg.item as it where ((linkId = 'round/left-pupil/reaction') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'neuro-pupil-reaction' "cd"; it -> cg.display = 'Pupil reaction' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_neuro_pupil_reaction2"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "pupil_left"; // ── Movement and paralysis, limb by limb ────────────────────────────── // Two panels rather than eight loose Observations, and limb by limb rather // than one summary, because a new weakness on one side is the finding and a // summary cannot carry it. g.item as m where ((linkId = 'round/spontaneous-movement') and item.answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; m -> obs.code as cc then { m -> cc.coding as cg then { m -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; m -> cg.code = 'head-injury-spontaneous-movement-by-limb' "cd"; m -> cg.display = 'Spontaneous movement by limb' "dsp"; } "coding"; } "code"; m.item as it where ((linkId = 'round/spontaneous-movement/right-arm') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-spontaneous-movement-right-arm' "cd"; it -> cg.display = 'Spontaneous movement, right arm' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_spontaneous_movement_right_arm"; m.item as it where ((linkId = 'round/spontaneous-movement/right-leg') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-spontaneous-movement-right-leg' "cd"; it -> cg.display = 'Spontaneous movement, right leg' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_spontaneous_movement_right_leg"; m.item as it where ((linkId = 'round/spontaneous-movement/left-arm') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-spontaneous-movement-left-arm' "cd"; it -> cg.display = 'Spontaneous movement, left arm' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_spontaneous_movement_left_arm"; m.item as it where ((linkId = 'round/spontaneous-movement/left-leg') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-spontaneous-movement-left-leg' "cd"; it -> cg.display = 'Spontaneous movement, left leg' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_spontaneous_movement_left_leg"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "spontaneousMovement"; g.item as p where ((linkId = 'round/paralysis') and item.answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetExamCategory(qr, obs) "category"; p -> obs.code as cc then { p -> cc.coding as cg then { p -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; p -> cg.code = 'head-injury-paralysis-by-limb' "cd"; p -> cg.display = 'Paralysis by limb' "dsp"; } "coding"; } "code"; p.item as it where ((linkId = 'round/paralysis/right-arm') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-paralysis-right-arm' "cd"; it -> cg.display = 'Paralysis, right arm' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_paralysis_right_arm"; p.item as it where ((linkId = 'round/paralysis/right-leg') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-paralysis-right-leg' "cd"; it -> cg.display = 'Paralysis, right leg' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_paralysis_right_leg"; p.item as it where ((linkId = 'round/paralysis/left-arm') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-paralysis-left-arm' "cd"; it -> cg.display = 'Paralysis, left arm' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_paralysis_left_arm"; p.item as it where ((linkId = 'round/paralysis/left-leg') and answer.value.exists()) -> obs.component as comp then { it -> comp.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-paralysis-left-leg' "cd"; it -> cg.display = 'Paralysis, left leg' "dsp"; } "coding"; } "code"; it -> comp then SetComponentCodedValue(it, comp) "value"; } "comp_head_injury_paralysis_left_leg"; g -> obs then SetHeadInjuryRound(g, obs) "roundContext"; } "paralysis"; g.item as it where ((linkId = 'round/remarks') and answer.value.exists()) -> bundle.entry as entry, entry.resource = create('Observation') as obs then { qr -> obs, entry then BuildObsBase(qr, obs, entry) "base"; qr -> obs then SetSurveyCategory(qr, obs) "category"; it -> obs.code as cc then { it -> cc.coding as cg then { it -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys"; it -> cg.code = 'head-injury-remarks-on-a-head-injury-round' "cd"; it -> cg.display = 'Remarks on a head injury round' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as txt -> obs.note as n, n.text = txt "text"; }; } "narr_head_injury_remarks_on_a_head_injury_round"; } "roundRows"; } // The round's own timestamp on every Observation from it. Unlike the ICU // charts this sheet prints a full date and time per column rather than a clock // hour, so it becomes Observation.effective properly. group SetHeadInjuryRound(source g, target obs : Observation) { g.item as it where ((linkId = 'round/at') and answer.value.exists()) then { it.answer first as a then { a.value as v -> obs.effective = v "effective"; }; } "roundTimeRule"; g.item as it where ((linkId = 'round/recorded-by') and answer.value.exists()) then { it.answer first as a then { a.value as ref -> obs.performer = ref "performer"; }; } "recordedByRule"; } // ───────────────────────────────────────────────────────────────────────────── // Shared scaffolding. Repeated in each map rather than imported: the transform // engine resolves `imports` against whatever StructureMaps happen to be on the // server, and a form that stops extracting because a shared map was not // uploaded is a worse failure than a duplicated group. // Two notes on what the publisher's StructureMap validator says about this file. // Source parameters below are left untyped on purpose. Writing `: Element` makes // the validator compare QuestionnaireResponse.item against the literal 'Element' // and report them as incompatible with each other, which is noise, not a finding. // `evaluate(context, expression)` is flagged as "takes 1 parameter but 2 were // found". Leave it. The FML parser in the same jar refuses the one-argument form // outright -- it wants a parameter, a comma, then the FHIRPath -- so the // publisher is objecting to what its own compiler emits. Two arguments is the // only form that compiles, and it is what the R5 transform engine executes. // ───────────────────────────────────────────────────────────────────────────── group BuildObsBase(source qr : QR, target obs : Observation, target entry) { qr -> obs then SetResponseProvenance(qr, obs) "responseProvenance"; qr -> obs.id = uuid() then SetObservationFullUrl(obs, entry) "idAndFullUrl"; qr -> entry.request as request then { qr -> request.method = 'POST' "requestMethod"; qr -> request.url = 'Observation' "requestUrl"; } "entryRequest"; qr -> obs.status = 'final' "status"; qr.subject as s -> obs.subject = s; qr.encounter as e -> obs.encounter = e; qr.authored as t -> obs.effective = t "effective"; qr.source as src -> obs.performer = src "performerFromSource"; qr where (source.exists().not()) then { qr.author as a -> obs.performer = a "performerFromAuthor"; } "performerFallback"; // A stored response's id already reads "QuestionnaireResponse/<id>", so it is // a relative reference as it stands. The hasValue() guard is what stops an // unsaved response -- one posted straight to $extract rather than saved first // -- from writing "QuestionnaireResponse/null" into the record. qr.id as qid where ($this.hasValue()) -> obs.derivedFrom = create('Reference') as ref, ref.reference = qid "linkQuestionnaireResponse"; } group SetObservationFullUrl(source obs : Observation, target entry) { obs.id as id -> entry.fullUrl = append('https://fhir.slade360.co.ke/fhir/Observation/', id) "assignFullUrl"; } // The two answer shapes a component can carry. Both read the answer through the // untyped `.value` accessor: reading `valueCoding` or `valueQuantity` by its // typed property name fails at transform time on HAPI R5 with "Attempt to read // invalid property ... on QuestionnaireResponse.item.answer". group SetComponentCodedValue(source it, target comp) { it.answer first as a then { a.value as cv -> comp.value = create('CodeableConcept') as cc then { cv -> cc.coding = cv "valueCoding"; cv.display as d -> cc.text = d "valueText"; } "codedValue"; } "componentAnswer"; } group SetComponentValue(source it, target comp) { it.answer first as a then { a.value as v -> comp.value = v "plainValue"; } "componentAnswer"; } group SetSurveyCategory(source qr : QR, target obs : Observation) { qr -> obs.category as cat then { qr -> cat.coding as coding then { qr -> coding.system = 'http://terminology.hl7.org/CodeSystem/observation-category' "categorySystem"; qr -> coding.code = 'survey' "categoryCode"; qr -> coding.display = 'Survey' "categoryDisplay"; } "categoryCoding"; } "category"; } group SetVitalSignsCategory(source qr : QR, target obs : Observation) { qr -> obs.category as cat then { qr -> cat.coding as coding then { qr -> coding.system = 'http://terminology.hl7.org/CodeSystem/observation-category' "categorySystem"; qr -> coding.code = 'vital-signs' "categoryCode"; qr -> coding.display = 'Vital Signs' "categoryDisplay"; } "categoryCoding"; } "category"; } group SetExamCategory(source qr : QR, target obs : Observation) { qr -> obs.category as cat then { qr -> cat.coding as coding then { qr -> coding.system = 'http://terminology.hl7.org/CodeSystem/observation-category' "categorySystem"; qr -> coding.code = 'exam' "categoryCode"; qr -> coding.display = 'Exam' "categoryDisplay"; } "categoryCoding"; } "category"; } // ── Provenance and tenancy ─────────────────────────────────────────────────── // Two tags on everything this map creates. The first says which questionnaire // produced it, so a form that reopens mid-admission recalls its own earlier // entries and not another form's. The second copies the tenant tags off the // response, because nothing else on the path puts them there. // The code is the form's document type, not the questionnaire's id: every // environment mints its own ids, and there is only one set of maps, so an id // here would tie the tag to whichever environment stamped it. // ── Provenance and tenancy ─────────────────────────────────────────────────── group SetResponseProvenance(source qr : QR, target r) { qr -> r.meta as m then { qr -> m.tag as t then { qr -> t.system = 'http://slade360edi.com/questionnaire-provenance' "provenanceSystem"; qr -> t.code = 'head-injury-chart' "provenanceCode"; qr -> t.display = 'Head injury and craniotomy chart' "provenanceDisplay"; } "provenanceTag"; } "provenanceMeta"; // Every tag the response carries, onto the resource. `meta` is 0..1, so this // lands on the same meta the rule above created rather than a second one. qr.meta as qm then { qm.tag as qt -> r.meta as m, m.tag = qt "copyTag"; } "tenantTags"; }
{
"resourceType": "StructureMap",
"id": "ExtractHeadInjuryChart",
"text": {
"status": "generated",
"div": "<!-- snip (see above) -->"
},
"url": "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractHeadInjuryChart",
"version": "0.1.0",
"name": "ExtractHeadInjuryChart",
"title": "Head Injury and Craniotomy Chart Extraction",
"status": "active",
"date": "2026-09-11T12:18:36+00:00",
"publisher": "Kathurima Kimathi",
"contact": [
{
"name": "Kathurima Kimathi",
"telecom": [
{
"system": "url",
"value": "https://www.linkedin.com/in/kathurima-kimathi/"
},
{
"system": "email",
"value": "kathurimakimathi415@gmail.com"
}
]
},
{
"name": "Oscar John",
"telecom": [
{
"system": "email",
"value": "oscarjohnotieno@gmail.com",
"use": "work"
}
]
},
{
"name": "Kennedy Omondi",
"telecom": [
{
"system": "email",
"value": "kennankole@gmail.com",
"use": "work"
}
]
}
],
"description": "The conscious level goes out under the chart's own four-point scale and a local code, not as a Glasgow Coma Scale total. This sheet prints four levels with its own wording -- fully conscious, conscious but confused, semi conscious, coma -- and forcing them onto GCS or AVPU would invent a precision the paper does not have. Coma carries a critically-low interpretation because that is the row that gets someone to theatre. Pupils are one Observation per eye with a SNOMED body site, because which side is dilating is the whole question, and movement and paralysis are recorded limb by limb for the same reason.",
"structure": [
{
"url": "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse",
"mode": "source",
"alias": "QR"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Bundle",
"mode": "target",
"alias": "Bundle"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Observation",
"mode": "target",
"alias": "Observation"
}
],
"group": [
{
"name": "ExtractHeadInjuryChart",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "bundle",
"type": "Bundle",
"mode": "target"
}
],
"rule": [
{
"name": "setBundleType",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "bundle",
"element": "type",
"transform": "copy",
"parameter": [
{
"valueString": "transaction"
}
]
}
]
},
{
"name": "otherInjuriesGroup",
"source": [
{
"context": "qr",
"element": "item",
"variable": "g",
"condition": "linkId = 'other-injuries'"
}
],
"rule": [
{
"name": "otherInjuries",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'other-injuries/site') and answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "injury-other-injury-present"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Other injury present"
}
]
}
]
}
]
}
]
},
{
"name": "sites",
"source": [
{
"context": "it",
"element": "answer",
"variable": "a"
}
],
"rule": [
{
"name": "siteComponent",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "injury-site"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Site of another injury"
}
]
}
]
}
]
}
]
},
{
"name": "codedValue",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "comp",
"element": "value",
"variable": "vc",
"transform": "create",
"parameter": [
{
"valueString": "CodeableConcept"
}
]
}
],
"rule": [
{
"name": "valueCoding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "vc",
"element": "coding",
"transform": "copy",
"parameter": [
{
"valueId": "cv"
}
]
}
]
},
{
"name": "valueText",
"source": [
{
"context": "cv",
"element": "display",
"variable": "d"
}
],
"target": [
{
"context": "vc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "note",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "linkId = 'other-injuries/detail'"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "obs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
}
]
}
]
}
],
"documentation": "── Other injuries ──────────────────────────────────────────────────────\r\nA repeating coded answer, so \"chest and spine\" stays a different patient\r\nfrom \"chest\"."
},
{
"name": "roundRows",
"source": [
{
"context": "qr",
"element": "item",
"variable": "g",
"condition": "linkId = 'round'"
}
],
"rule": [
{
"name": "hivital_8310_5",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/temperature') and answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetVitalSignsCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "8310-5"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Body temperature"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "value",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "obs",
"element": "value",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "hivital_8867_4",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/pulse') and answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetVitalSignsCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "8867-4"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Heart rate"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "value",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "obs",
"element": "value",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "hivital_9279_1",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/respiratory-rate') and answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetVitalSignsCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "9279-1"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Respiratory rate"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "value",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "obs",
"element": "value",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "roundBloodPressure",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/blood-pressure') and item.answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetVitalSignsCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "85354-9"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Blood pressure panel with all children optional"
}
]
}
]
}
]
}
]
},
{
"name": "comp_8480_6",
"source": [
{
"context": "it",
"element": "item",
"variable": "sbp",
"condition": "(linkId = 'round/blood-pressure/systolic') and answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "8480-6"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Systolic blood pressure"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "sbp"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentValue",
"parameter": [
{
"valueId": "sbp"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_8462_4",
"source": [
{
"context": "it",
"element": "item",
"variable": "dbp",
"condition": "(linkId = 'round/blood-pressure/diastolic') and answer.value.ofType(Quantity).exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "8462-4"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Diastolic blood pressure"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "dbp"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentValue",
"parameter": [
{
"valueId": "dbp"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "consciousLevel",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/conscious-level') and answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-conscious-level-on-the-head-injury-chart"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Conscious level on the head injury chart"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "codedValue",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv"
}
],
"target": [
{
"context": "obs",
"element": "value",
"variable": "vc",
"transform": "create",
"parameter": [
{
"valueString": "CodeableConcept"
}
]
}
],
"rule": [
{
"name": "valueCoding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "vc",
"element": "coding",
"transform": "copy",
"parameter": [
{
"valueId": "cv"
}
]
}
]
},
{
"name": "valueText",
"source": [
{
"context": "cv",
"element": "display",
"variable": "d"
}
],
"target": [
{
"context": "vc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
},
{
"name": "comaInterpretation",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "comaInterp",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv",
"condition": "code = 'conscious-coma'"
}
],
"target": [
{
"context": "obs",
"element": "interpretation",
"variable": "interp"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "interp",
"element": "coding",
"variable": "icg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "LL"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Critically low"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "semiInterpretation",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "semiInterp",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv",
"condition": "code = 'conscious-semi'"
}
],
"target": [
{
"context": "obs",
"element": "interpretation",
"variable": "interp"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "interp",
"element": "coding",
"variable": "icg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "A"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Abnormal"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
],
"documentation": "── The conscious level ───────────────────────────────────────────────\r\nComa is flagged critically low. That row is what gets someone to CT and\r\nthen to theatre, and a reader should not have to interpret the wording."
},
{
"name": "fits",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/fits') and answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://snomed.info/sct"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "91175000"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Seizure"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "codedValue",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv"
}
],
"target": [
{
"context": "obs",
"element": "value",
"variable": "vc",
"transform": "create",
"parameter": [
{
"valueString": "CodeableConcept"
}
]
}
],
"rule": [
{
"name": "valueCoding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "vc",
"element": "coding",
"transform": "copy",
"parameter": [
{
"valueId": "cv"
}
]
}
]
},
{
"name": "valueText",
"source": [
{
"context": "cv",
"element": "display",
"variable": "d"
}
],
"target": [
{
"context": "vc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
},
{
"name": "fitInterpretation",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "fitInterp",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv",
"condition": "code = 'finding-present'"
}
],
"target": [
{
"context": "obs",
"element": "interpretation",
"variable": "interp"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "interp",
"element": "coding",
"variable": "icg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "A"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "icg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Abnormal"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
],
"documentation": "── Fits ──────────────────────────────────────────────────────────────"
},
{
"name": "pupil_right",
"source": [
{
"context": "g",
"element": "item",
"variable": "pg",
"condition": "(linkId = 'round/right-pupil') and item.answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-right-pupil-assessment"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Right pupil assessment"
}
]
}
]
}
]
}
]
},
{
"name": "bodySite",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "obs",
"element": "bodySite",
"variable": "bsc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bsc",
"element": "coding",
"variable": "bcg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://snomed.info/sct"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "18944008"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Right eye structure"
}
]
}
]
}
]
}
]
},
{
"name": "comp_neuro_pupil_size",
"source": [
{
"context": "pg",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/right-pupil/size') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-pupil-size"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Pupil size"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_neuro_pupil_reaction",
"source": [
{
"context": "pg",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/right-pupil/reaction') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-pupil-reaction"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Pupil reaction"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "pupil_left",
"source": [
{
"context": "g",
"element": "item",
"variable": "pg",
"condition": "(linkId = 'round/left-pupil') and item.answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-left-pupil-assessment"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Left pupil assessment"
}
]
}
]
}
]
}
]
},
{
"name": "bodySite",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "obs",
"element": "bodySite",
"variable": "bsc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bsc",
"element": "coding",
"variable": "bcg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://snomed.info/sct"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "8966001"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "pg"
}
],
"target": [
{
"context": "bcg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Left eye structure"
}
]
}
]
}
]
}
]
},
{
"name": "comp_neuro_pupil_size2",
"source": [
{
"context": "pg",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/left-pupil/size') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-pupil-size"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Pupil size"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_neuro_pupil_reaction2",
"source": [
{
"context": "pg",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/left-pupil/reaction') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "neuro-pupil-reaction"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Pupil reaction"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "spontaneousMovement",
"source": [
{
"context": "g",
"element": "item",
"variable": "m",
"condition": "(linkId = 'round/spontaneous-movement') and item.answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "m"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "m"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "m"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "m"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-spontaneous-movement-by-limb"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "m"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Spontaneous movement by limb"
}
]
}
]
}
]
}
]
},
{
"name": "comp_head_injury_spontaneous_movement_right_arm",
"source": [
{
"context": "m",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/spontaneous-movement/right-arm') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-spontaneous-movement-right-arm"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Spontaneous movement, right arm"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_spontaneous_movement_right_leg",
"source": [
{
"context": "m",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/spontaneous-movement/right-leg') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-spontaneous-movement-right-leg"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Spontaneous movement, right leg"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_spontaneous_movement_left_arm",
"source": [
{
"context": "m",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/spontaneous-movement/left-arm') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-spontaneous-movement-left-arm"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Spontaneous movement, left arm"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_spontaneous_movement_left_leg",
"source": [
{
"context": "m",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/spontaneous-movement/left-leg') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-spontaneous-movement-left-leg"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Spontaneous movement, left leg"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
],
"documentation": "── Movement and paralysis, limb by limb ──────────────────────────────\r\nTwo panels rather than eight loose Observations, and limb by limb rather\r\nthan one summary, because a new weakness on one side is the finding and a\r\nsummary cannot carry it."
},
{
"name": "paralysis",
"source": [
{
"context": "g",
"element": "item",
"variable": "p",
"condition": "(linkId = 'round/paralysis') and item.answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetExamCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "p"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "p"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "p"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "p"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-paralysis-by-limb"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "p"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Paralysis by limb"
}
]
}
]
}
]
}
]
},
{
"name": "comp_head_injury_paralysis_right_arm",
"source": [
{
"context": "p",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/paralysis/right-arm') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-paralysis-right-arm"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Paralysis, right arm"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_paralysis_right_leg",
"source": [
{
"context": "p",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/paralysis/right-leg') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-paralysis-right-leg"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Paralysis, right leg"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_paralysis_left_arm",
"source": [
{
"context": "p",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/paralysis/left-arm') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-paralysis-left-arm"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Paralysis, left arm"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "comp_head_injury_paralysis_left_leg",
"source": [
{
"context": "p",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/paralysis/left-leg') and answer.value.exists()"
}
],
"target": [
{
"context": "obs",
"element": "component",
"variable": "comp"
}
],
"rule": [
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-paralysis-left-leg"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Paralysis, left leg"
}
]
}
]
}
]
}
]
},
{
"name": "value",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "comp"
}
],
"dependent": [
{
"name": "SetComponentCodedValue",
"parameter": [
{
"valueId": "it"
},
{
"valueId": "comp"
}
]
}
]
}
]
},
{
"name": "roundContext",
"source": [
{
"context": "g"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetHeadInjuryRound",
"parameter": [
{
"valueId": "g"
},
{
"valueId": "obs"
}
]
}
]
}
]
},
{
"name": "narr_head_injury_remarks_on_a_head_injury_round",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/remarks') and answer.value.exists()"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "obs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "obs",
"element": "code",
"variable": "cc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-remarks-on-a-head-injury-round"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Remarks on a head injury round"
}
]
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "obs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
}
]
}
],
"documentation": "── One round ───────────────────────────────────────────────────────────"
}
]
},
{
"name": "SetHeadInjuryRound",
"documentation": "The round's own timestamp on every Observation from it. Unlike the ICU\r\ncharts this sheet prints a full date and time per column rather than a clock\r\nhour, so it becomes Observation.effective properly.",
"input": [
{
"name": "g",
"mode": "source"
},
{
"name": "obs",
"type": "Observation",
"mode": "target"
}
],
"rule": [
{
"name": "roundTimeRule",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/at') and answer.value.exists()"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "effective",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "obs",
"element": "effective",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
}
]
},
{
"name": "recordedByRule",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'round/recorded-by') and answer.value.exists()"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "performer",
"source": [
{
"context": "a",
"element": "value",
"variable": "ref"
}
],
"target": [
{
"context": "obs",
"element": "performer",
"transform": "copy",
"parameter": [
{
"valueId": "ref"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "BuildObsBase",
"documentation": "─────────────────────────────────────────────────────────────────────────────\r\nShared scaffolding. Repeated in each map rather than imported: the transform\r\nengine resolves `imports` against whatever StructureMaps happen to be on the\r\nserver, and a form that stops extracting because a shared map was not\r\nuploaded is a worse failure than a duplicated group.\r\nTwo notes on what the publisher's StructureMap validator says about this file.\r\nSource parameters below are left untyped on purpose. Writing `: Element` makes\r\nthe validator compare QuestionnaireResponse.item against the literal 'Element'\r\nand report them as incompatible with each other, which is noise, not a finding.\r\n`evaluate(context, expression)` is flagged as \"takes 1 parameter but 2 were\r\nfound\". Leave it. The FML parser in the same jar refuses the one-argument form\r\noutright -- it wants a parameter, a comma, then the FHIRPath -- so the\r\npublisher is objecting to what its own compiler emits. Two arguments is the\r\nonly form that compiles, and it is what the R5 transform engine executes.\r\n─────────────────────────────────────────────────────────────────────────────",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "obs",
"type": "Observation",
"mode": "target"
},
{
"name": "entry",
"mode": "target"
}
],
"rule": [
{
"name": "responseProvenance",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs"
}
],
"dependent": [
{
"name": "SetResponseProvenance",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "obs"
}
]
}
]
},
{
"name": "idAndFullUrl",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs",
"element": "id",
"transform": "uuid"
}
],
"dependent": [
{
"name": "SetObservationFullUrl",
"parameter": [
{
"valueId": "obs"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "entryRequest",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "entry",
"element": "request",
"variable": "request"
}
],
"rule": [
{
"name": "requestMethod",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "request",
"element": "method",
"transform": "copy",
"parameter": [
{
"valueString": "POST"
}
]
}
]
},
{
"name": "requestUrl",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "request",
"element": "url",
"transform": "copy",
"parameter": [
{
"valueString": "Observation"
}
]
}
]
}
]
},
{
"name": "status",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs",
"element": "status",
"transform": "copy",
"parameter": [
{
"valueString": "final"
}
]
}
]
},
{
"name": "subject",
"source": [
{
"context": "qr",
"element": "subject",
"variable": "s"
}
],
"target": [
{
"context": "obs",
"element": "subject",
"transform": "copy",
"parameter": [
{
"valueId": "s"
}
]
}
]
},
{
"name": "encounter",
"source": [
{
"context": "qr",
"element": "encounter",
"variable": "e"
}
],
"target": [
{
"context": "obs",
"element": "encounter",
"transform": "copy",
"parameter": [
{
"valueId": "e"
}
]
}
]
},
{
"name": "effective",
"source": [
{
"context": "qr",
"element": "authored",
"variable": "t"
}
],
"target": [
{
"context": "obs",
"element": "effective",
"transform": "copy",
"parameter": [
{
"valueId": "t"
}
]
}
]
},
{
"name": "performerFromSource",
"source": [
{
"context": "qr",
"element": "source",
"variable": "src"
}
],
"target": [
{
"context": "obs",
"element": "performer",
"transform": "copy",
"parameter": [
{
"valueId": "src"
}
]
}
]
},
{
"name": "performerFallback",
"source": [
{
"context": "qr",
"condition": "source.exists().not()"
}
],
"rule": [
{
"name": "performerFromAuthor",
"source": [
{
"context": "qr",
"element": "author",
"variable": "a"
}
],
"target": [
{
"context": "obs",
"element": "performer",
"transform": "copy",
"parameter": [
{
"valueId": "a"
}
]
}
]
}
]
},
{
"name": "linkQuestionnaireResponse",
"source": [
{
"context": "qr",
"element": "id",
"variable": "qid",
"condition": "$this.hasValue()"
}
],
"target": [
{
"context": "obs",
"element": "derivedFrom",
"variable": "ref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "ref",
"element": "reference",
"transform": "copy",
"parameter": [
{
"valueId": "qid"
}
]
}
],
"documentation": "A stored response's id already reads \"QuestionnaireResponse/<id>\", so it is\r\na relative reference as it stands. The hasValue() guard is what stops an\r\nunsaved response -- one posted straight to $extract rather than saved first\r\n-- from writing \"QuestionnaireResponse/null\" into the record."
}
]
},
{
"name": "SetObservationFullUrl",
"input": [
{
"name": "obs",
"type": "Observation",
"mode": "source"
},
{
"name": "entry",
"mode": "target"
}
],
"rule": [
{
"name": "assignFullUrl",
"source": [
{
"context": "obs",
"element": "id",
"variable": "id"
}
],
"target": [
{
"context": "entry",
"element": "fullUrl",
"transform": "append",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/Observation/"
},
{
"valueId": "id"
}
]
}
]
}
]
},
{
"name": "SetComponentCodedValue",
"documentation": "The two answer shapes a component can carry. Both read the answer through the\r\nuntyped `.value` accessor: reading `valueCoding` or `valueQuantity` by its\r\ntyped property name fails at transform time on HAPI R5 with \"Attempt to read\r\ninvalid property ... on QuestionnaireResponse.item.answer\".",
"input": [
{
"name": "it",
"mode": "source"
},
{
"name": "comp",
"mode": "target"
}
],
"rule": [
{
"name": "componentAnswer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "codedValue",
"source": [
{
"context": "a",
"element": "value",
"variable": "cv"
}
],
"target": [
{
"context": "comp",
"element": "value",
"variable": "cc",
"transform": "create",
"parameter": [
{
"valueString": "CodeableConcept"
}
]
}
],
"rule": [
{
"name": "valueCoding",
"source": [
{
"context": "cv"
}
],
"target": [
{
"context": "cc",
"element": "coding",
"transform": "copy",
"parameter": [
{
"valueId": "cv"
}
]
}
]
},
{
"name": "valueText",
"source": [
{
"context": "cv",
"element": "display",
"variable": "d"
}
],
"target": [
{
"context": "cc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "d"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "SetComponentValue",
"input": [
{
"name": "it",
"mode": "source"
},
{
"name": "comp",
"mode": "target"
}
],
"rule": [
{
"name": "componentAnswer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "plainValue",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "comp",
"element": "value",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
}
]
},
{
"name": "SetSurveyCategory",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "obs",
"type": "Observation",
"mode": "target"
}
],
"rule": [
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs",
"element": "category",
"variable": "cat"
}
],
"rule": [
{
"name": "categoryCoding",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cat",
"element": "coding",
"variable": "coding"
}
],
"rule": [
{
"name": "categorySystem",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/observation-category"
}
]
}
]
},
{
"name": "categoryCode",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "survey"
}
]
}
]
},
{
"name": "categoryDisplay",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Survey"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "SetVitalSignsCategory",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "obs",
"type": "Observation",
"mode": "target"
}
],
"rule": [
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs",
"element": "category",
"variable": "cat"
}
],
"rule": [
{
"name": "categoryCoding",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cat",
"element": "coding",
"variable": "coding"
}
],
"rule": [
{
"name": "categorySystem",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/observation-category"
}
]
}
]
},
{
"name": "categoryCode",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "vital-signs"
}
]
}
]
},
{
"name": "categoryDisplay",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Vital Signs"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "SetExamCategory",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "obs",
"type": "Observation",
"mode": "target"
}
],
"rule": [
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "obs",
"element": "category",
"variable": "cat"
}
],
"rule": [
{
"name": "categoryCoding",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cat",
"element": "coding",
"variable": "coding"
}
],
"rule": [
{
"name": "categorySystem",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/observation-category"
}
]
}
]
},
{
"name": "categoryCode",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "exam"
}
]
}
]
},
{
"name": "categoryDisplay",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "coding",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Exam"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "SetResponseProvenance",
"documentation": "── Provenance and tenancy ───────────────────────────────────────────────────\r\nTwo tags on everything this map creates. The first says which questionnaire\r\nproduced it, so a form that reopens mid-admission recalls its own earlier\r\nentries and not another form's. The second copies the tenant tags off the\r\nresponse, because nothing else on the path puts them there.\r\nThe code is the form's document type, not the questionnaire's id: every\r\nenvironment mints its own ids, and there is only one set of maps, so an id\r\nhere would tie the tag to whichever environment stamped it.\r\n── Provenance and tenancy ───────────────────────────────────────────────────",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "r",
"mode": "target"
}
],
"rule": [
{
"name": "provenanceMeta",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "r",
"element": "meta",
"variable": "m"
}
],
"rule": [
{
"name": "provenanceTag",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "m",
"element": "tag",
"variable": "t"
}
],
"rule": [
{
"name": "provenanceSystem",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "t",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://slade360edi.com/questionnaire-provenance"
}
]
}
]
},
{
"name": "provenanceCode",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "t",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "head-injury-chart"
}
]
}
]
},
{
"name": "provenanceDisplay",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "t",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Head injury and craniotomy chart"
}
]
}
]
}
]
}
]
},
{
"name": "tenantTags",
"source": [
{
"context": "qr",
"element": "meta",
"variable": "qm"
}
],
"rule": [
{
"name": "copyTag",
"source": [
{
"context": "qm",
"element": "tag",
"variable": "qt"
}
],
"target": [
{
"context": "r",
"element": "meta",
"variable": "m"
},
{
"context": "m",
"element": "tag",
"transform": "copy",
"parameter": [
{
"valueId": "qt"
}
]
}
]
}
],
"documentation": "Every tag the response carries, onto the resource. `meta` is 0..1, so this\r\nlands on the same meta the rule above created rather than a second one."
}
]
}
]
}