Arizona State University (ASU) clinical decision support (CDS) resources and reference application for qualifying and prioritizing patient access to weight management medication (WMM).
Using Docker, Podmain, or other container runtime, run HAPI FHIR (or FHIR R4 resource server of your choice with "CQL with FHIR" support enabled):
docker run -d --name hapi-r4 -p 8080:8080 -e hapi.fhir.fhir_version=R4 -e spring.main.allow-bean-definition-overriding=true -e hapi.fhir.expunge_enabled=true -e hapi.fhir.allow_multiple_delete=true -e hapi.fhir.bulk_export_enabled=true -e hapi.fhir.bulk_import_enabled=true -e hapi.fhir.enable_index_missing_fields=true -e hapi.fhir.cdshooks.enabled=true -e hapi.fhir.cr.enabled=true hapiproject/hapi:v8.2.0-2Unless you're starting with your own data, you should load our synthetic sample data using the pre-packaged FHIR controller: (project files are here https://github.com/lee-informatics/asu-cds-data)
docker run -it --rm -p 4204:80 --pull always p3000/asu-cds-data:latestUnless you're running the WMM project (this repository) from source, you can run the latest pre-built image with:
docker run -it --rm -p 4200:80 -e WMM_FHIR_BASE_URL=http://localhost:8080/fhir -e WMM_LIBRARY_ID=WeightManagement --pull always p3000/asu-cds-wmm:latest- Open the FHIR Controller at http://localhost:4204 and use the UI to load the FHIR bundles. It may take a few minutes for the patient data files to be fully ingested. (You can also use it to reset the server data at any time.)
- Open the WMM application at http://localhost:4200 and click the "Logic" tab.
- Click "Load CQL Example Into Editor" and make any changes as you see fit.
- Click "Save to Server" to encode and upload it to the FHIR server.
- Click the "Guidelines" tab and search for any of the synthetic patients by name, e.g. "Dakota"
- Click "Compute Recommendations" and see the CQL evalutation results applied dynamically to the guidelines tables.
# URL of your local FHIR server. For the above:
WMM_FHIR_BASE_URL=http://localhost:8080/fhir
# Name of the CQL libary used within the application. If unsure, use:
WMM_LIBRARY_ID=WeightManagementnpm i
npm run startExample command to build your own multip-platform image:
docker buildx build --platform linux/arm64,linux/amd64 -t p3000/asu-cds-wmm:latest .- Docker installed
The easiest way to get started is using Docker Compose, which will set up all required services automatically.
If you've made any changes to the codebase, build the Docker image first:
docker buildx build --platform linux/arm64,linux/amd64 -t p3000/asu-cds-wmm:latest .Run the following command to start all services:
docker-compose upUse this docker-compose.yml file:
services:
wmm-web:
image: p3000/asu-cds-wmm:latest
ports:
- "4200:80"
environment:
- WMM_FHIR_BASE_URL=http://localhost:8080/fhir
- WMM_LIBRARY_ID=WeightManagement
wmm-hapi-fhir:
image: hapiproject/hapi:v8.2.0-1
ports:
- "8080:8080"
environment:
- hapi.fhir.fhir_version=R4
- spring.main.allow-bean-definition-overriding=true
- hapi.fhir.expunge_enabled=true
- hapi.fhir.allow_multiple_delete=true
- hapi.fhir.bulk_export_enabled=true
- hapi.fhir.bulk_import_enabled=true
- hapi.fhir.enable_index_missing_fields=true
- hapi.fhir.cdshooks.enabled=true
- hapi.fhir.cr.enabled=true
stack-controller:
image: p3000/asu-cds-data:latest
ports:
- "4204:80"Once all services are running, follow these steps to use the WMM:
- Navigate to the Stack Controller at localhost:4204
- You'll see patients ready to upload to the HAPI FHIR server
- The FHIR URL will be set to
http://localhost:8080/fhir - Click the Load Selected File Sequence button
- Go to the WMM page at localhost:4200
- Navigate to the Logic tab
- Click Load CQL Example into editor
- Click Save to server
- In the patient search box, search for one of these available patients:
- Aaron (primary example)
- Dakota
- Dori
- Click the Select button for your chosen patient
- Click Compute Recommendations
- Note: This process may take several seconds to a minute to complete
- Review the results in the highlighted table
To add your own patient data, update the stack-controller by modifying the repository at: https://github.com/lee-informatics/asu-cds-data/
- WMM Web Interface: localhost:4200
- HAPI FHIR Server: localhost:8080
- Stack Controller: localhost:4204
Activities: Deep dive into Clinical Stakeholders Clinical Practice Guideline [id="2"]. Hands-on exploration of the HAPI FHIR server. Initial CQL syntax and data type learning – focus on retrieving basic patient data elements. Goal: Establish core competency with FHIR and CQL.
- Accounts set up.
- Commit, push, merge/rebase to git.
- VS Code run CQL example
- Create patient
Activities: Mapping key terms to standard vocabularies (SNOMED CT, RxNorm). Designing 2-3 initial CQL queries targeting core clinical scenarios (e.g., identifying patients meeting basic GLP-1 eligibility criteria). Goal: Produce functional CQL queries based on the guideline.
Activities: 1-hour meeting with Clinical Stakeholders to present initial queries and receive high-level feedback. Goal: Validate initial query design with Clinical Stakeholder input.
Activities: Building a minimal viable product (MVP) – likely a simple Tableau dashboard – using the existing CQL queries. Goal: Demonstrate CQL functionality in a practical setting.
Activities: Integrating the prototype application with the HAPI FHIR server and conducting thorough testing. Goal: Ensure the prototype’s functionality aligns with the CQL queries.
Activities: Refining the prototype based on testing, preparing a short presentation summarizing the CQL queries and prototype. Goal: Produce a polished presentation for final demonstration.
Activities: Delivering a 30-minute presentation to Clinical Stakeholders showcasing the prototype and the developed CQL queries. Final documentation and handover of the project. Goal: Formal demonstration of the internship’s work and project handover.
- Preston Lee
- Daniel Mendoza
- Anthony Yanan
- Unnati Agarwal
- Naga Sai
- Siddarth Usulkar
- Ike Obi
- Toshika Talele
Apache 2.0 or as otherwise noted.