FHIR © HL7.org  |  FHIRsmith 4.0.1  |  Server Home  |  XIG Home  |  XIG Stats  | 

FHIR IG analytics

Packagesilfhirprofileig
Resource TypeStructureMap
IdStructureMap-ExtractCoagulationProfileRequisition.json
FHIR VersionR5
Sourcehttps://build.fhir.org/ig/savannahghi/sil_fhir_profile_ig/StructureMap-ExtractCoagulationProfileRequisition.html
URLhttps://fhir.slade360.co.ke/fhir/StructureMap/ExtractCoagulationProfileRequisition
Version0.1.0
Statusactive
Date2026-09-11T12:18:36+00:00
NameExtractCoagulationProfileRequisition
TitleCoagulation Profile Requisition Extraction
DescriptionPT under LOINC 5964-2, INR under 6301-6 and APTT under 3173-2, each carrying the reference range printed on the form. The INR range is the reason this map needs a question answered: the printed 2.0 to 3.5 applies only to a patient on stabilised oral anticoagulant therapy, so it is attached only when the form says yes. Attaching it unconditionally would flag every patient not on warfarin as out of range, which is the opposite of useful.

Resources that use this resource

No resources found


Resources that this resource uses

No resources found


Narrative

Note: links and images are rebased to the (stated) source

Generated Narrative: StructureMap ExtractCoagulationProfileRequisition

/// url = 'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractCoagulationProfileRequisition'
/// name = 'ExtractCoagulationProfileRequisition'
/// title = 'Coagulation Profile Requisition Extraction'
/// status = 'active'
/// description = 'PT under LOINC 5964-2, INR under 6301-6 and APTT under 3173-2, each carrying the reference range printed on the form. The INR range is the reason this map needs a question answered: the printed 2.0 to 3.5 applies only to a patient on stabilised oral anticoagulant therapy, so it is attached only when the form says yes. Attaching it unconditionally would flag every patient not on warfarin as out of range, which is the opposite of useful.'

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/ServiceRequest" alias ServiceRequest as target

