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

FHIR IG analytics

Packagesilfhirprofileig
Resource TypeStructureMap
IdStructureMap-ExtractProcedureConsent.json
FHIR VersionR5
Sourcehttps://build.fhir.org/ig/savannahghi/sil_fhir_profile_ig/StructureMap-ExtractProcedureConsent.html
URLhttps://fhir.slade360.co.ke/fhir/StructureMap/ExtractProcedureConsent
Version0.1.0
Statusactive
Date2026-09-11T12:18:36+00:00
NameExtractProcedureConsent
TitleProcedure Consent Extraction
DescriptionThe three consent forms out as one Consent, with a provision per authorisation actually given: the procedure itself, the further-measures clause, the anaesthesia clause, and on an endoscopy form the tissue-disposal clause and each procedure ticked. Each provision is written only when its box was answered yes, so a consent nobody gave never appears as one. An Observation records whether the explanation was given in a language the person consenting understood, because that is what makes the consent informed and what an audit or a complaint turns on.

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 ExtractProcedureConsent

/// url = 'https://fhir.slade360.co.ke/fhir/StructureMap/ExtractProcedureConsent'
/// name = 'ExtractProcedureConsent'
/// title = 'Procedure Consent Extraction'
/// status = 'active'
/// description = 'The three consent forms out as one Consent, with a provision per authorisation actually given: the procedure itself, the further-measures clause, the anaesthesia clause, and on an endoscopy form the tissue-disposal clause and each procedure ticked. Each provision is written only when its box was answered yes, so a consent nobody gave never appears as one. An Observation records whether the explanation was given in a language the person consenting understood, because that is what makes the consent informed and what an audit or a complaint turns on.'

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/Consent" alias Consent as target
uses "http://hl7.org/fhir/StructureDefinition/Observation" alias Observation as target

