The cds-hook-fhir-service provides a CDS Hooks implementation for clinical decision support using multi-version FHIR support (DSTU2, DSTU3, R4, R4B, R5). The service integrates with various EHR vendors including Epic, Cerner, Oracle Health, and others to provide real test patient data, process clinical information, and deliver actionable insights to healthcare providers.
- ✅ Multi-Version FHIR Support - DSTU2, DSTU3, R4, R4B, R5 with dynamic version detection
- ✅ CDS Hooks Implementation - Full support for patient-view, order-select, order-sign, and custom hooks
- ✅ Epic Sandbox Integration - Real test patient data from Epic's FHIR sandbox
- ✅ Clinical Insights Engine - Automated analysis of conditions, vital signs, medications, and allergies
- ✅ Smoking Cessation Support - Lung cancer screening triggers and quality measures
- ✅ PostgreSQL Backend - Production-ready database with Flyway migrations
- ✅ Functional Programming - Leverages Java 21+ features including Virtual Threads
- ✅ Kubernetes Ready - Skaffold/Kustomize deployment with PostgreSQL 14.5
# Run tests
mvn clean test
# Local development with Kubernetes
skaffold dev
# Build for production
mvn clean install -DskipTests- 📘 Setup Summary - Complete setup and configuration guide
- 📙 Contributing Guidelines - How to contribute
- 📗 Changelog - Version history
The service inherits its software dependency management and default service behavior from the VA Mobile Framework. Documentation regarding the Mobile Framework and its various components can be found in the docs directory of the framework repository.
Maven build behavior and document/artifact generation are inherited through the NGSS Maven build tiles.
The cds-hook-fhir-service depends on the following services, external data stores, and/or third party systems in order to operate.
| External Dependency | Version | Description |
|---|---|---|
| Epic FHIR Sandbox | R4 | Provides real test patient data from Epic's open FHIR API |
| HAPI FHIR | 6.x | FHIR client and resource handling |
This service integrates with Epic's open FHIR sandbox to provide real clinical test data. No authentication is required for Epic's test patient data.
- Base URL: https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4
- Documentation: https://fhir.epic.com/Documentation?docId=testpatients
- Configuration: Set
epic.sandbox.enabled=true(enabled by default)
See EPIC_SANDBOX_INTEGRATION.md for complete documentation.
| Endpoint | Method | Description |
|---|---|---|
/epic/status |
GET | Check Epic sandbox integration status |
/epic/patients |
GET | Get all Epic test patients with comprehensive data |
/epic/patient/{id} |
GET | Get specific patient data bundle |
/epic/insights/{id} |
GET | Generate clinical insights for a patient |
/epic/insights |
GET | Get insights for all Epic test patients |
/epic/dataset |
GET | Get enriched dataset summary |
| Endpoint | Method | Description |
|---|---|---|
/cds-services |
GET | Discover available CDS services |
/cds-services/patient-view |
POST | Patient-view hook handler |
/cds-services/order-select |
POST | Order-select hook handler |
/cds-services/order-sign |
POST | Order-sign hook handler |
See EPIC_SANDBOX_INTEGRATION.md for detailed API documentation and examples.
Health checks, metrics, and Kubernetes probes are provided through Spring Boot Actuator. Spring Boot Actuator support is inherited from the Mobile Framework, which also defines the default Actuator configuration.
The health check endpoint is available on port 8081 at:
/actuator/health
See the local development and testing guide.
Three easy ways to explore rich FHIR data:
./explore-epic-fhir.shMenu-driven interface to browse Epic test patients, view clinical data, and generate insights.
# Start service
./run-service.sh
# Check Epic integration
curl http://localhost:8080/cdshookfhirservice/v1/epic/status | jq
# Get patient data
curl "http://localhost:8080/cdshookfhirservice/v1/epic/patient/Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB" | jq
# Generate clinical insights
curl "http://localhost:8080/cdshookfhirservice/v1/epic/insights/Tbt3KuCY0B5PSrJvCu2j-PlK.aiHsu2xUjUM8bWpetXoB" | jq./test-epic-integration.sh📚 Complete Documentation:
- Quick Reference: EPIC_QUICK_REFERENCE.md - Copy-paste ready commands
- Full Guide: EPIC_FHIR_QUICKSTART.md - Comprehensive examples
- Test Patients: EPIC_TEST_PATIENTS.md - Patient profiles
- Integration: EPIC_SANDBOX_INTEGRATION.md - Technical details
-
Build the service:
./build.sh
-
Run the service:
./run-service.sh
-
Test Epic integration:
./test-epic-integration.sh
-
Access Epic data endpoints:
See EPIC_SANDBOX_INTEGRATION.md for complete API documentation.
Replace this text with any relevant information about infrastructure needs, such as dependence on AWS, that are specific to the service.
If there are additional infrastructure considerations, then some amount of technical detail should be included as well.
If this section is not applicable to the service, simply delete it
Replace this text with a description of any non-typical patterns (for example event-driven, or asynchronous processing) that may apply to the service
If this section is not applicable to the service, simply delete it
- Epic Sandbox Integration Guide - Complete guide for using Epic's FHIR test data
- CDS Hooks Implementation - CDS Hooks specification and implementation details
- Quick Start Guide - Get up and running quickly
- Testing Guide - Comprehensive testing documentation
- NGSS defect process can be found here.