group ExtractCoagulationProfileRequisition(source qr : QR, target bundle : Bundle) {
  qr -> bundle.type = 'transaction' "setBundleType";
  qr ->  bundle.entry as entry,  entry.resource = create('ServiceRequest') as sr then {
    qr ->  sr,  entry then BuildServiceRequestBase(qr, sr, entry) "base";
    qr -> sr.status = 'active' "status";
    qr -> sr.intent = 'order' "intent";
    qr.encounter as e -> sr.encounter = e;
    qr.authored as t -> sr.authoredOn = t "authoredOn";
    qr -> sr.category as cat then {
      qr -> cat.coding as cg then {
        qr -> cg.system = 'http://snomed.info/sct' "sys";
        qr -> cg.code = '108252007' "cd";
        qr -> cg.display = 'Laboratory procedure' "dsp";
      } "coding";
    } "category";
    // A local code. LOINC publishes every individual coagulation analyte but
    // nothing for the profile as ordered -- the panel codes that look right
    // (34530-4, 34530-6) are an ABO and Rh group panel -- and a guessed panel
    // code on a laboratory order is worse than a local one that says exactly
    // what the form asks for.
    qr ->  sr.code as cr,  cr.concept as cc then {
      qr -> cc.coding as cg then {
        qr -> cg.system = 'https://fhir.slade360.co.ke/fhir/CodeSystem/concept-codesystem' "sys";
        qr -> cg.code = 'anticoagulation-coagulation-profile' "cd";
        qr -> cg.display = 'Coagulation profile' "dsp";
      } "coding";
    } "code";
    qr.item as g where (linkId = 'request') then {
      g.item as it where ((linkId = 'request/requester') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as ref -> sr.requester = ref "requester";
        };
      } "requesterRule";
      g.item as it where ((linkId = 'request/urgency') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as cv where (code = 'lab-urgency-desperate') -> sr.priority = 'stat' "stat";
        } "desperateRule";
        it.answer first as a then {
          a.value as cv where (code = 'lab-urgency-urgent') -> sr.priority = 'urgent' "urgent";
        } "urgentRule";
        it.answer first as a then {
          a.value as cv where (code = 'lab-urgency-routine') -> sr.priority = 'routine' "routine";
        } "routineRule";
      } "urgencyRule";
      g.item as it where ((linkId = 'request/specimen') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  sr.specimen = create('Reference') as spref,  spref.display = txt "specimen";
        };
      } "specimenRule";
    } "requestGroup";
    qr.item as it where ((linkId = 'clinical-history') and answer.value.exists()) then {
      it.answer first as a then {
        a.value as txt ->  sr.note as n,  n.text = txt "historyNote";
      };
    } "historyRule";
  } "coagulationRequest";
  qr.item as g where (linkId = 'results') then {
    // ── Prothrombin time ──────────────────────────────────────────────────
    g.item as it where ((linkId = 'results/prothrombin-time') 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 SetLaboratoryCategory(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 = '5964-2' "cd";
          it -> cg.display = 'Prothrombin time (PT) in Blood by Coagulation assay' "dsp";
        } "coding";
      } "code";
      it.answer first as a then {
        a.value as v -> obs.value = v;
      };
      it -> obs.referenceRange as rr then {
        it -> rr.low = create('Quantity') as lo then {
          it -> lo.value = '11' "loValue";
          it -> lo.unit = 'seconds' "loUnit";
          it -> lo.system = 'http://unitsofmeasure.org' "loSystem";
          it -> lo.code = 's' "loCode";
        } "low";
        it -> rr.high = create('Quantity') as hi then {
          it -> hi.value = '16' "hiValue";
          it -> hi.unit = 'seconds' "hiUnit";
          it -> hi.system = 'http://unitsofmeasure.org' "hiSystem";
          it -> hi.code = 's' "hiCode";
        } "high";
        it -> rr.text = 'Reference range printed on the coagulation profile form' "rrText";
      } "referenceRange";
      qr -> obs then SetCoagulationContext(qr, obs) "context";
    } "prothrombinTime";
    // ── APTT ──────────────────────────────────────────────────────────────
    g.item as it where ((linkId = 'results/aptt') 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 SetLaboratoryCategory(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 = '3173-2' "cd";
          it -> cg.display = 'aPTT in Blood by Coagulation assay' "dsp";
        } "coding";
      } "code";
      it.answer first as a then {
        a.value as v -> obs.value = v;
      };
      it -> obs.referenceRange as rr then {
        it -> rr.low = create('Quantity') as lo then {
          it -> lo.value = '26.1' "loValue";
          it -> lo.unit = 'seconds' "loUnit";
          it -> lo.system = 'http://unitsofmeasure.org' "loSystem";
          it -> lo.code = 's' "loCode";
        } "low";
        it -> rr.high = create('Quantity') as hi then {
          it -> hi.value = '36.3' "hiValue";
          it -> hi.unit = 'seconds' "hiUnit";
          it -> hi.system = 'http://unitsofmeasure.org' "hiSystem";
          it -> hi.code = 's' "hiCode";
        } "high";
        it -> rr.text = 'Reference range printed on the coagulation profile form' "rrText";
      } "referenceRange";
      qr -> obs then SetCoagulationContext(qr, obs) "context";
    } "aptt";
    // ── INR ───────────────────────────────────────────────────────────────
    // Observation.value[x] has no decimal choice, so the INR -- a bare ratio
    // with no unit -- has to be built as a Quantity with UCUM's unity code.
    g.item as it where ((linkId = 'results/inr') 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 SetLaboratoryCategory(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 = '6301-6' "cd";
          it -> cg.display = 'INR in Platelet poor plasma by Coagulation assay' "dsp";
        } "coding";
      } "code";
      it.answer first as a then {
        a.value as v -> obs.value = create('Quantity') as q then {
          v -> q.value = v "qValue";
          v -> q.unit = 'ratio' "qUnit";
          v -> q.system = 'http://unitsofmeasure.org' "qSystem";
          v -> q.code = '1' "qCode";
        } "quantity";
      };
      // The printed 2.0-3.5 range attaches only where the patient is on
      // stabilised oral anticoagulants. For anyone else it is not a target and
      // attaching it would mark every unanticoagulated patient abnormal.
      qr.item as ac where (linkId = 'anticoagulation') then {
        ac.item as oa where ((linkId = 'anticoagulation/on-oral-anticoagulant') and (answer.value.ofType(Coding).code = 'Y')) then {
          oa -> obs.referenceRange as rr then {
            oa -> rr.low = create('Quantity') as lo then {
              oa -> lo.value = '2.0' "loValue";
              oa -> lo.unit = 'ratio' "loUnit";
              oa -> lo.system = 'http://unitsofmeasure.org' "loSystem";
              oa -> lo.code = '1' "loCode";
            } "low";
            oa -> rr.high = create('Quantity') as hi then {
              oa -> hi.value = '3.5' "hiValue";
              oa -> hi.unit = 'ratio' "hiUnit";
              oa -> hi.system = 'http://unitsofmeasure.org' "hiSystem";
              oa -> hi.code = '1' "hiCode";
            } "high";
            oa -> rr.text = 'Therapeutic range for a patient on stabilised oral anticoagulant therapy, as printed on the form' "rrText";
          } "referenceRange";
        } "onAnticoagulantRule";
      } "anticoagulationGroup";
      qr -> obs then SetCoagulationContext(qr, obs) "context";
    } "inr";
  } "resultsGroup";
  qr.item as it where ((linkId = 'clinical-history') 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 = 'http://loinc.org' "sys";
        it -> cg.code = '55752-0' "cd";
        it -> cg.display = 'Clinical information' "dsp";
      } "coding";
      it -> cc.text = 'Clinical history given to the coagulation laboratory' "codeText";
    } "code";
    it.answer first as a then {
      a.value as txt ->  obs.note as n,  n.text = txt "text";
    };
  } "narr_55752_0";
  qr.item as g where (linkId = 'anticoagulation') then {
    g.item as it where ((linkId = 'anticoagulation/on-oral-anticoagulant') 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 = 'anticoagulation-on-stabilised-oral-anticoagulant-therapy' "cd";
          it -> cg.display = 'On stabilised oral anticoagulant therapy' "dsp";
        } "coding";
      } "code";
      it.answer first as a then {
        a.value as cv -> obs.value = create('CodeableConcept') as cc then {
          cv -> cc.coding = cv "valueCoding";
          cv.display as d -> cc.text = d "valueText";
        } "codedValue";
      };
    } "coded_anticoagulation";
    g.item as it where ((linkId = 'anticoagulation/agent') 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 = 'anticoagulation-anticoagulant-agent-and-dose' "cd";
          it -> cg.display = 'Anticoagulant agent and dose' "dsp";
        } "coding";
      } "code";
      it.answer first as a then {
        a.value as txt ->  obs.note as n,  n.text = txt "text";
      };
    } "narr_anticoagulation_anticoagulant_agent_and_dose";
  } "anticoagulationObs";
}

