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

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

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

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

group OccupationalHistory(source src : OccupationalHistoryObservation, target tgt : OccupationalHistory) {
  src -> tgt.id = evaluate(src, id) "ad7c2a66-1293-4843-bc3e-4d61786dfa94";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Occupational History' "a4a0b792-5545-48dd-8c08-efd870e56d3a";
  } "setDataClassName";
  src.subject as subject then {
    src -> tgt.subjectOfCare as subjectOfCare then {
      src -> subjectOfCare.id = evaluate(subject, reference.replace('Patient/','')) "c24e423a-0da0-434b-a931-3aa03719e6b7";
      src -> subjectOfCare.type = 'SubjectOfCare' "1e6998ed-9b32-4007-a696-ab933011c2e4";
      src -> subjectOfCare.display = evaluate(subject, display) "bd528fd4-6aeb-4215-b1d3-18c6be73de93";
    } "ace85f65-4eba-47a0-b676-077736b266a9";
  } "setOccupationalHistorySubject";
  src.extension as participantsExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-ParticipantCareActor' -> tgt.careWorker as careWorker then {
    participantsExt.extension as careWorkers where $this.url='participantRole'and$this.valueCode='performer' then {
      participantsExt.extension as careWorkerParticipantReferences where $this.url='participantReference' then {
        careWorkerParticipantReferences.valueReference as careWorkerParticipantRef then {
          src -> careWorker.id = evaluate(careWorkerParticipantRef, reference.replace('Practitioner/','')) "09416006-9166-4305-8498-f2d84067e53c";
          src -> careWorker.type = 'CareWorker' "c45bfc17-e79c-438d-bfdb-f25fe4cbd611";
          src -> careWorker.display = evaluate(careWorkerParticipantRef, display) "dd1a81a9-c13b-4296-979a-a4da3c7671c5";
        };
      };
    };
  } "setOccupationalHistoryCareWorker";
  src -> tgt.datetime = evaluate(src, effectiveDateTime) "setOccupationalHistoryDateTime";
  src.component as component where $this.code.coding.code='text' then {
    src -> tgt.text = evaluate(component, valueString) "a0029252-09cf-4599-8eb3-c55a92f4efeb";
  } "setOccupationalHistoryText";
}