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-03-24 | 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' "3962abac-af28-4327-ab68-7caa99f87b8d"; } "setDataClassName"; src.patient as patient then { src -> tgt.subjectOfCare as subjectOfCare then { src -> subjectOfCare.id = evaluate(patient, reference.replace('Patient/','')) "f1ead33b-b3a9-4663-bbd9-069092e273cf"; src -> subjectOfCare.type = 'SubjectOfCare' "e9525080-6679-4c08-8964-80750507d37f"; src -> subjectOfCare.display = evaluate(patient, display) "ad81f3dd-86eb-4da9-925e-c183b848a391"; } "7abc1d2b-e964-4093-aa38-e4a0fc2f12ff"; } "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' "969a90c2-b837-46ed-b0c1-1a5041beab0b"; src -> relationship.code = evaluate(relationshipCodeableConcept, coding.code) "c15501ec-5665-4143-96cd-5da339065397"; src -> relationship.display = evaluate(relationshipCodeableConcept, coding.display) "f1a41f9f-69bd-4407-b0ae-9452e726e2fa"; } "8622ee2e-a48b-44f5-8fc7-e41029dd62a4"; } "setProxyRelationship"; src -> tgt.name as name then { src.name as humanName then { src -> name.given = evaluate(humanName, given) "50623afe-a95a-4503-8470-015a6c042835"; src -> name.family = evaluate(humanName, family) "fde0cd17-a67f-45a5-b751-2c782565090d"; } "setProxyFamilyAndGivenName"; } "setProxyName"; src.address as address -> src.addresses as addresses then { addresses as addr then { address -> addr.addressEntry1 = evaluate(address, line[0]) "e05ed7c5-de2c-4dcf-a61d-d65d25c22e71"; address -> addr.addressEntry2 = evaluate(address, line[1]) "eb789793-140c-4101-80d2-86d338377b11"; address -> addr.addressEntry3 = evaluate(address, line[2]) "8e8bd8c5-c226-4be4-9196-3af02f0f74d7"; address -> addr.addressEntry4 = evaluate(address, line[3]) "76b791a2-1ef3-465b-b7d7-b2d0e975837f"; address -> addr.postCode = evaluate(address, postalCode) "e7361fe5-f432-46b3-8aab-e945dc1fa4fe"; 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' "ed6d2b05-7402-4dca-84e8-b54ebe83595b"; address -> country.code = evaluate(countryExt, valueCoding.code) "8e995954-3551-479c-9abe-470f12e691d3"; address -> country.display = evaluate(countryExt, valueCoding.display) "aec6988f-b119-452a-8799-d9fdeba2a6f7"; } "68e7bbdd-e76e-480c-9668-3c3f9785844e"; }; } "1fadf555-c8b2-4ea3-a3b0-69cc7f0dd34c"; addresses -> tgt.address "0ceffdae-391c-46a7-be2c-8f2e326d75df"; } "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) "852fbd38-2bab-4798-9e9a-47347446e3c1"; src -> emailAddressDetails.preferredOrder = evaluate(emailAddress, rank) "1d8fab4d-380e-48a0-bf21-3475ec3aa622"; 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' "799e594a-e1ae-461f-b511-12fa9230becc"; src -> emailAddressType.code = evaluate(emailAddressTypeExt, valueCoding.code) "ac0f5c3a-cff5-4ef2-94d5-71a40c2e81c8"; src -> emailAddressType.display = evaluate(emailAddressTypeExt, valueCoding.display) "ab1af801-bd61-468d-86d1-197a0caae4bf"; } "c8c18109-be37-4266-bd00-0b7083daf158"; }; }; src.telecom as telephoneNumber where $this.system='phone' -> contactDetails.telephoneDetails as telephoneNumberDetails then { src -> telephoneNumberDetails.telephoneNumber = evaluate(telephoneNumber, value) "df200086-4111-4fc0-a773-6ca4d66e52de"; src -> telephoneNumberDetails.preferredOrder = evaluate(telephoneNumber, rank) "28039973-32d4-4d16-adc5-5d764bc8956d"; 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' "1b991f78-0946-4a80-94ff-0b6214ad8a11"; src -> telephoneNumberType.code = evaluate(telephoneNumberExt, valueCoding.code) "a291ccde-c5fd-4762-b037-3465f13ea674"; src -> telephoneNumberType.display = evaluate(telephoneNumberExt, valueCoding.display) "8fcd7d68-9796-4d7d-a334-f246f9d6b484"; } "683b404c-2ab5-4f03-a0b9-0d24e5a64916"; }; }; } "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) "416b8dcb-e752-4822-a464-1c10fc33a8f9"; src -> organisation.type = 'CareOrganisation' "6e6c8b87-c6db-404a-8af2-f8086f0ff727"; src -> organisation.display = evaluate(careProviderReference, display) "2a557171-8d94-46f2-9505-9639873c3294"; }; } "setProxyOrganisation"; }