This repository contains scripts and data for creating containers that INDICATE data providers can deploy in order to implement the evaluation of quality indicators as well as communication with the central hub for the INDICATE quality benchmarking dashboard.
This project creates the following container images:
-
The
databasecontainer contains a PostgreSQL database initialized with OMOP CDM tables and a collection of terminology. At runtime, the database is used to store the results of evaluating quality indicators. The stored results can be used for two purposes:- The data provider can inspect conformance to the INDICATE quality indicators on a per-patient level.
- The stored results are aggregated via views into a ward-level representation. This aggregated data is sent (without identifiable information) to the central benchmarking service for distribution to all data providers.
-
The
cql-on-omopcontainer contains an evaluation engine for CQL libraries. This engine applies CQL libraries which implement the INDICATE quality indicators to a database containing clinical data (which is distinct from the database in thedatabasecontainer). The results computed by the CQL libraries are stored in thedatabasecontainer for local inspection, aggregation and distribution as explained above. -
The
data-exchangecontainer contains a simple program that uploads aggregated quality indicator results to the INDICATE central hub.. To this end, the program fetches aggregated quality indicator results from thedatabasecontainer and uploads them, together with a unique id for the data provider, to the hub node of the INDICATE quality indicator dashboard architecture. -
The
dashboardcontainer contains the web-based quality indicator dashboard application that is the main purpose of the whole architecture. At the moment, thedashboardcontainer communicates with the INDICATE central hub to retrieve aggregated quality indicator results from all data providers and present the results in different web-based views. Later, thedashboardcontainer may be extended to also communicate with thedatabasecontainer in order to display patient-level quality indicator results that are specific to the data provider and must also not leave the systems of the data provider for privacy and data protection reasons.
-
PostgreSQL
-
INDICATE CQL Libraries
-
cql-on-omop
This dependency will be obtained automatically from the GitHub Container Registry at https://github.com/umg-minai/cql-on-omop/pkgs/container/cql-on-omop.
-
INDICATE Quality Indicator CQL Libraries
TODO
-
INDICATE Data Exchange Client
This dependency will be obtained automatically from the GitHub Container Registry at https://github.com/umg-minai/indicate-data-exchange-client/pkgs/container/indicate-data-exchange-client.
-
Dashboard
This dependency will be obtained automatically from the GitHub Container Registry at https://github.com/umg-minai/indicate-dashboard/pkgs/container/indicate-dashboard.
-
Add connection data for the OMOP database which provides the clinical data to
databases.envin the root directory of this repository. -
Enter the database password for that database into the file
source-database-passwordin the root directory of this repository. -
Choose an arbitrary password for the internal database in the
databasecontainer and enter that password into the filetarget-database-passwordin the root directory of this repository. One way to do this isecho INDICATE | mkpasswd -m descrypt -s > target-database-password
If default settings for communication with the INDICATE data exchange server are not appropriate, customize the settings as described below.
- TODO DATA_EXCHANGE_ENDPOINT
Some views of the dashboard container display quality indicator results for multiple data provider and highlight the results for the data provider running the dashboard.
This works because the data provider (and only the data provider) can recognize its "own" results based on the unique provider id.
This highlighting can be augmented by specifying a human-readable name that should be displayed alongside the highlighted results.
The chosen name, which is an arbitrary string, should be written into the file provider-id/name relative to the root directory of this repository.
Execute
docker-compose buildin the root directory of this repository.
To create and start the containers, run
docker-compose run -din the root directory of this repository. When started for the first
time, the data-exchange service will generate a data
provider-specific unique id which will be used for submitting quality
indicator results without identifying information. A backup of this
id should be made immediately since there is no way re-create or
restore it if lost.
To stop the containers, run
docker-compose stopin the root directory of this repository.
To start the containers again after stopping, run
docker-compose startin the root directory of this repository.