FHIR IG analytics| Package | silfhirprofileig |
| Resource Type | StructureMap |
| Id | StructureMap-ExtractMortalityCommitteeFindings.json |
| FHIR Version | R5 |
| Source | https://build.fhir.org/ig/savannahghi/sil_fhir_profile_ig/StructureMap-ExtractMortalityCommitteeFindings.html |
| URL | https://fhir.slade360.co.ke/fhir/StructureMap/ExtractMortalityCommitteeFindings |
| Version | 0.1.0 |
| Status | active |
| Date | 2026-09-11T12:18:36+00:00 |
| Name | ExtractMortalityCommitteeFindings |
| Title | Mortality Committee Findings Extraction |
| Description | The death review as a Composition under LOINC 34133-9, one section per numbered question, each section naming an Observation that carries its text. A governance document rather than a clinical note, so it is kept whole: the committee's opinion means nothing separated from the initial management it is an opinion about. |
No resources found
No resources found
Note: links and images are rebased to the (stated) source
Generated Narrative: StructureMap ExtractMortalityCommitteeFindings
/// url = 'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractMortalityCommitteeFindings' /// name = 'ExtractMortalityCommitteeFindings' /// title = 'Mortality Committee Findings Extraction' /// status = 'active' /// description = 'The death review as a Composition under LOINC 34133-9, one section per numbered question, each section naming an Observation that carries its text. A governance document rather than a clinical note, so it is kept whole: the committee\'s opinion means nothing separated from the initial management it is an opinion about.' 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 uses "http://hl7.org/fhir/StructureDefinition/Composition" alias Composition as target group ExtractMortalityCommitteeFindings(source qr : QR, target bundle : Bundle) { qr -> bundle.type = 'transaction' "setBundleType"; qr -> bundle.entry as entry, entry.resource = create('Composition') as comp then { qr -> comp, entry then BuildCompositionBase(qr, comp, entry) "base"; qr -> comp.status = 'final' "status"; qr -> comp.title = 'Mortality committee findings and recommendations' "title"; qr.authored as t -> comp.date = t "date"; qr.source as src -> comp.author = src "author"; qr -> comp.type as tp then { qr -> tp.coding as cg then { qr -> cg.system = 'http://loinc.org' "sys"; qr -> cg.code = '34133-9' "cd"; qr -> cg.display = 'Summary of episode note' "dsp"; } "coding"; } "type"; qr -> comp.category as cat then { qr -> cat.coding as cg then { qr -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/document-type-codesystem' "sys"; qr -> cg.code = 'mortality-committee-findings' "cd"; qr -> cg.display = 'Mortality committee findings and recommendations' "dsp"; } "coding"; } "category"; // Restricted by default. This is a death review, and whether it belongs in // the patient's clinical record at all is a policy question -- so it is // labelled as the more sensitive of the two possibilities rather than the // less, which is the safe direction to be wrong in. // R5 removed Composition.confidentiality; the label lives in // Resource.meta.security. Restricted rather than normal, deliberately: for // a death review and for the mortuary set, whether the record belongs in // the patient's clinical file at all is an open policy question, and the // safe direction to be wrong in is the more protective one. qr -> comp.meta as m, m.security as sec then { qr -> sec.system = 'http://terminology.hl7.org/CodeSystem/v3-Confidentiality' "sys"; qr -> sec.code = 'R' "cd"; qr -> sec.display = 'restricted' "dsp"; } "confidentiality"; qr.item as g where (linkId = 'review') then { g.item as it where ((linkId = 'review/attendance-or-admission') and answer.value.exists()) then { it.answer first as a then { a.value as v -> comp.event as ev, ev.period as per, per.start = v "eventStart"; }; } "attendanceRule"; g.item as it where ((linkId = 'review/chairman') and answer.value.exists()) then { it.answer first as a then { a.value as txt -> comp.attester as att then { txt -> att.mode as am, am.text = 'Chairman of the mortality committee' "mode"; txt -> att.party = create('Reference') as pref, pref.display = txt "party"; } "attester"; }; } "chairmanRule"; g.item as it where ((linkId = 'review/secretary') and answer.value.exists()) then { it.answer first as a then { a.value as txt -> comp.note as n, n.text = txt "secretaryNote"; }; } "secretaryRule"; } "reviewGroup"; qr.item as it where ((linkId = 'presenting-complaints') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Initial presenting complaints' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '10164-2' "cd"; it -> cg.display = 'History of Present illness Narrative' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '10164-2' "cd"; it -> scg.display = 'History of Present illness Narrative' "dsp"; } "coding"; it -> scc.text = 'Initial presenting complaints on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_presenting_complaints"; qr.item as it where ((linkId = 'previous-history') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Previous available medical history' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '11348-0' "cd"; it -> cg.display = 'History of Past illness note' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '11348-0' "cd"; it -> scg.display = 'History of Past illness note' "dsp"; } "coding"; it -> scc.text = 'Previous available medical history on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_previous_history"; qr.item as it where ((linkId = 'initial-management') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Initial management' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '18776-5' "cd"; it -> cg.display = 'Plan of care note' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '18776-5' "cd"; it -> scg.display = 'Plan of care note' "dsp"; } "coding"; it -> scc.text = 'Initial management on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_initial_management"; qr.item as it where ((linkId = 'complications') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Observed complications' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '55109-3' "cd"; it -> cg.display = 'Complications Document' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '55109-3' "cd"; it -> scg.display = 'Complications Document' "dsp"; } "coding"; it -> scc.text = 'Observed complications on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_complications"; qr.item as it where ((linkId = 'committee-opinion') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Opinion of the committee' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '51848-0' "cd"; it -> cg.display = 'Evaluation note' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '51848-0' "cd"; it -> scg.display = 'Evaluation note' "dsp"; } "coding"; it -> scc.text = 'Opinion of the committee on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_committee_opinion"; qr.item as it where ((linkId = 'recommendation') and answer.value.exists()) -> comp.section as sec then { it -> sec.title = 'Recommendation' "title"; it -> sec.code as sc then { it -> sc.coding as cg then { it -> cg.system = 'http://loinc.org' "sys"; it -> cg.code = '62387-6' "cd"; it -> cg.display = 'Interventions Narrative' "dsp"; } "coding"; } "code"; it -> bundle.entry as sentry, sentry.resource = create('Observation') as sobs then { qr -> sobs, sentry then BuildObsBase(qr, sobs, sentry) "base"; qr -> sobs then SetSurveyCategory(qr, sobs) "category"; it -> sobs.code as scc then { it -> scc.coding as scg then { it -> scg.system = 'http://loinc.org' "sys"; it -> scg.code = '62387-6' "cd"; it -> scg.display = 'Interventions Narrative' "dsp"; } "coding"; it -> scc.text = 'Recommendation on the Mortality committee review' "codeText"; } "code"; it.answer first as a then { a.value as txt -> sobs.note as n, n.text = txt "text"; }; it -> sec.entry = create('Reference') as sref, sref.reference = reference(sobs) "linkEntry"; } "sectionObservation"; } "section_recommendation"; } "mortalityReviewComposition"; // Who saw the patient first, and what they thought it was. Its own // Observation because the whole point of a mortality review is whether the // right grade of clinician saw the patient early enough, and that question is // asked across deaths, not within one. qr.item as g where (linkId = 'first-clinician') then { g.item as it where ((linkId = 'first-clinician/rank') 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 = 'mortality-review-rank-of-the-first-clinician-who-attended' "cd"; it -> cg.display = 'Rank of the first clinician who attended' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as txt -> obs.note as n, n.text = txt "text"; }; } "narr_mortality_review_rank_of_the_first_clinician_who_attended"; g.item as it where ((linkId = 'first-clinician/provisional-diagnosis') 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 = 'mortality-review-provisional-diagnosis-made-by-the-first-clinician' "cd"; it -> cg.display = 'Provisional diagnosis made by the first clinician' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as txt -> obs.note as n, n.text = txt "text"; }; } "narr_mortality_review_provisional_diagnosis_made_by_the_first_clinician"; } "firstClinicianGroup"; qr.item as it where ((linkId = 'senior-review') 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 = 'mortality-review-time-of-first-senior-clinician-review' "cd"; it -> cg.display = 'Time of first senior clinician review' "dsp"; } "coding"; } "code"; it.answer first as a then { a.value as v -> obs.value = v; }; } "seniorReviewObservation"; } // ───────────────────────────────────────────────────────────────────────────── // 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 BuildCompositionBase(source qr : QR, target r : Composition, target entry) { qr -> r then SetResponseProvenance(qr, r) "responseProvenance"; qr -> r.id = uuid() then SetCompositionFullUrl(r, entry) "idAndFullUrl"; qr -> entry.request as request then { qr -> request.method = 'POST' "requestMethod"; qr -> request.url = 'Composition' "requestUrl"; } "entryRequest"; qr.subject as s -> r.subject = s; } group SetCompositionFullUrl(source r : Composition, target entry) { r.id as id -> entry.fullUrl = append('https://fhir.slade360.co.ke/fhir/Composition/', id) "assignFullUrl"; } // ── 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 = 'mortality-committee-findings' "provenanceCode"; qr -> t.display = 'Mortality committee findings and recommendations' "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": "ExtractMortalityCommitteeFindings",
"text": {
"status": "generated",
"div": "<!-- snip (see above) -->"
},
"url": "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractMortalityCommitteeFindings",
"version": "0.1.0",
"name": "ExtractMortalityCommitteeFindings",
"title": "Mortality Committee Findings 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 death review as a Composition under LOINC 34133-9, one section per numbered question, each section naming an Observation that carries its text. A governance document rather than a clinical note, so it is kept whole: the committee's opinion means nothing separated from the initial management it is an opinion about.",
"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"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/Composition",
"mode": "target",
"alias": "Composition"
}
],
"group": [
{
"name": "ExtractMortalityCommitteeFindings",
"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": "mortalityReviewComposition",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "entry"
},
{
"context": "entry",
"element": "resource",
"variable": "comp",
"transform": "create",
"parameter": [
{
"valueString": "Composition"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp"
},
{
"context": "entry"
}
],
"dependent": [
{
"name": "BuildCompositionBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "comp"
},
{
"valueId": "entry"
}
]
}
]
},
{
"name": "status",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp",
"element": "status",
"transform": "copy",
"parameter": [
{
"valueString": "final"
}
]
}
]
},
{
"name": "title",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Mortality committee findings and recommendations"
}
]
}
]
},
{
"name": "date",
"source": [
{
"context": "qr",
"element": "authored",
"variable": "t"
}
],
"target": [
{
"context": "comp",
"element": "date",
"transform": "copy",
"parameter": [
{
"valueId": "t"
}
]
}
]
},
{
"name": "author",
"source": [
{
"context": "qr",
"element": "source",
"variable": "src"
}
],
"target": [
{
"context": "comp",
"element": "author",
"transform": "copy",
"parameter": [
{
"valueId": "src"
}
]
}
]
},
{
"name": "type",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp",
"element": "type",
"variable": "tp"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "tp",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "34133-9"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Summary of episode note"
}
]
}
]
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp",
"element": "category",
"variable": "cat"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cat",
"element": "coding",
"variable": "cg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/CodeSystem/document-type-codesystem"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "mortality-committee-findings"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Mortality committee findings and recommendations"
}
]
}
]
}
]
}
]
},
{
"name": "confidentiality",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "comp",
"element": "meta",
"variable": "m"
},
{
"context": "m",
"element": "security",
"variable": "sec"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sec",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sec",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "R"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sec",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "restricted"
}
]
}
]
}
],
"documentation": "Restricted by default. This is a death review, and whether it belongs in\r\nthe patient's clinical record at all is a policy question -- so it is\r\nlabelled as the more sensitive of the two possibilities rather than the\r\nless, which is the safe direction to be wrong in.\r\nR5 removed Composition.confidentiality; the label lives in\r\nResource.meta.security. Restricted rather than normal, deliberately: for\r\na death review and for the mortuary set, whether the record belongs in\r\nthe patient's clinical file at all is an open policy question, and the\r\nsafe direction to be wrong in is the more protective one."
},
{
"name": "reviewGroup",
"source": [
{
"context": "qr",
"element": "item",
"variable": "g",
"condition": "linkId = 'review'"
}
],
"rule": [
{
"name": "attendanceRule",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'review/attendance-or-admission') and answer.value.exists()"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "eventStart",
"source": [
{
"context": "a",
"element": "value",
"variable": "v"
}
],
"target": [
{
"context": "comp",
"element": "event",
"variable": "ev"
},
{
"context": "ev",
"element": "period",
"variable": "per"
},
{
"context": "per",
"element": "start",
"transform": "copy",
"parameter": [
{
"valueId": "v"
}
]
}
]
}
]
}
]
},
{
"name": "chairmanRule",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'review/chairman') and answer.value.exists()"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "attester",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "comp",
"element": "attester",
"variable": "att"
}
],
"rule": [
{
"name": "mode",
"source": [
{
"context": "txt"
}
],
"target": [
{
"context": "att",
"element": "mode",
"variable": "am"
},
{
"context": "am",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Chairman of the mortality committee"
}
]
}
]
},
{
"name": "party",
"source": [
{
"context": "txt"
}
],
"target": [
{
"context": "att",
"element": "party",
"variable": "pref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "pref",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "secretaryRule",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'review/secretary') and answer.value.exists()"
}
],
"rule": [
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "secretaryNote",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "comp",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "section_presenting_complaints",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'presenting-complaints') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Initial presenting complaints"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "10164-2"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "History of Present illness Narrative"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "10164-2"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "History of Present illness Narrative"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Initial presenting complaints on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
},
{
"name": "section_previous_history",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'previous-history') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Previous available medical history"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "11348-0"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "History of Past illness note"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "11348-0"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "History of Past illness note"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Previous available medical history on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
},
{
"name": "section_initial_management",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'initial-management') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Initial management"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "18776-5"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Plan of care note"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "18776-5"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Plan of care note"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Initial management on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
},
{
"name": "section_complications",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'complications') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Observed complications"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "55109-3"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Complications Document"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "55109-3"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Complications Document"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Observed complications on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
},
{
"name": "section_committee_opinion",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'committee-opinion') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Opinion of the committee"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "51848-0"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Evaluation note"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "51848-0"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Evaluation note"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Opinion of the committee on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
},
{
"name": "section_recommendation",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'recommendation') and answer.value.exists()"
}
],
"target": [
{
"context": "comp",
"element": "section",
"variable": "sec"
}
],
"rule": [
{
"name": "title",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "title",
"transform": "copy",
"parameter": [
{
"valueString": "Recommendation"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "code",
"variable": "sc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sc",
"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": "62387-6"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Interventions Narrative"
}
]
}
]
}
]
}
]
},
{
"name": "sectionObservation",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "bundle",
"element": "entry",
"variable": "sentry"
},
{
"context": "sentry",
"element": "resource",
"variable": "sobs",
"transform": "create",
"parameter": [
{
"valueString": "Observation"
}
]
}
],
"rule": [
{
"name": "base",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
},
{
"context": "sentry"
}
],
"dependent": [
{
"name": "BuildObsBase",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
},
{
"valueId": "sentry"
}
]
}
]
},
{
"name": "category",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "sobs"
}
],
"dependent": [
{
"name": "SetSurveyCategory",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "sobs"
}
]
}
]
},
{
"name": "code",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sobs",
"element": "code",
"variable": "scc"
}
],
"rule": [
{
"name": "coding",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "coding",
"variable": "scg"
}
],
"rule": [
{
"name": "sys",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "system",
"transform": "copy",
"parameter": [
{
"valueString": "http://loinc.org"
}
]
}
]
},
{
"name": "cd",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "code",
"transform": "copy",
"parameter": [
{
"valueString": "62387-6"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Interventions Narrative"
}
]
}
]
}
]
},
{
"name": "codeText",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "scc",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueString": "Recommendation on the Mortality committee review"
}
]
}
]
}
]
},
{
"name": "answer",
"source": [
{
"context": "it",
"element": "answer",
"listMode": "first",
"variable": "a"
}
],
"rule": [
{
"name": "text",
"source": [
{
"context": "a",
"element": "value",
"variable": "txt"
}
],
"target": [
{
"context": "sobs",
"element": "note",
"variable": "n"
},
{
"context": "n",
"element": "text",
"transform": "copy",
"parameter": [
{
"valueId": "txt"
}
]
}
]
}
]
},
{
"name": "linkEntry",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "sec",
"element": "entry",
"variable": "sref",
"transform": "create",
"parameter": [
{
"valueString": "Reference"
}
]
},
{
"context": "sref",
"element": "reference",
"transform": "reference",
"parameter": [
{
"valueId": "sobs"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "firstClinicianGroup",
"source": [
{
"context": "qr",
"element": "item",
"variable": "g",
"condition": "linkId = 'first-clinician'"
}
],
"rule": [
{
"name": "narr_mortality_review_rank_of_the_first_clinician_who_attended",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'first-clinician/rank') 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": "mortality-review-rank-of-the-first-clinician-who-attended"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Rank of the first clinician who attended"
}
]
}
]
}
]
}
]
},
{
"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"
}
]
}
]
}
]
}
]
},
{
"name": "narr_mortality_review_provisional_diagnosis_made_by_the_first_clinician",
"source": [
{
"context": "g",
"element": "item",
"variable": "it",
"condition": "(linkId = 'first-clinician/provisional-diagnosis') 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": "mortality-review-provisional-diagnosis-made-by-the-first-clinician"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Provisional diagnosis made by the first clinician"
}
]
}
]
}
]
}
]
},
{
"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": "Who saw the patient first, and what they thought it was. Its own\r\nObservation because the whole point of a mortality review is whether the\r\nright grade of clinician saw the patient early enough, and that question is\r\nasked across deaths, not within one."
},
{
"name": "seniorReviewObservation",
"source": [
{
"context": "qr",
"element": "item",
"variable": "it",
"condition": "(linkId = 'senior-review') 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": "mortality-review-time-of-first-senior-clinician-review"
}
]
}
]
},
{
"name": "dsp",
"source": [
{
"context": "it"
}
],
"target": [
{
"context": "cg",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Time of first senior clinician review"
}
]
}
]
}
]
}
]
},
{
"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": "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": "BuildCompositionBase",
"input": [
{
"name": "qr",
"type": "QR",
"mode": "source"
},
{
"name": "r",
"type": "Composition",
"mode": "target"
},
{
"name": "entry",
"mode": "target"
}
],
"rule": [
{
"name": "responseProvenance",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "r"
}
],
"dependent": [
{
"name": "SetResponseProvenance",
"parameter": [
{
"valueId": "qr"
},
{
"valueId": "r"
}
]
}
]
},
{
"name": "idAndFullUrl",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "r",
"element": "id",
"transform": "uuid"
}
],
"dependent": [
{
"name": "SetCompositionFullUrl",
"parameter": [
{
"valueId": "r"
},
{
"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": "Composition"
}
]
}
]
}
]
},
{
"name": "subject",
"source": [
{
"context": "qr",
"element": "subject",
"variable": "s"
}
],
"target": [
{
"context": "r",
"element": "subject",
"transform": "copy",
"parameter": [
{
"valueId": "s"
}
]
}
]
}
]
},
{
"name": "SetCompositionFullUrl",
"input": [
{
"name": "r",
"type": "Composition",
"mode": "source"
},
{
"name": "entry",
"mode": "target"
}
],
"rule": [
{
"name": "assignFullUrl",
"source": [
{
"context": "r",
"element": "id",
"variable": "id"
}
],
"target": [
{
"context": "entry",
"element": "fullUrl",
"transform": "append",
"parameter": [
{
"valueString": "https://fhir.slade360.co.ke/fhir/Composition/"
},
{
"valueId": "id"
}
]
}
]
}
]
},
{
"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": "mortality-committee-findings"
}
]
}
]
},
{
"name": "provenanceDisplay",
"source": [
{
"context": "qr"
}
],
"target": [
{
"context": "t",
"element": "display",
"transform": "copy",
"parameter": [
{
"valueString": "Mortality committee findings and recommendations"
}
]
}
]
}
]
}
]
},
{
"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."
}
]
}
]
}