diff --git a/content/millennium/r4/base/individuals/patient.md b/content/millennium/r4/base/individuals/patient.md index c75430f2a..480daa92c 100644 --- a/content/millennium/r4/base/individuals/patient.md +++ b/content/millennium/r4/base/individuals/patient.md @@ -9,34 +9,39 @@ title: Patient | R4 API ## Overview -The Patient Resource provides general demographic information about a person receiving health care services from a specific organization. Common demographic fields include patient id, patient name, gender, date of birth, address, phone, primary language and marital status. Additional concepts returned as extensions and not part of the base resource include time of birth, preferred contact, race, ethnicity and birth sex. Cerner Millennium is a patient centric application: thus, many of the other resources will include the patient id in their queries. A person receiving care from multiple organizations may have data available in multiple patient resources in multiple FHIR servers. +The Patient Resource provides general demographic information about a person receiving healthcare services from a specific organization. Common demographic fields include patient ID, patient name, gender, date of birth, address, phone, primary language, and marital status. Additional concepts returned as extensions and not part of the base resource include time of birth, preferred contact, race, ethnicity, and birth sex. Millennium is a patient-centric application; thus, many other resources include the patient ID in their queries. A person receiving care from multiple organizations may have information available in multiple patient resources in multiple FHIR servers. -* The following [HL7® FHIR® US Core Implementation Guide STU 4.0.0](https://hl7.org/fhir/us/core/STU4/){:target="_blank"} Profiles are supported by this resource: +* This resource supports the following [US Core Implementation Guide](https://hl7.org/fhir/us/core/STU4/){:target="_blank"} profiles: - * [US Core Patient Profile](http://hl7.org/fhir/us/core/STU4/StructureDefinition-us-core-patient.html){:target="_blank"} + * [US Core Patient Profile](https://hl7.org/fhir/us/core/STU4/StructureDefinition-us-core-patient.html){:target="_blank"} The following fields are returned if valued: -* [Patient id](https://hl7.org/fhir/R4/resource-definitions.html#Resource.id){:target="_blank"} -* [Patient Identifier](https://hl7.org/fhir/R4/patient-definitions.html#Patient.identifier){:target="_blank"} +* [Patient ID](https://hl7.org/fhir/R4/resource-definitions.html#Resource.id){:target="_blank"} +* [Identifiers](https://hl7.org/fhir/R4/patient-definitions.html#Patient.identifier){:target="_blank"} * [Active](https://hl7.org/fhir/R4/patient-definitions.html#Patient.active){:target="_blank"} -* [Patient name](https://hl7.org/fhir/R4/patient-definitions.html#Patient.name){:target="_blank"} -* [Telecom Information (may include phone and email)](https://hl7.org/fhir/R4/patient-definitions.html#Patient.telecom){:target="_blank"} -* [Gender (administrative)](https://hl7.org/fhir/R4/patient-definitions.html#Patient.gender){:target="_blank"} -* [Extensions including birth time, preferred contact, birth sex, ethnicity, communication preference and race](#extensions){:target="_blank"} +* [Name](https://hl7.org/fhir/R4/patient-definitions.html#Patient.name){:target="_blank"} +* [Telecom](https://hl7.org/fhir/R4/patient-definitions.html#Patient.telecom){:target="_blank"} +* [Gender](https://hl7.org/fhir/R4/patient-definitions.html#Patient.gender){:target="_blank"} +* [Extensions](#extensions) * [Date of Birth]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate){:target="_blank"} * [Deceased]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.deceased_x_){:target="_blank"} - * [Boolean](https://hl7.org/fhir/R4/datatypes.html#boolean){:target="_blank"} - * [dateTime](https://hl7.org/fhir/R4/datatypes.html#dateTime){:target="_blank"} * [Address]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.address){:target="_blank"} * [Marital status]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.maritalStatus){:target="_blank"} -* [Multiple Birth Information]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.multipleBirth_x_){:target="_blank"} - * [Boolean](https://hl7.org/fhir/R4/datatypes.html#boolean){:target="_blank"} - * [Integer](https://hl7.org/fhir/R4/datatypes.html#integer){:target="_blank"} -* [Contact person (guardian, parent or emergency)]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.contact){:target="_blank"} -* [Communication (preferred language)]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.communication){:target="_blank"} +* [Multiple Birth information]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.multipleBirth_x_){:target="_blank"} +* [Contact person](https://hl7.org/fhir/R4/patient-definitions.html#Patient.contact){:target="_blank"} +* [Communication]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.communication){:target="_blank"} * [Primary Care Providers]( https://hl7.org/fhir/R4/patient-definitions.html#Patient.generalPractitioner){:target="_blank"} - * [Reference](http://hl7.org/fhir/r4/references.html#Reference){:target="_blank"} ([Practitioner](http://hl7.org/fhir/r4/practitioner.html){:target="_blank"}) + +_Notes_ + +* Direct secure email is not returned. + +<%= disclaimer %> + +### Errors + +The common [errors] and [OperationOutcomes] may be returned. ## Terminology Bindings @@ -53,56 +58,48 @@ The following fields are returned if valued: ## Search -Search for Patients that meet supplied query parameters: +Search for patients who meet supplied query parameters. GET /Patient?:parameters -_Implementation Notes_ - -* Direct secure email will not be returned. -* [Patient.identifier.use](https://hl7.org/fhir/R4/datatypes-definitions.html#Identifier.use){:target="_blank"} will have a value of 'usual' - ### Authorization Types <%= authorization_types(provider: true, patient: true, system: true) %> ### Parameters - Name | Required? | Type | Description -----------------------|----------------------------------------------|------------|-------------------------------------------------------------------------- - `_id` | This, or any other required search parameter | [`token`] | The logical resource id associated with the resource. - `identifier` | This and/or any other search param, or `_id` | [`token`] | A patient identifier. Example: `urn:oid:1.1.1.1.1.1|1022228` - `name` | This and/or any other search param, or `_id` | [`string`] | The start of either family or given name of the patient. Example: `John` - `family` | This and/or any other search param, or `_id` | [`string`] | The start of the family name of the patient. Example: `Smith` - `given` | This and/or any other search param, or `_id` | [`string`] | The start of the given name of the patient. Example: `John` - `birthdate` | This and/or any other search param, or `_id` | [`date`] | The patient's date of birth. Example: `1990-01-01` - `phone` | This and/or any other search param, or `_id` | [`token`] | The patient's phone number. Example: `1234567891` - `email` | This and/or any other search param, or `_id` | [`token`] | The patient's email address. Example: `example@example.com` - `address-postalcode` | This and/or any other search param, or `_id` | [`string`] | The postal code in the address details of the patient. Example: `12345` - `gender` | No | [`token`] | The gender of the patient. Example: `male` - [`_count`] | No | [`number`] | The maximum number of results to return. Defaults to `20`. - `_revinclude` | No | [`token`] | Provenance resource entries to be returned as part of the bundle. Example:_revinclude=Provenance:target - -Notes: - -* Either the `_id`, or a combination of `identifier` , `birthdate`, `name`, `given`, `family`, `address-postalcode`, `phone`, or `email` parameters must be provided. -* The `gender` parameter may only be provided if at least one of `identifier` , `birthdate`, `name`, `given`, `family`, `address-postalcode`, `phone`, or `email` parameters is provided. -* The `name`, `family`, and `given` parameters support the ':exact' modifier and will search for current names only. -* It is not recommended to combine `family` or `given` parameters with `name` parameter when searching for a patient. Whenever possible use the ':exact' modifier. +| Name | Required? | Type | Description | +|----------------------|---------------|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `_id` | Conditionally | [`token`] | The logical resource ID associated with the resource. This parameter is required if at least one of the following parameters is not used: `identifier`, `name`, `family`, `given`, `birthdate`, `phone`, `email`, or `address-postalcode`. Example: `11111111` | +| `identifier` | Conditionally | [`token`] | A patient identifier. This parameter is required if `_id`, `name`, `family`, `given`, `birthdate`, `phone`, `email`, and `address-postalcode` are not used. Example: `urn:oid:1.1.1.1.1.1\|1022228` | +| `name` | Conditionally | [`string`] | The start of the family or given name of the patient. This parameter is required if `_id`, `identifier`, `family`, `given`, `birthdate`, `phone`, `email`, and `address-postalcode` are not used. Example: `Pete` | +| `family` | Conditionally | [`string`] | The start of the family name of the patient. This parameter is required if `_id`, `identifier`, `name`, `given`, `birthdate`, `phone`, `email`, and `address-postalcode` are not used. Example: `Adam` | +| `given` | Conditionally | [`string`] | The start of the given name of the patient. This parameter is required if `_id`, `identifier`, `name`, `family`, `birthdate`, `phone`, `email`, and `address-postalcode` are not used. Example: `Tim` | +| `birthdate` | Conditionally | [`date`] | The patient's date of birth. This parameter is required if `_id`, `identifier`, `name`, `family`, `given`, `phone`, `email`, and `address-postalcode` are not used. Example: `1961-01-16` | +| `phone` | Conditionally | [`token`] | The patient's phone number. This parameter is required if `_id`, `identifier`, `name`, `family`, `given`, `birthdate`, `email`, and `address-postalcode` are not used. Example: `1111111111` | +| `email` | Conditionally | [`token`] | The patient's email address. This parameter is required if `_id`, `identifier`, `name`, `family`, `given`, `birthdate`, `phone`, and `address-postalcode` are not used. Example: `example@example.com` | +| `address-postalcode` | Conditionally | [`string`] | The postal code in the address details of the patient. This parameter is required if `_id`, `identifier`, `name`, `family`, `given`, `birthdate`, `phone`, and `email` are not used. Example: `11111` | +| `gender` | No | [`token`] | The administrative gender of the patient. Example: `male` | +| [`_count`] | No | [`number`] | The maximum number of results to return. Defaults to `20`. | +| `_revinclude` | No | [`token`] | The Provenance resource entries to be returned as part of the bundle. Example:`_revinclude=Provenance:target` | + +_Notes_ + +* A `422 Unprocessable Content` status code is returned when more than 1,000 patients qualify for the search criteria. +* The `name`, `family`, and `given` parameters support the [`:exact`] modifier and search for current names only, based on the name's `period`. +* We do not recommend combining the `family` or `given` parameters with the `name` parameter when searching for a patient. Whenever possible, use the `:exact` modifier. * The `identifier`, `name`, `family`, `given`, `phone`, `email`, `address-postalcode`, or `gender` parameters may be provided exactly once and may have only a single value. * The `birthdate` parameter - * May be provided twice using the prefixes `le` and `ge` to indicate a date range - * May be provided once using one of the following prefixes to imply a date range: `ge`, `le`, `gt`, `lt`, `eq` - * Must not be provided with a time component + * May be provided once using one of the following prefixes to imply a date range: `ge`, `le`, `gt`, `lt`, or `eq`. + * May be provided twice to indicate a date range and must contain one prefix each of `le` and `ge`. Example: `birthdate=ge2001-03-13&birthdate=le2001-05-01` + * Must not be provided with a time component. * The `identifier` parameter - * Code details are required. System is optional. If system is not provided, search is performed across all systems supported by the - Patient resource. - * When valid system is provided, search is performed against the specific system. - -* The `_revinclude` parameter may be provided once with the value `Provenance:target`. Example: `_revinclude=Provenance:target` -* The `_revinclude` parameter may be provided with any required search param. Example: `_id=629928&_revinclude=Provenance:target` -* When `_revinclude` is provided in a request to the closed endpoint, the OAuth2 token must include the scope corresponding to the Authorization Type, such as `user/Provenance.read`, `patient/Provenance.read` or `system/Provenance.read`. -* FHIR does not return the SSN. It can be passed in as a query parameter but it won't come back in the JSON response. + * Requires a code, but the system is optional. If the system is not provided, the search is performed across all systems supported by the Patient resource. + * Searches against the specific system, if it is provided. + * Accepts a Social Security Number (SSN), but the value is not returned in a matching response. +* The `_revinclude` parameter + * May be provided once with the value of `Provenance:target`. Example: `_revinclude=Provenance:target` + * Requires the OAuth2 token to include the Provenance scope corresponding to the current Patient scope, such as `user/Provenance.read`, `patient/Provenance.read`, or `system/Provenance.read`. ### Headers @@ -112,7 +109,7 @@ Notes: #### Request - GET https://fhir-open.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Patient?_id=12724067 + GET https://fhir-open.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Patient?family=smart&given=joe&birthdate=1990-09-15 #### Response @@ -133,23 +130,13 @@ Notes: <%= headers status: 200 %> <%= json(:r4_patient_revinclude_bundle) %> -<%= disclaimer %> - -### Errors - -The common [errors] and [OperationOutcomes] may be returned. In addition, a `422 Unprocessable Entity` will be returned when too many (>1000) patients qualify for the search criteria. -## Retrieve by id +## Retrieve by ID -List an individual Patient by its id: +List an individual patient by their ID. GET /Patient/:id -_Implementation Notes_ - -* Direct secure email will not be returned. -* [Patient.identifier.use](https://hl7.org/fhir/R4/datatypes-definitions.html#Identifier.use){:target="_blank"} will have a value of 'usual' - ### Authorization Types <%= authorization_types(provider: true, patient: true, system: true) %> @@ -169,14 +156,12 @@ _Implementation Notes_ <%= headers status: 200 %> <%= json(:r4_patient_entry) %> -### Patient Combines Example +### Patient Combine Example -Cerner Millennium supports the ability to logically merge a patient record into another patient record when both records are describing the same patient. This is known -as a "patient combine". If necessary, this merging can later be undone by performing a "patient uncombine". When the requested patient record has been combined into another -record, an inactive Patient entry will be returned which has a link to the current Patient entry. Entries for combined patients will only be returned when retrieving -the entries directly by id. They will not be returned when searching with other parameters. - -The ability to perform patient combine or uncombine operations is not available through the Cerner Ignite platform. +Millennium supports the ability to logically merge a patient record into another patient record when both records are describing the same patient. This action is known +as a patient combine. If necessary, you can perform a patient uncombine to undo this merging. When the requested patient record is combined into another +record, an inactive patient entry is returned with a link to the current patient entry. Entries for combined patients are only returned when retrieving +the entries directly by ID. They are not returned when searching with other parameters. #### Request @@ -187,21 +172,12 @@ The ability to perform patient combine or uncombine operations is not available <%= headers status: 200 %> <%= json(:r4_combined_patient_entry) %> -### Errors - -The common [errors] and [OperationOutcomes] may be returned. - ## Create -Create a new Patient. +Create a new patient. POST /Patient -_Implementation Notes_ - -* Only the body fields mentioned below are supported. Unsupported fields will be ignored. -* Modifier fields should not be provided, and will cause the transaction to fail. - ### Authorization Types <%= authorization_types(provider: true, system: true) %> @@ -211,9 +187,9 @@ _Implementation Notes_ <%= headers head: {Authorization: '<OAuth2 Bearer Token>', Accept: 'application/fhir+json', 'Content-Type': 'application/fhir+json'} %> ### Body Fields +_Notes_ -Notes: - +* Only the body fields mentioned below are supported. Unsupported fields are ignored. * Birth Sex, Ethnicity, and Race may be recorded as extensions. <%= definition_table(:patient, :create, :r4) %> @@ -240,26 +216,24 @@ Etag: W/"0" Location: https://fhir-ehr-code.cerner.com/r4/ec2458f2-1e24-41c8-b71b-0e701af7583d/Patient/5786010 Last-Modified: Wed, 27 Mar 2019 17:23:14 GMT Vary: Origin -X-Request-Id: 11111111111111111111111111111111 +X-Request-Id: 6aa99cae-2ee5-4529-8cb2-1aa73f818207 +opc-request-id: /4B7BCF043117301F1B647EF553C7F250/A326F573558AD7570F63BFC19D88739A The `ETag` response header indicates the current `If-Match` version to use on subsequent updates. -### Errors - -The common [errors] and [OperationOutcomes] may be returned. - ## Patch -Patch an existing Patient. +Patch an existing patient. PATCH /Patient/:id -_Implementation Notes_ +_Notes_ -* This implementation follows the [JSON PATCH](https://tools.ietf.org/html/rfc6902) spec. +* This implementation follows RFC 6902 [JSON Patch](https://tools.ietf.org/html/rfc6902). * Only operations on the paths listed below are supported. -* When a path includes `{index}`, it refers to the index of the element in the list of elements. The indexes here are 0 based. +* When a path includes `{index}`, it refers to the index of the element in the list of elements. +* All indexes are 0 based. ### Authorization Types @@ -295,28 +269,25 @@ Date: Wed, 27 Mar 2019 17:23:14 GMT Etag: W/"1" Last-Modified: Wed, 27 Mar 2019 17:23:14 GMT Vary: Origin -X-Request-Id: 81c05ba01b2c19e5bf421449ff8e97eb +X-Request-Id: 02352eda-9574-4f23-9ab7-5915d5b09627 +opc-request-id: /4B7BCF043117301F1B647EF553C7F250/A326F573558AD7570F63BFC19D88739A The `ETag` response header indicates the current `If-Match` version to use on subsequent updates. -### Errors - -The common [errors] and [OperationOutcomes] may be returned. - ## Operation: $health-cards-issue -Issues Health Cards for an existing Patient. +Issues Health Cards for an existing patient. POST /Patient/:id/$health-cards-issue See [Health Cards] documentation for more details about this operation. -[`_count`]: http://hl7.org/fhir/R4/search.html#count +[`_count`]: https://hl7.org/fhir/R4/search.html#count [`date`]: https://hl7.org/fhir/R4/search.html#date -[`number`]: http://hl7.org/fhir/R4/search.html#number +[`number`]: https://hl7.org/fhir/R4/search.html#number [`string`]: https://hl7.org/fhir/R4/search.html#string -[`token`]: http://hl7.org/fhir/R4/search.html#token +[`token`]: https://hl7.org/fhir/R4/search.html#token [errors]: ../../../#client-errors [OperationOutcomes]: ../../../#operation-outcomes [Patient Birth Time]: https://hl7.org/fhir/R4/extension-patient-birthtime.html @@ -325,4 +296,4 @@ See [Health Cards] documentation for more details about this operation. [US Core Ethnicity]: https://hl7.org/fhir/us/core/StructureDefinition-us-core-ethnicity.html [US Core Birth Sex]: https://hl7.org/fhir/us/core/StructureDefinition-us-core-birthsex.html [Communication Preference]: https://fhir-ehr.cerner.com/r4/StructureDefinition/communication-preference?_format=json -[Health Cards]: /millennium/r4/foundation/other/health-cards/ +[Health Cards]: ../../foundation/other/health-cards diff --git a/lib/resources/r4/patient.yaml b/lib/resources/r4/patient.yaml index 6bec46376..cd42ef90d 100644 --- a/lib/resources/r4/patient.yaml +++ b/lib/resources/r4/patient.yaml @@ -11,7 +11,7 @@ fields: - name: type type: CodeableConcept description: The type for the identifier that can be used to determine which identifier to use for a specific purpose. - url: http://hl7.org/fhir/r4/datatypes-definitions.html#Identifier.type + url: https://hl7.org/fhir/r4/datatypes-definitions.html#Identifier.type action: terminology binding: description: The type used to determine which identifier to use for a specific purpose. @@ -200,7 +200,7 @@ fields:
  • The `family` field has a character limit of 100.
  • Each value for the `given`, `prefix`, and `suffix` fields has a character limit of 100.
  • - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.name + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.name - name: active required: 'No' @@ -246,7 +246,7 @@ fields:
  • When specifying an `extension`, the `system` field must be 'phone'.
  • When specifying an `extension`, the `extension.url` field must be 'http://hl7.org/fhir/StructureDefinition/contactpoint-extension'.
  • - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.telecom + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.telecom - name: gender required: 'No' @@ -257,7 +257,7 @@ fields: { "gender": "male" } - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.gender + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.gender - name: birthDate required: 'No' @@ -268,7 +268,7 @@ fields: { "birthDate": "1990-09-15" } - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.birthDate - name: address required: 'No' @@ -305,7 +305,7 @@ fields:
  • The `city`, `district`, `state`, and `country` fields have a character limit of 100.
  • The `postalCode` field has a character limit of 25.
  • - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.address + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.address - name: maritalStatus required: 'No' @@ -325,7 +325,7 @@ fields: "text": "Never Married" } } - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.maritalStatus + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.maritalStatus - name: communication required: 'No' @@ -351,7 +351,7 @@ fields: ] } note: Only one communication may be provided. - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.communication + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.communication - name: generalPractitioner required: 'No' @@ -367,7 +367,7 @@ fields: ] } note: Must only include references to Practitioners. - url: http://hl7.org/fhir/R4/patient-definitions.html#Patient.generalPractitioner + url: https://hl7.org/fhir/R4/patient-definitions.html#Patient.generalPractitioner - name: US Core Birth Sex Extension required: 'No' diff --git a/lib/resources/r4/patient_patch.yaml b/lib/resources/r4/patient_patch.yaml index c2e6fccfc..a08b3dd34 100644 --- a/lib/resources/r4/patient_patch.yaml +++ b/lib/resources/r4/patient_patch.yaml @@ -42,7 +42,7 @@ operations: description: Test the value of the `Identifier.id` of the identifier at the given {index} in the list of patient identifiers. example: | { - "path": "/identifier/1/id", + "path": "/identifier/0/id", "op": "test", "value": "CI-9926250-1" } @@ -85,7 +85,7 @@ operations: description: Replace the `Identifier.value` of the identifier at the given {index} in the list of patient identifiers. example: | { - "path": "/identifier/1/value", + "path": "/identifier/0/value", "op": "replace", "value": "<unique identifier>" } @@ -194,7 +194,7 @@ operations: description: Replace the `HumanName.suffix` of the name at the given {index} in the list of patient names. example: | { - "path": "/name/0/suffix", + "path": "/name/2/suffix", "op": "replace", "value": "Jr." } @@ -240,6 +240,7 @@ operations: "system": "phone", "value": "8168229121", "use": "home", + "rank": 1, "extension": [ { "valueString": "12345", @@ -336,7 +337,7 @@ operations:
  • Requires a test operation to be provided for the `ContactPoint.id` of the telecom whose `extension` value is intended to be replaced.
  • The `system` field of the telecom whose `extension` is intended to be replaced must be 'phone'.
  • If no `valueString` is provided, the phone extension will be unset.
  • -
  • The url must be 'http://hl7.org/fhir/StructureDefinition/contactpoint-extension'.
  • +
  • The `url` value must be `http://hl7.org/fhir/StructureDefinition/contactpoint-extension`.
  • - name: replace-telecom-period path: /telecom/{index}/period