Profile: PAS (Request)

PAS Overview

The Provincial Attachment System (PAS) enables healthcare providers to manage a patient’s membership in their panel or roster at a specific healthcare facility. Through seamless messaging interactions, providers can ensure that their Electronic Medical Records (EMR) systems are aligned with PAS, eliminating the need for manual updates and ensuring panel data is consistent across both systems. PAS allows providers to retrieve and manage the Most Responsible Provider (MRP) status, helping improve administrative efficiency and care coordination.

Using FHIR messaging protocols encapsulated in Bundles, requests and responses are exchanged between the systems, enabling smooth communication. This page provides documentation on the structure of PAS (Request) and PAS (Response) messages, and the resource profiles that form the foundation of these interactions.

Please refer to the LRA Configuration page for information on authentication, authorization, environment, and endpoint details.

Request

A PAS Request is transmitted as a Bundle that contains a set of PAS FHIR profiles. The request message is designed to be flexible, enabling providers to perform actions such as adding or removing patients from their roster, or querying their current panel.

A PAS Request consists of a Bundle with the following key resources:

  • PAS Request Bundle: A PAS Request Bundle is a FHIR message containing resources like MessageHeader, Group, Practitioner, Organization, and one or more Patient resources to manage patient panel membership actions such as adding, removing, or querying patients.
  • PAS Request MessageHeader: Identifies the PAS request and the core action.
  • PAS Request Group: Defines the relationship between the provider (Group.managingEntity) and the patient (Group.member.entity) associated with the panel.
  • PAS Practitioner: Represents the provider managing the patient panel.
  • PAS Organization: Identifies the facility to which the provider’s panel applies.
  • PAS Patient: The individual being added, removed, or queried within the provider's panel.

API Address: Post {base url}/$process-message

