Release 4
Public Health and Emergency Response Work GroupMaturity Level: N/AStandards Status: InformativeSecurity Category: Patient Compartments: Patient

R3 : R4 Conversion maps for ImmunizationRecommendation.

Functional status for this map: 1 test that all execute ok. All tests pass round-trip testing and all r3 resources are valid. (see documentation)

map "http://hl7.org/fhir/StructureMap/ImmunizationRecommendation3to4" = "R3 to R4 Conversions for ImmunizationRecommendation"

uses "http://hl7.org/fhir/3.0/StructureDefinition/ImmunizationRecommendation" alias ImmunizationRecommendationR3 as source
uses "http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation" alias ImmunizationRecommendation as target

imports "http://hl7.org/fhir/StructureMap/*3to4"

group ImmunizationRecommendation(source src : ImmunizationRecommendationR3, target tgt : ImmunizationRecommendation) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.patient -> tgt.patient;
  src.recommendation as s -> tgt.recommendation as t then recommendation(s, t, tgt);
}

group recommendation(source src, target tgt, target res) extends BackboneElement {
  src.date -> res.date;
  src.vaccineCode -> tgt.vaccineCode;
  src.targetDisease -> tgt.targetDisease;
  src.doseNumber as vs -> tgt.doseNumber = create('positiveInt') as vt then positiveInt(vs, vt);
  src.forecastStatus -> tgt.forecastStatus;
  src.dateCriterion as s -> tgt.dateCriterion as t then dateCriterion(s, t);
  src.protocol as s then {
    s.description -> tgt.description;
    s.doseSequence as vs -> tgt.seriesDoses = create('positiveInt') as vt then positiveInt(vs, vt);
    s.authority -> res.authority;
    s.series -> tgt.series;
  };
  src.series -> tgt.series;
  src.supportingImmunization -> tgt.supportingImmunization;
  src.supportingPatientInformation -> tgt.supportingPatientInformation;
}

group dateCriterion(source src, target tgt) extends BackboneElement {
  src.code -> tgt.code;
  src.value -> tgt.value;
}


map "http://hl7.org/fhir/StructureMap/ImmunizationRecommendation4to3" = "R4 to R3 Conversion for ImmunizationRecommendation"

uses "http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation" alias ImmunizationRecommendation as source
uses "http://hl7.org/fhir/3.0/StructureDefinition/ImmunizationRecommendation" alias ImmunizationRecommendationR3 as target

imports "http://hl7.org/fhir/StructureMap/*4to3"

group ImmunizationRecommendation(source src : ImmunizationRecommendation, target tgt : ImmunizationRecommendationR3) extends DomainResource <<type+>> {
  src.identifier -> tgt.identifier;
  src.patient -> tgt.patient;
  src.recommendation as s -> tgt.recommendation as t then recommendation(s, t, src);
}

group recommendation(source src, target tgt, source res) extends BackboneElement {
  res.date -> tgt.date;
  src.vaccineCode -> tgt.vaccineCode;
  src.targetDisease -> tgt.targetDisease;
  src.doseNumber : positiveInt as vs -> tgt.doseNumber as vt then positiveInt(vs, vt);
  src.forecastStatus -> tgt.forecastStatus;
  src.dateCriterion as s -> tgt.dateCriterion as t then dateCriterion(s, t);
  src.description as v ->  tgt.protocol as t,  t.description = v;
  src.seriesDoses : positiveInt as v ->  tgt.protocol as t,  t.doseSequence = v;
  res.authority as v ->  tgt.protocol as t,  t.authority = v;
  src.series as v ->  tgt.protocol as t,  t.series = v;
  src.supportingImmunization -> tgt.supportingImmunization;
  src.supportingPatientInformation -> tgt.supportingPatientInformation;
}

group dateCriterion(source src, target tgt) extends BackboneElement {
  src.code -> tgt.code;
  src.value -> tgt.value;
}


<p>No validation errors - all conversions are clean</p>