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

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

map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/Practitioner-CareWorker" = "PractitionerToCareWorker"

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

group CareWorker(source src : Practitioner, target tgt : CareWorker) {
  src -> tgt.id = evaluate(src, id) "setCareWorkerId";
  src ->  tgt.meta as meta,  meta.dataClass as dataClass then {
    src -> dataClass.name = 'Care Worker' "63274580-6236-4b37-b349-85da3eb80868";
  } "setDataClassName";
  src -> tgt.name as name then {
    src.name as humanName then {
      src -> name.given = evaluate(humanName, given) "a1aa72bd-5d36-442d-a8db-444a494499f1";
      src -> name.family = evaluate(humanName, family) "e8e16e25-3ba6-45bd-b883-3aea0a283c18";
    } "setFamilyAndGivenName";
  } "setName";
  src -> tgt.contactDetails as contactDetails then {
    src.telecom as emailAddress where $this.system='email' -> contactDetails.emailAddressDetails as emailAddressDetails then {
      src -> emailAddressDetails.emailAddress = evaluate(emailAddress, value) "8c217a06-1e19-4980-b5d2-fb2dbef16080";
      src -> emailAddressDetails.preferredOrder = evaluate(emailAddress, rank) "896ec1e6-9252-40ab-9386-e0855d339a9e";
      emailAddress.extension as emailAddressTypeExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonEmailAddressType' then {
        src -> emailAddressDetails.type as emailAddressType then {
          src -> emailAddressType.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-email-address-type' "b81d50ef-2c67-40b6-ad1e-d2e3c0780226";
          src -> emailAddressType.code = evaluate(emailAddressTypeExt, valueCoding.code) "43646139-d262-469f-a7ce-2784ee5a335b";
          src -> emailAddressType.display = evaluate(emailAddressTypeExt, valueCoding.display) "2bdba0aa-1573-4650-b3f7-756d749ca565";
        } "b942758f-e3c8-4cd1-86c4-f2bbefc18a80";
      };
    };
    src.telecom as telephoneNumber where $this.system='phone' -> contactDetails.telephoneDetails as telephoneNumberDetails then {
      src -> telephoneNumberDetails.telephoneNumber = evaluate(telephoneNumber, value) "0eb552ce-5144-4185-999c-cc470e7d54cd";
      src -> telephoneNumberDetails.preferredOrder = evaluate(telephoneNumber, rank) "34987f67-d804-44a3-ba17-10d3a3520874";
      telephoneNumber.extension as telephoneNumberExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonTelephoneNumberType' then {
        src -> telephoneNumberDetails.type as telephoneNumberType then {
          src -> telephoneNumberType.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-telephone-type' "a33366a7-6cad-4d3b-b9f8-0d3d5086fe6f";
          src -> telephoneNumberType.code = evaluate(telephoneNumberExt, valueCoding.code) "4b5036fb-f67b-4ca4-b397-9a0f50026ad6";
          src -> telephoneNumberType.display = evaluate(telephoneNumberExt, valueCoding.display) "2c41e96d-d946-4466-a6f7-10f47682b13e";
        } "2d6536c2-9e85-433d-a5f5-0ed2344b8cdb";
      };
    };
  } "setContactDetails";
}