Social Care Interoperability Platform FHIR Implementation Guide
Version: 0.1.0, Status: draft

Social Care Interoperability Platform FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

StructureMap: AllergyInteloranceToAllergy

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/AllergyIntelorance-Allergy Version: 0.1.0
Draft as of 2026-06-10 Computable Name: AllergyInteloranceToAllergy

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/AllergyIntelorance-Allergy" = "AllergyInteloranceToAllergy"

uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-AllergyIntolerance" alias AllergyIntolerance as source
uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-Allergy" alias Allergy as target

group Allergy(source src : AllergyIntolerance, target tgt : Allergy) {
  src -> tgt.id = evaluate(src, id) "setAllergyId";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Allergy and adverse reaction' "2d903f9d-7d5a-4b72-8e1e-5d467238f65e";
  } "setDataClassName";
  src.patient as patient then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(patient, reference.replace('Patient/','')) "c3e15bd0-00a1-440f-99ab-3591c9972dc0";
      src -> subjectOfCare.type = 'SubjectOfCare' "01c35046-6882-4e15-bd42-d6cce6be915e";
      src -> subjectOfCare.display = evaluate(patient, display) "0257361e-c063-478b-be6b-1ea3e9630bd6";
    } "ac1ea56f-fd1f-43d4-9949-6e13ac640bae";
  } "setAllergySubject";
  src.type then {
    src -> src.allergyCode = create('Coding') as allergyCode then {
      src -> allergyCode.system = 'http://hl7.org/fhir/allergy-intolerance-type' "3a84cbc0-dce9-4dad-ab8f-b53871fd6f82";
      src -> allergyCode.code = evaluate(src, type) "993ae500-53eb-46e3-ba3a-ca7b28072576";
      src -> tgt.type = translate(allergyCode, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRAllergyIntoleranceType-1', 'Coding') "de2194d2-b28b-4c49-9952-0c66783c1e15";
    } "3242e075-ca20-46dc-a454-4a0eab098612";
  } "setAllergyType";
  src.code as code, code.coding as coding then {
    src -> tgt.causativeAgent as cause then {
      src -> cause.code = evaluate(coding, code) "9a14847b-45a0-411e-b68e-4abdfe274860";
      src -> cause.display = evaluate(coding, display) "53915bb7-094a-413b-9aa7-ec3a8a18a951";
    } "48903f4d-5a8a-4e8f-8aa6-63d04da6f856";
  } "setAllergyCause";
  src.recorder as recorder then {
    src -> tgt.observer as observer then {
      src -> observer.id = evaluate(recorder, reference.replace('Practitioner/','')) "176d8761-34db-46e8-9e15-4b543168d617";
      src -> observer.type = 'CareWorker' "133e4b9a-4650-4e2c-8474-621a0aefcbc1";
      src -> observer.display = evaluate(recorder, display) "6486be64-33b9-47c8-8cf7-c634e4dee77e";
    } "ed4e49d8-bdc1-443a-84c8-0f005aa61692";
  } "setAllergyObserver";
  src.onsetPeriod as period then {
    period.start as start then {
      src -> tgt.firstExperienced = evaluate(period, start) "89d4909c-2fb6-4ec1-8121-666127717419";
    };
    period.end as end then {
      src -> tgt.endDate = evaluate(period, end) "05e8c5ab-9060-4561-ad0a-07a9cab316ea";
    };
  } "setAllergyStartEndDates";
  src -> tgt.comment = evaluate(src, note[0].text) "setAllergComment";
  src -> tgt.evidence = evaluate(src, note[1].text) "setAllergyEvidence";
  src.reaction as reactionEvent -> tgt.reaction as reaction then {
    reactionEvent.substance as reactionSubstance then {
      src -> reaction.substance as substance then {
        src -> substance.code = evaluate(reactionSubstance, coding[0].code) "d3000f08-7d90-4690-a887-8e373e38b626";
        src -> substance.display = evaluate(reactionSubstance, coding[0].display) "0fdd4dad-1471-49fb-aa55-a77883187d41";
      } "25b2b5e2-f070-456c-8d80-381545be8a73";
    };
    reactionEvent.manifestation as reactionManifestation then {
      src -> reaction.description as description then {
        src -> description.code = evaluate(reactionManifestation, coding[0].code) "4c7b8815-0f95-4a8c-a98e-b48dc969d266";
        src -> description.display = evaluate(reactionManifestation, coding[0].display) "7a7d236a-7cb8-49f0-9fe9-77df996434a9";
      } "4f1cb1fe-2a8d-45ac-83c8-b1e4622190dd";
    };
    reactionEvent.severity then {
      src -> src.severityCode = create('Coding') as severityCode then {
        src -> severityCode.system = 'http://hl7.org/fhir/reaction-event-severity' "c33a4e02-3b2b-42d1-98d1-22e057d3b808";
        src -> severityCode.code = evaluate(reactionEvent, severity) "12ddb720-06f3-4d1d-84d4-edfd49ee307b";
        src -> reaction.severity = translate(severityCode, 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/ConceptMap/MODS-FHIRReactionEventSeverity-1', 'Coding') "050425f7-b0ce-4e97-bd15-7f1bf08e87f9";
      } "199cf89f-199b-4fa4-8c06-b5fc6fea0a8c";
    };
    reactionEvent.exposureRoute as reactionRoute then {
      src -> reaction.route as route then {
        src -> route.code = evaluate(reactionRoute, coding[0].code) "471226b7-b3a6-453e-94ab-966ba5284524";
        src -> route.display = evaluate(reactionRoute, coding[0].display) "47a2f647-3915-445e-a3c9-bcfc56bb36f7";
      } "6fa106bd-64cb-433e-ab7a-6d2a0352744f";
    };
  } "setAllergyReaction";
}