# title
PDex Server CapabilityStatement with US core 6.1 support

# publisher
HL7 International / Financial Management

# contact[].name
HL7 International / Financial Management

# contact[].name
HL7 International - Financial Management

# description
This Section describes the expected capabilities of the PDex with US Core 6.1 Support Server actor which is responsible for providing responses to the queries submitted by the PDex Requestors. The complete list of FHIR profiles, RESTful operations, and search parameters supported by PDex and US Core Servers are defined. Systems implementing this capability statement should meet the ONC 2015 Common Clinical Data Set (CCDS) access requirement for Patient Selection 170.315(g)(7) and Application Access - Data Category Request 170.315(g)(8) and the ONC [U.S. Core Data for Interoperability (USCDI) Version 3 July 2022](https://www.healthit.gov/isa/sites/isa/files/2022-07/USCDI-Version-3-July-2022-Final.pdf).  PDex Clients have the option of choosing from this list to access necessary data based on their local use cases and other contextual requirements.

# copyright
Used by permission of HL7 International, all rights reserved Creative Commons License

# rest[].documentation
The PDex Server with US Core 6.1. Support **SHALL**:

1. Support the US Core Patient resource profile AND at least one additional resource profile from the list of US Core Profiles AND and all Must Support US Core Profiles and resources it references.
     - Refer to the US Core 6.1 Capability Statement to determine [Must Support Reference between Profiles](https://www.hl7.org/fhir/us/core/STU6.1/CapabilityStatement-us-core-server.html#summary-of-must-support-references-between-profiles). The table summarizes the Must Support references to other US Core Profiles and FHIR resources for each US Core Profile:
1. Implement the RESTful behavior according to the FHIR specification.
1. Follow the requirements documented in the [US Core 6.1 General Requirements](https://hl7.org/fhir/us/core/STU6.1/general-requirements.html) and [US Core Must Support](https://hl7.org/fhir/us/core/STU6.1/must-support.html) pages
1. Return the following response classes:
   - (Status 400): invalid parameter
   - (Status 401/4xx): unauthorized request
   - (Status 403): insufficient scopes
   - (Status 404): unknown resource
1. Support JSON source formats for all US Core interactions.

The US Core Server **SHOULD**:

1. Follow the guidance documented in the [US Core 6.1 General Guidance](https://hl7.org/fhir/us/core/STU6.1/general-guidance.html) page
1. Support XML source formats for all US Core interactions.
1. Identify the US Core profiles supported as part of the FHIR `meta.profile` attribute for each instance.

# rest[].security.description
1. See the [US Core 6.1 General Security Considerations](https://hl7.org/fhir/us/core/STU6.1/security.html) section for requirements and recommendations.
1. A server **SHALL** reject any unauthorized requests by returning an `HTTP 401` "Unauthorized", `HTTP 403` "Forbidden", or `HTTP 404` "Not Found"

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].documentation
* Additional considerations for systems aligning with [HL7 Consolidated (C-CDA)](http://www.hl7.org/implement/standards/product_brief.cfm?product_id=492) Care Plan requirements:
    - US Core Goal **SHOULD** be present in CarePlan.goal
    - US Core Condition **SHOULD** be present in CarePlan.addresses
    - Assessment and Plan **MAY** be included as narrative text

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
In order to access care team member's names, identifiers, locations, and contact information, the CareTeam profile supports several types of care team participants. They are represented as references to other profiles and include the following four profiles which are marked as must support:
  1. US Core Practitioner Profile
  1. US Core PractitionerRole Profile
  1. US Core Patient Profile
  1. US Core RelatedPerson Profile

  * Although *both* US Core Practitioner Profile and US Core PractitionerRole are must support, the server system is not required to support both types of references (and `_include` search parameters), but **SHALL** support *at least* one of them.
  * The client application **SHALL** support all four profile references.
  * Because the *US Core PractitionerRole Profile* supplies the provider's location and contact information and a reference to the Practitioner, server systems **SHOULD** reference it instead of the *US Core Practitioner Profile*.
  * Servers that supports only *US Core Practitioner Profile* **SHALL** provide implementation specific guidance how to access a provider's location and contact information using only the Practitioner resource.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
* For Encounter Diagnosis use the *US Core Condition Encounter Diagnosis Profile*.
    * When `Condition.category` is "encounter-diagnosis" the encounter, **SHOULD** be referenced in `Condition.encounter`.
* For Problems and Health Concerns use the *US Core Condition Problems and Health Concerns Profile*.
    * When `Condition.category` is a "problems-list-item", the `Condition.clinicalStatus **SHOULD NOT** be unknown.
* There is no single element in Condition that represents the date of diagnosis. It may be the assertedDate Extension, `Condition.onsetDateTime`, or `Condition.recordedDate`.
    * Although all three are marked as must support, the server is not required to support all.
	* A server **SHALL** support `Condition.recordedDate`.
    * A server **SHALL** support at least one of the assertedDate Extension and `Condition.onsetDateTime`. A server may support both, which means they support all 3 locations.
    * The client application **SHALL** support all three elements.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].documentation
* Implantable medical devices that have UDI information **SHALL** represent the UDI code in `Device.udiCarrier.carrierHRF`.
   - All of the five UDI-PI elements that are present in the UDI code **SHALL** be represented in the corresponding US Core Implantable Device Profile element.
   
   UDI may not be present in all scenarios such as historical implantable devices, patient reported implant information, payer reported devices, or improperly documented implants. If UDI is not present and the manufacturer and/or model number information is available, they **SHOULD** be included to support historical reports of implantable medical devices as follows:

   manufacturer -> `Device.manufacturer`  
   model -> `Device.model`  

* Servers **SHOULD** support query by Device.type to allow clients to request the patient's devices by a specific type. Note: The Device.type is too granular to differentiate implantable vs. non-implantable devices.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].documentation
* The `DocumentReference.type` binding **SHALL** support at a minimum the [US Core 6.1 5 Common Clinical Notes](https://hl7.org/fhir/us/core/STU6.1/ValueSet-us-core-clinical-note-type.html) and may extend to the full US Core DocumentReference Type Value Set
* The DocumentReference resources can represent the referenced content using either an address where the document can be retrieved using `DocumentReference.attachment.url` or the content as inline base64 encoded data using `DocumentReference.attachment.data`.
    *  Although both are marked as must support, the server system is not required to support an address, and inline base64 encoded data, but **SHALL** support at least one of these elements.
    *  The client application **SHALL** support both elements.
    *  The `content.url` may refer to a FHIR Binary Resource (i.e. [base]/Binary/[id]), FHIR Document Bundle (i.e [base]/Bundle/[id] or another endpoint.
        * If the endpoint is outside the FHIR base URL, it **SHOULD NOT** require additional authorization to access.
* Every DocumentReference must have a responsible Organization. The organization responsible for the DocumentReference **SHALL** be present either in `DocumentReference.custodian` or accessible in the Provenance resource targeting the DocumentReference using `Provenance.agent.who` or `Provenance.agent.onBehalfOf`.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].operation[].documentation
A server **SHALL** be capable of responding to a $docref operation and  capable of returning at least a reference to a generated CCD document, if available. **MAY** provide references to other 'on-demand' and 'stable' documents (or 'delayed/deferred assembly') that meet the query parameters as well. If a context date range is supplied the server ** SHOULD**  provide references to any document that falls within the date range.  If no date range is supplied, then the server **SHALL** provide references to last or current document(s).  **SHOULD** document what resources, if any, are returned as included resources

`GET [base]/DocumentReference/$docref?patient=[id]`

# rest[].resource[].documentation
* The Encounter resource can represent a reason using either a code with `Encounter.reasonCode`, or a reference with `Encounter.reasonReference` to  Condition or other resource.
   * Although both are marked as must support, the server systems are not required to support both a code and a reference, but they **SHALL** support *at least one* of these elements.
   * The client application **SHALL** support both elements.
   * if `Encounter.reasonReference` references an Observation, it **SHOULD** conform to a US Core Observation if applicable. (for example, a laboratory result should conform to the US Core Laboratory Result Observation Profile)

* The location address can be represented by either by the Location referenced by `Encounter.location.location` or indirectly through the Organization referenced by `Encounter.serviceProvider`.
   * Although both are marked as must support, the server systems are not required to support both `Encounter.location.location` and `Encounter.serviceProvider`, but they **SHALL** support *at least one* of these elements.
   * The client application **SHALL** support both elements.
   * if using `Encounter.location.location` it **SHOULD** conform to US Core Location.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
The Media Resource is a Must Support referenced resource when using the US Core PractitionerRole Profile.

# rest[].resource[].documentation
* Although both `Goal.startDate` and `Goal.target.dueDate` are marked as must support, the server system is not required to support both, but **SHALL** support at least one of these elements. The client application **SHALL** support both elements.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *day*.

A server **SHALL** support a value a value precise to the *day*.

# rest[].resource[].interaction[].documentation
Allows discovery of existing groups. SHOULD be limited to groups a requestor is permitted to access.

# rest[].resource[].interaction[].documentation
Allows retrieval of a specific Group Resource.

# rest[].resource[].interaction[].documentation
Allows retrieval of a historical version of a Group Resource.

# rest[].resource[].interaction[].documentation
Allows review of changes to a Group Resource over time.

# rest[].resource[].interaction[].documentation
Retrieve the change history fora Group Resource.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true. multipleOr: The parameter may only have one value (no comma separators).

# rest[].resource[].operation[].documentation
Client will submit multi-member-match-request bundle. Server will respond with a multi-member-match-response and instantiate a Group resource conforming to the PDexMemberMatchGroup that contains a set of matched members that the Server identified.

# rest[].resource[].operation[].documentation
Each DaVinci use case as part of its implementation guide can define the exportType parameter and the behavior expected.

# rest[].resource[].operation[].documentation
Download Resource of Davinci Export Task

# rest[].resource[].documentation
* Based upon the ONC U.S. Core Data for Interoperability (USCDI) requirements, CVX vaccine codes are required and the NDC vaccine codes **SHOULD** be supported as translations to them.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].documentation
* The US Core Location  and PractitionerRole Profiles are not explicitly referenced in any US Core Profile. However they **SHOULD** be used as the default profile if referenced by another US Core profile.

# rest[].resource[].documentation
* The  MedicationRequest resource can represent a medication, using an external reference to a Medication resource. If an external Medication Resource is used in a MedicationRequest, then the READ  **SHALL**  be supported.

# rest[].resource[].documentation
* The MedicationDispense resources can represent a medication using either a code or refer to the Medication resource. When referencing Medication, the resource may be [contained](http://hl7.org/fhir/R4/references.html#contained) or an external resource. The server application **MAY** choose any one way or more than one method, but if an external reference to Medication is used, the server **SHALL** support the _include` parameter for searching this element. The client application must support all methods.

 For example, A server **SHALL** be capable of returning dispense records for all medications for a patient using one of or both:

 `GET /MedicationDispense?patient=[id]`

 `GET /MedicationDispense?patient=[id]&_include=MedicationDispense:medication`

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].documentation
* The MedicationRequest resources can represent a medication using either a code or refer to the Medication resource. When referencing Medication, the resource may be [contained](http://hl7.org/fhir/R4/references.html#contained) or an external resource. The server application **MAY** choose any one way or more than one method, but if an external reference to Medication is used, the server **SHALL** support the _include` parameter for searching this element. The client application must support all methods.

 For example, A server **SHALL** be capable of returning all medications for a patient using one of or both:

 `GET /MedicationRequest?patient=[id]`

 `GET /MedicationRequest?patient=[id]&_include=MedicationRequest:medication`

* The MedicationRequest resource can represent that information is from a secondary source using either a boolean flag or reference in `MedicationRequest.reportedBoolean`, or a reference using `MedicationRequest.reportedReference` to Practitioner or other resource.
   *   Although both are marked as must support, the server systems are not required to support both a boolean and a reference, but **SHALL** choose to support at least one of these elements.
   *  The client application **SHALL** support both elements.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].documentation
* Systems **SHOULD** support `Observation.effectivePeriod` to accurately represent tests that are collected over a period of time (for example, a 24-Hour Urine Collection test).
* An Observation without a value, **SHALL** include a reason why the data is absent unless there are component observations, or references to other Observations that are grouped within it
    * Systems that never provide an observation without a value are not required to support `Observation.dataAbsentReason`
*  An `Observation.component` without a value, **SHALL** include a reason why the data is absent.
    * Systems that never provide an component observation without a component value are not required to support `Observation.component.dataAbsentReason`.
* Systems **SHOULD** support `Observation.effectivePeriod` to accurately represent procedure tests that are collected over a period of time.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].documentation
* Systems **SHALL** support National Provider Identifier (NPI) for organizations and **SHOULD** support Clinical Laboratory Improvement Amendments (CLIA) identifiers for `Organization.Identifier`.

# rest[].resource[].documentation
* For ONC's USCDI requirements, each Patient must support the following additional elements. These elements are included in the formal definition of the profile. The patient examples include all of these elements.

  1. contact detail (e.g. a telephone number or an email address)
  1. a communication language
  1. a race
  1. an ethnicity
  1. a birth sex*
  1. previous name
     - Previous name is represented by providing an end date in the `Patient.name.period` element for a previous name.
  1. suffix
     - Suffix is represented using the `Patient.name.suffix` element.
* The Patient's Social Security Numbers **SHOULD NOT** be used as a patient identifier in `Patient.identifier.value`.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *day*.

A server **SHALL** support a value a value precise to the *day*.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *day*.

A server **SHALL** support a value a value precise to the *day*.

# rest[].resource[].searchParam[].documentation
A server **SHALL** support a value precise to the *day*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
Servers that support only US Core Practitioner Profile **SHALL** provide implementation specific guidance how to access a provider’s location and contact information using only the Practitioner resource.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
* The US Core Location  and PractitionerRole Profiles are not explicitly referenced in any US Core Profile. However they **SHOULD** be used as the default profile if referenced by another US Core profile.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].documentation
* Procedure codes can be taken from SNOMED-CT, CPT, HCPCS II, ICD-10-PCS, CDT. LOINC.
  * Only LOINC concepts that reflect actual procedures **SHOULD** be used
* A procedure including an implantable device **SHOULD** use `Procedure.focalDevice` with a reference to the *US Core Implantable Device Profile*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].documentation
* The US Core Provenance resource **SHALL** be supported for these US Core resources:
    * AllergyIntolerance
    * CarePlan
    * CareTeam
    * Condition
    * Coverage
    * Device
    * DiagnosticReport
    * DocumentReference
    * Encounter
    * Goal
    * Immunization
    * MedicationDispense
    * MedicationRequest
    * Observation
    * Patient
    * Procedure
    * QuestionnaireResponse
    * RelatedPerson
    * ServiceRequest
* If a system receives a provider in `Provenance.agent.who` as free text they must capture who sent them the information as the organization. On request they **SHALL** provide this organization as the source and **MAY** include the free text provider.
* Systems that need to know the activity has occurred **SHOULD** populate the activity.

# rest[].resource[].documentation
US Core defines two ways to represent the questions and responses to screening and assessment instruments:

- Observation: US Core Observation Screening Assessment Profile
- Questionnaire/QuestionnaireResponse: SDC Base Questionnaire/US Core QuestionnaireResponse Profile

US Core Servers **SHALL** support US Core Observation Screening Assessment Profile and **SHOULD** support the  SDC Base Questionnaire Profile/US Core QuestionnaireResponse Profile

# rest[].resource[].documentation
US Core defines two ways to represent the questions and responses to screening and assessment instruments:

- Observation: US Core Observation Screening Assessment Profile
- Questionnaire/QuestionnaireResponse: SDC Base Questionnaire/US Core QuestionnaireResponse Profile

US Core Servers **SHALL** support US Core Observation Screening Assessment Profile and **SHOULD** support the  SDC Base Questionnaire Profile/US Core QuestionnaireResponse Profile

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a id value and **MAY** provide both the Type and id values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
The client **SHALL** provide at least a code value and **MAY** provide both the system and code values.

The server **SHALL** support both.

# rest[].resource[].searchParam[].documentation
A client **SHALL** provide a value precise to the *second + time offset*.

A server **SHALL** support a value precise to the *second + time offset*.

# rest[].resource[].operation[].documentation
If a server supports DocumentReference for creating, using, and sharing clinical notes, it **SHOULD** also support the `context` and `contextdirection` parameters of the $expand operation to enable clients to determine the supported note and report types, as well as the supported read/write formats for notes on the server.