HL7 FHIR® US Core Implementation Guide (Release 3.0.1 STU3 Update for Comment)

This page is part of the US Core (v3.0.1: STU3 Ballot 3) based on FHIR R4. The current version which supercedes this version is 5.0.1. For a full list of available versions, see the Directory of published versions

StructureDefinition-us-core-patient

This profile sets minimum expectations for the Patient resource to record, search and fetch basic demographics and other administrative information about an individual patient. It identifies which core elements, extensions, vocabularies and value sets SHALL be present in the resource when using this profile.

Example Usage Scenarios:

The following are example usage scenarios for the US Core Patient profile:

  • Query for a Patient demographic information using Medical Record Number (MRN), which is a type of identifier. The MRN is identifiable by identifier.system and may be location specific.
  • Query for a Patient demographic information using first name, last name, birthdate, and gender.

Mandatory and Must Support Data Elements

The following data-elements are mandatory (i.e data MUST be present) or must be supported if the data is present in the sending system (Must Support definition). They are presented below in a simple human-readable explanation. Profile specific guidance and examples are provided as well. The Formal Profile Definition below provides the formal summary, definitions, and terminology requirements.

Each Patient must have:

  1. a patient identifier (e.g. MRN)
  2. a patient name
  3. a gender*

Each Patient must support:

  1. contact detail (e.g. a telephone number or an email address)
  2. a birth date
  3. an address
  4. a communication language
  5. a race
  6. an ethnicity
  7. a birth sex*

Profile specific implementation guidance:

  • *The FHIR Specification provides guidance and background for representing patient gender. The American Clinical Laboratory Association (ACLA) has published best practice guidelines for administrative and clinical gender related to laboratory testing and reporting which implementers may find helpful as well.

Examples

Formal Views of Profile Content

Description of Profiles, Differentials, and Snapshots.

The official URL for this profile is: http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient

Published on Mon Aug 26 00:00:00 EDT 2019 as active by the HL7 US Realm Steering Committee.

This profile builds on Patient


Patient

Summary of the Mandatory Requirements

  1. One or more Identifiers in Patient.identifier
    • which must have an uri value in Patient.identifier.system
    • which must have a string value in Patient.identifier.value
  2. One or more HumanNames in Patient.name with the following constraints: Patient.name.given or Patient.name.family or both SHALL be present
    • which should have a string value in Patient.name.family
    • which should have one or more string values in Patient.name.given
  3. A code in Patient.gender with a required binding to AdministrativeGender

Summary of the Must Support Requirements

  1. A Race Extension in Patient.extension
  2. An Ethnicity Extension in Patient.extension
  3. A Birthsex Extension in Patient.extension with a required binding to Birth Sex
  4. One or more ContactPoints in Patient.telecom
    • which must have a code value in Patient.telecom.system with a required binding to ContactPointSystem
    • which must have a string value in Patient.telecom.value
    • which should have a code value in Patient.telecom.use with a required binding to ContactPointUse
  5. A date in Patient.birthDate
  6. One or more Addresses in Patient.address
    • which should have one or more string values in Patient.address.line
    • which should have a string value in Patient.address.city
    • which should have a string value in Patient.address.state with an extensible binding to USPS Two Letter Alphabetic Codes
    • which should have a string value in Patient.address.postalCode
    • which should have a Period value in Patient.address.period
  7. One or more Communications in Patient.communication

Summary of Constraints

  1. Patient.name.given or Patient.name.family or both SHALL be present
NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient I0..*Information 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: CommonLanguages (preferred)
Max Binding: AllLanguages
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... us-core-race SI0..1(Complex)US Core Race Extension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-race
... us-core-ethnicity SI0..1(Complex)US Core ethnicity Extension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity
... us-core-birthsex SI0..1codeExtension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex
Binding: Birth Sex (required)
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ1..*IdentifierAn identifier for this patient
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible)
.... system SΣ1..1uriThe namespace for the identifier value
Example General': http://www.acme.com/identifiers/patient
.... value SΣ1..1stringThe value that is unique within the system.
Example General': 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... active ?!Σ0..1booleanWhether this patient's record is in active use
... name SΣI1..*HumanNameA name associated with the patient
us-core-8: Patient.name.given or Patient.name.family or both SHALL be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required)
.... text Σ0..1stringText representation of the full name
.... family SΣ0..1stringFamily name (often called 'Surname')
.... given SΣ0..*stringGiven names (not always 'first'). Includes middle names
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ0..*stringParts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ0..*stringParts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ0..1PeriodTime period when name was/is in use
... telecom SΣ0..*ContactPointA contact detail for the individual
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system SΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
.... value SΣ1..1stringThe actual contact point details
.... use ?!SΣ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required)
.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... gender SΣ1..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
... birthDate SΣ0..1dateThe date of birth for the individual
... deceased[x] ?!Σ0..1Indicates if the individual is deceased or not
.... deceasedBooleanboolean
.... deceasedDateTimedateTime
... address SΣ0..*AddressAn address for the individual
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codehome | work | temp | old | billing - purpose of this address
Binding: AddressUse (required)
Example General': home
.... type Σ0..1codepostal | physical | both
Binding: AddressType (required)
Example General': both
.... text Σ0..1stringText representation of the address
Example General': 137 Nowhere Street, Erewhon 9132
.... line SΣ0..*stringStreet name, number, direction & P.O. Box etc.
This repeating element order: The order in which lines should appear in an address label
Example General': 137 Nowhere Street
.... city SΣ0..1stringName of city, town etc.
Example General': Erewhon
.... district Σ0..1stringDistrict name (aka county)
Example General': Madison
.... state SΣ0..1stringSub-unit of country (abbreviations ok)
Binding: USPS Two Letter Alphabetic Codes (extensible)
.... postalCode SΣ0..1stringUS Zip Codes
Example General': 9132
.... country Σ0..1stringCountry (e.g. can be ISO 3166 2 or 3 letter code)
.... period SΣ0..1PeriodTime period when address was/is in use
Example General': {"start":"2010-03-23T00:00:00-04:00","end":"2010-07-01T00:00:00-04:00"}
... 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..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... relationship 0..*CodeableConceptThe kind of relationship
Binding: PatientContactRelationship (extensible)
.... name 0..1HumanNameA name associated with the contact person
.... telecom 0..*ContactPointA contact detail for the person
.... address 0..1AddressAddress for the contact person
.... gender 0..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
.... organization I0..1Reference(Organization)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 SI0..*BackboneElementA language which may be used to communicate with the patient about his or her health
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... language S1..1CodeableConceptThe language which can be used to communicate with the patient about his or her health
Binding: Language codes with language and optionally a region modifier (extensible)
.... preferred 0..1booleanLanguage preference indicator
... generalPractitioner 0..*Reference(Organization | Practitioner | PractitionerRole)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..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... other Σ1..1Reference(Patient | RelatedPerson)The other patient or related person resource that the link refers to
.... type Σ1..1codereplaced-by | replaces | refer | seealso
Binding: LinkType (required)

doco Documentation for this format

Patient

Summary of the Mandatory Requirements

  1. One or more Identifiers in Patient.identifier
    • which must have an uri value in Patient.identifier.system
    • which must have a string value in Patient.identifier.value
  2. One or more HumanNames in Patient.name with the following constraints: Patient.name.given or Patient.name.family or both SHALL be present
    • which should have a string value in Patient.name.family
    • which should have one or more string values in Patient.name.given
  3. A code in Patient.gender with a required binding to AdministrativeGender

Summary of the Must Support Requirements

  1. A Race Extension in Patient.extension
  2. An Ethnicity Extension in Patient.extension
  3. A Birthsex Extension in Patient.extension with a required binding to Birth Sex
  4. One or more ContactPoints in Patient.telecom
    • which must have a code value in Patient.telecom.system with a required binding to ContactPointSystem
    • which must have a string value in Patient.telecom.value
    • which should have a code value in Patient.telecom.use with a required binding to ContactPointUse
  5. A date in Patient.birthDate
  6. One or more Addresses in Patient.address
    • which should have one or more string values in Patient.address.line
    • which should have a string value in Patient.address.city
    • which should have a string value in Patient.address.state with an extensible binding to USPS Two Letter Alphabetic Codes
    • which should have a string value in Patient.address.postalCode
    • which should have a Period value in Patient.address.period
  7. One or more Communications in Patient.communication

