aehrc / aehrc/pathling

Support terminology syndication feeds as an import source for the local terminology store

Open
#2,745 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

library-api new feature
Dominant language
Java
Stars
134
Forks
24
Avg merge
1d 15h
Merged PRs (30d)
8

Description

The local terminology store is populated from files supplied by the user: an RF2 archive or directory via import_snomed, and a JSON file, directory or FHIR NPM package via import_fhir_terminology. Obtaining those files is a manual step outside Pathling.

The Terminology Syndication Feed IG specifies the Atom-based catalogue format used by SNOMED International's MLDS (https://mlds.ihtsdotools.org/api/feed), the Australian NCTS (https://api.healthterminologies.gov.au/syndication/v1/syndication.xml) and Ontoserver deployments. Each entry carries a content item identifier and version (for SNOMED CT, the edition/version URI), a category identifying the content type (SCT_RF2_SNAPSHOT, FHIR_Package, FHIR_CodeSystem, etc.), a download link, and an ncts:sha256Hash of the download.

Support a syndication feed as a source for the import operations, so that a caller can name a feed URL and a content item (identifier, and version or latest), and Pathling resolves the entry, downloads the artefact, verifies it against the published SHA-256, and imports it through the existing RF2 or FHIR path. The verified hash and the entry's identifier and version should be recorded in the store manifest alongside the existing source and imported_at columns, giving the store a verifiable record of where its content came from.

Considerations:

  • Feeds generally require authentication for downloads (OAuth 2.0 client credentials for NCTS, MLDS credentials for SNOMED International). The existing terminology-auth client credentials configuration may be reusable.
  • The IG specifies the format only; transport, pagination and authentication are out of its scope, so the initial implementation should target the two known public feeds.
  • Only SCT_RF2_SNAPSHOT, FHIR_Package, FHIR_Bundle and the individual FHIR_CodeSystem/FHIR_ValueSet/FHIR_ConceptMap categories map onto content the store can import; other categories should be reported as unsupported rather than silently skipped.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing import_snomed and import_fhir_terminology operations, the local store manifest, and the terminology-auth client-credentials configuration. Review the Terminology Syndication Feed IG and the two named public feeds first. Done means supported entries are selected, downloaded, hash-verified, imported through the existing paths, unsupported categories are reported, and identifier, version, and hash are recorded in the manifest.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend, database
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.