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-06-10 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) "269766d2-4bbd-4175-a3cb-f286901e6188";
  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' "cb5a3c92-0e4a-467b-accf-584f502cdf7f";
        involved -> participantRoleExt.valueCode = 'involved' "e87611ea-d210-4e08-bb44-ed279dd667a4";
      } "f8c5054b-e0e8-4e76-b5d6-4a6289707000";
      involved -> participantExt.extension as participantRefExt then {
        involved -> participantRefExt.url = 'participantReference' "48267a87-d1db-42cf-9474-bf3945715e29";
        involved -> participantRefExt.valueReference as participantReference then {
          involved -> participantReference.reference = evaluate(involved, 'Practitioner/'+id) "79d8e31a-8633-4649-8996-ad80e0f4eead";
          involved -> participantReference.display = evaluate(involved, display) "fba1d485-3d53-48d1-a08a-d74dda58b97f";
        } "4755668e-6407-4d4d-8f4a-ce91242f807c";
      } "e3073b44-a31f-4de1-a43f-be24a3809008";
      participantExt -> tgt.extension "db77b914-1fe6-4b57-823a-f0b2c6514d23";
    } "fa20de60-d885-4db3-acba-df5d5eb3a2b4";
  } "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' "09520c6c-2aef-44d7-b1b9-7f64091066f5";
        informed -> participantRoleExt.valueCode = 'informed' "462d90c1-7742-4e3c-9443-73731421da17";
      } "365a7cf9-c708-467e-af3f-761ae32b2eef";
      informed -> participantExt.extension as participantRefExt then {
        informed -> participantRefExt.url = 'participantReference' "62525c3c-0fae-49a5-991c-46423961f338";
        informed -> participantRefExt.valueReference as participantReference then {
          informed -> participantReference.reference = evaluate(informed, 'Practitioner/'+id) "5ab28933-a6b8-4619-8085-de4060bb1891";
          informed -> participantReference.display = evaluate(informed, display) "c481f7e9-3052-4070-b4ae-ae33afb57dbb";
        } "3ecd590e-6034-4391-b09a-5b5819913d37";
      } "8e3fdbe4-aad0-4970-8c25-548bb5cb292d";
      participantExt -> tgt.extension "ec19c404-dae0-4503-81f6-5ba88d07181b";
    } "3e5474b6-0537-4008-b1c0-d96f2cf9190b";
  } "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' "629421a3-65d9-4bfa-a4d1-809cbbdde595";
      src -> coding.code = evaluate(category, code) "53aebb59-f111-4b95-9703-3f811e734b48";
      src -> coding.display = evaluate(category, display) "7eb974f1-c6d4-4838-bf83-8768d9e57872";
    } "725d9657-f8f3-431f-a226-5c9ff1566b14";
  } "setFlagCategory";
  src -> tgt.code as code then {
    src -> code.text = evaluate(src, text) "7bd1834b-9c10-4ac0-9c9f-3acba532e050";
  } "setFlagCode";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "4382eec8-d25e-4f3a-8b8f-ec2727fa851c";
      src -> subject.display = evaluate(subjectOfCare, display) "9f327577-4130-4d05-a287-7fd4525dab98";
    } "8a755d1b-499c-4ea1-99f2-7aad265fecb3";
  } "setFlagSubject";
  src -> src.period as period then {
    src.startDate as start then {
      start -> period.start "0d0d2920-d349-40cc-ad49-30526733d9e5";
    };
    src.endDate as end then {
      end -> period.end "02516b3b-9a72-400d-bfe7-d1a4e7c0f64d";
    };
    period where $this.start.empty().not()or$this.end.empty().not() -> tgt.period "70f0be1b-54c3-4503-9b8c-6eacfdf6b381";
  } "setFlagPeriod";
}