WHO Immunization Implementation Guide
0.2.0 - ci-build

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

StructureMap: IMMZ.D17.LMToBundle

Official URL: http://smart.who.int/immunizations/StructureMap/IMMZ.D17.LMToBundle Version: 0.2.0
Draft as of 2025-09-10 Computable Name: IMMZ.D17.LMToBundle

Immunization Administer Vaccine - Transform Logical Model to Immunization resources

map "http://smart.who.int/immunizations/StructureMap/IMMZ.D17.LMToBundle" = "IMMZ.D17.LMToBundle"

// Immunization Administer Vaccine - Transform Logical Model to Immunization resources

uses "http://smart.who.int/immunizations/StructureDefinition/IMMZD17" alias IMMZD17 as source
uses "http://hl7.org/fhir/StructureDefinition/Bundle" alias Bundle as target

imports "http://smart.who.int/immunizations/StructureMap/IMMZ.Helpers"

group IMMZD17ToBundle(source immz : IMMZD17, target bundle : Bundle) {
  immz -> bundle.type = 'transaction' "SetBundleType";
  immz.patient as patient then {
    immz ->  uuid() as aeid,  bundle.entry as entry,  entry.fullUrl = append('urn:uuid:', aeid),  entry.request as request,  request.method = 'PUT',  request.url = append('AdverseEvent/', aeid),  entry.resource = create('AdverseEvent') as ae then {
      immz -> ae.id = aeid "SetId";
      immz -> ae.actuality = 'actual' "SetActuality";
      patient -> ae.subject = patient "SetSubject";
      immz.reactionDate as date -> ae.date = date "SetDate";
      immz.reactionManifestation as manifestation -> ae.event = manifestation "SetEvent";
      immz.typeOfReaction as seriousness -> ae.seriousness = seriousness "SetSeriousness";
      immz.reactionOutcome as outcome -> ae.outcome = translate(outcome, 'http://smart.who.int/immunizations/ConceptMap/IMMZ.D.ConceptMap', 'coding') "SetOutcome";
      immz.otherImportantMedicalEvent as event -> ae.extension as ext then {
        event -> ext.url = 'http://smart.who.int/immunizations/StructureDefinition/IMMZOtherMedicalEvent' "SetURL";
        event -> ext.value = event "SetValue";
      } "CreateOtherMedicalExt";
    } "CreateAdverseEvent";
  } "GetPatient";
}