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

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

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

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

group OccupationalHistoryObservation(source src : OccupationalHistory, target tgt : OccupationalHistoryObservation) {
  src -> tgt.id = evaluate(src, id) "64705ee4-3423-43f2-aa4e-7d42fe3d8662";
  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' "b56e769d-0b9a-4cfe-a252-3d14867ced7c";
    src -> tag.code = 'https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Observation-OccupationalHistory-OccupationalHistory' "811aa069-5557-47fc-a67f-a649f46d858b";
  } "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' "2d16af11-8bae-4289-88e1-0b4e88dd21cd";
        careWorker -> participantRoleExt.valueCode = 'performer' "f93d92d3-97bd-48e0-9f1d-d07fa531f426";
      } "aad655a5-929f-4d29-a6fa-c68fe7f21a4a";
      careWorker -> participantExt.extension as participantRefExt then {
        careWorker -> participantRefExt.url = 'participantReference' "58defa4b-09d5-4251-b9ad-72c364f19712";
        careWorker -> participantRefExt.valueReference as participantReference then {
          careWorker -> participantReference.reference = evaluate(careWorker, 'Practitioner/'+id) "f8d0f2fd-dcc5-4765-93e3-bafb090a31cd";
          careWorker -> participantReference.display = evaluate(careWorker, display) "ca6f6819-cb97-4dae-ba3d-35139284fe18";
        } "67679b02-6429-405a-9984-aa970ae8574d";
      } "890fb1e0-1e68-4444-b8c3-c68a84084378";
      participantExt -> tgt.extension "81b1db57-9ab7-4c2b-9f7c-91ad31ef09cd";
    } "94ef095c-dff0-4d20-ab7c-cacbc946513e";
  } "setObservationPerformer";
  src.subjectOfCare as subjectOfCare then {
    src -> tgt.subject as subject then {
      src -> subject.reference = evaluate(subjectOfCare, 'Patient/'+id) "20f7591b-0665-4a07-9304-ab72f79a0a60";
      src -> subject.display = evaluate(subjectOfCare, display) "14860ee8-ca1f-4f17-b908-75df97bb1f75";
    } "8808f301-0f39-4234-9c7c-ace2475c9852";
  } "setObservationSubject";
  src -> tgt.status = 'final' "setObservationStatus";
  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', '12', 'Occupational History') "setObservationCode";
  src -> tgt.effectiveDateTime = evaluate(src, datetime) "setObservationEffectDateTime";
  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') "763586ec-1bb4-427f-b685-64219a10fe7c";
      src -> freeText.valueString = evaluate(src, text) "51a85b65-e40c-41bb-87c0-2db749434ca2";
    } "setObservationTextComponent";
  };
}