PACER Server

This is the documentation for the server components of PACER. The server is responsible for managing a request from the PACER client, maintaining the query strategy and logic for interfacing to the local FHIR server, and responding with the collected ECR format. On installation; the server is pointed towards a singular endpoint for a FHIR interface. Using Clinical Quality Language(CQL) scripts and some custom handling, PACER retrieves related FHIR resources, and maps to the local ECR json format.

PACER consists of: a JobManagementSystem for handling requests, a ResultsManager for handling FHIR results, a CQL Execution Service for executing CQL, a CQLStorage service for maintaining CQL scripts, a “FHIR Filter” service for redacting senstive data, and a Translation Service for translating local codesets into standardized codes.

_images/PACER_Architecture1.png

Server Installation And Deploy Instructions

PACER is a dockerized-project. It is preferable to build each component as a docker image and deploy with the Docker-Compose tool. For more information refer to

Pacer consists of 2 seperate docker-compose files: docker-compose-db.yml and docker-compose-apps.yml. * docker-compose-db.yml contains the configuration information for the database, and should be built and ran first before the docker-compose-apps.yml script. * docker-compose-apps.yml consist of the application components that manage the PACER workflow.

To build and deploy the compose project follow these steps from the command line. 1. Review and confirm configration of the yaml files before installation. Refer to configruation below for more detailed instructions

  1. Build the database and application projects

docker-compose -f docker-compose-db.yml build
docker-compose -f docker-compose-apps.yml build

This will build deployable images for 6 different containers.

  • cql-storage

  • cql-execution

  • db

  • fhir-filter

  • job-management-system

  • results-manager

  1. Deploy dockerfiles in stages using compose.

Note

Again before deploying, it is recommended to refer to server configruation below to ensure connection to the FHIR server is correct

docker-compose -f docker-compose-db.yml up -d #wait for the database service to complete it's initdb.script
docker-compose -f docker-compose-apps.yml up -d

This will turn on all application components and enable networking for the PACER application to recieve requests.

Configuration

Before the server can be deployed, configuration within the docker-compose-apps.yml file must be reviewed The yml file describes confirugation for each of the above components. Confirugation is passed as envrionment variables into each container.

Configuration Requirements

  • results-manager/CQL_EXECUTION_DATA_SERVICE This is a defined baseurl to the hosted fhir server to be used. FHIR url paths should end in /fhir/ as the baseurl.

  • results-manager/CQL_EXECUTION_DATA_USER If the FHIR server uses Basic Authentication for authentication; provide a username here.

  • results-manager/CQL_EXECUTION_DATA_PASS If the FHIR server uses Basic Authentication for authentication; provide a password here.

  • results-manager/CQL_EXECUTION_EPIC_CLIENT_ID If the FHIR server uses Bearer Token Authentication generate a service token for PACER and apply the plaintext token string here.

  • results-manager/CQL_EXECUTION_TERMINOLOGY_SERVICE If a terminology service is provided via FHIR, provide the service url. FHIR url paths should end in /fhir/ as the baseurl.

  • results-manager/CQL_EXECUTION_TERMINOLOGY_USER If the terminology server uses Basic Authentication for authentication; provide a username here.

  • results-manager/CQL_EXECUTION_TERMINOLOGY_PASS If the terminology service uses Basic Authentication for authentication; provide a password here.

  • results-manager/CQL_EXECUTION_CODEMAPPER_SYSTEMS_MAP If the FHIR server uses local system definitions for common terminology systems (LOINC, Snomed, RxNorm), provide a key:value pair for the general url to the local system url provided. An example is provided in the comments for creating this key:value pair.

External FHIR Server

The external FHIR server is the system managed FHIR server. In addition to read capabilities in each resource, It is expected to support these specific search capabilities

FHIR Server Requirements

  • Patient
    • ?identifier Identifier search parameter is used to identify the patient.

  • Condition
    • ?patient Patient id related to the Condition

    • ?category Code search with supported condition category types

    • ?code:in Code search param used with :in modifier to provide large concept sets to be searched.

  • Encounter
    • ?patient Patient id related to the Encounter

  • Immmunization
    • ?patient Patient id related to the Immmunization

  • Medication
    • ?code:in Code search param used with :in modifier to provide large concept sets to be searched.

  • MedicationRequest
    • ?patient Patient id related to the MedicationRequest

    • code:in Code search param used with :in modifier to provide large concept sets to be searched.

  • Observation
    • ?patient Patient id related to the Observation

    • ?category Code search with supported observation category types

    • code:in Code search param used with :in modifier to provide large concept sets to be searched.

Warning

In cases where MedicationRequest search code is not available, a Medication Reference must be provided within the response json; in order to retrieved related medication data.

Job Management System

Job Management System: Overview

<ECR Manager Information here>

Job Management System: API Documentation

<ECR Manager API Review here>

Results Manager

Results Manager: Overview

<Results Manager Information here>

Results Manager: API Documentation

<Results Manager API Review here>

CQL Storage

CQL Storage: Overview

<CQL Storage Information here>

CQL Storage: API Documentation

<CQL Storage API Review here>

CQL Execution Service

CQL Execution Service: Overview

<CQL Execution Service here>

CQL Execution Service: API Documentation

<CQL Execution Service API Review here>

FHIR Filter

FHIR Filter: Overview

<FHIR Filter here>

FHIR Filter: API Documentation

<FHIR Filter API Review here>

Translate Concept Service

Translate Concept Service: Overview

<Translate Concept Service here>

Translate Concept Service: API Documentation

<Translate Concept Service API Review here>