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
| Official URL: https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/RelatedPerson-ProxyForSubjectOfCare | Version: 0.1.0 | |||
| Draft as of 2026-06-10 | Computable Name: RelatedPersonToProxyForSubjectOfCare | |||
map "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureMap/RelatedPerson-ProxyForSubjectOfCare" = "RelatedPersonToProxyForSubjectOfCare" uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-RelatedPerson" alias RelatedPerson as source uses "https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/MODS-ProxyForSubjectOfCare" alias Proxy as target group Proxy(source src : RelatedPerson, target tgt : Proxy) { src -> tgt.id = evaluate(src, id) "setProxyId"; src -> tgt.meta as meta, meta.dataClass as dataClass then { src -> dataClass.name = 'Proxy for Subject of Care' "bd5f2262-5fa0-441c-8732-43a92465a378"; } "setDataClassName"; src.patient as patient then { src -> tgt.subjectOfCare as subjectOfCare then { src -> subjectOfCare.id = evaluate(patient, reference.replace('Patient/','')) "eac4254c-41af-432b-b0e5-3f5ceba39c2f"; src -> subjectOfCare.type = 'SubjectOfCare' "fea9e9c7-f22c-4e79-a551-676c6aa2eea6"; src -> subjectOfCare.display = evaluate(patient, display) "eebf9127-2285-4ee4-bc48-59262d6f3964"; } "dd9e83d7-012d-45ad-9292-e962f3bdd122"; } "setProxySubject"; src.relationship as relationshipCodeableConcept then { src -> tgt.relationship as relationship then { src -> relationship.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/person-marital-status' "ab8f9ba0-b692-4137-9398-580b1599ad5f"; src -> relationship.code = evaluate(relationshipCodeableConcept, coding.code) "17682885-a9f2-483f-bd0c-a6a90771810f"; src -> relationship.display = evaluate(relationshipCodeableConcept, coding.display) "9301d71b-7547-4eea-8dfc-9c0213f76eab"; } "d3d86dbb-e026-4fbd-b7b3-d1af899974ce"; } "setProxyRelationship"; src -> tgt.name as name then { src.name as humanName then { src -> name.given = evaluate(humanName, given) "084df918-6967-4652-bc27-306bf4ea2536"; src -> name.family = evaluate(humanName, family) "2c19a053-6ec0-4827-8bf5-813befe8a5f4"; } "setProxyFamilyAndGivenName"; } "setProxyName"; src.address as address -> src.addresses as addresses then { addresses as addr then { address -> addr.addressEntry1 = evaluate(address, line[0]) "1f400c35-a0bb-40e0-a818-f8e05fde41dd"; address -> addr.addressEntry2 = evaluate(address, line[1]) "39e642d4-4fc0-42b1-bd67-3bee7b288a25"; address -> addr.addressEntry3 = evaluate(address, line[2]) "e6c660e0-7afb-4439-88ce-e3c2ccb25f2a"; address -> addr.addressEntry4 = evaluate(address, line[3]) "40b85216-b7b5-46b0-9471-5aaf0efaf43a"; address -> addr.postCode = evaluate(address, postalCode) "d454b3ff-adb1-4e9f-809e-6285ae8d1678"; address.extension as countryExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-AddressCountry' then { address -> addr.country as country then { address -> country.system = 'https://data.digitisingsocialcare.co.uk/mods/v1/country' "bad6cfb5-db16-4c45-b5cc-9c22ebc96126"; address -> country.code = evaluate(countryExt, valueCoding.code) "893f09d4-5aa3-464b-a86f-0ec923fb2662"; address -> country.display = evaluate(countryExt, valueCoding.display) "c5f96b7b-4ebe-4103-b442-51d86462f9f9"; } "ad239250-2c82-4671-9580-680fc5c1c159"; }; } "c1b0e248-80ac-4281-acc5-2d14370b3337"; addresses -> tgt.address "811c02ca-c90e-49a9-b340-7f848bdec059"; } "setProxyAddress"; 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) "85409499-ac1a-490c-916f-4f7b2558b034"; src -> emailAddressDetails.preferredOrder = evaluate(emailAddress, rank) "2dbcbd9d-0343-41b4-ad6c-68eda17ef4b8"; 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' "f9b33ebe-da9e-4f44-9b20-ee007b180864"; src -> emailAddressType.code = evaluate(emailAddressTypeExt, valueCoding.code) "6745ad25-20e4-4bae-a5e7-19a6df367c13"; src -> emailAddressType.display = evaluate(emailAddressTypeExt, valueCoding.display) "f4d1ad39-e2de-44f7-bfd3-41c62414613c"; } "3c3ebdef-62b9-4b4a-94a8-05522b03e443"; }; }; src.telecom as telephoneNumber where $this.system='phone' -> contactDetails.telephoneDetails as telephoneNumberDetails then { src -> telephoneNumberDetails.telephoneNumber = evaluate(telephoneNumber, value) "d6acef1e-06f3-4cc7-a7cd-ab9852529096"; src -> telephoneNumberDetails.preferredOrder = evaluate(telephoneNumber, rank) "9435538f-d874-4a08-bdd2-40893425ade1"; 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' "a2b10265-dca9-4d7a-8d13-2075921cde9e"; src -> telephoneNumberType.code = evaluate(telephoneNumberExt, valueCoding.code) "f8ebd68c-7283-43f1-bbce-706db793eb9b"; src -> telephoneNumberType.display = evaluate(telephoneNumberExt, valueCoding.display) "2cda0ece-f28d-437b-b511-681af091b1cd"; } "b1e08b43-96fd-484c-b9a1-6d5e71c426ea"; }; }; } "setProxyContactDetails"; src.extension as careProviderExt where $this.url='https://metadata.phase2.scip.synanetics.cloud/fhir/r4/StructureDefinition/Extension-MODS-PersonCareProvider' -> tgt.organisation as organisation then { careProviderExt.valueReference as careProviderReference then { src -> organisation.id = evaluate(careProviderReference, identifier.value) "55cb11ed-a9d7-4def-a020-894ede8f03d4"; src -> organisation.type = 'CareOrganisation' "46ed7b30-2987-41ad-9603-0a7db4d8e96c"; src -> organisation.display = evaluate(careProviderReference, display) "45da40dc-a86b-4298-a266-cb41f0769870"; }; } "setProxyOrganisation"; }