Xhuma is a stateless middleware service that facilitates the conversion of GP Connect structured records into CCDA (Consolidated Clinical Document Architecture) format. The service implements IHE ITI profiles for interoperability and uses Redis for efficient caching of responses.
- Stateless architecture for scalability and reliability
- Redis-based caching for optimized performance
- IHE ITI profile implementation (ITI-47, ITI-38, ITI-39)
- FHIR to CCDA conversion
- JWT-based authentication for NHS Digital services
- SOAP message handling for healthcare interoperability
The service is built on FastAPI and follows a modular design pattern. For detailed technical documentation, see:
sequenceDiagram
participant EHR
participant Service
participant NHS API's
participant Redis Cache
EHR->>Service: ITI 47 Request
Service->>NHS API's: FHIR PDS lookup
NHS API's->>Service: PDS response
Service->>EHR: ITI 47 Response
Service->>Redis Cache: Check for cached SDS lookup
Service-->>NHS API's: SDS lookup
NHS API's-->>Service: SDS Response
Redis Cache->>Service: Return ADIS and FHIR root
EHR->>Service: ITI 38 Request
Service->>Redis Cache: Check for cached response
Service-->>NHS API's: GPconnect Structured SCR request
NHS API's-->>Service: Return Structured SCR
Service->>Service: convert SCR to CCDA
Service->>Redis Cache: Cache CCDA
Service->>EHR: ITI 38 Response
EHR->>Service: ITI 39 Request
Service->>EHR: ITI 39 Response
- Docker
- Docker Compose
- NHS Digital API access credentials
- Clone the repository:
git clone https://github.com/UCLH-Digital-Innovation-Hub/Xhuma.git
cd Xhuma
- Configure environment variables in docker-compose.yml:
environment:
- JWTKEY=your_jwt_key
- REGISTRY_ID=your_registry_id
- Deploy with Docker Compose:
docker-compose up -d
The service will be available at http://localhost:8000
Access the interactive API documentation at:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
main
: Production releasesdev
: Development branchfeature/*
: Feature branchesintegration
: Integration testing
- Create a feature branch from
dev
- Implement changes
- Add tests
- Create a pull request to
dev
Tests are automatically run in the CI pipeline. To run tests locally using Docker:
docker-compose -f docker-compose.test.yml up --build
This project is licensed under the terms of the license included in the LICENSE file.