How terminologyhub/open-termhub works
Open TermHub is a FHIR terminology server for browsing and querying terminology content, managing local terminology data, and optionally synchronizing content from TermHub. The principal request path is a client request through the terminology REST API, service implementation, repository service, and Lucene search/index layer. Separate R4/R5 FHIR providers expose terminology operations; bulk loading and asynchronous syndication support content updates. The graph uses the README and SOURCE INDEX references for documented or indexed relationships; where unsampled wiring cannot be verified, it is omitted.
Main entry points: EntityServiceImpl.java Entity service · SyndicationManager.java Syndication manager · TerminologyServiceRestImpl.java Terminology REST · LuceneDataAccess.java Lucene data access
Components 19
API surfaces
- Terminology REST
src/main/java/com/wci/termhub/rest/TerminologyServiceRestImpl.java - Bulk load API
src/main/java/com/wci/termhub/rest/BulkLoadRestImpl.java
Terminology operations
- Bulk loader
src/main/java/com/wci/termhub/service/impl/BulkLoaderServiceImpl.java - Entity service
src/main/java/com/wci/termhub/service/impl/EntityServiceImpl.java - Repository service
src/main/java/com/wci/termhub/service/EntityRepositoryService.java - Terminology models
src/main/java/com/wci/termhub/model/Terminology.java
Search and persistence
- Search parameters
src/main/java/com/wci/termhub/model/SearchParameters.java - Lucene query builder
src/main/java/com/wci/termhub/lucene/LuceneQueryBuilder.java - Lucene data access
src/main/java/com/wci/termhub/lucene/LuceneDataAccess.java - Index manager
src/main/java/com/wci/termhub/lucene/LuceneIndexManager.java - ECL conversion
src/main/java/com/wci/termhub/ecl/EclToLuceneConverter.java
FHIR interfaces
- FHIR REST
src/main/java/com/wci/termhub/fhir/rest/FhirServiceRestImpl.java - FHIR R4 providers
src/main/java/com/wci/termhub/fhir/r4 - FHIR R5 providers
src/main/java/com/wci/termhub/fhir/r5
Content synchronization
- Syndication manager
src/main/java/com/wci/termhub/syndication/SyndicationManager.java - Syndication jobs
src/main/java/com/wci/termhub/syndication/SyndicationJobService.java - Syndication scheduler
src/main/java/com/wci/termhub/syndication/SyndicationSchedulerService.java
Other components
- API client
- TermHub service
Connections 18
- API client → Terminology REST: calls
README.md - Terminology REST → Entity service: delegates
src/main/java/com/wci/termhub/rest/TerminologyServiceRestImpl.java - Entity service → Lucene data access: searches
src/main/java/com/wci/termhub/service/impl/EntityServiceImpl.java - Entity service → Lucene query builder: builds queries
src/main/java/com/wci/termhub/service/impl/EntityServiceImpl.java - Entity service → Search parameters: uses
src/main/java/com/wci/termhub/service/impl/EntityServiceImpl.java - Entity service → Repository service: implements
src/main/java/com/wci/termhub/service/impl/EntityServiceImpl.java - Lucene data access → Index manager: manages indexes
- Terminology REST → ECL conversion: converts ECL
- API client → FHIR REST: calls
README.md - FHIR REST → FHIR R4 providers: serves R4
- FHIR REST → FHIR R5 providers: serves R5
- API client → Bulk load API: submits content
README.md - Bulk load API → Bulk loader: loads
- TermHub service → Syndication manager: provides content
README.md - Syndication scheduler → Syndication manager: schedules
src/main/java/com/wci/termhub/syndication/SyndicationSchedulerService.java - Syndication jobs → Syndication manager: tracks jobs
src/main/java/com/wci/termhub/syndication/SyndicationJobService.java - Syndication manager → Entity service: updates content
src/main/java/com/wci/termhub/syndication/SyndicationManager.java - Lucene data access → Terminology models: indexes entities