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: AlertToFlag

Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Alert-Flag Version: 0.1.0
Draft as of 2026-03-24 Computable Name: AlertToFlag

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Alert-Flag" = "AlertToFlag"

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

group Alert(source src : Alert, target tgt : Flag) {
  src -> tgt.id = evaluate(src, id) "48740118-f8ba-4909-8606-b63dd719c575";
  src.involved as involved then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      involved -> participantExt.extension as participantRoleExt then {
        involved -> participantRoleExt.url = 'participantRole' "25b04a4e-8883-4833-8d99-a00b62a34c55";
        involved -> participantRoleExt.valueCode = 'involved' "8bc8e8ef-e63a-4ff6-a17f-3d631c9c7e22";
      } "34a06abf-f1b3-41ad-9a26-3b6d94765452";
      involved -> participantExt.extension as participantRefExt then {
        involved -> participantRefExt.url = 'participantReference' "ccc712df-8faf-48da-a039-95856fe58f78";
        involved -> participantRefExt.valueReference as participantReference then {
          involved -> participantReference.reference = evaluate(involved, 'Practitioner/'+id) "0d79054d-939b-47bd-8142-eb3771918d77";
          involved -> participantReference.display = evaluate(involved, display) "20e3f8de-fa25-44d5-b7c0-5b6085fbd155";
        } "9205d603-6cfd-4dd8-a06e-3f716f8d13b4";
      } "2c2ae2cc-5b1e-4413-8aaa-39333c1e9a86";
      participantExt -> tgt.extension "bfcd7754-2e2c-4a44-bc89-274761f1e3b3";
    } "bce4c9cd-9c4c-4420-9447-2081e7600bbf";
  } "setFlagInvolved";
  src.informed as informed then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      informed -> participantExt.extension as participantRoleExt then {
        informed -> participantRoleExt.url = 'participantRole' "19e22396-763d-4df1-9e5b-fce3630c68ec";
        informed -> participantRoleExt.valueCode = 'informed' "93f426ae-b881-4430-a1c3-4fda058f6f54";
      } "6195a2f5-ba20-4706-8eba-a630a527a05d";
      informed -> participantExt.extension as participantRefExt then {
        informed -> participantRefExt.url = 'participantReference' "8b2dd3ee-3d3f-46cd-82c7-448ca30ec058";
        informed -> participantRefExt.valueReference as participantReference then {
          informed -> participantReference.reference = evaluate(informed, 'Practitioner/'+id) "6cbfa0be-37e9-49ce-88fd-7ef370f9561b";
          informed -> participantReference.display = evaluate(informed, display) "902bd956-9717-45a1-9d59-1e9c5b2d5d7e";
        } "0f67a6fd-deca-46aa-b308-9701ab296cb3";
      } "03962f10-f4d2-45ec-9121-2193e16a611a";
      participantExt -> tgt.extension "eebfc354-59e6-4d58-8a17-1ade4a185543";
    } "051d1c4b-175e-4439-bff7-b85a5433afd1";
  } "setFlagInformed";
  src -> tgt.status = evaluate(src, status.code) "setFlagStatus";
  src.category as category -> tgt.category as cat then {
    src -> cat.coding as coding then {
      src -> coding.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-FlagCategory-1' "7473dfc0-b68d-489a-8c1d-7064fabb3b54";
      src -> coding.code = evaluate(category, code) "1088a9b6-a50a-4ed4-9e37-d1e3e90c7d3b";
      src -> coding.display = evaluate(category, display) "b4e7cd32-3c1e-4724-a78b-c0fab49a82ad";
    } "34ba4e7b-5026-4220-b098-681c660911fb";
  } "setFlagCategory";
  src -> tgt.code as code then {
    src -> code.text = evaluate(src, text) "6fb8599b-3e8b-40a3-8b77-3e03402b30e2";
  } "setFlagCode";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "42a5e32d-2b77-4dd4-8ce9-055252b47e17";
      src -> subject.display = evaluate(subjectOfCare, display) "a4191f42-5e54-4ec2-8ac1-fa05ecd4d1e0";
    } "9ee91ebc-79b9-43e2-a210-031be7c47709";
  } "setFlagSubject";
  src -> src.period as period then {
    src.startDate as start then {
      start -> period.start "fd93d9aa-9937-4b4a-a619-ffa2f786d25e";
    };
    src.endDate as end then {
      end -> period.end "10b39644-6814-4fd0-8875-03c4468f2ad8";
    };
    period where $this.start.empty().not()or$this.end.empty().not() -> tgt.period "b12648e2-2e6f-4a79-b16d-1c6601c75c0a";
  } "setFlagPeriod";
}