WHO SMART Guidelines - Measles Immunization
0.1.0 - ci-build

WHO SMART Guidelines - Measles Immunization, published by WHO. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/WorldHealthOrganization/smart-example-immz/ and changes regularly. See the Directory of published versions

StructureMap:

Official URL: http://smart.who.int/immunizations-measles/StructureMap/IMMZD1LMToResources Version: 0.1.0
Draft as of 2024-09-21 Computable Name: IMMZD1LMToResources

Immunization - Client History - Transform logical model to resources

Generated Narrative: StructureMap IMMZD1LMToResources

map "http://smart.who.int/immunizations-measles/StructureMap/IMMZD1LMToResources" = "IMMZD1LMToResources"

// Immunization - Client History - Transform logical model to resources

uses "http://smart.who.int/immunizations-measles/StructureDefinition/IMMZD1ClientHistoryMeasles" alias IMMZD1 as source
uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target

group IMMZD1ToBundle(source immz : IMMZD1, target bundle : Bundle) {
  immz -> bundle.type = 'collection' "SetCollection";
  immz.patient as patient then {
    immz.dose0 as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE80' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetDose0Observation";
    immz.completedPrimarySeries as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE8' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetPrimarySeriesObservation";
    immz.dateSeriesCompleted as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE81' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetDateSeriesObservation";
    immz.hivStatus as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE10' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = create('CodeableConcept') as code then {
        content -> code.coding = content "SetCoding";
      } "SetCodeableConcept";
    } "SetHIVStatusObservation";
    immz.pretermBirth as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE15' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetPretermBirthObservation";
    immz.severelyImmunosuppressed as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE92' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetSeverelyImmunosuppressedObservation";
    immz.artStartDate as content ->  bundle.entry as entry,  entry.resource = create('Observation') as obs then {
      patient -> obs.subject = patient "SetPatient";
      content -> obs.code = create('CodeableConcept') as code then {
        content -> code.coding = create('Coding') as coding then {
          content -> coding.system = 'http://smart.who.int/immunizations-measles/CodeSystem/IMMZ.D1' "SetObsSystem";
          content -> coding.code = 'DE49' "SetObsCode";
        } "SetObsCoding";
      } "SetObsCode";
      content -> obs.value = content "SetValue";
    } "SetARTDateObservation";
    immz.vaccineHistory as history ->  bundle.entry as entry,  entry.resource = create('Immunization') as imm then {
      patient -> imm.patient = patient "SetPatient";
      history -> imm.status = 'completed' "SetStatus";
      history.vaccineType as vaccine -> imm.vaccineCode as code then {
        vaccine -> code.coding = vaccine "SetVaccineCoding";
      } "SetVaccineType";
      history.vaccineDate as date -> imm.occurrence = cast(date, 'string') "SetDate";
    } "SetVaccineHistoryObservation";
  } "GetPatient";
}