group SetCoagulationContext(source qr : QR, target obs : Observation) {
  qr.item as g where (linkId = 'laboratory') then {
    g.item as it where ((linkId = 'laboratory/collected-at') and answer.value.exists()) then {
      it.answer first as a then {
        a.value as v -> obs.effective = v "effective";
      };
    } "collectedAtRule";
    g.item as it where ((linkId = 'laboratory/tested-by') and answer.value.exists()) then {
      it.answer first as a then {
        a.value as ref -> obs.performer = ref "testedBy";
      };
    } "testedByRule";
    g.item as it where ((linkId = 'laboratory/dispatched-at') and answer.value.exists()) then {
      it.answer first as a then {
        a.value as v -> obs.issued = cast(v, 'instant') "issued";
      };
    } "dispatchedRule";
    g.item as it where ((linkId = 'laboratory/lab-registration-number') and answer.value.exists()) then {
      it.answer first as a then {
        a.value as txt -> obs.identifier as ident then {
          txt -> ident.system = 'https://fhir.slade360.co.ke/fhir/identifier/lab-registration' "identSystem";
          txt -> ident.value = txt "identValue";
        } "identifier";
      };
    } "labRegRule";
  } "laboratoryGroup";
}

// ─────────────────────────────────────────────────────────────────────────────
// 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 SetLaboratoryCategory(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 = 'laboratory' "categoryCode";
      qr -> coding.display = 'Laboratory' "categoryDisplay";
    } "categoryCoding";
  } "category";
}