Operation: The $process-message operation is an operation defined by the base FHIR specification to support the processing of a message Bundle. The Bundle typically includes a MessageHeader resource, which contains details about the action (e.g., adding or removing a patient from a provider's roster), along with other relevant resources like Group, Patient, Practitioner, and Organization. The server processes the Bundle based on the request and returns a response indicating the outcome. The details around operation definition can be found here.

Request Body: The operation is invoked via a POST request to the endpoint, with the Bundle serving as the request body. MessageHeader.eventCoding will define how to process message. Codes: "add-patient-to-panel", "remove-patient-from-panel", "get-patient-mrp-status"

Example Usage Scenarios

The following are example usage scenarios for this profile:

  • Add Patient to Provider Panel: The provider adds a patient to their panel directly in their EMR system.

    Example - Add Patient to Provider Panel

  • Remove Patient from Provider Panel:The provider removes a patient from their panel directly in their EMR system. Same example as add patient (except eventCoding):

    "eventCoding":{ "system":"[https://api.healthcarebc.ca/fhir/CodeSystem/message-event-code]", "code":"remove-patient-from-panel" }

  • Querying MRP Status: The request retrieves the MRP status of a patient in relation to the provider. Same example as add patient (except eventCoding):

    "eventCoding":{ "system":"[https://api.healthcarebc.ca/fhir/CodeSystem/message-event-code]", "code":"get-patient-mrp-status" }

Validation Rules

To ensure the integrity of the PAS interactions and the alignment between PAS, PLR, and the Client Registry, the following validation rules apply to providers and patients involved in the PAS Response Bundle:

Provider Validation

  • The provider (Practitioner) SHALL exist in both the PLR and PAS with a valid MSP ID.
  • The provider’s first name (Practitioner.name.given) and last name (Practitioner.name.family) SHALL match between the PLR and PAS.
  • The clinic (Organization) SHALL exist in both PLR and PAS with a valid Facility ID.
  • The clinic's organization name (Organization.name) and postal address (Organization.address.postal) SHALL match between the PLR and PAS. If multiple addresses are provided, validation succeeds if any of the provided addresses' postal code matches. This also applies to clinic business addresses.
  • The relationship between the provider and the clinic (PractitionerRole) SHALL exist in PAS.

Patient Validation

  • The patient (Patient) SHALL exist in the Client Registry.
  • The patient's first name (Patient.name.given[0]), last name (Patient.name.family), date of birth (Patient.birthDate), and PHN-identifier (Patient.identifier) SHALL match the corresponding records in the Client Registry.
    • When validating the patient's given name, only the first entry in the 'given' field is processed i.e. Patient.name.given[0]. Therefore, all given names should be included in the first entry, separated by spaces.
    • The date of birth must follow the Client Registry's format, i.e., YYYY-MM-DD.

Profile Content

  • PAS Request Bundle

    Simplifier link for the profile: Bundle (PAS-LRA) - request

    A PAS Request Bundle is a FHIR message containing resources like MessageHeader, Group, Practitioner, Organization, and one or more Patient resources to manage patient panel membership actions such as adding, removing, or querying patients.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    identifierΣ0..1Identifier
    typeS Σ1..1codeBindingFixed Value
    timestampΣ0..1instant
    totalΣ I0..1unsignedInt
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    relationΣ1..1string
    urlΣ1..1uri
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ I0..1LRAPASMessageHeaderRequest
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ I0..1LRAPASGroup
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ I0..1LRAPASPractitioner
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ I0..1LRAPASPatient
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    fullUrlΣ0..1uri
    resourceΣ I0..1LRAPASOrganization
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    modeΣ0..1codeBinding
    scoreΣ0..1decimal
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    methodΣ1..1codeBinding
    urlΣ1..1uri
    ifNoneMatchΣ0..1string
    ifModifiedSinceΣ0..1instant
    ifMatchΣ0..1string
    ifNoneExistΣ0..1string
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    statusΣ1..1string
    locationΣ0..1uri
    etagΣ0..1string
    lastModifiedΣ0..1instant
    outcomeΣ0..1Resource
    signatureΣ0..1Signature
  • PAS Request MessageHeader

    Simplifier link for the profile: Request MessageHeader (PAS-LRA)

    Identifies the PAS request and links to the primary resource being acted upon. It binds to a value set with three event codes: "Add Patient to Provider Panel," where a provider adds a patient to their panel; "Remove Patient from Provider Panel," where a provider removes a patient from their panel; and "Querying MRP Status," which retrieves the Most Responsible Provider (MRP) status for a patient.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionI0..*Extension
    modifierExtension?! I0..*Extension
    eventCodingCoding
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    nameΣ0..1string
    targetΣ I0..1Reference(Device)
    endpointΣ1..1url
    receiverΣ I0..1Reference(Practitioner | PractitionerRole | Organization)
    senderΣ I0..1Reference(Practitioner | PractitionerRole | Organization)
    entererΣ I0..1Reference(Practitioner | PractitionerRole)
    authorΣ I0..1Reference(Practitioner | PractitionerRole)
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    nameΣ0..1string
    softwareΣ0..1string
    versionΣ0..1string
    contactΣ I0..1ContactPoint
    endpointΣ1..1url
    responsibleΣ I0..1Reference(Practitioner | PractitionerRole | Organization)
    reasonΣ0..1CodeableConcept
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    identifierΣ1..1id
    codeΣ1..1codeBinding
    detailsΣ I0..1Reference(OperationOutcome)
    focusS Σ I0..*Reference(LRAPASGroup)
    definitionΣ0..1canonical(MessageDefinition)
  • PAS Request Group

    Simplifier link for the profile: Group (PAS-LRA)

    The Group is used to add, remove and query a Patient within a provider's roster or panel of patients at a given facility.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionI0..*Extension
    modifierExtension?! I0..*Extension
    identifierΣ0..*Identifier
    activeΣ0..1boolean
    typeS Σ1..1codeBindingPattern
    actualΣ I1..1boolean
    codeΣ0..1CodeableConcept
    nameΣ0..1string
    quantityΣ0..1unsignedInt
    managingEntityS Σ I1..1Reference(LRAPASPractitioner)
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    code1..1CodeableConcept
    valueCodeableConceptCodeableConcept
    valueBooleanboolean
    valueQuantityQuantity
    valueRangeRange
    valueReferenceReference()
    exclude1..1boolean
    periodI0..1Period
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    entityS I1..1Reference(LRAPASPatient)
    periodI0..1Period
    inactive0..1boolean
  • PAS Patient

    Simplifier link for the profile: Patient (PAS-LRA)

    The Patient is used to identify the individual to add, remove or query within a provider's roster or panel of patients at a given facility.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionI0..*Extension
    modifierExtension?! I0..*Extension
    id0..1string
    extensionI0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uri
    valueS Σ1..1string
    periodΣ I0..1Period
    assignerΣ I0..1Reference(Organization)
    PHNS Σ1..*IdentifierPattern
    activeΣ ?!0..1boolean
    id0..1string
    extensionI0..*Extension
    useΣ ?!0..1codeBinding
    textΣ0..1string
    familyS Σ1..1string
    givenS Σ1..*string
    prefixΣ0..*string
    suffixΣ0..*string
    periodΣ I0..1Period
    telecomΣ I0..*ContactPoint
    genderΣ0..1codeBinding
    birthDateS Σ I1..1date
    deceasedBooleanboolean
    deceasedDateTimedateTime
    addressΣ0..*Address
    maritalStatus0..1CodeableConceptBinding
    multipleBirthBooleanboolean
    multipleBirthIntegerinteger
    photoI0..*Attachment
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    relationship0..*CodeableConceptBinding
    name0..1HumanName
    telecomI0..*ContactPoint
    address0..1Address
    gender0..1codeBinding
    organizationI0..1Reference(Organization)
    periodI0..1Period
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    language1..1CodeableConceptBinding
    preferred0..1boolean
    generalPractitionerI0..*Reference(Organization | Practitioner | PractitionerRole)
    managingOrganizationΣ I0..1Reference(Organization)
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    otherΣ I1..1Reference(Patient | RelatedPerson)
    typeΣ1..1codeBinding
  • PAS Practitioner

    Simplifier link for the profile: Practitioner (PAS-LRA)

    The Practitioner is used to identify the provider who wished to add, remove or query a patients to their roster or panel at a given facility.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionI0..*Extension
    modifierExtension?! I0..*Extension
    id0..1string
    extensionI0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uri
    valueS Σ1..1string
    periodΣ I0..1Period
    assignerΣ I0..1Reference(Organization)
    Prac-IDS Σ1..*IdentifierPattern
    activeΣ0..1boolean
    id0..1string
    extensionI0..*Extension
    useΣ ?!0..1codeBinding
    textΣ0..1string
    familyS Σ1..1string
    givenΣ0..*string
    prefixΣ0..*string
    suffixΣ0..*string
    periodΣ I0..1Period
    telecomΣ I0..*ContactPoint
    addressΣ0..*Address
    genderΣ0..1codeBinding
    birthDateΣ0..1date
    photoI0..*Attachment
    id0..1string
    extensionI0..*Extension
    modifierExtensionΣ ?! I0..*Extension
    identifier0..*Identifier
    code1..1CodeableConcept
    periodI0..1Period
    issuerI0..1Reference(Organization)
    communication0..*CodeableConceptBinding
  • PAS PractitionerRole

    Simplifier link for the profile: PractitionerRole (PAS - LRA)

    Represents the role of the practitioner within the facility, linking the practitioner to their responsibilities within the organization and patient panel.

    idΣ0..1string
    metaΣ0..1Meta
    implicitRulesΣ ?!0..1uri
    language0..1codeBinding
    text0..1Narrative
    contained0..*Resource
    extensionI0..*Extension
    modifierExtension?! I0..*Extension
    identifierΣ0..*Identifier
    activeΣ0..1boolean
    periodΣ I0..1Period
    id0..1string
    extensionI0..*Extension
    referenceΣ I0..1string
    typeS Σ1..1uriBindingFixed Value
    id0..1string
    extensionI0..*Extension
    useΣ ?!0..1codeBinding
    typeΣ0..1CodeableConceptBinding
    systemS Σ1..1uriFixed Value
    valueS Σ1..1string
    periodΣ I0..1Period
    assignerΣ I0..1Reference(Organization)
    displayΣ0..1string
    id0..1string
    extensionI0..*Extension
    referenceΣ I0..1string
    typeS Σ1..1uriBindingFixed Value