Summary of Constraints

  1. Patient.name.given or Patient.name.family or both SHALL be present

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Patient I0..*Information 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: CommonLanguages (preferred)
Max Binding: AllLanguages
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionExtension
Slice: Unordered, Open by value:url
... us-core-race SI0..1(Complex)US Core Race Extension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-race
... us-core-ethnicity SI0..1(Complex)US Core ethnicity Extension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity
... us-core-birthsex SI0..1codeExtension
URL: http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex
Binding: Birth Sex (required)
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier SΣ1..*IdentifierAn identifier for this patient
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | secondary | old (If known)
Binding: IdentifierUse (required)
.... type Σ0..1CodeableConceptDescription of identifier
Binding: Identifier Type Codes (extensible)
.... system SΣ1..1uriThe namespace for the identifier value
Example General': http://www.acme.com/identifiers/patient
.... value SΣ1..1stringThe value that is unique within the system.
Example General': 123456
.... period Σ0..1PeriodTime period when id is/was valid for use
.... assigner Σ0..1Reference(Organization)Organization that issued id (may be just text)
... active ?!Σ0..1booleanWhether this patient's record is in active use
... name SΣI1..*HumanNameA name associated with the patient
us-core-8: Patient.name.given or Patient.name.family or both SHALL be present
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codeusual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required)
.... text Σ0..1stringText representation of the full name
.... family SΣ0..1stringFamily name (often called 'Surname')
.... given SΣ0..*stringGiven names (not always 'first'). Includes middle names
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ0..*stringParts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ0..*stringParts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ0..1PeriodTime period when name was/is in use
... telecom SΣ0..*ContactPointA contact detail for the individual
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... system SΣI1..1codephone | fax | email | pager | url | sms | other
Binding: ContactPointSystem (required)
.... value SΣ1..1stringThe actual contact point details
.... use ?!SΣ0..1codehome | work | temp | old | mobile - purpose of this contact point
Binding: ContactPointUse (required)
.... rank Σ0..1positiveIntSpecify preferred order of use (1 = highest)
.... period Σ0..1PeriodTime period when the contact point was/is in use
... gender SΣ1..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
... birthDate SΣ0..1dateThe date of birth for the individual
... deceased[x] ?!Σ0..1Indicates if the individual is deceased or not
.... deceasedBooleanboolean
.... deceasedDateTimedateTime
... address SΣ0..*AddressAn address for the individual
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ0..1codehome | work | temp | old | billing - purpose of this address
Binding: AddressUse (required)
Example General': home
.... type Σ0..1codepostal | physical | both
Binding: AddressType (required)
Example General': both
.... text Σ0..1stringText representation of the address
Example General': 137 Nowhere Street, Erewhon 9132
.... line SΣ0..*stringStreet name, number, direction & P.O. Box etc.
This repeating element order: The order in which lines should appear in an address label
Example General': 137 Nowhere Street
.... city SΣ0..1stringName of city, town etc.
Example General': Erewhon
.... district Σ0..1stringDistrict name (aka county)
Example General': Madison
.... state SΣ0..1stringSub-unit of country (abbreviations ok)
Binding: USPS Two Letter Alphabetic Codes (extensible)
.... postalCode SΣ0..1stringUS Zip Codes
Example General': 9132
.... country Σ0..1stringCountry (e.g. can be ISO 3166 2 or 3 letter code)
.... period SΣ0..1PeriodTime period when address was/is in use
Example General': {"start":"2010-03-23T00:00:00-04:00","end":"2010-07-01T00:00:00-04:00"}
... 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..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... relationship 0..*CodeableConceptThe kind of relationship
Binding: PatientContactRelationship (extensible)
.... name 0..1HumanNameA name associated with the contact person
.... telecom 0..*ContactPointA contact detail for the person
.... address 0..1AddressAddress for the contact person
.... gender 0..1codemale | female | other | unknown
Binding: AdministrativeGender (required)
.... organization I0..1Reference(Organization)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 SI0..*BackboneElementA language which may be used to communicate with the patient about his or her health
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... language S1..1CodeableConceptThe language which can be used to communicate with the patient about his or her health
Binding: Language codes with language and optionally a region modifier (extensible)
.... preferred 0..1booleanLanguage preference indicator
... generalPractitioner 0..*Reference(Organization | Practitioner | PractitionerRole)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..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
.... other Σ1..1Reference(Patient | RelatedPerson)The other patient or related person resource that the link refers to
.... type Σ1..1codereplaced-by | replaces | refer | seealso
Binding: LinkType (required)

