8.1 Patient
description |
---|
Demographics and other administrative information about an individual or animal receiving care or other health-related services. |
8.1.1 Scope and Usage
This Resource covers data about patients and animals involved in a wide range of health-related activities, including:
- Curative activities
- Psychiatric care
- Social services
- Pregnancy care
- Nursing and assisted living
- Dietary services
- Tracking of personal health and exercise data
The data in the Resource covers the "who" information about the patient: its attributes are focused on the demographic information necessary to support the administrative, financial and logistic procedures. A Patient record is generally created and maintained by each organization providing care for a patient. A patient or animal receiving care at multiple organizations may therefore have its information present in multiple Patient Resources.
Not all concepts are included within the base resource (such as race, ethnicity, organ donor status, nationality, etc.), but may be found in profiles defined for specific jurisdictions (e.g., US Meaningful Use Program) or standard extensions. Such fields vary widely between jurisdictions and often have different names and valuesets for the similar concepts, but they are not similar enough to be able to map and exchange.
8.1.2 Referenced by
name |
---|
Account |
AdverseEvent |
AllergyIntolerance |
Annotation |
Appointment |
AppointmentResponse |
AuditEvent |
Basic |
BiologicallyDerivedProduct |
BodyStructure |
CarePlan |
CareTeam |
ChargeItem |
Claim |
ClaimResponse |
Clinical Document |
ClinicalImpression |
Communication |
CommunicationRequest |
Composition |
Condition |
Consent |
Transcriber |
Witness |
Contract |
Coverage |
CoverageEligibilityRequest |
CoverageEligibilityResponse |
initiatingPerson |
receivingPerson |
DetectedIssue |
Device |
Device Metric Observation Profile |
DeviceRequest |
DeviceUseStatement |
DiagnosticReport |
DocumentManifest |
DocumentReference |
Encounter |
EnrollmentRequest |
EpisodeOfCare |
ExplanationOfBenefit |
FamilyMemberHistory |
patient-record |
Flag |
Goal |
acceptance |
Group |
GuidanceResponse |
ImagingStudy |
Immunization |
ImmunizationEvaluation |
ImmunizationRecommendation |
Invoice |
List |
MeasureReport |
Media |
MedicationAdministration |
MedicationDispense |
MedicationRequest |
MedicationStatement |
MolecularSequence |
NutritionOrder |
Observation |
Patient |
Person |
Procedure |
directedBy |
Provenance |
QuestionnaireResponse |
author |
RelatedPerson |
RequestGroup |
ResearchSubject |
RiskAssessment |
Schedule |
ServiceRequest |
Signature |
Specimen |
SupplyDelivery |
SupplyRequest |
Task |
candidateList |
VisionPrescription |
observation-vitalsigns |
8.1.3 Resource Content
Patient | I | Patient | |
identifier | Σ | 0..* | Identifier |
active | Σ ?! | 0..1 | boolean |
name | Σ | 0..* | HumanName |
telecom | Σ I | 0..* | ContactPoint |
gender | Σ | 0..1 | codeBinding |
birthDate | Σ | 0..1 | date |
deceased[x] | Σ ?! | 0..1 | |
deceasedBoolean | boolean | ||
deceasedDateTime | dateTime | ||
address | Σ | 0..* | Address |
maritalStatus | 0..1 | CodeableConceptBinding | |
multipleBirth[x] | 0..1 | ||
multipleBirthBoolean | boolean | ||
multipleBirthInteger | integer | ||
photo | I | 0..* | Attachment |
contact | I | 0..* | BackboneElement |
relationship | 0..* | CodeableConceptBinding | |
name | 0..1 | HumanName | |
telecom | I | 0..* | ContactPoint |
address | 0..1 | Address | |
gender | 0..1 | codeBinding | |
organization | I | 0..1 | Reference(Organization) |
period | I | 0..1 | Period |
communication | 0..* | BackboneElement | |
language | 1..1 | CodeableConceptBinding | |
preferred | 0..1 | boolean | |
generalPractitioner | I | 0..* | Reference(Organization | Practitioner | PractitionerRole) |
managingOrganization | Σ I | 0..1 | Reference(Organization) |
link | Σ ?! | 0..* | BackboneElement |
other | Σ I | 1..1 | Reference(Patient | RelatedPerson) |
type | Σ | 1..1 | codeBinding |
8.1.3.1 Terminology bindings
path | strength | valueSet |
---|---|---|
Patient.gender | required | http://hl7.org/fhir/ValueSet/administrative-gender|4.0.1 |
Patient.maritalStatus | extensible | http://hl7.org/fhir/ValueSet/marital-status |
Patient.contact.relationship | extensible | http://hl7.org/fhir/ValueSet/patient-contactrelationship |
Patient.contact.gender | required | http://hl7.org/fhir/ValueSet/administrative-gender|4.0.1 |
Patient.communication.language | preferred | http://hl7.org/fhir/ValueSet/languages |
Patient.link.type | required | http://hl7.org/fhir/ValueSet/link-type|4.0.1 |
8.1.3.2 Constraints
path | key | severity | human | expression |
---|---|---|---|---|
Patient.contact | pat-1 | error | 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() |
Notes:
- multipleBirth can be either expressed as a Boolean (just indicating whether the patient is part of a multiple birth) or as an integer, indicating the actual birth order.
- Patient records may only be in one of two statuses: in use (active=true) and not in use (active=false). A normal record is active, i.e. it is in use. Active is set to 'false' when a record is created as a duplicate or in error. A record does not need to be linked to be inactivated.
- The link element is used to assert that two or more Patient resources are both about the same actual patient. See below for further discussion
- There should be only one preferred language (Language.preference = true) per mode of expression.
- The Contact for a Patient has an element organization, this is for use with guardians or business related contacts where just the organization is relevant.
8.1.4 Patient ids and Patient resource ids
A Patient record's [Resource Id][] can never change. For this reason, the identifiers with which humans are concerned (often called MRN - Medical Record Number, or UR - Unit Record) should not be used for the resource's id, since MRN's may change, i.e. as a result of having duplicate records of the same patient. Instead they should be represented in the Patient.identifier list where they can be managed. This is also useful for the case of institutions that have acquired multiple numbers because of mergers of patient record systems over time.
Where there is a need to implement an automated MRN Identifier created for a patient record, this could be achieved by providing an identifier in the patient with an appropriate assigner, MRN Type and/or system but with no value assigned. Internal business rules can then detect this and replace/populate this identifier with 1 or more identifiers (as required).
8.1.5 Linking Patients
The link element is used to assert that patient resources refer to the same patient. This element is used to support the following scenarios where multiple patient records exist:
8.1.5.1 Duplicate Patient records
Managing Patient registration is a well-known difficult problem. Around 2% of registrations are in error, mostly duplicate records. Sometimes the duplicate record is caught fairly quickly and retired before much data is accumulated. In other cases, substantial amounts of data may accumulate. By using a link of type 'replaced-by', the record containing such a link is marked as a duplicate and the link points forward to a record that should be used instead. Note that the record pointed to may in its turn have been identified as created in error and forward to yet another Patient resource. Records that replace another record may use a link type of 'replaces' pointing to the old record.
8.1.5.2 Patient record in a Patient index
A Patient record may be present in a system that acts as a Patient Index: it maintains a (summary of) patient data and a list of one or more servers that are known to hold a more comprehensive and/or authoritative record of the same patient. The link type 'refer' is used to denote such a link. Note that linked records may contain contradictory information. The record referred to does not point back to the referring record.
8.1.5.3 Distributed Patient record
In a distributed architecture, multiple systems keep separate patient records concerning the same patient. These records are not considered duplicates, but contain a distributed, potentially overlapping view of the patient's data. Each such record may have its own focus or maintaining organization and there need not be a sense of one record being more complete or more authoritative than another. In such cases, links of type 'see also' can be used to point to other patient records. It is not a requirement that such links are bilateral.
8.1.6 Patient vs. Person vs. Patient.Link vs. Linkage
The Person resource on the surface appears to be very similar to the
Patient resource, and the usage for it is very similar to using the
Patient.Link capability.
The intention of the Person resource is to be able to link instances of
resources together that are believed to be the same individual. This
includes across resource types, such as RelatedPerson, Practitioner,
Patient and even other Person resources.
The Patient Link however is only intended to be used for Patient
resources.
The primary use case for the Person resource is to be able to support
person registries that do not necessarily have a healthcare context, and
are able to identify and quantify confidence levels that this is the
same person.
This could include consumer portals where the maintainer of the person
information is the actual person themselves.
A system could use the Person entry to cross check changes to
information applied to one part of a record to values in another system;
e.g., when moving, a consumer updates his contact numbers and address in
his person record, and then a Patient Administration system is able to
see that this data is changed and prompt the organization to follow up
with the patient that was linked to the person record if they want their
details updated, or if they no longer need services and they should be
cancelled, as they've moved from the area.
The Linkage resource and the Patient.link property conceptually
perform similar functions in FHIR, both provide an assertion of linkages
between multiple resource instances that are referring to the same
underlying individual.
When a Patient resource is linked/merged then it needs to have an
internal indication that there is another patient resource that should
be considered when referencing other records, which is achieved using
the patient.link property.
Not detecting/checking for a potential linkage could mean that related
clinical records are not discovered, potentially impacting patient
safety. (which is why using the Linkage resource is not appropriate, as
its use in this manner would force the use of either another query to
potentially locate other patient resources to consider, or use
_revinclude)
8.1.7 Patient.contact vs. RelatedPerson
The contact element on the Patient resource should be used for storing the details of people to contact. This information always travels with the Patient resource, and cannot be used as the target of a reference. Where related people need to be referenced by other resources (e.g. CarePlan.participant, Encounter.participant, DocumentReference.author, Appointment.participant), the RelatedPerson resource must be used.
It is not expected that these records will be used for recording the primary care provider; this information should be stored in the Patient.generalPractitioner field.
8.1.8 Patient Gender and Sex
Many systems and organizations only provide for a single attribute that aspires to represent all aspects of a patient's gender and sex with a single value. However, there are many considerations around sex and gender documentation and interoperability. Listed below are the various social and biological attributes that are relevant in the healthcare setting, as well as information on how each can be communicated.
- Administrative Gender - in order to interoperate with systems that use a single generic property, the basic Patient.gender property represents an administrative gender: the gender that the patient is considered to have for administration and record keeping purposes. This property is often used as an input to patient matching algorithms, for example.
In addition to this administrative gender, other kinds of gender or sex properties may be represented:
- Clinical Sex - a testable observation about a biological property of the patient. There are several different types of clinical sex, including karyotypic/genetic/chromosomal, gonadal, ductal, phenotypic, etc. Clinical sex observations should be represented using Observation, qualified with the appropriate clinical codes from LOINC and/or SNOMED.
- Clinical Gender - an observation about the patient, often collected as part of social history documentation, and represented as an Observation(example) using, for example, the LOINC code 76691-5. Clinical gender observations can provide both history and confidentiality, where the genderIdentity extension does not.
- Gender Identity - an indication from the patient about what gender they consider themselves to be. This can influence how the patient prefers to be addressed by care providers and other individuals. The standard genderIdentity extension may be used to communicate this property. This extension is appropriate when the gender identity is openly known.
- Sex assigned at Birth - the sex assigned at birth, as documented on the birth registration. Some countries allow variations such as not yet determined, unknown, or undifferentiated, while others do not. Some countries also allow birth registration information to be updated. The US realm defines a US specific extension for this property. Alternatively, if you were representing this concept with an observation, you could use the LOINC code 76689-9.
- Legal Sex - regional and national entities often categorize citizens using a single legal sex value. The legal sex of a patient can vary from region to region and country to country. A single patient may have multiple legal sex values at the same time in different jurisdictions. In case where the Patient.gender administrative property is not sufficient to communicate legal sex, realm specific extensions should be used.
For veterinary use, the animal extension also includes the genderStatus which indicates sterility information.
8.1.9 Mother and newborn relationships
There are several ways to represent the relationship between a mother and a child. This is due to the when it is recorded and the purpose for which it is recorded:
- To express the family relationship and legal responsibility thereof
for administrative purposes: use the Patient/RelatedPerson
structure.
This structure is consistent over time. - To relate the encounters of a mother and her baby in a maternity encounter, for administrative and billing purposes: use the encounter.partof property
- To collect information about the patient's relatives that might be relevant to the patient's medical condition: use the FamilyMemberHistory resource
During a maternity encounter, the Patient and Encounter resources for
the mother will be present. After the child is born, new Patient,
Encounter and RelatedPerson (for the mother) records will be created.
The Child's encounter should reference the Mother's encounter using the
partOf property.
The Patient/RelatedPerson structure should also be created for ongoing
usage, as shown in this example:
<Patient>
<id value="child"/>
<!-- The details of the child -->
</Patient>
<RelatedPerson>
<id value="rp-mom"/>
<patient>
<reference value="Patient/child"/>
</patient>
</RelatedPerson>
<Patient>
<id value="pat-mom"/>
<!-- The details of the mom -->
<link>
<other value="rp-mom"/>
<type value="see-also"/>
</link>
</Patient>
<Encounter>
<id value="mom-enc"/>
<status value="in-progress"/>
<class value="inpatient"/>
<patient>
<reference value="Patient/mom"/>
</patient>
</Encounter>
<Encounter>
<id value="child-enc"/>
<status value="in-progress"/>
<class value="inpatient"/>
<patient>
<reference value="Patient/child"/>
</patient>
<partOf>
<reference value="Encounter/mom-enc"/>
</partOf>
</Encounter>
8.1.10 Merging records
This specification does not specify merge functionality: if multiple patient records are found to be duplicates, they can be linked together, as described above. These links merely express the relationship between records, and in the case of a replacement link, indicate a "master" record. This specification does not mandate that FHIR servers migrate information between such records on finding such a link. Note:
- Health information administrators may call the process "merging", but it is often implemented as "linking" at the record level
- Servers are allowed to implement merging/record migration even though it is not mandated.
Note: We are seeking input from the implementer community on what effect linking/merging/unlinking should have on other functionality such as the GET operation, searching, reverse includes, etc.;
How should an unlink behavior be done?
How will the patient compartment interact with the merge?
This functionality and related behaviors is subject to ongoing experimentation and implementation testing, with a definition to be proposed in a future version of this specification.Feedback here.
8.1.11 Patient Matching using an MPI
A Master Patient Index (MPI) is a service used to manage patient identification in a context where multiple patient databases exist. Healthcare applications and middleware use the MPI to match patients between the databases, and as new patient details are encountered. MPIs are highly specialized applications, often tailored extensively to the institution's particular mix of patients. MPIs can also be run on a regional and national basis.
To ask an MPI to match a patient, clients call the patient $match
operation, which processes a parameters resource containing a complete
or fragment of a patient resource, along with some other control
parameters.
This provided patient resource does not need to pass full validation
(mandatory fields, or invariants) as the resource will not be stored, it
does however need to be a parsable instance.
The MPI can then use the properties of the resource as MPI inputs, and
process them using an internal MPI algorithm of some kind to determine
the most appropriate matches in the patient set. It does not have to use
all the properties provided, and may ignore others provided quietly.
A specific profile (with the required fields/invariants) can be used to
define what parameters the MPI algorithm requires.
POST [base]/Patient/$match
[some headers including content-type xml or json]
[parameters body with patient resource inside]
The response from an MPI $match operation is a set of patient records, ordered from most likely to least likely. If there are not patient matches, the MPI SHALL return an empty search set with no error, but may include an operation outcome with further advice. All patient records should have a score from 0 to 1, where 1 is the most certain match, along with an extension "match-grade" that indicates the MPI's position on the match quality:
<entry>
<resource>
<Patient>
<!-- patient details -->
</Patient>
</resource>
<search>
<extension url="http://hl7.org/fhir/StructureDefinition/match-grade">
<valueCode value="probable"/>
</extension>
<score value="0.80"/>
</search>
</entry>
The match-grade extension has one of the following codes:
code | display | definition |
---|---|---|
certain | Certain Match | This record meets the matching criteria to be automatically considered as a full match. |
probable | Probable Match | This record is a close match, but not a certain match. Additional review (e.g. by a human) may be required before using this as a match. |
possible | Possible Match | This record may be a matching one. Additional review (e.g. by a human) SHOULD be performed before using this as a match. |
certainly-not | Certainly Not a Match | This record is known not to be a match. Note that usually non-matching records are not returned, but in some cases records previously or likely considered as a match may specifically be negated by the matching engine. |
The purpose of using an MPI search versus a regular search is that the
MPI search is really intended to target and find a specific single
patient for recording information about reducing errors through
incorrectly selecting the wrong patient. Often MPIs won't return data if
there is insufficient search parameter data, such as a partial
surname.
This compares to a regular search which can be used for finding lists of
patients, such as to locate a group of patients that share a property in
common, such as live in a specific location, or fit within an age range
for performing population analysis.
A formal definition for the MPI $match operation is published.
8.1.12 Veterinary Care
Veterinary care is very much within the scope of FHIR, and the Patient resource can be used to communicate information about animal patients. To support this, there is a standard patient-animal extension which can be used for recording details about species, breed, and gender status. This extension is not intended to cover all relevant properties for veterinary care, and the use of additional domain-relevant extensions is expected for areas such as laboratory, zoological and livestock care.
The veterinary client ("owner") is represented using the RelatedPerson resource.
8.1.13 Search Parameters
name | url | type | description | expression |
---|---|---|---|---|
Example Search Parameter on an extension | http://hl7.org/fhir/SearchParameter/example-extension | reference | Search by url for a participation agreement, which is stored in a DocumentReference | DocumentReference.extension('http://example.org/fhir/StructureDefinition/participation-agreement') |
address | http://hl7.org/fhir/SearchParameter/individual-address | string | Multiple Resources:
| Patient.address | Person.address | Practitioner.address | RelatedPerson.address |
address-city | http://hl7.org/fhir/SearchParameter/individual-address-city | string | Multiple Resources:
| Patient.address.city | Person.address.city | Practitioner.address.city | RelatedPerson.address.city |
address-country | http://hl7.org/fhir/SearchParameter/individual-address-country | string | Multiple Resources:
| Patient.address.country | Person.address.country | Practitioner.address.country | RelatedPerson.address.country |
address-postalcode | http://hl7.org/fhir/SearchParameter/individual-address-postalcode | string | Multiple Resources:
| Patient.address.postalCode | Person.address.postalCode | Practitioner.address.postalCode | RelatedPerson.address.postalCode |
address-state | http://hl7.org/fhir/SearchParameter/individual-address-state | string | Multiple Resources:
| Patient.address.state | Person.address.state | Practitioner.address.state | RelatedPerson.address.state |
address-use | http://hl7.org/fhir/SearchParameter/individual-address-use | token | Multiple Resources:
| Patient.address.use | Person.address.use | Practitioner.address.use | RelatedPerson.address.use |
birthdate | http://hl7.org/fhir/SearchParameter/individual-birthdate | date | Multiple Resources:
| Patient.birthDate | Person.birthDate | RelatedPerson.birthDate |
http://hl7.org/fhir/SearchParameter/individual-email | token | Multiple Resources:
| Patient.telecom.where(system='email') | Person.telecom.where(system='email') | Practitioner.telecom.where(system='email') | PractitionerRole.telecom.where(system='email') | RelatedPerson.telecom.where(system='email') | |
family | http://hl7.org/fhir/SearchParameter/individual-family | string | Multiple Resources:
| Patient.name.family | Practitioner.name.family |
gender | http://hl7.org/fhir/SearchParameter/individual-gender | token | Multiple Resources:
| Patient.gender | Person.gender | Practitioner.gender | RelatedPerson.gender |
given | http://hl7.org/fhir/SearchParameter/individual-given | string | Multiple Resources:
| Patient.name.given | Practitioner.name.given |
phone | http://hl7.org/fhir/SearchParameter/individual-phone | token | Multiple Resources:
| Patient.telecom.where(system='phone') | Person.telecom.where(system='phone') | Practitioner.telecom.where(system='phone') | PractitionerRole.telecom.where(system='phone') | RelatedPerson.telecom.where(system='phone') |
phonetic | http://hl7.org/fhir/SearchParameter/individual-phonetic | string | Multiple Resources:
| Patient.name | Person.name | Practitioner.name | RelatedPerson.name |
telecom | http://hl7.org/fhir/SearchParameter/individual-telecom | token | Multiple Resources:
| Patient.telecom | Person.telecom | Practitioner.telecom | PractitionerRole.telecom | RelatedPerson.telecom |
active | http://hl7.org/fhir/SearchParameter/Patient-active | token | Whether the patient record is active | Patient.active |
death-date | http://hl7.org/fhir/SearchParameter/Patient-death-date | date | The date of death has been provided and satisfies this search value | (Patient.deceased as dateTime) |
deceased | http://hl7.org/fhir/SearchParameter/Patient-deceased | token | This patient has been marked as deceased, or as a death date entered | Patient.deceased.exists() and Patient.deceased != false |
age | http://hl7.org/fhir/SearchParameter/patient-extensions-Patient-age | number | Searches for patients based on age as calculated based on current date and date of birth. Deceased patients are excluded from the search. | |
birthOrderBoolean | http://hl7.org/fhir/SearchParameter/patient-extensions-Patient-birthOrderBoolean | token | Search based on whether a patient was part of a multiple birth or not. | |
mothersMaidenName | http://hl7.org/fhir/SearchParameter/patient-extensions-Patient-mothersMaidenName | string | Search based on patient's mother's maiden name | Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-extensions-Patient-mothersMaidenName') |
general-practitioner | http://hl7.org/fhir/SearchParameter/Patient-general-practitioner | reference | Patient's nominated general practitioner, not the organization that manages the record | Patient.generalPractitioner |
identifier | http://hl7.org/fhir/SearchParameter/Patient-identifier | token | A patient identifier | Patient.identifier |
language | http://hl7.org/fhir/SearchParameter/Patient-language | token | Language code (irrespective of use value) | Patient.communication.language |
link | http://hl7.org/fhir/SearchParameter/Patient-link | reference | All patients linked to the given patient | Patient.link.other |
name | http://hl7.org/fhir/SearchParameter/Patient-name | string | A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text | Patient.name |
organization | http://hl7.org/fhir/SearchParameter/Patient-organization | reference | The organization that is the custodian of the patient record | Patient.managingOrganization |