Profiles & Operations > Operation: Read Patient List

DRAFT CONTENT

Interaction: Read Patient List

The Read Patient List retrieves a Group resource referencing all the patients associated with a specific EMR instance or organizational unit. This list is then used by Pub/Sub as a filtering criteria, ensuring that only notifications related to the patients in the list are sent to the corresponding subscriber (e.g., EMR system, HIC, or vendor).

It supports dynamic retrieval of patient lists from the pub/sub repository to be used as notification filtering criteria to determine whether notifications are being sent appropriately.

Specification

This specification is based onthe HL7 FHIR Group resource.

Usage

Read Patient List Request

The Get Patient List shall retrieve the FHIR Group resource from the repository with references to patients for the given EMR instance.

`GET https://[base_url]/Group?identifier=ci-12345-patient-list&_include=Group:member`, 

where [identifier] represents a reference to EMR instance whose patient list is requested.

Read Patient List Response

The server returns a 200 OK HTTP status code along with FHIR Group resource in the HTTP body.

Interaction Sequence Diagram

GetPatientLisUC

Example of Get Patient List Interaction

Example GET Request

HTTP Method:

GET

Headers:

Content-Type: application/fhir+json

Address:

[base_url]/Group?identifier=ci-12345-patient-list&_include=Group:member

Example GET Response Body

HTTP Body contains a bundle with FHIR Group resource referencing Patient resources conformant with CA Core + specification.

{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "resource": {
        "resourceType": "Group",
        "id": "123",
        "identifier": [
          {
            "system": "http://emr.orion.ca/fhir/identifiers",
            "value": "ci-12345-patient-list"
          }
        ], 
        "member": [
          { "entity": { "reference": "Patient/1" }},
          { "entity": { "reference": "Patient/2" }}
        ]
      }
    },
    {
      "fullUrl": "urn:uuid:patient-1",
      "resource": {
        "resourceType": "Patient",
        "id": "patient-1",
        "name": [
          {
            "family": "Smith",
            "given": ["John"]
          }
        ],
        "gender": "male",
        "birthDate": "1980-01-01"
        "address" : [
          {
             "postal code" : "M8Y 3T6"
          }
      }
    },
    {
      "fullUrl": "urn:uuid:patient-2",
      "resource": {
        "resourceType": "Patient",
        "id": "patient-2",
        "name": [
          {
            "family": "Doe",
            "given": ["Jane"]
          }
        ],
        "gender": "female",
        "birthDate": "1990-06-15"
        "address" : [
          {
             "postal code" : "M8Y 3T6"
          }
      }
    
  ]
}


Expected Behaviour

Case Scenario Description HTTP Status Code Response Payload
1 An existing Group is retrieved from the repository HTTP 200 Retrieved
2 The requested Group based on the provided logical id does not exist HTTP 404 Resource not found. Returns an OperationOutcome resource indicating an issue.
3 API validates the request but cannot return a valid response due to internal issues. HTTP 500 Internal Server Error. Returns an OperationOutcome resource indicating an issue.