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

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

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Safeguarding-Observation-Safeguarding" = "SafeguardingToObservationSafeguarding"

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

group SafeguardingObservation(source src : Safeguarding, target tgt : SafeguardingObservation) {
  src -> tgt.id = evaluate(src, id) "d7df7a41-2761-4477-ad7e-1414ea04c2bb";
  src ->  tgt.meta as meta,  meta.tag as tag then {
    src -> tag.system = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-FhirStructureMapCatalog-1' "bc24afff-76cf-49b4-ace7-d189891ffebc";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-Safeguarding-Safeguarding' "15c22653-4872-41e1-84f1-0dc28622ac2f";
  } "setMetaTag";
  src.careWorker as careWorker then {
    src ->  src.extension as participantExt,  participantExt.url = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' then {
      careWorker -> participantExt.extension as participantRoleExt then {
        careWorker -> participantRoleExt.url = 'participantRole' "beb5512f-279e-4b47-81c5-872dd4af1694";
        careWorker -> participantRoleExt.valueCode = 'performer' "f14c7889-b485-4665-9ae1-1c026952962b";
      } "087d29f1-8e9d-4ba1-9371-c251ece431ea";
      careWorker -> participantExt.extension as participantRefExt then {
        careWorker -> participantRefExt.url = 'participantReference' "35d28d36-2a00-43de-9f12-a3f26b5195eb";
        careWorker -> participantRefExt.valueReference as participantReference then {
          careWorker -> participantReference.reference = evaluate(careWorker, 'Practitioner/'+id) "a6795605-82db-4e25-befb-b1b514f971dc";
          careWorker -> participantReference.display = evaluate(careWorker, display) "3a9517a4-8c52-4292-ab80-b64408ce9556";
        } "d4a65933-97d0-43b1-be95-3293c1f3ad02";
      } "42e741bf-84d7-4317-b129-121fb645a225";
      participantExt -> tgt.extension "06dec0d5-f6e0-4226-9def-58e94b9e1d83";
    } "5d6552e2-5c79-4fef-a0bc-e4457f2a0edc";
  } "setObservationPerformer";
  src -> tgt.status = 'final' "setObservationStatus";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "1dea1a74-1095-4c9d-a0ae-951f3704176c";
      src -> subject.display = evaluate(subjectOfCare, display) "7a231dbf-9417-4da1-ada5-89fb98f242cb";
    } "8d09f7ad-e642-482a-af59-6d927acfd461";
  } "setObservationSubject";
  src -> tgt.category = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCategory-1', '3', 'Observations') "setObservationCategory";
  src -> tgt.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationCode-1', '10', 'Safeguarding Concern') "setObservationCode";
  src -> src.period as period then {
    src.identifiedDateTime as start then {
      src -> period.start = evaluate(src, identifiedDateTime) "a58605f4-0dd9-4146-96d7-3e8977990293";
    };
    src.endedDateTime as end then {
      src -> period.end = evaluate(src, endedDateTime) "2f537a27-b535-4e35-aee7-73fc3cb9a770";
    };
    period where $this.start.empty().not()or$this.end.empty().not() -> tgt.effectivePeriod "4043e4f7-abdd-40d4-ac86-40ba0e3e15c2";
  } "setObservationPeriod";
  src.coding as safeguardingCoding then {
    src -> tgt.component as coded then {
      src -> coded.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationComponentCode-1', 'coded', 'Coded') "ba0100fb-39ab-4b10-8a04-5636884302e6";
      src -> coded.valueCodeableConcept = cc('http://snomed.info/sct', '', '') as vcc then {
        vcc.coding as coding then {
          vcc -> coding.code = evaluate(safeguardingCoding, code) "ef46a678-413e-4f81-bbba-d36f6ba6150f";
          vcc -> coding.display = evaluate(safeguardingCoding, display) "17c15965-0c20-46dc-9716-8c4b49a0e1ac";
        };
      } "dccdc3dd-9015-4967-bb75-2cca5973bf9c";
    } "aef890d2-0c91-47bd-9300-ee9aa452d65c";
  } "setObservationComponentCode";
  src.text as text then {
    src -> tgt.component as freeText then {
      src -> freeText.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-ObservationComponentCode-1', 'text', 'Free-text') "31bd9084-c71d-4f04-b8bb-50fdc47fdc0f";
      src -> freeText.valueString = evaluate(src, text) "92e7bbb6-1d55-4f43-8ce6-d4cc8f6c365d";
    } "setObservationTextComponent";
    src.gpInformed as gpInformed then {
      src -> tgt.component as coded then {
        src -> coded.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-SafeguardingComponentCode-1', 'gp-informed', 'GP Informed') "e6b3ecfe-f03f-4bbc-bde1-3e4b26726f58";
        src -> coded.valueCodeableConcept = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-AgenciesInformed-1', '', '') as vcc then {
          vcc.coding as coding then {
            vcc -> coding.code = evaluate(gpInformed, code) "d1c9595e-9ef2-4fab-907f-0a2f26a59f54";
            vcc -> coding.display = evaluate(gpInformed, display) "43ff7849-5a90-4220-b256-f23671414877";
          };
        } "b115f4e0-c651-41c0-abcf-e85edd24e6e6";
      } "315203aa-2d97-45ad-b15f-16d51a7959dd";
    } "setObservationGpInformedComponent";
    src.policeAware as policeAware then {
      src -> tgt.component as coded then {
        src -> coded.code = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-SafeguardingComponentCode-1', 'police-aware', 'Police Aware') "54281b59-da63-4b1d-8442-e48c5d2e45c0";
        src -> coded.valueCodeableConcept = cc('https://metadata.phase2.scip.synanetics.cloud/fhir/r4/CodeSystem/MODS-AgenciesInformed-1', '', '') as vcc then {
          vcc.coding as coding then {
            vcc -> coding.code = evaluate(policeAware, code) "1a14bf09-0af5-4d0b-b848-d786e8c89c13";
            vcc -> coding.display = evaluate(policeAware, display) "b1ffe58b-307d-4f22-afc2-be9c2fdb171f";
          };
        } "e44d3705-de18-4cd3-a5d5-771fe6430fcb";
      } "7e94986a-7476-4228-a06b-d06b978aca29";
    } "setObservationPoliceAwareComponent";
  };
}