Skip to content

feat(xds-sender): pull consolidated IPS for continuity of care#112

Merged
mherman22 merged 1 commit into
IsantePlus:mainfrom
mherman22:feat/ips-continuity-of-care
Jul 3, 2026
Merged

feat(xds-sender): pull consolidated IPS for continuity of care#112
mherman22 merged 1 commit into
IsantePlus:mainfrom
mherman22:feat/ips-continuity-of-care

Conversation

@mherman22

Copy link
Copy Markdown
Contributor

What

Adds a read-side retrieval path so a site can fetch a patient's cross-facility summary (International Patient Summary) from SEDISH — the roaming / continuum-of-care flow. OpenCR resolves the patient to the golden record, OpenHIM aggregates the SHR clinical data, and the site displays it. Read-only — it does not discretize data into the local record.

How

  • ShrRetriever.fetchIps(patient) — resolves the patient's golden-record id (CRUID) from the MPI by iSantePlus ID, then GETs the consolidated IPS from the SHR IPS mediator (/SHR/ips/Patient/cruid/<cruid>) using the existing HAPI client + OpenHIM Basic auth.
  • ShrImportServiceImpl.retrieveIps + CcdService.downloadAndSaveIps — wrap/persist the returned bundle (mirrors the existing CCD path).
  • IpsRetrievalControllerGET module/xdssender/retrieveIps.form?patientId=<uuid> fetches and renders the summary as HTML (reuses XdsUtil.parseCcdToHtml).
  • Config — new xdssender.ipsEndpoint global property + getIpsEndpoint() (default https://openhimcore.sedishtest.live/SHR/ips).

Reuses the module's existing FHIR client, auth, config, and HTML renderer; the only net-new code is the IPS fetch + wiring (164 insertions, 0 deletions).

Server side

Pairs with the SHR mediator's consolidated-IPS retrieval by CRUID / source-key / fpnid: DIGI-UW/shared-health-record#147.

Follow-up (out of scope)

Discretize + import (writing IPS clinical resources as local Encounters/Observations/Conditions) is intentionally deferred — it's a larger, higher-risk mapper for a separate PR.

🤖 Generated with Claude Code

Adds a read-side retrieval path so a site can fetch a patient's
cross-facility summary (IPS) from SEDISH:

- ShrRetriever.fetchIps(patient): resolves the patient's golden-record id
  (CRUID) from the MPI by iSantePlus ID, then GETs the consolidated IPS from
  the SHR IPS mediator (/SHR/ips/Patient/cruid/<cruid>) over the existing
  HAPI client + OpenHIM Basic auth.
- ShrImportServiceImpl.retrieveIps + CcdService.downloadAndSaveIps: wrap and
  persist the returned bundle (mirrors the existing CCD path).
- IpsRetrievalController: GET module/xdssender/retrieveIps.form?patientId=<uuid>
  fetches and renders the summary (reuses XdsUtil.parseCcdToHtml). Read-only;
  no discretization into local clinical data.
- Config: xdssender.ipsEndpoint global property + getIpsEndpoint().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mherman22 mherman22 merged commit 164d7ca into IsantePlus:main Jul 3, 2026
1 check failed
@mherman22 mherman22 deleted the feat/ips-continuity-of-care branch July 3, 2026 17:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant