eHealth Infrastructure (v2020.3)

StructureDefinition: ehealth-patient

Introduction

An ehealth-patient is a central entity, which is referenced by many other entities in the FUT infrastructure.

Scope and Usage

In the eHealth Infrastructure the Patient resource is primarily used in conjunction with the following resources:

  • Communication
    • As sender or recipient of a message
  • Appointment
    • As participant on an ehealth-appointment
  • CarePlan
    • As the subject in question
  • ClinicalImpression
    • As the subject in question
  • EpisodeOfCare
    • As the focus of an episode of care
  • Observation
    • As the subject in question
  • RelatedPerson
    • As the patient who a person is related to

Update rules

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.*  

Formal Views of Profile Content

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.

Creating patients

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 Thu Apr 30 11:21:16 UTC 2020 as a draft by ehealth.sundhed.dk.

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from Patient

Summary

Mandatory: 5 elements (4 nested mandatory elements)
Must-Support: 1 element
Fixed Value: 5 elements
Prohibited: 5 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element Patient.identifier is sliced based on the value of value:system
  • The element Patient.telecom is sliced based on the value of value:value
  • The element Patient.address is sliced based on the value of value:use

This structure is derived from Patient

NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient 0..*Patient
... extension 0..*ExtensionSlice: Unordered, Open by value:url
... ehealth-itcompetencelevel 0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-itcompetencelevel
... patient-interpreterRequired 0..1booleanWhether the patient needs an interpreter
URL: http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired
... ehealth-general-health-condition 0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-general-health-condition
... identifier S1..*(Slice Definition)Slice: Unordered, Open by value:system
.... identifier:dk-civil-registration-number 1..1DK CRN Identifier
... telecom 0..*(Slice Definition)Slice: Unordered, Open by value:value
.... telecom:NemSMS 0..*ContactPoint
..... system 1..1codeFixed Value: other
..... value 1..1stringFixed Value: NemSMS
..... use 0..0
..... rank 0..0
.... telecom:eBoks 0..*ContactPoint
..... system 1..1codeFixed Value: other
..... value 1..1stringFixed Value: eBoks
..... use 0..0
..... rank 0..0
... gender 1..1code
... address 1..*(Slice Definition)Slice: Unordered, Open by value:use
.... address:officialHomeAddress 1..1DanishAddress
... contact
.... extension 0..*ExtensionSlice: Unordered, Open by value:url
.... ehealth-patient-contactnote 0..*stringExtension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient-contactnote
.... address 0..1DanishAddress
.... organization 0..1Reference(Organization) {r}
... animal 0..0
... communication 0..*BackboneElement
.... language 1..1CodeableConcept
..... coding 0..*Coding
...... system 0..1uriFixed Value: urn:ietf:bcp:47
... generalPractitioner 0..*Reference(Organization | Practitioner) {r}

doco Documentation for this format

This structure is derived from Patient

NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient I0..*PatientInformation about an individual or animal receiving health care services
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible)
Max Binding: All Languages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... ehealth-itcompetencelevel I0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-itcompetencelevel
... patient-interpreterRequired I0..1booleanWhether the patient needs an interpreter
URL: http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired
... ehealth-general-health-condition I0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-general-health-condition
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ1..*(Slice Definition)An identifier for this patient
Slice: Unordered, Open by value:system
.... identifier:dk-civil-registration-number I1..1DK CRN IdentifierAn identifier intended for computation
... active ?!Σ0..1booleanWhether this patient's record is in active use
... name Σ0..*HumanNameA name associated with the patient
... telecom Σ0..*(Slice Definition)A contact detail for the individual
Slice: Unordered, Open by value:value
.... telecom:NemSMS Σ0..*ContactPointA contact detail for the individual
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
Fixed Value: other
..... value Σ1..1stringThe actual contact point details
Fixed Value: NemSMS
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:eBoks Σ0..*ContactPointA contact detail for the individual
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
Fixed Value: other
..... value Σ1..1stringThe actual contact point details
Fixed Value: eBoks
..... period Σ0..1PeriodTime period when the contact point was/is in use
... gender Σ1..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
... birthDate Σ0..1dateThe date of birth for the individual
... deceased[x] ?!Σ0..1Indicates if the individual is deceased or not
.... deceasedBooleanboolean
.... deceasedDateTimedateTime
... address Σ1..*(Slice Definition)Addresses for the individual
Slice: Unordered, Open by value:use
.... address:officialHomeAddress I1..1DanishAddressAn address expressed using postal conventions (as opposed to GPS or other location definition formats)
... maritalStatus 0..1CodeableConceptMarital (civil) status of a patient
Binding: Marital Status Codes (extensible)
... multipleBirth[x] 0..1Whether patient is part of a multiple birth
.... multipleBirthBooleanboolean
.... multipleBirthIntegerinteger
... photo 0..*AttachmentImage of the patient
... contact I0..*BackboneElementA contact party (e.g. guardian, partner, friend) for the patient
pat-1: SHALL at least contain a contact's details or a reference to an organization
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
.... ehealth-patient-contactnote I0..*stringExtension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient-contactnote
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... relationship 0..*CodeableConceptThe kind of relationship
Binding: v2 Contact Role (extensible)
.... name 0..1HumanNameA name associated with the contact person
.... telecom 0..*ContactPointA contact detail for the person
.... address I0..1DanishAddressAn address expressed using postal conventions (as opposed to GPS or other location definition formats)
.... gender 0..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
.... organization I0..1Reference(Organization) {r}Organization that is associated with the contact
.... period 0..1PeriodThe period during which this contact person or organization is valid to be contacted relating to this patient
... communication I0..*BackboneElementA list of Languages which may be used to communicate with the patient about his or her health
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... language 1..1CodeableConceptThe language which can be used to communicate with the patient about his or her health
Binding: Common Languages (extensible)
Max Binding: All Languages
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ0..*CodingCode defined by a terminology system
...... id 0..1stringxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ0..1uriIdentity of the terminology system
Fixed Value: urn:ietf:bcp:47
...... version Σ0..1stringVersion of the system - if relevant
...... code Σ0..1codeSymbol in syntax defined by the system
...... display Σ0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
..... text Σ0..1stringPlain text representation of the concept
.... preferred 0..1booleanLanguage preference indicator
... generalPractitioner 0..*Reference(Organization | Practitioner) {r}Patient's nominated primary care provider
... managingOrganization Σ0..1Reference(Organization)Organization that is the custodian of the patient record
... link ?!ΣI0..*BackboneElementLink to another patient resource that concerns the same actual person
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... other Σ1..1Reference(Patient | RelatedPerson)The other patient or related person resource that the link refers to
.... type Σ1..1codereplaced-by | replaces | refer | seealso - type of link
Binding: LinkType (required)

doco Documentation for this format

This structure is derived from Patient

Summary

Mandatory: 5 elements (4 nested mandatory elements)
Must-Support: 1 element
Fixed Value: 5 elements
Prohibited: 5 elements

Structures

This structure refers to these other structures:

Extensions

This structure refers to these extensions:

Slices

This structure defines the following Slices:

  • The element Patient.identifier is sliced based on the value of value:system
  • The element Patient.telecom is sliced based on the value of value:value
  • The element Patient.address is sliced based on the value of value:use

Differential View

This structure is derived from Patient

NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient 0..*Patient
... extension 0..*ExtensionSlice: Unordered, Open by value:url
... ehealth-itcompetencelevel 0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-itcompetencelevel
... patient-interpreterRequired 0..1booleanWhether the patient needs an interpreter
URL: http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired
... ehealth-general-health-condition 0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-general-health-condition
... identifier S1..*(Slice Definition)Slice: Unordered, Open by value:system
.... identifier:dk-civil-registration-number 1..1DK CRN Identifier
... telecom 0..*(Slice Definition)Slice: Unordered, Open by value:value
.... telecom:NemSMS 0..*ContactPoint
..... system 1..1codeFixed Value: other
..... value 1..1stringFixed Value: NemSMS
..... use 0..0
..... rank 0..0
.... telecom:eBoks 0..*ContactPoint
..... system 1..1codeFixed Value: other
..... value 1..1stringFixed Value: eBoks
..... use 0..0
..... rank 0..0
... gender 1..1code
... address 1..*(Slice Definition)Slice: Unordered, Open by value:use
.... address:officialHomeAddress 1..1DanishAddress
... contact
.... extension 0..*ExtensionSlice: Unordered, Open by value:url
.... ehealth-patient-contactnote 0..*stringExtension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient-contactnote
.... address 0..1DanishAddress
.... organization 0..1Reference(Organization) {r}
... animal 0..0
... communication 0..*BackboneElement
.... language 1..1CodeableConcept
..... coding 0..*Coding
...... system 0..1uriFixed Value: urn:ietf:bcp:47
... generalPractitioner 0..*Reference(Organization | Practitioner) {r}

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient I0..*PatientInformation about an individual or animal receiving health care services
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: Common Languages (extensible)
Max Binding: All Languages
... text I0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... ehealth-itcompetencelevel I0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-itcompetencelevel
... patient-interpreterRequired I0..1booleanWhether the patient needs an interpreter
URL: http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired
... ehealth-general-health-condition I0..*(Complex)Extension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-general-health-condition
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ1..*(Slice Definition)An identifier for this patient
Slice: Unordered, Open by value:system
.... identifier:dk-civil-registration-number I1..1DK CRN IdentifierAn identifier intended for computation
... active ?!Σ0..1booleanWhether this patient's record is in active use
... name Σ0..*HumanNameA name associated with the patient
... telecom Σ0..*(Slice Definition)A contact detail for the individual
Slice: Unordered, Open by value:value
.... telecom:NemSMS Σ0..*ContactPointA contact detail for the individual
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
Fixed Value: other
..... value Σ1..1stringThe actual contact point details
Fixed Value: NemSMS
..... period Σ0..1PeriodTime period when the contact point was/is in use
.... telecom:eBoks Σ0..*ContactPointA contact detail for the individual
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... system ΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
Fixed Value: other
..... value Σ1..1stringThe actual contact point details
Fixed Value: eBoks
..... period Σ0..1PeriodTime period when the contact point was/is in use
... gender Σ1..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
... birthDate Σ0..1dateThe date of birth for the individual
... deceased[x] ?!Σ0..1Indicates if the individual is deceased or not
.... deceasedBooleanboolean
.... deceasedDateTimedateTime
... address Σ1..*(Slice Definition)Addresses for the individual
Slice: Unordered, Open by value:use
.... address:officialHomeAddress I1..1DanishAddressAn address expressed using postal conventions (as opposed to GPS or other location definition formats)
... maritalStatus 0..1CodeableConceptMarital (civil) status of a patient
Binding: Marital Status Codes (extensible)
... multipleBirth[x] 0..1Whether patient is part of a multiple birth
.... multipleBirthBooleanboolean
.... multipleBirthIntegerinteger
... photo 0..*AttachmentImage of the patient
... contact I0..*BackboneElementA contact party (e.g. guardian, partner, friend) for the patient
pat-1: SHALL at least contain a contact's details or a reference to an organization
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
.... ehealth-patient-contactnote I0..*stringExtension
URL: http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient-contactnote
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... relationship 0..*CodeableConceptThe kind of relationship
Binding: v2 Contact Role (extensible)
.... name 0..1HumanNameA name associated with the contact person
.... telecom 0..*ContactPointA contact detail for the person
.... address I0..1DanishAddressAn address expressed using postal conventions (as opposed to GPS or other location definition formats)
.... gender 0..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
.... organization I0..1Reference(Organization) {r}Organization that is associated with the contact
.... period 0..1PeriodThe period during which this contact person or organization is valid to be contacted relating to this patient
... communication I0..*BackboneElementA list of Languages which may be used to communicate with the patient about his or her health
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... language 1..1CodeableConceptThe language which can be used to communicate with the patient about his or her health
Binding: Common Languages (extensible)
Max Binding: All Languages
..... id 0..1stringxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
..... coding Σ0..*CodingCode defined by a terminology system
...... id 0..1stringxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
Slice: Unordered, Open by value:url
...... system Σ0..1uriIdentity of the terminology system
Fixed Value: urn:ietf:bcp:47
...... version Σ0..1stringVersion of the system - if relevant
...... code Σ0..1codeSymbol in syntax defined by the system
...... display Σ0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
..... text Σ0..1stringPlain text representation of the concept
.... preferred 0..1booleanLanguage preference indicator
... generalPractitioner 0..*Reference(Organization | Practitioner) {r}Patient's nominated primary care provider
... managingOrganization Σ0..1Reference(Organization)Organization that is the custodian of the patient record
... link ?!ΣI0..*BackboneElementLink to another patient resource that concerns the same actual person
.... id 0..1stringxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... other Σ1..1Reference(Patient | RelatedPerson)The other patient or related person resource that the link refers to
.... type Σ1..1codereplaced-by | replaces | refer | seealso - type of link
Binding: LinkType (required)

doco Documentation for this format

 

Terminology Bindings

PathConformanceValueSet / Code
Patient.languageextensibleCommon Languages
Max Binding: All Languages
Patient.telecom:NemSMS.systemrequiredFixed Value: other
Patient.telecom:eBoks.systemrequiredFixed Value: other
Patient.genderrequiredAdministrativeGender
Patient.maritalStatusextensibleMarital Status Codes
Patient.contact.relationshipextensiblev2 Contact Role
Patient.contact.genderrequiredAdministrativeGender
Patient.animal.speciesexampleAnimalSpecies
Patient.animal.breedexampleAnimalBreeds
Patient.animal.genderStatusexampleGenderStatus
Patient.communication.languageextensibleCommon Languages
Max Binding: All Languages
Patient.link.typerequiredLinkType

Constraints

IdPathDetailsRequirements
dom-2PatientIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-1PatientIf the resource is contained in another resource, it SHALL NOT contain any narrative
: contained.text.empty()
dom-4PatientIf 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-3PatientIf 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-1Patient.extension:itcompetencelevelAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Patient.extension:itcompetencelevelMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Patient.extension:interpreterRequiredAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Patient.extension:interpreterRequiredMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Patient.extension:generalHealthConditionAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Patient.extension:generalHealthConditionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Patient.identifier:dk-civil-registration-numberAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1Patient.address:officialHomeAddressAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1Patient.contactAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
pat-1Patient.contactSHALL 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-1Patient.contact.extension:contactNoteAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ext-1Patient.contact.extension:contactNoteMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Patient.contact.addressAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1Patient.communicationAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
ele-1Patient.linkAll FHIR elements must have a @value or children
: hasValue() | (children().count() > id.count())
.