group BuildServiceRequestBase(source qr : QR, target r : ServiceRequest, target entry) {
  qr -> r then SetResponseProvenance(qr, r) "responseProvenance";
  qr -> r.id = uuid() then SetServiceRequestFullUrl(r, entry) "idAndFullUrl";
  qr -> entry.request as request then {
    qr -> request.method = 'POST' "requestMethod";
    qr -> request.url = 'ServiceRequest' "requestUrl";
  } "entryRequest";
  qr.subject as s -> r.subject = s;
}

group SetServiceRequestFullUrl(source r : ServiceRequest, target entry) {
  r.id as id -> entry.fullUrl = append('https://fhir.slade360.co.ke/fhir/ServiceRequest/', 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 = 'coagulation-profile-requisition' "provenanceCode";
      qr -> t.display = 'Coagulation profile requisition' "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";
}


Source1

{
  "resourceType": "StructureMap",
  "id": "ExtractCoagulationProfileRequisition",
  "text": {
    "status": "generated",
    "div": "<!-- snip (see above) -->"
  },
  "url": "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractCoagulationProfileRequisition",
  "version": "0.1.0",
  "name": "ExtractCoagulationProfileRequisition",
  "title": "Coagulation Profile Requisition 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": "PT under LOINC 5964-2, INR under 6301-6 and APTT under 3173-2, each carrying the reference range printed on the form. The INR range is the reason this map needs a question answered: the printed 2.0 to 3.5 applies only to a patient on stabilised oral anticoagulant therapy, so it is attached only when the form says yes. Attaching it unconditionally would flag every patient not on warfarin as out of range, which is the opposite of useful.",
  "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/ServiceRequest",
      "mode": "target",
      "alias": "ServiceRequest"
    }
  ],
  "group": [
    {
      "name": "ExtractCoagulationProfileRequisition",
      "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": "coagulationRequest",
          "source": [
            {
              "context": "qr"
            }
          ],
          "target": [
            {
              "context": "bundle",
              "element": "entry",
              "variable": "entry"
            },
            {
              "context": "entry",
              "element": "resource",
              "variable": "sr",
              "transform": "create",
              "parameter": [
                {
                  "valueString": "ServiceRequest"
                }
              ]
            }
          ],
          "rule": [
            {
              "name": "base",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "sr"
                },
                {
                  "context": "entry"
                }
              ],
              "dependent": [
                {
                  "name": "BuildServiceRequestBase",
                  "parameter": [
                    {
                      "valueId": "qr"
                    },
                    {
                      "valueId": "sr"
                    },
                    {
                      "valueId": "entry"
                    }
                  ]
                }
              ]
            },
            {
              "name": "status",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "element": "status",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "active"
                    }
                  ]
                }
              ]
            },
            {
              "name": "intent",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "element": "intent",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "order"
                    }
                  ]
                }
              ]
            },
            {
              "name": "encounter",
              "source": [
                {
                  "context": "qr",
                  "element": "encounter",
                  "variable": "e"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "element": "encounter",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueId": "e"
                    }
                  ]
                }
              ]
            },
            {
              "name": "authoredOn",
              "source": [
                {
                  "context": "qr",
                  "element": "authored",
                  "variable": "t"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "element": "authoredOn",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueId": "t"
                    }
                  ]
                }
              ]
            },
            {
              "name": "category",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "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": "http://snomed.info/sct"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "cd",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "code",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "108252007"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "dsp",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "display",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Laboratory procedure"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "code",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "sr",
                  "element": "code",
                  "variable": "cr"
                },
                {
                  "context": "cr",
                  "element": "concept",
                  "variable": "cc"
                }
              ],
              "rule": [
                {
                  "name": "coding",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "cc",
                      "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/concept-codesystem"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "cd",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "code",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "anticoagulation-coagulation-profile"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "dsp",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "display",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Coagulation profile"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "A local code. LOINC publishes every individual coagulation analyte but\r\nnothing for the profile as ordered -- the panel codes that look right\r\n(34530-4, 34530-6) are an ABO and Rh group panel -- and a guessed panel\r\ncode on a laboratory order is worse than a local one that says exactly\r\nwhat the form asks for."
            },
            {
              "name": "requestGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "g",
                  "condition": "linkId = 'request'"
                }
              ],
              "rule": [
                {
                  "name": "requesterRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'request/requester') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "requester",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "ref"
                            }
                          ],
                          "target": [
                            {
                              "context": "sr",
                              "element": "requester",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "ref"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "urgencyRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'request/urgency') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "desperateRule",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "stat",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "cv",
                              "condition": "code = 'lab-urgency-desperate'"
                            }
                          ],
                          "target": [
                            {
                              "context": "sr",
                              "element": "priority",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "stat"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "urgentRule",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "urgent",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "cv",
                              "condition": "code = 'lab-urgency-urgent'"
                            }
                          ],
                          "target": [
                            {
                              "context": "sr",
                              "element": "priority",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "urgent"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "routineRule",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "routine",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "cv",
                              "condition": "code = 'lab-urgency-routine'"
                            }
                          ],
                          "target": [
                            {
                              "context": "sr",
                              "element": "priority",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "routine"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "specimenRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'request/specimen') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "specimen",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "sr",
                              "element": "specimen",
                              "variable": "spref",
                              "transform": "create",
                              "parameter": [
                                {
                                  "valueString": "Reference"
                                }
                              ]
                            },
                            {
                              "context": "spref",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "historyRule",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'clinical-history') and answer.value.exists()"
                }
              ],
              "rule": [
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "historyNote",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "txt"
                        }
                      ],
                      "target": [
                        {
                          "context": "sr",
                          "element": "note",
                          "variable": "n"
                        },
                        {
                          "context": "n",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueId": "txt"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "resultsGroup",
          "source": [
            {
              "context": "qr",
              "element": "item",
              "variable": "g",
              "condition": "linkId = 'results'"
            }
          ],
          "rule": [
            {
              "name": "prothrombinTime",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'results/prothrombin-time') 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": "SetLaboratoryCategory",
                      "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": "5964-2"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "Prothrombin time (PT) in Blood by Coagulation assay"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "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": "referenceRange",
                  "source": [
                    {
                      "context": "it"
                    }
                  ],
                  "target": [
                    {
                      "context": "obs",
                      "element": "referenceRange",
                      "variable": "rr"
                    }
                  ],
                  "rule": [
                    {
                      "name": "low",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "low",
                          "variable": "lo",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "loValue",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "11"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loUnit",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "unit",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "seconds"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loSystem",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "http://unitsofmeasure.org"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loCode",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "s"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "high",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "high",
                          "variable": "hi",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "hiValue",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "16"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiUnit",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "unit",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "seconds"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiSystem",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "http://unitsofmeasure.org"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiCode",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "s"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "rrText",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Reference range printed on the coagulation profile form"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "context",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "obs"
                    }
                  ],
                  "dependent": [
                    {
                      "name": "SetCoagulationContext",
                      "parameter": [
                        {
                          "valueId": "qr"
                        },
                        {
                          "valueId": "obs"
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "── Prothrombin time ──────────────────────────────────────────────────"
            },
            {
              "name": "aptt",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'results/aptt') 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": "SetLaboratoryCategory",
                      "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": "3173-2"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "aPTT in Blood by Coagulation assay"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "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": "referenceRange",
                  "source": [
                    {
                      "context": "it"
                    }
                  ],
                  "target": [
                    {
                      "context": "obs",
                      "element": "referenceRange",
                      "variable": "rr"
                    }
                  ],
                  "rule": [
                    {
                      "name": "low",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "low",
                          "variable": "lo",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "loValue",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "26.1"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loUnit",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "unit",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "seconds"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loSystem",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "http://unitsofmeasure.org"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "loCode",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "lo",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "s"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "high",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "high",
                          "variable": "hi",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "hiValue",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "36.3"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiUnit",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "unit",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "seconds"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiSystem",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "http://unitsofmeasure.org"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "hiCode",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "hi",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "s"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "rrText",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "rr",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Reference range printed on the coagulation profile form"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "context",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "obs"
                    }
                  ],
                  "dependent": [
                    {
                      "name": "SetCoagulationContext",
                      "parameter": [
                        {
                          "valueId": "qr"
                        },
                        {
                          "valueId": "obs"
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "── APTT ──────────────────────────────────────────────────────────────"
            },
            {
              "name": "inr",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'results/inr') 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": "SetLaboratoryCategory",
                      "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": "6301-6"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "INR in Platelet poor plasma by Coagulation assay"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "quantity",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "v"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "value",
                          "variable": "q",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "Quantity"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "qValue",
                          "source": [
                            {
                              "context": "v"
                            }
                          ],
                          "target": [
                            {
                              "context": "q",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "v"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "qUnit",
                          "source": [
                            {
                              "context": "v"
                            }
                          ],
                          "target": [
                            {
                              "context": "q",
                              "element": "unit",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "ratio"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "qSystem",
                          "source": [
                            {
                              "context": "v"
                            }
                          ],
                          "target": [
                            {
                              "context": "q",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "http://unitsofmeasure.org"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "qCode",
                          "source": [
                            {
                              "context": "v"
                            }
                          ],
                          "target": [
                            {
                              "context": "q",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "1"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "anticoagulationGroup",
                  "source": [
                    {
                      "context": "qr",
                      "element": "item",
                      "variable": "ac",
                      "condition": "linkId = 'anticoagulation'"
                    }
                  ],
                  "rule": [
                    {
                      "name": "onAnticoagulantRule",
                      "source": [
                        {
                          "context": "ac",
                          "element": "item",
                          "variable": "oa",
                          "condition": "(linkId = 'anticoagulation/on-oral-anticoagulant') and (answer.value.ofType(Coding).code = 'Y')"
                        }
                      ],
                      "rule": [
                        {
                          "name": "referenceRange",
                          "source": [
                            {
                              "context": "oa"
                            }
                          ],
                          "target": [
                            {
                              "context": "obs",
                              "element": "referenceRange",
                              "variable": "rr"
                            }
                          ],
                          "rule": [
                            {
                              "name": "low",
                              "source": [
                                {
                                  "context": "oa"
                                }
                              ],
                              "target": [
                                {
                                  "context": "rr",
                                  "element": "low",
                                  "variable": "lo",
                                  "transform": "create",
                                  "parameter": [
                                    {
                                      "valueString": "Quantity"
                                    }
                                  ]
                                }
                              ],
                              "rule": [
                                {
                                  "name": "loValue",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "lo",
                                      "element": "value",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "2.0"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "loUnit",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "lo",
                                      "element": "unit",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "ratio"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "loSystem",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "lo",
                                      "element": "system",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "http://unitsofmeasure.org"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "loCode",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "lo",
                                      "element": "code",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "1"
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "name": "high",
                              "source": [
                                {
                                  "context": "oa"
                                }
                              ],
                              "target": [
                                {
                                  "context": "rr",
                                  "element": "high",
                                  "variable": "hi",
                                  "transform": "create",
                                  "parameter": [
                                    {
                                      "valueString": "Quantity"
                                    }
                                  ]
                                }
                              ],
                              "rule": [
                                {
                                  "name": "hiValue",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "hi",
                                      "element": "value",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "3.5"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "hiUnit",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "hi",
                                      "element": "unit",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "ratio"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "hiSystem",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "hi",
                                      "element": "system",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "http://unitsofmeasure.org"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "name": "hiCode",
                                  "source": [
                                    {
                                      "context": "oa"
                                    }
                                  ],
                                  "target": [
                                    {
                                      "context": "hi",
                                      "element": "code",
                                      "transform": "copy",
                                      "parameter": [
                                        {
                                          "valueString": "1"
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "name": "rrText",
                              "source": [
                                {
                                  "context": "oa"
                                }
                              ],
                              "target": [
                                {
                                  "context": "rr",
                                  "element": "text",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueString": "Therapeutic range for a patient on stabilised oral anticoagulant therapy, as printed on the form"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "documentation": "The printed 2.0-3.5 range attaches only where the patient is on\r\nstabilised oral anticoagulants. For anyone else it is not a target and\r\nattaching it would mark every unanticoagulated patient abnormal."
                },
                {
                  "name": "context",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "obs"
                    }
                  ],
                  "dependent": [
                    {
                      "name": "SetCoagulationContext",
                      "parameter": [
                        {
                          "valueId": "qr"
                        },
                        {
                          "valueId": "obs"
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "── INR ───────────────────────────────────────────────────────────────\r\nObservation.value[x] has no decimal choice, so the INR -- a bare ratio\r\nwith no unit -- has to be built as a Quantity with UCUM's unity code."
            }
          ]
        },
        {
          "name": "narr_55752_0",
          "source": [
            {
              "context": "qr",
              "element": "item",
              "variable": "it",
              "condition": "(linkId = 'clinical-history') 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": "http://loinc.org"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "cd",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "code",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "55752-0"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "dsp",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "display",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Clinical information"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "codeText",
                  "source": [
                    {
                      "context": "it"
                    }
                  ],
                  "target": [
                    {
                      "context": "cc",
                      "element": "text",
                      "transform": "copy",
                      "parameter": [
                        {
                          "valueString": "Clinical history given to the coagulation laboratory"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "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": "anticoagulationObs",
          "source": [
            {
              "context": "qr",
              "element": "item",
              "variable": "g",
              "condition": "linkId = 'anticoagulation'"
            }
          ],
          "rule": [
            {
              "name": "coded_anticoagulation",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'anticoagulation/on-oral-anticoagulant') 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": "anticoagulation-on-stabilised-oral-anticoagulant-therapy"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "On stabilised oral anticoagulant therapy"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "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": "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": "narr_anticoagulation_anticoagulant_agent_and_dose",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'anticoagulation/agent') 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": "anticoagulation-anticoagulant-agent-and-dose"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "Anticoagulant agent and dose"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "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": "SetCoagulationContext",
      "input": [
        {
          "name": "qr",
          "type": "QR",
          "mode": "source"
        },
        {
          "name": "obs",
          "type": "Observation",
          "mode": "target"
        }
      ],
      "rule": [
        {
          "name": "laboratoryGroup",
          "source": [
            {
              "context": "qr",
              "element": "item",
              "variable": "g",
              "condition": "linkId = 'laboratory'"
            }
          ],
          "rule": [
            {
              "name": "collectedAtRule",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'laboratory/collected-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": "testedByRule",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'laboratory/tested-by') and answer.value.exists()"
                }
              ],
              "rule": [
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "testedBy",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "ref"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "performer",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueId": "ref"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "dispatchedRule",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'laboratory/dispatched-at') and answer.value.exists()"
                }
              ],
              "rule": [
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "issued",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "v"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "issued",
                          "transform": "cast",
                          "parameter": [
                            {
                              "valueId": "v"
                            },
                            {
                              "valueString": "instant"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "labRegRule",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'laboratory/lab-registration-number') and answer.value.exists()"
                }
              ],
              "rule": [
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "identifier",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "txt"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "identifier",
                          "variable": "ident"
                        }
                      ],
                      "rule": [
                        {
                          "name": "identSystem",
                          "source": [
                            {
                              "context": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "ident",
                              "element": "system",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "https://fhir.slade360.co.ke/fhir/identifier/lab-registration"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "identValue",
                          "source": [
                            {
                              "context": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "ident",
                              "element": "value",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "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": "SetLaboratoryCategory",
      "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": "laboratory"
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "categoryDisplay",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "coding",
                      "element": "display",
                      "transform": "copy",
                      "parameter": [
                        {
                          "valueString": "Laboratory"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "BuildServiceRequestBase",
      "input": [
        {
          "name": "qr",
          "type": "QR",
          "mode": "source"
        },
        {
          "name": "r",
          "type": "ServiceRequest",
          "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": "SetServiceRequestFullUrl",
              "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": "ServiceRequest"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "subject",
          "source": [
            {
              "context": "qr",
              "element": "subject",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "r",
              "element": "subject",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "s"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "SetServiceRequestFullUrl",
      "input": [
        {
          "name": "r",
          "type": "ServiceRequest",
          "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/ServiceRequest/"
                },
                {
                  "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": "coagulation-profile-requisition"
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "provenanceDisplay",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "t",
                      "element": "display",
                      "transform": "copy",
                      "parameter": [
                        {
                          "valueString": "Coagulation profile requisition"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "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."
        }
      ]
    }
  ]
}