group ExtractProcedureConsent(source qr : QR, target bundle : Bundle) {
  qr -> bundle.type = 'transaction' "setBundleType";
  // ── The Consent ─────────────────────────────────────────────────────────
  // Guarded on the person consenting having actually signed. Everything below
  // hangs off that signature, and a Consent built from a half-filled form
  // asserts a permission that was never given.
  qr where (item.where(linkId = 'signatures').item.where(linkId = 'signatures/consenter-signed').answer.value = true) ->  bundle.entry as entry,  entry.resource = create('Consent') as consent then {
    qr ->  consent,  entry then BuildConsentBase(qr, consent, entry) "base";
    qr -> consent.status = 'active' "status";
    qr -> consent.decision = 'permit' "decision";
    qr -> consent.category as cat then {
      qr -> cat.coding as cg then {
        qr -> cg.system = 'http://loinc.org' "sys";
        qr -> cg.code = '64293-4' "cd";
        qr -> cg.display = 'Procedure consent Document' "dsp";
      } "coding";
    } "category";
    // The signing time, from the form. Not qr.authored: a consent taken the
    // evening before an operation and transcribed the next morning would
    // otherwise be dated to the transcription, which is the one date a dispute
    // about consent turns on.
    qr.item as sg where (linkId = 'signatures') then {
      sg.item as it where ((linkId = 'signatures/consenter-signed-at') and answer.value.exists()) then {
        it.answer first as a then {
          // The form asks for a date *and time* signed, and Consent.date is a
          // `date`. The timestamp goes to Consent.period.start, which keeps it:
          // a consent taken the evening before theatre and one taken in the
          // anaesthetic room are hours apart and share a date.
          a.value as t ->  consent.period as per,  per.start = t "signedPeriodStart";
        };
      } "signedAtRule";
    } "signaturesGroup";
    // Who explained it becomes the verifier -- they attested that the
    // discussion happened -- and who consented becomes the grantor.
    qr.item as eg where (linkId = 'explained-by') then {
      eg.item as it where ((linkId = 'explained-by/clinician') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as ref -> consent.verification as ver then {
            ref -> ver.verified = true "verified";
            ref -> ver.verifiedBy = ref "verifiedBy";
          } "verification";
        };
      } "clinicianRule";
      eg.item as it where ((linkId = 'explained-by/what-was-explained') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  consent.provision as prov,  prov.code as pc,  pc.text = txt "explanationProvision";
        };
      } "explanationRule";
    } "explainedByGroup";
    qr.item as cg2 where (linkId = 'consenter') then {
      cg2.item as it where ((linkId = 'consenter/name') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  consent.grantor = create('Reference') as ref,  ref.display = txt "grantorDisplay";
        };
      } "consenterNameRule";
      cg2.item as it where ((linkId = 'consenter/relationship') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  consent.grantor = create('Reference') as ref,  ref.display = txt "relationshipDisplay";
        };
      } "relationshipRule";
    } "consenterGroup";
    // ── The provisions ────────────────────────────────────────────────────
    // One per authorisation. The procedure itself is always a provision, since
    // it is what the form exists for; the rest appear only where their own box
    // was answered yes.
    qr.item as g where (linkId = 'consent-for') then {
      g.item as it where ((linkId = 'consent-for/procedure') and answer.value.exists()) -> consent.provision as prov then {
        it.answer first as a then {
          a.value as txt ->  prov.code as pc,  pc.text = txt "procedureText";
        };
      } "procedureProvision";
      g.item as it where ((linkId = 'consent-for/planned-for') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as d ->  consent.period as per,  per.start = cast(d, 'dateTime') "plannedPeriodStart";
        };
      } "plannedForRule";
    } "consentForGroup";
    qr.item as g where (linkId = 'additional-authorisations') then {
      g.item as it where ((linkId = 'additional-authorisations/further-measures') and (answer.value.ofType(Coding).code = 'Y')) -> consent.provision as prov then {
        it ->  prov.code as pc,  pc.text = 'Further alternative operative measures or treatment found necessary during the procedure' "furtherMeasuresText";
      } "furtherMeasuresProvision";
      g.item as it where ((linkId = 'additional-authorisations/anaesthesia') and (answer.value.ofType(Coding).code = 'Y')) -> consent.provision as prov then {
        it ->  prov.code as pc,  pc.text = 'Administration of general or other anaesthesia' "anaesthesiaText";
      } "anaesthesiaProvision";
      g.item as it where ((linkId = 'additional-authorisations/no-named-practitioner') and (answer.value.ofType(Coding).code = 'Y')) then {
        it ->  consent.provision as prov,  prov.code as pc,  pc.text = 'The person consenting understands no assurance has been given that a particular practitioner will perform the procedure.' "noNamedPractitionerNote";
      } "noNamedPractitionerRule";
    } "additionalAuthorisationsGroup";
    // Endoscopy: one provision per procedure ticked, so a consent for an upper
    // GI endoscopy alone cannot be read as covering a colonoscopy.
    qr.item as it where (linkId = 'endoscopy-procedures') then {
      it.answer as a -> consent.provision as prov then {
        a.value as cv -> prov.code as pc then {
          cv -> pc.coding = cv "coding";
          cv.display as d -> pc.text = d "text";
        } "endoscopyCode";
      } "endoscopyProvision";
    } "endoscopyProceduresGroup";
    qr.item as it where ((linkId = 'endoscopy-tissue-disposal') and (answer.value.ofType(Coding).code = 'Y')) -> consent.provision as prov then {
      it ->  prov.code as pc,  pc.text = 'Examination, preservation or disposal of tissues and body fluids removed, and of X-ray or photographic records taken' "tissueDisposalText";
    } "tissueDisposalProvision";
    // Systemic anti-cancer therapy: the regimen is the provision, and the
    // purpose and side effects explained are notes on the consent -- they are
    // what was said, not what was permitted.
    qr.item as g where (linkId = 'anti-cancer-therapy') then {
      g.item as it where ((linkId = 'anti-cancer-therapy/regimen') and answer.value.exists()) -> consent.provision as prov then {
        it.answer first as a then {
          a.value as txt ->  prov.code as pc,  pc.text = txt "regimenText";
        };
      } "regimenProvision";
      g.item as it where ((linkId = 'anti-cancer-therapy/intended-purpose') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  consent.provision as prov,  prov.code as pc,  pc.text = txt "purposeProvision";
        };
      } "purposeRule";
      g.item as it where ((linkId = 'anti-cancer-therapy/side-effects-and-risks') and answer.value.exists()) then {
        it.answer first as a then {
          a.value as txt ->  consent.provision as prov,  prov.code as pc,  pc.text = txt "sideEffectsProvision";
        };
      } "sideEffectsRule";
    } "antiCancerGroup";
  } "createConsent";
  // ── Was it explained in a language they understood? ─────────────────────
  // Its own Observation. It is not a permission, so it is not a provision; but
  // it is the fact that makes the consent informed, and a complaint or an
  // inquest turns on it. An interpreter's name, where one was used, rides
  // alongside as a note.
  qr.item as g where (linkId = 'explained-by') then {
    g.item as it where ((linkId = 'explained-by/language-understood') 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/inpatient-clinical-concept-codesystem' "sys";
          it -> cg.code = 'capacity-to-consent' "cd";
          it -> cg.display = 'Capacity to consent' "dsp";
        } "coding";
        it -> cc.text = 'Explained in a language the person consenting fully understands' "codeText";
      } "code";
      it.answer first as a then {
        a.value as cv -> obs.value = create('CodeableConcept') as vc then {
          cv -> vc.coding = cv "valueCoding";
          cv.display as d -> vc.text = d "valueText";
        } "codedValue";
      };
      it.answer first as a then {
        a.value as cv where (code = 'N') -> obs.interpretation as interp then {
          cv -> interp.coding as icg then {
            cv -> icg.system = 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation' "sys";
            cv -> icg.code = 'A' "cd";
            cv -> icg.display = 'Abnormal' "dsp";
          } "coding";
        } "notUnderstoodInterp";
      } "languageInterpretation";
      g.item as ip where ((linkId = 'explained-by/interpreter-name') and answer.value.exists()) then {
        ip.answer first as a then {
          a.value as txt ->  obs.note as n,  n.text = txt "interpreterNote";
        };
      } "interpreterRule";
    } "languageObservation";
  } "languageGroup";
}

