An ehealth-patient is a central entity, which is referenced by many other entities in the FUT infrastructure.
In the eHealth Infrastructure the Patient resource is primarily used in conjunction with the following resources:
Certain data on an ehealth-patient are automatically updated based on the CPR system. This includes official name, address, and of course the CPR number itself.
When adding/updating an address (non-home address), the service will check the address strictly against DAWA (Danmarks Adressers Web API). A strict match is required. However, a client may loosen the validation by setting a request header x-address-validation-strategy equal to “WASH” (see https://dawa.aws.dk/dok/api/adresse#datavask). In that case the best match is chosen - therefore it is important to check that the outcome was as expected.
An ehealth-patient may be PATCH updated on paths complying with the regular expressions below.
Path | Description |
---|---|
/implicitRules.* | |
/language.* | |
/contained.* | |
/identifier.* | CPR number may not be changed, but addition of other identifiers are allowed |
/name.* | The official name (use=official) may not be changed, as it is automatically synchronized with the CPR system |
/address.* | The home address may not be changed (use=home), as it is automatically synchronized with the CPR system |
/maritalStatus.* | |
/multipleBirth.* | |
/photo.* | |
/contact.* | |
/telecom.* | |
/communication.* | |
/link.* | |
/itcompetencelevel.* | |
/interpreterRequired.* | |
/generalHealthCondition.* | |
/functionalCapacity.* | |
/extension.* |
The official URL for this profile is:
http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient
This profile holds the patient information needed in the danish eHealth context. Patients models the concept of a real person in a careplan process.
Patients can only be created using the operation defined for the Patient resource (see the createPatient operation). The operation ensure that patients are created with the proper demographics data delivered by national registers. There can only be a single patient pr. actual person.
This profile builds on Patient.
This profile was published on Tue Feb 04 09:11:17 UTC 2020 as a draft by ehealth.sundhed.dk.
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
Path | Conformance | ValueSet / Code |
Patient.language | extensible | Common Languages Max Binding: All Languages |
Patient.telecom:NemSMS.system | required | Fixed Value: other |
Patient.telecom:eBoks.system | required | Fixed Value: other |
Patient.gender | required | AdministrativeGender |
Patient.address:officialHomeAddress.extension:regionalSubdivisionCode.value[x]:valueCodeableConcept | extensible | RegionalSubdivisionCodes |
Patient.address:officialHomeAddress.use | required | Fixed Value: home |
Patient.address:officialHomeAddress.type | required | AddressType |
Patient.address:temporaryAddress.extension:regionalSubdivisionCode.value[x]:valueCodeableConcept | extensible | RegionalSubdivisionCodes |
Patient.address:temporaryAddress.use | required | Fixed Value: temp |
Patient.address:temporaryAddress.type | required | AddressType |
Patient.maritalStatus | extensible | Marital Status Codes |
Patient.contact.relationship | extensible | v2 Contact Role |
Patient.contact.address.extension:regionalSubdivisionCode.value[x]:valueCodeableConcept | extensible | RegionalSubdivisionCodes |
Patient.contact.address.use | required | AddressUse |
Patient.contact.address.type | required | AddressType |
Patient.contact.gender | required | AdministrativeGender |
Patient.animal.species | example | AnimalSpecies |
Patient.animal.breed | example | AnimalBreeds |
Patient.animal.genderStatus | example | GenderStatus |
Patient.communication.language | extensible | Common Languages Max Binding: All Languages |
Patient.link.type | required | LinkType |
Id | Path | Details | Requirements |
dom-2 | Patient | If the resource is contained in another resource, it SHALL NOT contain nested Resources : contained.contained.empty() | |
dom-1 | Patient | If the resource is contained in another resource, it SHALL NOT contain any narrative : contained.text.empty() | |
dom-4 | Patient | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated : contained.meta.versionId.empty() and contained.meta.lastUpdated.empty() | |
dom-3 | Patient | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource : contained.where(('#'+id in %resource.descendants().reference).not()).empty() | |
ele-1 | Patient.extension:itcompetencelevel | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Patient.extension:itcompetencelevel | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Patient.extension:interpreterRequired | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Patient.extension:interpreterRequired | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Patient.extension:generalHealthCondition | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Patient.extension:generalHealthCondition | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Patient.identifier:dk-civil-registration-number | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Patient.address:officialHomeAddress | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Patient.address:temporaryAddress | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Patient.contact | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
pat-1 | Patient.contact | SHALL at least contain a contact's details or a reference to an organization : name.exists() or telecom.exists() or address.exists() or organization.exists() | |
ele-1 | Patient.contact.extension:contactNote | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Patient.contact.extension:contactNote | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
ele-1 | Patient.contact.address | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Patient.communication | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ele-1 | Patient.link | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) |