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 by default “wash” the address using DAWA (Danmarks Adressers Web API).
See https://dawa.aws.dk/dok/api/adresse#datavask.
A client may overrule the default validation strategy by setting a request header x-address-validation-strategy
with the value “STRICT”, “WASH” or “NONE”.
If “STRICT” is used the request will fail if the address does not match strictly an address in DAWA.
If “WASH” is used (the default strategy) the client may want to verify that the wash outcome was as expected.
If “NONE” is used no validation/modification is performed (the address is stored as is).
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.* |
Patients with name and address protection are marked with security label ‘restricted’ (R in http://hl7.org/fhir/v3/Confidentiality).
The period of the name and address protection is expressed in an extention with url: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-nameandaddressprotection”
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 Fri Jul 01 12:30:20 UTC 2022 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.maritalStatus | extensible | Marital Status Codes |
Patient.contact.relationship | extensible | v2 Contact Role |
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.extension:nameAndAddressProtection | All FHIR elements must have a @value or children : hasValue() | (children().count() > id.count()) | |
ext-1 | Patient.extension:nameAndAddressProtection | 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.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()) |