doco Documentation for this format

Downloads: StructureDefinition: (XML, JSON), Schema: XML Schematron


Quick Start

Below is an overview of the required set of RESTful FHIR interactions - for example, search and read operations - for this profile. See the Conformance requirements for a complete list of supported RESTful interactions for this IG.

  • See the General Guidance section for additional rules and expectations when a server requires status parameters.
  • See the General Guidance section for additional guidance on searching for multiple patients.

Mandatory Search Parameters:

The following search parameters, search parameter combinations SHALL be supported. Any listed search parameter modifiers, comparators, chains and composites SHALL also be supported UNLESS they are listed as “optional” in which case they SHOULD be supported.:

  1. SHALL support fetching a Patient using the _id search parameter:

    GET [base]/Patient[id]

    Example:

    1. GET [base]/Patient/1032702
    2. GET [base]/Patient?_id=1032702

    Implementation Notes: (how to search by the logical id of the resource)

  2. SHALL support searching a patient by an identifier such as a MPI using the identifier search parameter:

    GET [base]/Patient?identifier={[system]}|[code]

    Example:

    1. GET [base]/Patient?identifier=http://hospital.smarthealthit.org|1032702

    Implementation Notes: Fetches a bundle containing any Patient resources matching the identifier (how to search by token)

  3. SHALL support searching for a patient by a string match of any part of name using the name search parameter:

    GET [base]/Patient?name=[string]

    Example:

    1. GET [base]/Patient?name=Shaw

    Implementation Notes: Fetches a bundle of all Patient resources matching the name (how to search by string)

  4. SHALL support searching using the combination of the birthdate and name search parameters:

    GET [base]/Patient?birthdate=[date]&name=[string]

    Example:

    1. GET [base]/Patient?name=Shaw&birthdate=2007-03-20

    Implementation Notes: Fetches a bundle of all Patient resources matching the specified birthdate and name (how to search by date and how to search by string)

  5. SHALL support searching using the combination of the gender and name search parameters:

    GET [base]/Patient?gender={[system]}|[code]&name=[string]

    Example:

    1. GET [base]/Patient?name=Shaw&gender=female

    Implementation Notes: Fetches a bundle of all Patient resources matching the specified gender and name (how to search by string and how to search by token)

Optional Search Parameters:

The following search parameters, search parameter combinations and search parameter modifiers, comparators, chains and composites SHOULD be supported.

  1. SHOULD support searching using the combination of the birthdate and family search parameters:

    GET [base]/Patient?birthdate=[date]&family=[string]

    Example:

    1. GET [base]/Patient?family=Shaw&birthdate=2007-03-20

    Implementation Notes: Fetches a bundle of all Patient resources matching the specified birthdate and family (how to search by date and how to search by string)

  2. SHOULD support searching using the combination of the family and gender search parameters:

    GET [base]/Patient?family=[string]&gender={[system]}|[code]

    Example:

    1. GET [base]/Patient?family=Shaw&gender=female

    Implementation Notes: Fetches a bundle of all Patient resources matching the specified family and gender (how to search by string and how to search by token)