// ─────────────────────────────────────────────────────────────────────────────
// 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 BuildConsentBase(source qr : QR, target r : Consent, target entry) {
  qr -> r then SetResponseProvenance(qr, r) "responseProvenance";
  qr -> r.id = uuid() then SetConsentFullUrl(r, entry) "idAndFullUrl";
  qr -> entry.request as request then {
    qr -> request.method = 'POST' "requestMethod";
    qr -> request.url = 'Consent' "requestUrl";
  } "entryRequest";
  qr.subject as s -> r.subject = s;
}

group SetConsentFullUrl(source r : Consent, target entry) {
  r.id as id -> entry.fullUrl = append('https://fhir.slade360.co.ke/fhir/Consent/', 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 = 'procedure-consent' "provenanceCode";
      qr -> t.display = 'Consent for a procedure or treatment' "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": "ExtractProcedureConsent",
  "text": {
    "status": "generated",
    "div": "<!-- snip (see above) -->"
  },
  "url": "https://fhir.slade360.co.ke/fhir/StructureMap/ExtractProcedureConsent",
  "version": "0.1.0",
  "name": "ExtractProcedureConsent",
  "title": "Procedure Consent Extraction",
  "status": "active",
  "date": "2026-09-11T12:18:36+00:00",
  "publisher": "Kathurima Kimathi",
  "contact": [
    {
      "name": "Kathurima Kimathi",
      "telecom": [
        {
          "system": "url",
          "value": "https://www.linkedin.com/in/kathurima-kimathi/"
        },
        {
          "system": "email",
          "value": "kathurimakimathi415@gmail.com"
        }
      ]
    },
    {
      "name": "Oscar John",
      "telecom": [
        {
          "system": "email",
          "value": "oscarjohnotieno@gmail.com",
          "use": "work"
        }
      ]
    },
    {
      "name": "Kennedy Omondi",
      "telecom": [
        {
          "system": "email",
          "value": "kennankole@gmail.com",
          "use": "work"
        }
      ]
    }
  ],
  "description": "The three consent forms out as one Consent, with a provision per authorisation actually given: the procedure itself, the further-measures clause, the anaesthesia clause, and on an endoscopy form the tissue-disposal clause and each procedure ticked. Each provision is written only when its box was answered yes, so a consent nobody gave never appears as one. An Observation records whether the explanation was given in a language the person consenting understood, because that is what makes the consent informed and what an audit or a complaint turns on.",
  "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/Consent",
      "mode": "target",
      "alias": "Consent"
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/Observation",
      "mode": "target",
      "alias": "Observation"
    }
  ],
  "group": [
    {
      "name": "ExtractProcedureConsent",
      "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": "createConsent",
          "source": [
            {
              "context": "qr",
              "condition": "item.where(linkId = 'signatures').item.where(linkId = 'signatures/consenter-signed').answer.value = true"
            }
          ],
          "target": [
            {
              "context": "bundle",
              "element": "entry",
              "variable": "entry"
            },
            {
              "context": "entry",
              "element": "resource",
              "variable": "consent",
              "transform": "create",
              "parameter": [
                {
                  "valueString": "Consent"
                }
              ]
            }
          ],
          "rule": [
            {
              "name": "base",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "consent"
                },
                {
                  "context": "entry"
                }
              ],
              "dependent": [
                {
                  "name": "BuildConsentBase",
                  "parameter": [
                    {
                      "valueId": "qr"
                    },
                    {
                      "valueId": "consent"
                    },
                    {
                      "valueId": "entry"
                    }
                  ]
                }
              ]
            },
            {
              "name": "status",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "consent",
                  "element": "status",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "active"
                    }
                  ]
                }
              ]
            },
            {
              "name": "decision",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "consent",
                  "element": "decision",
                  "transform": "copy",
                  "parameter": [
                    {
                      "valueString": "permit"
                    }
                  ]
                }
              ]
            },
            {
              "name": "category",
              "source": [
                {
                  "context": "qr"
                }
              ],
              "target": [
                {
                  "context": "consent",
                  "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://loinc.org"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "cd",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "code",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "64293-4"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "dsp",
                      "source": [
                        {
                          "context": "qr"
                        }
                      ],
                      "target": [
                        {
                          "context": "cg",
                          "element": "display",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Procedure consent Document"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "signaturesGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "sg",
                  "condition": "linkId = 'signatures'"
                }
              ],
              "rule": [
                {
                  "name": "signedAtRule",
                  "source": [
                    {
                      "context": "sg",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'signatures/consenter-signed-at') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "signedPeriodStart",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "t"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "period",
                              "variable": "per"
                            },
                            {
                              "context": "per",
                              "element": "start",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "t"
                                }
                              ]
                            }
                          ],
                          "documentation": "The form asks for a date *and time* signed, and Consent.date is a\r\n`date`. The timestamp goes to Consent.period.start, which keeps it:\r\na consent taken the evening before theatre and one taken in the\r\nanaesthetic room are hours apart and share a date."
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "The signing time, from the form. Not qr.authored: a consent taken the\r\nevening before an operation and transcribed the next morning would\r\notherwise be dated to the transcription, which is the one date a dispute\r\nabout consent turns on."
            },
            {
              "name": "explainedByGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "eg",
                  "condition": "linkId = 'explained-by'"
                }
              ],
              "rule": [
                {
                  "name": "clinicianRule",
                  "source": [
                    {
                      "context": "eg",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'explained-by/clinician') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "verification",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "ref"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "verification",
                              "variable": "ver"
                            }
                          ],
                          "rule": [
                            {
                              "name": "verified",
                              "source": [
                                {
                                  "context": "ref"
                                }
                              ],
                              "target": [
                                {
                                  "context": "ver",
                                  "element": "verified",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueBoolean": true
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "name": "verifiedBy",
                              "source": [
                                {
                                  "context": "ref"
                                }
                              ],
                              "target": [
                                {
                                  "context": "ver",
                                  "element": "verifiedBy",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueId": "ref"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "explanationRule",
                  "source": [
                    {
                      "context": "eg",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'explained-by/what-was-explained') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "explanationProvision",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "provision",
                              "variable": "prov"
                            },
                            {
                              "context": "prov",
                              "element": "code",
                              "variable": "pc"
                            },
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "Who explained it becomes the verifier -- they attested that the\r\ndiscussion happened -- and who consented becomes the grantor."
            },
            {
              "name": "consenterGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "cg2",
                  "condition": "linkId = 'consenter'"
                }
              ],
              "rule": [
                {
                  "name": "consenterNameRule",
                  "source": [
                    {
                      "context": "cg2",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'consenter/name') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "grantorDisplay",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "grantor",
                              "variable": "ref",
                              "transform": "create",
                              "parameter": [
                                {
                                  "valueString": "Reference"
                                }
                              ]
                            },
                            {
                              "context": "ref",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "relationshipRule",
                  "source": [
                    {
                      "context": "cg2",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'consenter/relationship') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "relationshipDisplay",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "grantor",
                              "variable": "ref",
                              "transform": "create",
                              "parameter": [
                                {
                                  "valueString": "Reference"
                                }
                              ]
                            },
                            {
                              "context": "ref",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "consentForGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "g",
                  "condition": "linkId = 'consent-for'"
                }
              ],
              "rule": [
                {
                  "name": "procedureProvision",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'consent-for/procedure') and answer.value.exists()"
                    }
                  ],
                  "target": [
                    {
                      "context": "consent",
                      "element": "provision",
                      "variable": "prov"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "procedureText",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "prov",
                              "element": "code",
                              "variable": "pc"
                            },
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "plannedForRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'consent-for/planned-for') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "plannedPeriodStart",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "d"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "period",
                              "variable": "per"
                            },
                            {
                              "context": "per",
                              "element": "start",
                              "transform": "cast",
                              "parameter": [
                                {
                                  "valueId": "d"
                                },
                                {
                                  "valueString": "dateTime"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "── The provisions ────────────────────────────────────────────────────\r\nOne per authorisation. The procedure itself is always a provision, since\r\nit is what the form exists for; the rest appear only where their own box\r\nwas answered yes."
            },
            {
              "name": "additionalAuthorisationsGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "g",
                  "condition": "linkId = 'additional-authorisations'"
                }
              ],
              "rule": [
                {
                  "name": "furtherMeasuresProvision",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'additional-authorisations/further-measures') and (answer.value.ofType(Coding).code = 'Y')"
                    }
                  ],
                  "target": [
                    {
                      "context": "consent",
                      "element": "provision",
                      "variable": "prov"
                    }
                  ],
                  "rule": [
                    {
                      "name": "furtherMeasuresText",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "prov",
                          "element": "code",
                          "variable": "pc"
                        },
                        {
                          "context": "pc",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Further alternative operative measures or treatment found necessary during the procedure"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "anaesthesiaProvision",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'additional-authorisations/anaesthesia') and (answer.value.ofType(Coding).code = 'Y')"
                    }
                  ],
                  "target": [
                    {
                      "context": "consent",
                      "element": "provision",
                      "variable": "prov"
                    }
                  ],
                  "rule": [
                    {
                      "name": "anaesthesiaText",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "prov",
                          "element": "code",
                          "variable": "pc"
                        },
                        {
                          "context": "pc",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Administration of general or other anaesthesia"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "noNamedPractitionerRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'additional-authorisations/no-named-practitioner') and (answer.value.ofType(Coding).code = 'Y')"
                    }
                  ],
                  "rule": [
                    {
                      "name": "noNamedPractitionerNote",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "consent",
                          "element": "provision",
                          "variable": "prov"
                        },
                        {
                          "context": "prov",
                          "element": "code",
                          "variable": "pc"
                        },
                        {
                          "context": "pc",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "The person consenting understands no assurance has been given that a particular practitioner will perform the procedure."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "endoscopyProceduresGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "it",
                  "condition": "linkId = 'endoscopy-procedures'"
                }
              ],
              "rule": [
                {
                  "name": "endoscopyProvision",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "variable": "a"
                    }
                  ],
                  "target": [
                    {
                      "context": "consent",
                      "element": "provision",
                      "variable": "prov"
                    }
                  ],
                  "rule": [
                    {
                      "name": "endoscopyCode",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "cv"
                        }
                      ],
                      "target": [
                        {
                          "context": "prov",
                          "element": "code",
                          "variable": "pc"
                        }
                      ],
                      "rule": [
                        {
                          "name": "coding",
                          "source": [
                            {
                              "context": "cv"
                            }
                          ],
                          "target": [
                            {
                              "context": "pc",
                              "element": "coding",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "cv"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "text",
                          "source": [
                            {
                              "context": "cv",
                              "element": "display",
                              "variable": "d"
                            }
                          ],
                          "target": [
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "d"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "Endoscopy: one provision per procedure ticked, so a consent for an upper\r\nGI endoscopy alone cannot be read as covering a colonoscopy."
            },
            {
              "name": "tissueDisposalProvision",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'endoscopy-tissue-disposal') and (answer.value.ofType(Coding).code = 'Y')"
                }
              ],
              "target": [
                {
                  "context": "consent",
                  "element": "provision",
                  "variable": "prov"
                }
              ],
              "rule": [
                {
                  "name": "tissueDisposalText",
                  "source": [
                    {
                      "context": "it"
                    }
                  ],
                  "target": [
                    {
                      "context": "prov",
                      "element": "code",
                      "variable": "pc"
                    },
                    {
                      "context": "pc",
                      "element": "text",
                      "transform": "copy",
                      "parameter": [
                        {
                          "valueString": "Examination, preservation or disposal of tissues and body fluids removed, and of X-ray or photographic records taken"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "antiCancerGroup",
              "source": [
                {
                  "context": "qr",
                  "element": "item",
                  "variable": "g",
                  "condition": "linkId = 'anti-cancer-therapy'"
                }
              ],
              "rule": [
                {
                  "name": "regimenProvision",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'anti-cancer-therapy/regimen') and answer.value.exists()"
                    }
                  ],
                  "target": [
                    {
                      "context": "consent",
                      "element": "provision",
                      "variable": "prov"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "regimenText",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "prov",
                              "element": "code",
                              "variable": "pc"
                            },
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "purposeRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'anti-cancer-therapy/intended-purpose') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "purposeProvision",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "provision",
                              "variable": "prov"
                            },
                            {
                              "context": "prov",
                              "element": "code",
                              "variable": "pc"
                            },
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "sideEffectsRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "it",
                      "condition": "(linkId = 'anti-cancer-therapy/side-effects-and-risks') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "it",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "sideEffectsProvision",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "consent",
                              "element": "provision",
                              "variable": "prov"
                            },
                            {
                              "context": "prov",
                              "element": "code",
                              "variable": "pc"
                            },
                            {
                              "context": "pc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "documentation": "Systemic anti-cancer therapy: the regimen is the provision, and the\r\npurpose and side effects explained are notes on the consent -- they are\r\nwhat was said, not what was permitted."
            }
          ],
          "documentation": "── The Consent ─────────────────────────────────────────────────────────\r\nGuarded on the person consenting having actually signed. Everything below\r\nhangs off that signature, and a Consent built from a half-filled form\r\nasserts a permission that was never given."
        },
        {
          "name": "languageGroup",
          "source": [
            {
              "context": "qr",
              "element": "item",
              "variable": "g",
              "condition": "linkId = 'explained-by'"
            }
          ],
          "rule": [
            {
              "name": "languageObservation",
              "source": [
                {
                  "context": "g",
                  "element": "item",
                  "variable": "it",
                  "condition": "(linkId = 'explained-by/language-understood') 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/inpatient-clinical-concept-codesystem"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "cd",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "code",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "capacity-to-consent"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "dsp",
                          "source": [
                            {
                              "context": "it"
                            }
                          ],
                          "target": [
                            {
                              "context": "cg",
                              "element": "display",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueString": "Capacity to consent"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "name": "codeText",
                      "source": [
                        {
                          "context": "it"
                        }
                      ],
                      "target": [
                        {
                          "context": "cc",
                          "element": "text",
                          "transform": "copy",
                          "parameter": [
                            {
                              "valueString": "Explained in a language the person consenting fully understands"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "answer",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "codedValue",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "cv"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "value",
                          "variable": "vc",
                          "transform": "create",
                          "parameter": [
                            {
                              "valueString": "CodeableConcept"
                            }
                          ]
                        }
                      ],
                      "rule": [
                        {
                          "name": "valueCoding",
                          "source": [
                            {
                              "context": "cv"
                            }
                          ],
                          "target": [
                            {
                              "context": "vc",
                              "element": "coding",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "cv"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "name": "valueText",
                          "source": [
                            {
                              "context": "cv",
                              "element": "display",
                              "variable": "d"
                            }
                          ],
                          "target": [
                            {
                              "context": "vc",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "d"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "languageInterpretation",
                  "source": [
                    {
                      "context": "it",
                      "element": "answer",
                      "listMode": "first",
                      "variable": "a"
                    }
                  ],
                  "rule": [
                    {
                      "name": "notUnderstoodInterp",
                      "source": [
                        {
                          "context": "a",
                          "element": "value",
                          "variable": "cv",
                          "condition": "code = 'N'"
                        }
                      ],
                      "target": [
                        {
                          "context": "obs",
                          "element": "interpretation",
                          "variable": "interp"
                        }
                      ],
                      "rule": [
                        {
                          "name": "coding",
                          "source": [
                            {
                              "context": "cv"
                            }
                          ],
                          "target": [
                            {
                              "context": "interp",
                              "element": "coding",
                              "variable": "icg"
                            }
                          ],
                          "rule": [
                            {
                              "name": "sys",
                              "source": [
                                {
                                  "context": "cv"
                                }
                              ],
                              "target": [
                                {
                                  "context": "icg",
                                  "element": "system",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueString": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "name": "cd",
                              "source": [
                                {
                                  "context": "cv"
                                }
                              ],
                              "target": [
                                {
                                  "context": "icg",
                                  "element": "code",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueString": "A"
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "name": "dsp",
                              "source": [
                                {
                                  "context": "cv"
                                }
                              ],
                              "target": [
                                {
                                  "context": "icg",
                                  "element": "display",
                                  "transform": "copy",
                                  "parameter": [
                                    {
                                      "valueString": "Abnormal"
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "interpreterRule",
                  "source": [
                    {
                      "context": "g",
                      "element": "item",
                      "variable": "ip",
                      "condition": "(linkId = 'explained-by/interpreter-name') and answer.value.exists()"
                    }
                  ],
                  "rule": [
                    {
                      "name": "answer",
                      "source": [
                        {
                          "context": "ip",
                          "element": "answer",
                          "listMode": "first",
                          "variable": "a"
                        }
                      ],
                      "rule": [
                        {
                          "name": "interpreterNote",
                          "source": [
                            {
                              "context": "a",
                              "element": "value",
                              "variable": "txt"
                            }
                          ],
                          "target": [
                            {
                              "context": "obs",
                              "element": "note",
                              "variable": "n"
                            },
                            {
                              "context": "n",
                              "element": "text",
                              "transform": "copy",
                              "parameter": [
                                {
                                  "valueId": "txt"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ],
          "documentation": "── Was it explained in a language they understood? ─────────────────────\r\nIts own Observation. It is not a permission, so it is not a provision; but\r\nit is the fact that makes the consent informed, and a complaint or an\r\ninquest turns on it. An interpreter's name, where one was used, rides\r\nalongside as a note."
        }
      ]
    },
    {
      "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": "BuildConsentBase",
      "input": [
        {
          "name": "qr",
          "type": "QR",
          "mode": "source"
        },
        {
          "name": "r",
          "type": "Consent",
          "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": "SetConsentFullUrl",
              "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": "Consent"
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "name": "subject",
          "source": [
            {
              "context": "qr",
              "element": "subject",
              "variable": "s"
            }
          ],
          "target": [
            {
              "context": "r",
              "element": "subject",
              "transform": "copy",
              "parameter": [
                {
                  "valueId": "s"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name": "SetConsentFullUrl",
      "input": [
        {
          "name": "r",
          "type": "Consent",
          "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/Consent/"
                },
                {
                  "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": "procedure-consent"
                        }
                      ]
                    }
                  ]
                },
                {
                  "name": "provenanceDisplay",
                  "source": [
                    {
                      "context": "qr"
                    }
                  ],
                  "target": [
                    {
                      "context": "t",
                      "element": "display",
                      "transform": "copy",
                      "parameter": [
                        {
                          "valueString": "Consent for a procedure or treatment"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "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."
        }
      ]
    }
  ]
}