From 4ee2ddbbe20abd16155ca1b9f4b8a5ebd3c3b107 Mon Sep 17 00:00:00 2001 From: Monika Date: Fri, 5 Jun 2026 15:25:36 +0000 Subject: [PATCH 01/12] fix(scheduler): de-duplicate booked slots in provider appointment list Booked appointments and the busy slots they consume were both rendered, showing every appointment twice (a 'Blocked' card and a 'Busy' card). Suppress slots referenced by an appointment's slot[] or sharing its start/end so each booked time appears once. Free/unbooked slots are unaffected. --- .../src/components/AppointmentList.tsx | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/fhir-scheduler/src/components/AppointmentList.tsx b/packages/fhir-scheduler/src/components/AppointmentList.tsx index 681bfad..541988d 100644 --- a/packages/fhir-scheduler/src/components/AppointmentList.tsx +++ b/packages/fhir-scheduler/src/components/AppointmentList.tsx @@ -274,13 +274,13 @@ export function AppointmentList({ fhirBaseUrl, initialScheduleId, initialDate, c try { const practitionerRef = selectedProvider!.actor?.[0]?.reference || `Schedule/${selectedProvider!.id}`; const scheduleId = selectedProvider!.id!; - + // Fetch appointments day-by-day const startDate = new Date(dateRange.start + 'T00:00:00'); const endDate = new Date(dateRange.end + 'T23:59:59'); const allAppointments: Appointment[] = []; const current = new Date(startDate); - + while (current <= endDate) { const dateStr = toDateString(current); const params = new URLSearchParams({ date: dateStr, actor: practitionerRef }); @@ -316,13 +316,28 @@ export function AppointmentList({ fhirBaseUrl, initialScheduleId, initialDate, c fetchData(); }, [selectedProvider, dateRange, fhirBaseUrl, headers]); - // Merge appointments and slots into a unified timeline + // Merge appointments and slots into a unified timeline. + // Suppress slots that an appointment already consumes β€” otherwise every booked + // appointment would render twice (once as "Blocked", once as the underlying "Busy" slot). const timeline = useMemo(() => { + const consumedSlotIds = new Set(); + const consumedSlotTimes = new Set(); + for (const appt of appointments) { + for (const ref of appt.slot ?? []) { + const id = ref.reference?.split('/').pop(); + if (id) consumedSlotIds.add(id); + } + if (appt.start && appt.end) { + consumedSlotTimes.add(`${appt.start}|${appt.end}`); + } + } const entries: TimelineEntry[] = []; for (const appt of appointments) { entries.push({ kind: 'appointment', data: appt }); } for (const slot of slots) { + if (slot.id && consumedSlotIds.has(slot.id)) continue; + if (consumedSlotTimes.has(`${slot.start}|${slot.end}`)) continue; entries.push({ kind: 'slot', data: slot }); } return entries; @@ -342,7 +357,7 @@ export function AppointmentList({ fhirBaseUrl, initialScheduleId, initialDate, c } return summary; }, [slots]); - + // Dates to display (either single day or week) const displayDates = useMemo(() => { if (viewMode === 'day') return [toDateString(currentDate)]; From c7739e8fc3f381c701676a9a2bb63e39103c239b Mon Sep 17 00:00:00 2001 From: Monika Date: Fri, 5 Jun 2026 15:25:36 +0000 Subject: [PATCH 02/12] feat(deploy): run server under systemd instead of Docker Add deploy/fhirtogether.service to run the compiled Node.js server (node dist/server.js) directly under systemd, reading config from .env. Document install/update/log commands in QUICKSTART, reference them from README and copilot-instructions (DRY). Docker files remain for local use. --- .github/copilot-instructions.md | 11 +++++++++++ QUICKSTART.md | 21 +++++++++++++++++++++ README.md | 4 +++- deploy/fhirtogether.service | 31 +++++++++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 deploy/fhirtogether.service diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index daab680..25071d0 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -31,6 +31,17 @@ src/ - `npm run build` - Compile TypeScript - `npm start` - Run production build +### Deployment +Production runs the compiled Node.js server directly under **systemd** (not Docker). +The unit file is [`deploy/fhirtogether.service`](../deploy/fhirtogether.service). + +- Install: `sudo cp deploy/fhirtogether.service /etc/systemd/system/ && sudo systemctl daemon-reload && sudo systemctl enable --now fhirtogether` +- Deploy update: `git pull && npm ci && npm run build && sudo systemctl restart fhirtogether` +- Logs: `journalctl -u fhirtogether -f` + +The `Dockerfile`/`docker-compose.yml` remain for local containerized runs only; +`docker-compose.inferno.yml` is the separate Inferno test harness. + ### API Endpoints | Method | Path | Description | |--------|------|-------------| diff --git a/QUICKSTART.md b/QUICKSTART.md index 13a3af3..a738bee 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -210,6 +210,27 @@ npm run build npm start ``` +### Deploy with systemd + +Production runs the compiled Node.js server directly under **systemd** (no Docker). +The unit file lives at [`deploy/fhirtogether.service`](deploy/fhirtogether.service). + +```bash +# One-time install (adjust User/paths in the unit file if needed) +npm ci && npm run build +sudo cp deploy/fhirtogether.service /etc/systemd/system/fhirtogether.service +sudo systemctl daemon-reload +sudo systemctl enable --now fhirtogether.service + +# Deploy a new version +git pull && npm ci && npm run build && sudo systemctl restart fhirtogether + +# Follow logs +journalctl -u fhirtogether -f +``` + +Configuration is read from `.env` in the working directory (see [`.env.example`](.env.example)). + ### Run Linter ```bash npm run lint diff --git a/README.md b/README.md index 1635ca8..e9d9041 100644 --- a/README.md +++ b/README.md @@ -190,6 +190,9 @@ npm run dev Swagger UI: [http://localhost:4010/docs](http://localhost:4010/docs) +> **Production deployment** runs the compiled server directly under **systemd** (not Docker). +> See [Deploy with systemd](QUICKSTART.md#deploy-with-systemd) and the unit file at [`deploy/fhirtogether.service`](deploy/fhirtogether.service). + ## 🧩 Pluggable Store Interface **Important:** The store interface is **not** for connecting directly to your EHR or Practice Management system. Instead, it's a **working data repository** for the scheduling portal that holds appointment data representing schedules for providers/resources. @@ -364,4 +367,3 @@ If you're modernizing a legacy EHR or want to contribute HL7v2 mappings, backend ## πŸ›‘οΈ Project Goal > Bring legacy scheduling infrastructure into the FHIR world β€” one appointment at a time. - diff --git a/deploy/fhirtogether.service b/deploy/fhirtogether.service new file mode 100644 index 0000000..59df9ac --- /dev/null +++ b/deploy/fhirtogether.service @@ -0,0 +1,31 @@ +# systemd unit for FHIRTogether Scheduling Synapse +# +# Runs the compiled Node.js server directly (no Docker). The server reads its +# configuration from the .env file in WorkingDirectory via dotenv. +# +# Install (adjust User/paths if your checkout lives elsewhere): +# sudo cp deploy/fhirtogether.service /etc/systemd/system/fhirtogether.service +# sudo systemctl daemon-reload +# sudo systemctl enable --now fhirtogether.service +# +# Deploy a new version: +# git pull && npm ci && npm run build && sudo systemctl restart fhirtogether +# +# Logs: +# journalctl -u fhirtogether -f + +[Unit] +Description=FHIRTogether Scheduling Synapse (Node.js) +After=network.target + +[Service] +Type=simple +User=monika +WorkingDirectory=/home/monika/FHIRTogether +Environment=NODE_ENV=production +ExecStart=/usr/bin/node dist/server.js +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target From b6a9b4b3306480521397a1aeb9b94bb59e28ea08 Mon Sep 17 00:00:00 2001 From: Monika Date: Fri, 5 Jun 2026 15:32:55 +0000 Subject: [PATCH 03/12] chore(deploy): remove Docker production deploy workflow (superseded by systemd) Production now runs as a host-local systemd service updated manually, so the launchpad/Docker auto-deploy on push (deploy-production.yml) is obsolete and conflicting. Removed it and clarified in copilot-instructions that prod deploys are manual; pr-preview.yml still uses Docker for ephemeral PR previews. --- .github/copilot-instructions.md | 7 ++- .github/workflows/deploy-production.yml | 74 ------------------------- 2 files changed, 5 insertions(+), 76 deletions(-) delete mode 100644 .github/workflows/deploy-production.yml diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 25071d0..44f7cdc 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -39,8 +39,11 @@ The unit file is [`deploy/fhirtogether.service`](../deploy/fhirtogether.service) - Deploy update: `git pull && npm ci && npm run build && sudo systemctl restart fhirtogether` - Logs: `journalctl -u fhirtogether -f` -The `Dockerfile`/`docker-compose.yml` remain for local containerized runs only; -`docker-compose.inferno.yml` is the separate Inferno test harness. +Production deploys are **manual** (the steps above) β€” there is no CI job that +auto-deploys production. The `.github/workflows/pr-preview.yml` workflow still +builds Docker images for ephemeral per-PR preview containers via launchpad; the +`Dockerfile`/`docker-compose.yml` support those previews and local containerized +runs. `docker-compose.inferno.yml` is the separate Inferno test harness. ### API Endpoints | Method | Path | Description | diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml deleted file mode 100644 index 5496de8..0000000 --- a/.github/workflows/deploy-production.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Build and Deploy Production - -on: - push: - branches: - - master - -env: - REGISTRY: ghcr.io - -jobs: - build-and-push: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - outputs: - image_tag: ${{ steps.image.outputs.tag }} - - steps: - - uses: actions/checkout@v4 - - - uses: docker/setup-buildx-action@v3 - - - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - id: image - run: echo "tag=${{ env.REGISTRY }}/${{ github.repository_owner }}/fhirtogether:latest" | tr '[:upper:]' '[:lower:]' >> $GITHUB_OUTPUT - - - uses: docker/build-push-action@v6 - with: - push: true - tags: ${{ steps.image.outputs.tag }} - - deploy-production: - needs: build-and-push - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - uses: mieweb/launchpad@main - with: - api_key: ${{ secrets.LAUNCHPAD_API_KEY }} - api_url: ${{ secrets.LAUNCHPAD_API_URL }} - template_name: ${{ needs.build-and-push.outputs.image_tag }} - - - name: Refresh container - env: - API_KEY: ${{ secrets.LAUNCHPAD_API_KEY }} - API_URL: ${{ secrets.LAUNCHPAD_API_URL }} - run: | - REPO_NAME=$(basename "${{ github.repository }}") - CONTAINER_NAME="${{ github.repository_owner }}-${REPO_NAME}-master" - CONTAINER_NAME=${CONTAINER_NAME,,} - CONTAINER_NAME=$(echo "$CONTAINER_NAME" | sed 's/[^a-z0-9-]/-/g') - - RESPONSE=$(curl -s -H "Authorization: Bearer $API_KEY" -H "Accept: application/json" \ - "$API_URL/sites/1/containers?hostname=$CONTAINER_NAME") - CONTAINER_ID=$(echo "$RESPONSE" | jq -r '.containers[0].id // empty') - - if [[ -n "$CONTAINER_ID" ]]; then - echo "Refreshing container $CONTAINER_NAME (ID: $CONTAINER_ID)..." - REFRESH_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ - -X POST -H "Authorization: Bearer $API_KEY" \ - "$API_URL/sites/1/containers/$CONTAINER_ID/refresh") - echo "REFRESH response: $REFRESH_CODE" - else - echo "No container found to refresh." - fi From e4b12d7d548ffad794b13bea390ffb9aec4a1c91 Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 12:39:47 +0000 Subject: [PATCH 04/12] fix(reset): use systemd instead of docker compose The reset flow now stops/starts the fhirtogether systemd service rather than the (removed) docker compose stack, matching the systemd deployment model. --- deploy/fhirtogether-reset.service | 23 ++++++++++++++++++ scripts/reset.sh | 40 +++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 deploy/fhirtogether-reset.service create mode 100755 scripts/reset.sh diff --git a/deploy/fhirtogether-reset.service b/deploy/fhirtogether-reset.service new file mode 100644 index 0000000..654f05b --- /dev/null +++ b/deploy/fhirtogether-reset.service @@ -0,0 +1,23 @@ +# systemd unit to reset the local FHIRTogether environment. +# +# Thin wrapper around scripts/reset.sh so the exact same steps can be run +# locally (./scripts/reset.sh) and via systemd. +# +# Install (adjust User/paths if your checkout lives elsewhere): +# sudo cp deploy/fhirtogether-reset.service /etc/systemd/system/ +# sudo systemctl daemon-reload +# sudo systemctl start fhirtogether-reset.service + +[Unit] +Description=Reset FHIRTogether Environment +Requires=fhirtogether.service +After=fhirtogether.service + +[Service] +Type=oneshot +User=monika +WorkingDirectory=/home/monika/FHIRTogether +ExecStart=/home/monika/FHIRTogether/scripts/reset.sh + +[Install] +WantedBy=multi-user.target diff --git a/scripts/reset.sh b/scripts/reset.sh new file mode 100755 index 0000000..72c9ff1 --- /dev/null +++ b/scripts/reset.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# +# Reset the local FHIRTogether environment to a clean, freshly-seeded state. +# +# Steps: +# 1. Stop the fhirtogether systemd service. +# 2. Remove the SQLite database files. +# 3. Start the service back up. +# 4. Wait for the server to become healthy, then regenerate test data. +# +# Run manually: ./scripts/reset.sh +# Run via systemd: see deploy/fhirtogether-reset.service +set -euo pipefail + +# Resolve the repo root regardless of where the script is invoked from. +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$REPO_ROOT" + +echo "==> Stopping fhirtogether service" +sudo systemctl stop fhirtogether + +echo "==> Removing SQLite database files" +rm -f data/fhirtogether.db* + +echo "==> Starting fhirtogether service" +sudo systemctl start fhirtogether + +echo "==> Waiting for server to become healthy" +for i in $(seq 1 30); do + if curl -sf http://localhost:4010/health >/dev/null; then + break + fi + sleep 1 +done + +echo "==> Regenerating test data" +npm run generate-data + +echo "==> Reset complete" From fece602030667b789fabfb8cba50ef4fa3f4394c Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 12:56:56 +0000 Subject: [PATCH 05/12] fix(ci): tolerate non-JSON launchpad responses in preview cleanup The 'Delete failed container' step crashed when the launchpad API returned a non-JSON body (jq parse error -> exit 5 under bash -e). Guard the jq calls so a bad response yields an empty value instead of aborting the preview build. --- .github/workflows/pr-preview.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pr-preview.yml index 27efbf5..60bd712 100644 --- a/.github/workflows/pr-preview.yml +++ b/.github/workflows/pr-preview.yml @@ -31,8 +31,10 @@ jobs: RESPONSE=$(curl -s -H "Authorization: Bearer $API_KEY" -H "Accept: application/json" \ "$API_URL/sites/1/containers?hostname=$CONTAINER_NAME") - CONTAINER_ID=$(echo "$RESPONSE" | jq -r '.containers[0].id // empty') - CONTAINER_STATUS=$(echo "$RESPONSE" | jq -r '.containers[0].status // empty') + # The launchpad API may return a non-JSON body (e.g. an HTML error + # page). Don't let a jq parse error abort the step under `bash -e`. + CONTAINER_ID=$(echo "$RESPONSE" | jq -r '.containers[0].id // empty' 2>/dev/null || echo "") + CONTAINER_STATUS=$(echo "$RESPONSE" | jq -r '.containers[0].status // empty' 2>/dev/null || echo "") if [[ -n "$CONTAINER_ID" && "$CONTAINER_STATUS" == "failed" ]]; then echo "Deleting failed container $CONTAINER_NAME (ID: $CONTAINER_ID)..." From b4ea20b868a26e76cac2b1b2a9a785584a87cccc Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 13:13:11 +0000 Subject: [PATCH 06/12] Revert "fix(ci): tolerate non-JSON launchpad responses in preview cleanup" This reverts commit fece602030667b789fabfb8cba50ef4fa3f4394c. --- .github/workflows/pr-preview.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pr-preview.yml index 60bd712..27efbf5 100644 --- a/.github/workflows/pr-preview.yml +++ b/.github/workflows/pr-preview.yml @@ -31,10 +31,8 @@ jobs: RESPONSE=$(curl -s -H "Authorization: Bearer $API_KEY" -H "Accept: application/json" \ "$API_URL/sites/1/containers?hostname=$CONTAINER_NAME") - # The launchpad API may return a non-JSON body (e.g. an HTML error - # page). Don't let a jq parse error abort the step under `bash -e`. - CONTAINER_ID=$(echo "$RESPONSE" | jq -r '.containers[0].id // empty' 2>/dev/null || echo "") - CONTAINER_STATUS=$(echo "$RESPONSE" | jq -r '.containers[0].status // empty' 2>/dev/null || echo "") + CONTAINER_ID=$(echo "$RESPONSE" | jq -r '.containers[0].id // empty') + CONTAINER_STATUS=$(echo "$RESPONSE" | jq -r '.containers[0].status // empty') if [[ -n "$CONTAINER_ID" && "$CONTAINER_STATUS" == "failed" ]]; then echo "Deleting failed container $CONTAINER_NAME (ID: $CONTAINER_ID)..." From a8870d433eacd2d9c36ff23173238f27ec6cd76c Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 17:32:06 +0000 Subject: [PATCH 07/12] feat(sync): persist synchronized schedules server-side Synchronize now POSTs to /sync-schedules; the server fetches the remote FHIR collection Bundle, parses it, and upserts Schedule resources into the store (availability extensions preserved). The grid reloads from GET /Schedule so synced schedules survive a page reload. /sync-schedules is exempt from auth. Adds parser unit tests and reworked e2e tests. --- e2e/schedules-sync.spec.ts | 297 +++++++++++ packages/fhir-scheduler/provider-view.html | 492 ++++++++++++++++++ packages/fhir-scheduler/src/provider-view.tsx | 23 +- src/__tests__/scheduleSync.test.ts | 107 ++++ src/auth/apiKeyAuth.ts | 2 + src/auth/basicAuth.ts | 2 +- src/mcp/tools/formatters.ts | 7 +- src/scheduling/scheduleSync.ts | 142 +++++ src/server.ts | 166 +++++- src/store/sqliteStore.ts | 79 ++- src/types/fhir.ts | 3 + 11 files changed, 1297 insertions(+), 23 deletions(-) create mode 100644 e2e/schedules-sync.spec.ts create mode 100644 src/__tests__/scheduleSync.test.ts create mode 100644 src/scheduling/scheduleSync.ts diff --git a/e2e/schedules-sync.spec.ts b/e2e/schedules-sync.spec.ts new file mode 100644 index 0000000..efafd4b --- /dev/null +++ b/e2e/schedules-sync.spec.ts @@ -0,0 +1,297 @@ +import { test, expect } from '@playwright/test'; + +/** + * Schedule Synchronization E2E Tests + * + * Loads the Provider View page, mocks the remote FHIR endpoint with a + * WebChart-style Bundle (type=collection), clicks Synchronize, and asserts + * the grid mapping. + */ + +// A complete WebChart-style collection Bundle, mirroring the real payload +// structure (Practitioner + Location + Schedule entries). The omitted +// availableTime / coding details from the captured sample are filled in here. +const SAMPLE_BUNDLE = { + resourceType: 'Bundle', + type: 'collection', + meta: { lastUpdated: '2026-06-11T13:59:44Z' }, + entry: [ + { + resource: { + resourceType: 'Practitioner', + id: '16', + name: [{ use: 'official', family: 'Butler', given: ['Internist', 'E.'] }], + }, + }, + { resource: { resourceType: 'Location', id: 'OFFICE', name: 'Office' } }, + { + resource: { + resourceType: 'Schedule', + id: '5', + actor: [ + { reference: 'Practitioner/16', display: 'Butler, Internist E.' }, + { reference: 'Location/OFFICE' }, + ], + serviceType: [ + { coding: [{ code: 'BERY', display: 'OSHA Beryllium' }], text: 'OSHA Beryllium' }, + { coding: [{ code: 'AUDIO', display: 'Audiogram' }], text: 'Audiogram' }, + ], + planningHorizon: { start: '2026-01-30T13:00:00Z', end: '2026-08-30T21:00:00Z' }, + extension: [ + { + url: 'https://zeus.med-web.com/webchart/wctmpierzchala/webchart.cgi/StructureDefinition/schedule-portal-time-slots', + valueInteger: 15, + }, + { + url: 'http://hl7.org/fhir/StructureDefinition/availableTime', + availableTime: [ + { + daysOfWeek: ['mon', 'tue', 'wed', 'thu', 'fri'], + availableStartTime: '08:00:00', + availableEndTime: '17:00:00', + }, + ], + }, + ], + }, + }, + { + resource: { + resourceType: 'Practitioner', + id: '28', + name: [{ use: 'official', family: 'Lab Testing', given: [''] }], + }, + }, + { + resource: { + resourceType: 'Schedule', + id: '6', + actor: [ + { reference: 'Practitioner/28', display: 'Lab Testing' }, + { reference: 'Location/OFFICE' }, + ], + serviceType: [ + { coding: [{ code: 'PHYS', display: 'Physical Exam' }], text: 'Physical Exam' }, + ], + planningHorizon: { start: '2015-07-27T12:00:00Z', end: '2015-07-27T16:00:00Z' }, + comment: 'Fasting Appointments Only', + extension: [ + { + url: 'https://zeus.med-web.com/webchart/wctmpierzchala/webchart.cgi/StructureDefinition/schedule-portal-time-slots', + valueInteger: 10, + }, + { + url: 'http://hl7.org/fhir/StructureDefinition/availableTime', + availableTime: [ + { + daysOfWeek: ['mon'], + availableStartTime: '07:00:00', + availableEndTime: '11:00:00', + }, + ], + }, + ], + }, + }, + { + resource: { + resourceType: 'Practitioner', + id: '66', + name: [{ use: 'official', family: 'Vaccinator 1', given: [''] }], + }, + }, + { + resource: { + resourceType: 'Schedule', + id: '10', + actor: [ + { reference: 'Practitioner/66', display: 'Vaccinator 1' }, + { reference: 'Location/OFFICE' }, + ], + serviceType: [], + planningHorizon: { start: '2021-02-22T13:00:00Z', end: '2021-02-22T22:00:00Z' }, + comment: 'COVID Vaccine-Injection 1 only', + extension: [ + { + url: 'https://zeus.med-web.com/webchart/wctmpierzchala/webchart.cgi/StructureDefinition/schedule-portal-time-slots', + valueInteger: 10, + }, + { + url: 'http://hl7.org/fhir/StructureDefinition/availableTime', + availableTime: [ + { + daysOfWeek: ['sat', 'sun'], + availableStartTime: '09:00:00', + availableEndTime: '15:00:00', + }, + ], + }, + ], + }, + }, + ], +}; + +const TARGET_URL = + 'https://zeus.med-web.com/webchart/wctmpierzchala/webchart.cgi/rest/schedules'; + +// Synchronization now runs server-side: the browser POSTs to /sync-schedules +// (the server fetches + parses + upserts), then the grid reloads from the +// persisted store via GET /Schedule. Both are mocked here. +const SYNC_GLOB = '**/sync-schedules'; +const SCHEDULE_GLOB = '**/Schedule?*'; + +const SYNC_MARKER_URL = 'https://fhirtogether.org/fhir/StructureDefinition/synced-from'; + +/** + * Build the searchset Bundle that GET /Schedule returns after synchronization: + * the source Schedules with Location displays resolved and a sync-source marker + * extension appended (mirroring what the server persists). + */ +function persistedScheduleBundle() { + const schedules = SAMPLE_BUNDLE.entry + .map((e) => e.resource) + .filter((r) => r.resourceType === 'Schedule') + .map((s) => ({ + ...s, + actor: s.actor.map((a) => + a.reference.startsWith('Location/') ? { ...a, display: 'Office' } : a + ), + extension: [...(s.extension || []), { url: SYNC_MARKER_URL, valueString: TARGET_URL }], + })); + return { + resourceType: 'Bundle', + type: 'searchset', + total: schedules.length, + entry: schedules.map((resource) => ({ resource })), + }; +} + +/** Assert the three sample schedules are mapped correctly into the grid. */ +async function expectSampleGrid(page: import('@playwright/test').Page) { + await expect(page.locator('#grid-count')).toHaveText('3 schedules'); + const rows = page.locator('#grid-body tr'); + await expect(rows).toHaveCount(3); + + // ── Row 1: Schedule/5 (Butler) ── + const r1 = rows.nth(0); + await expect(r1.locator('td').nth(0)).toHaveText('Butler, Internist E.'); + await expect(r1.locator('td').nth(1)).toHaveText('Office'); + await expect(r1.locator('td').nth(2)).toHaveText('01-30-2026 13:00:00'); + await expect(r1.locator('td').nth(3)).toHaveText('08-30-2026 21:00:00'); + await expect(r1.locator('td').nth(5)).toHaveText('08:00'); // start time + await expect(r1.locator('td').nth(6)).toHaveText('17:00'); // end time + await expect(r1.locator('td').nth(7)).toHaveText('15'); // slot minutes + await expect(r1.locator('.dow-chip.dow-active')).toHaveCount(5); + await expect(r1.locator('.type-tag')).toContainText(['OSHA Beryllium', 'Audiogram']); + + // ── Row 2: Schedule/6 (Lab Testing) β€” has comment ── + const r2 = rows.nth(1); + await expect(r2.locator('td').nth(0)).toHaveText('Lab Testing'); + await expect(r2.locator('td').nth(7)).toHaveText('10'); + await expect(r2.locator('td').nth(9)).toHaveText('Fasting Appointments Only'); + await expect(r2.locator('.dow-chip.dow-active')).toHaveCount(1); + + // ── Row 3: Schedule/10 (Vaccinator) β€” empty serviceType ── + const r3 = rows.nth(2); + await expect(r3.locator('td').nth(0)).toHaveText('Vaccinator 1'); + await expect(r3.locator('td').nth(9)).toHaveText('COVID Vaccine-Injection 1 only'); + await expect(r3.locator('.type-empty')).toBeVisible(); + await expect(r3.locator('.dow-chip.dow-active')).toHaveCount(2); +} + +test.describe('Schedule Synchronization', () => { + test.beforeEach(async ({ page }) => { + // Default: no previously-synced schedules (empty searchset on page load). + await page.route(SCHEDULE_GLOB, (route) => + route.fulfill({ + status: 200, + contentType: 'application/fhir+json', + body: JSON.stringify({ resourceType: 'Bundle', type: 'searchset', total: 0, entry: [] }), + }) + ); + await page.goto('/scheduler/provider-view.html'); + // The sync UI lives on its own dedicated tab. + await page.getByRole('tab', { name: 'Synchronize' }).click(); + }); + + test('loads page with sync panel and default endpoint', async ({ page }) => { + await expect(page.getByRole('heading', { name: 'Synchronize Schedules' })).toBeVisible(); + await expect(page.locator('#sync-url')).toHaveValue(TARGET_URL); + await expect(page.locator('#grid-count')).toHaveText('0 schedules'); + }); + + test('sync section is hidden until the Synchronize tab is selected', async ({ page }) => { + await page.getByRole('tab', { name: 'Appointments' }).click(); + await expect(page.locator('#sync-section')).toBeHidden(); + await page.getByRole('tab', { name: 'Synchronize' }).click(); + await expect(page.locator('#sync-section')).toBeVisible(); + }); + + test('synchronizes and maps the persisted schedules into the grid', async ({ page }) => { + // Server-side sync succeeds and reports the imported count. + await page.route(SYNC_GLOB, (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ success: true, imported: 3, source: TARGET_URL }), + }) + ); + // After sync, the grid reloads from the persisted store. + await page.unroute(SCHEDULE_GLOB); + await page.route(SCHEDULE_GLOB, (route) => + route.fulfill({ + status: 200, + contentType: 'application/fhir+json', + body: JSON.stringify(persistedScheduleBundle()), + }) + ); + + await page.getByRole('button', { name: /Synchronize/ }).click(); + + await expect(page.getByText('Successfully synchronized 3 schedules.')).toBeVisible(); + await expectSampleGrid(page); + }); + + test('restores previously synchronized schedules on reload', async ({ page }) => { + // Simulate reopening the page with schedules already persisted. + await page.unroute(SCHEDULE_GLOB); + await page.route(SCHEDULE_GLOB, (route) => + route.fulfill({ + status: 200, + contentType: 'application/fhir+json', + body: JSON.stringify(persistedScheduleBundle()), + }) + ); + await page.reload(); + await page.getByRole('tab', { name: 'Synchronize' }).click(); + + // Grid is populated without clicking Synchronize. + await expectSampleGrid(page); + }); + + test('shows an error toast on server failure', async ({ page }) => { + await page.route(SYNC_GLOB, (route) => + route.fulfill({ + status: 502, + contentType: 'application/json', + body: JSON.stringify({ error: 'Upstream fetch failed: getaddrinfo ENOTFOUND' }), + }) + ); + await page.getByRole('button', { name: /Synchronize/ }).click(); + await expect(page.getByText(/Upstream fetch failed/)).toBeVisible(); + await expect(page.locator('#grid-count')).toHaveText('0 schedules'); + }); + + test('rejects a non-collection bundle', async ({ page }) => { + await page.route(SYNC_GLOB, (route) => + route.fulfill({ + status: 400, + contentType: 'application/json', + body: JSON.stringify({ error: 'Expected Bundle.type "collection" but received "searchset".' }), + }) + ); + await page.getByRole('button', { name: /Synchronize/ }).click(); + await expect(page.getByText(/Expected Bundle.type "collection"/)).toBeVisible(); + }); +}); diff --git a/packages/fhir-scheduler/provider-view.html b/packages/fhir-scheduler/provider-view.html index d568b2f..0baef6f 100644 --- a/packages/fhir-scheduler/provider-view.html +++ b/packages/fhir-scheduler/provider-view.html @@ -57,6 +57,118 @@ font-weight: 600; font-family: system-ui, -apple-system, sans-serif; } + + /* ── Schedule synchronization panel ── */ + .sync-panel { + background: #fff; + border: 1px solid #e5e7eb; + border-radius: 12px; + padding: 1.25rem; + margin-bottom: 1.5rem; + } + .sync-panel h2 { font-size: 1rem; font-weight: 600; margin: 0 0 0.35rem; color: #111827; } + .sync-panel-desc { font-size: 0.85rem; color: #6b7280; margin: 0 0 0.9rem; } + .sync-controls { display: flex; gap: 0.6rem; align-items: flex-end; flex-wrap: wrap; } + .sync-url-field { flex: 1 1 420px; min-width: 280px; } + .sync-url-field label { + display: block; font-size: 0.78rem; font-weight: 600; + color: #6b7280; margin-bottom: 0.2rem; + } + .sync-url-field input { + width: 100%; padding: 0.55rem 0.7rem; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85rem; + border: 1px solid #d1d5db; border-radius: 6px; background: #fff; color: #111827; + } + .sync-url-field input:focus { outline: 2px solid #2563eb; outline-offset: -1px; } + + .btn { + display: inline-flex; align-items: center; gap: 0.4rem; + padding: 0.55rem 1rem; font-size: 0.85rem; font-weight: 600; + border: 1px solid transparent; border-radius: 6px; cursor: pointer; + transition: background 0.15s; white-space: nowrap; + } + .btn:disabled { opacity: 0.5; cursor: not-allowed; } + .btn-primary { background: #2563eb; color: white; } + .btn-primary:hover:not(:disabled) { background: #1d4ed8; } + .btn-secondary { background: #f3f4f6; color: #111827; border-color: #d1d5db; } + .btn-secondary:hover:not(:disabled) { background: #e5e7eb; } + + .grid-wrapper { + background: #fff; border: 1px solid #e5e7eb; + border-radius: 12px; overflow: hidden; margin-bottom: 1.5rem; + } + .grid-toolbar { + display: flex; align-items: center; justify-content: space-between; + padding: 0.75rem 1rem; border-bottom: 1px solid #e5e7eb; background: #f9fafb; + } + .grid-toolbar h2 { font-size: 0.95rem; font-weight: 600; margin: 0; color: #111827; } + .grid-count { font-size: 0.8rem; font-weight: 600; color: #6b7280; } + .grid-scroll { overflow-x: auto; } + + table.schedule-grid { width: 100%; border-collapse: collapse; font-size: 0.82rem; } + table.schedule-grid th, table.schedule-grid td { + padding: 0.55rem 0.7rem; text-align: left; vertical-align: top; + border-bottom: 1px solid #e5e7eb; + } + table.schedule-grid thead th { + position: sticky; top: 0; background: #f9fafb; font-weight: 700; + font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.03em; + color: #6b7280; white-space: nowrap; + } + table.schedule-grid tbody tr:hover { background: #f9fafb; } + .cell-provider { font-weight: 600; } + .cell-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.78rem; } + .cell-comment { color: #6b7280; font-style: italic; } + + .dow-group { display: flex; gap: 0.25rem; flex-wrap: wrap; } + .dow-chip { + display: inline-flex; align-items: center; gap: 0.2rem; + font-size: 0.7rem; font-weight: 600; padding: 0.1rem 0.3rem; + border-radius: 6px; border: 1px solid #d1d5db; color: #6b7280; + } + .dow-chip input { margin: 0; accent-color: #2563eb; } + .dow-chip.dow-active { background: #dbeafe; border-color: #2563eb; color: #1e40af; } + + .type-tags { display: flex; gap: 0.25rem; flex-wrap: wrap; max-width: 320px; } + .type-tag { + font-size: 0.7rem; font-weight: 600; padding: 0.1rem 0.45rem; + border-radius: 999px; background: #f3f4f6; border: 1px solid #e5e7eb; color: #111827; + } + .type-empty { color: #9ca3af; font-size: 0.78rem; } + .grid-empty { padding: 2.5rem 1rem; text-align: center; color: #6b7280; font-size: 0.9rem; } + + /* ── Loading overlay ── */ + .loading-overlay { + position: fixed; inset: 0; z-index: 9000; display: none; + align-items: center; justify-content: center; flex-direction: column; gap: 1rem; + background: rgba(15, 23, 42, 0.55); color: white; + } + .loading-overlay.visible { display: flex; } + .spinner { + width: 52px; height: 52px; border: 5px solid rgba(255, 255, 255, 0.3); + border-top-color: white; border-radius: 50%; animation: spin 0.8s linear infinite; + } + @keyframes spin { to { transform: rotate(360deg); } } + .loading-text { font-size: 0.95rem; font-weight: 600; } + + /* ── Toasts ── */ + .toast-stack { + position: fixed; bottom: 1.25rem; right: 1.25rem; z-index: 9500; + display: flex; flex-direction: column; gap: 0.6rem; + max-width: min(380px, calc(100vw - 2rem)); + } + .toast { + display: flex; align-items: flex-start; gap: 0.6rem; + padding: 0.8rem 1rem; border-radius: 8px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); + font-size: 0.86rem; font-weight: 600; color: white; + opacity: 0; transform: translateY(10px); + transition: opacity 0.2s ease, transform 0.2s ease; + } + .toast.visible { opacity: 1; transform: translateY(0); } + .toast-success { background: #16a34a; } + .toast-error { background: #dc2626; } + .toast-info { background: #2563eb; } + .toast-icon { font-size: 1.05rem; line-height: 1.2; } @@ -76,6 +188,386 @@

πŸ—“οΈ FHIR Scheduler

+ + + + + + + +
+ + diff --git a/packages/fhir-scheduler/src/provider-view.tsx b/packages/fhir-scheduler/src/provider-view.tsx index caef225..535e595 100644 --- a/packages/fhir-scheduler/src/provider-view.tsx +++ b/packages/fhir-scheduler/src/provider-view.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback } from 'react'; +import React, { useState, useCallback, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; import { AppointmentList } from './components/AppointmentList'; import { ImportData } from './components/ImportData'; @@ -15,12 +15,21 @@ const urlParams = new URLSearchParams(window.location.search); const initialScheduleId = urlParams.get('schedule') || undefined; const initialDate = urlParams.get('date') || undefined; -type TabType = 'appointments' | 'schedule-setup' | 'import'; +type TabType = 'appointments' | 'schedule-setup' | 'import' | 'synchronize'; function ProviderView() { const [activeTab, setActiveTab] = useState('appointments'); const [refreshKey, setRefreshKey] = useState(0); + // The schedule-synchronization UI lives in static HTML outside the React + // root (#sync-section). Show it only when the "Synchronize" tab is active. + useEffect(() => { + const section = document.getElementById('sync-section'); + if (section) { + section.hidden = activeTab !== 'synchronize'; + } + }, [activeTab]); + const handleImportComplete = useCallback(() => { // Refresh appointments list when import completes setRefreshKey((k) => k + 1); @@ -61,6 +70,16 @@ function ProviderView() { > Import Data + {/* Tab panels */} diff --git a/src/__tests__/scheduleSync.test.ts b/src/__tests__/scheduleSync.test.ts new file mode 100644 index 0000000..3a316cb --- /dev/null +++ b/src/__tests__/scheduleSync.test.ts @@ -0,0 +1,107 @@ +import { + parseScheduleBundle, + isSyncedSchedule, + SYNC_SOURCE_EXTENSION_URL, +} from '../scheduling/scheduleSync'; + +const SOURCE_URL = 'https://example.org/fhir/schedules'; + +const COLLECTION_BUNDLE = { + resourceType: 'Bundle', + type: 'collection', + entry: [ + { + resource: { + resourceType: 'Practitioner', + id: '16', + name: [{ family: 'Butler', given: ['Internist', 'E.'] }], + }, + }, + { resource: { resourceType: 'Location', id: 'OFFICE', name: 'Office' } }, + { + resource: { + resourceType: 'Schedule', + id: '5', + actor: [ + { reference: 'Practitioner/16', display: 'Butler, Internist E.' }, + { reference: 'Location/OFFICE' }, + ], + serviceType: [{ coding: [{ display: 'OSHA Beryllium' }], text: 'OSHA Beryllium' }], + planningHorizon: { start: '2026-01-30T13:00:00Z', end: '2026-08-30T21:00:00Z' }, + comment: 'Test comment', + extension: [ + { + url: 'https://zeus.example/StructureDefinition/schedule-portal-time-slots', + valueInteger: 15, + }, + { + url: 'http://hl7.org/fhir/StructureDefinition/availableTime', + availableTime: [ + { daysOfWeek: ['mon', 'tue'], availableStartTime: '08:00:00', availableEndTime: '17:00:00' }, + ], + }, + ], + }, + }, + ], +}; + +describe('parseScheduleBundle', () => { + it('parses a collection bundle into persistable schedules', () => { + const { schedules } = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL); + expect(schedules).toHaveLength(1); + const s = schedules[0]; + expect(s.resourceType).toBe('Schedule'); + expect(s.id).toBe('5'); + expect(s.comment).toBe('Test comment'); + expect(s.planningHorizon).toEqual({ start: '2026-01-30T13:00:00Z', end: '2026-08-30T21:00:00Z' }); + }); + + it('resolves the Location actor display from the bundle', () => { + const { schedules } = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL); + const locationActor = schedules[0].actor.find((a) => a.reference?.startsWith('Location/')); + expect(locationActor?.display).toBe('Office'); + }); + + it('preserves the availableTime and slot-length extensions', () => { + const { schedules } = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL); + const ext = schedules[0].extension || []; + const avail = ext.find((e) => e.url === 'http://hl7.org/fhir/StructureDefinition/availableTime'); + const slot = ext.find( + (e) => typeof e.url === 'string' && e.url.endsWith('/schedule-portal-time-slots') + ); + expect(avail).toBeDefined(); + expect((slot as { valueInteger?: number })?.valueInteger).toBe(15); + }); + + it('stamps a sync-source marker extension', () => { + const { schedules } = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL); + const marker = (schedules[0].extension || []).find((e) => e.url === SYNC_SOURCE_EXTENSION_URL); + expect((marker as { valueString?: string })?.valueString).toBe(SOURCE_URL); + expect(isSyncedSchedule(schedules[0])).toBe(true); + }); + + it('does not duplicate the marker when re-parsing an already-synced schedule', () => { + const { schedules: first } = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL); + const reBundle = { + resourceType: 'Bundle', + type: 'collection', + entry: [{ resource: { ...first[0] } }], + }; + const { schedules: second } = parseScheduleBundle(reBundle, SOURCE_URL); + const markers = (second[0].extension || []).filter((e) => e.url === SYNC_SOURCE_EXTENSION_URL); + expect(markers).toHaveLength(1); + }); + + it('rejects a non-Bundle payload', () => { + expect(() => parseScheduleBundle({ resourceType: 'Schedule' }, SOURCE_URL)).toThrow( + /not a FHIR Bundle/ + ); + }); + + it('rejects a Bundle that is not a collection', () => { + expect(() => + parseScheduleBundle({ resourceType: 'Bundle', type: 'searchset', entry: [] }, SOURCE_URL) + ).toThrow(/collection/); + }); +}); diff --git a/src/auth/apiKeyAuth.ts b/src/auth/apiKeyAuth.ts index f973a8d..3be5d29 100644 --- a/src/auth/apiKeyAuth.ts +++ b/src/auth/apiKeyAuth.ts @@ -24,6 +24,8 @@ const PUBLIC_PATH_PREFIXES = [ '/Directory', '/System/register', '/hl7-tester', + '/sync-proxy', + '/sync-schedules', '/mcp/', '/$bulk-publish', ]; diff --git a/src/auth/basicAuth.ts b/src/auth/basicAuth.ts index 4c9b9bb..2a28d6b 100644 --- a/src/auth/basicAuth.ts +++ b/src/auth/basicAuth.ts @@ -12,7 +12,7 @@ import { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'; import { timingSafeEqual } from 'crypto'; /** Paths that never require authentication. */ -const PUBLIC_PATH_PREFIXES = ['/health', '/docs', '/demo', '/scheduler/']; +const PUBLIC_PATH_PREFIXES = ['/health', '/docs', '/demo', '/scheduler/', '/sync-proxy', '/sync-schedules']; const PUBLIC_EXACT_PATHS = new Set(['/', '/health', '/favicon.ico']); /** diff --git a/src/mcp/tools/formatters.ts b/src/mcp/tools/formatters.ts index 6b0f461..cefa92a 100644 --- a/src/mcp/tools/formatters.ts +++ b/src/mcp/tools/formatters.ts @@ -4,8 +4,11 @@ import { Schedule, Slot, Appointment, CodeableConcept, Reference } from '../../t * Extract the system name from a Schedule's extension (added by sqliteStore). */ export function getSystemName(schedule: Schedule): string | undefined { - const ext = (schedule as Schedule & { extension?: { url: string; valueString?: string }[] }).extension; - return ext?.find(e => e.url === 'https://fhirtogether.org/fhir/StructureDefinition/system-name')?.valueString; + const match = schedule.extension?.find( + (e) => e.url === 'https://fhirtogether.org/fhir/StructureDefinition/system-name' + ); + const value = match?.valueString; + return typeof value === 'string' ? value : undefined; } /** diff --git a/src/scheduling/scheduleSync.ts b/src/scheduling/scheduleSync.ts new file mode 100644 index 0000000..170adbc --- /dev/null +++ b/src/scheduling/scheduleSync.ts @@ -0,0 +1,142 @@ +/** + * Schedule synchronization parser. + * + * Converts a remote FHIR R4 collection Bundle (e.g. WebChart's + * `/rest/schedules` response) into self-contained Schedule resources that can + * be persisted in the local store and re-rendered after a reload. + * + * The source Bundle carries Practitioner and Location resources alongside the + * Schedules; their display names are folded into each Schedule's `actor` + * references so the persisted Schedule stands on its own (the local store does + * not keep separate Practitioner/Location rows). + */ + +import { Schedule } from '../types/fhir'; + +/** Marker extension url stamped on every synced schedule (source endpoint). */ +export const SYNC_SOURCE_EXTENSION_URL = + 'https://fhirtogether.org/fhir/StructureDefinition/synced-from'; + +/** FHIR availableTime extension url (days + start/end time). */ +const AVAILABLE_TIME_EXTENSION_URL = + 'http://hl7.org/fhir/StructureDefinition/availableTime'; + +interface BundleEntry { + resource?: Record; +} + +interface FhirBundle { + resourceType?: string; + type?: string; + entry?: BundleEntry[]; +} + +/** Build a "Family, Given1 Given2" display name from a Practitioner resource. */ +function practitionerName(resource: Record): string { + const names = resource.name as Array<{ family?: string; given?: string[] }> | undefined; + const name = Array.isArray(names) ? names[0] : undefined; + if (!name) return resource.id ? `Practitioner/${resource.id}` : 'Unknown'; + const given = Array.isArray(name.given) ? name.given.filter(Boolean).join(' ').trim() : ''; + const family = (name.family || '').trim(); + if (family && given) return `${family}, ${given}`; + return family || given || (resource.id ? `Practitioner/${resource.id}` : 'Unknown'); +} + +/** Extract the trailing id from a "Type/id" reference. */ +function refId(reference: unknown): string | undefined { + return typeof reference === 'string' ? reference.split('/').pop() : undefined; +} + +export interface ParsedSyncResult { + schedules: Schedule[]; +} + +/** + * Parse a FHIR collection Bundle into persistable Schedule resources. + * + * @param bundle The parsed remote Bundle (resourceType "Bundle", type "collection"). + * @param sourceUrl The endpoint the bundle came from (stamped as a marker extension). + * @throws Error when the payload is not a collection Bundle. + */ +export function parseScheduleBundle(bundle: unknown, sourceUrl: string): ParsedSyncResult { + const b = bundle as FhirBundle; + if (!b || b.resourceType !== 'Bundle') { + throw new Error('Response is not a FHIR Bundle.'); + } + if (b.type !== 'collection') { + throw new Error(`Expected Bundle.type "collection" but received "${b.type ?? 'undefined'}".`); + } + + const entries = Array.isArray(b.entry) ? b.entry : []; + + // Cross-reference maps for resolving actor display names. + const practitioners: Record = {}; + const locations: Record = {}; + for (const entry of entries) { + const resource = entry?.resource; + if (!resource || resource.id == null) continue; + if (resource.resourceType === 'Practitioner') { + practitioners[String(resource.id)] = practitionerName(resource); + } else if (resource.resourceType === 'Location') { + locations[String(resource.id)] = (resource.name as string) || `Location/${resource.id}`; + } + } + + const schedules: Schedule[] = []; + for (const entry of entries) { + const resource = entry?.resource; + if (resource?.resourceType !== 'Schedule') continue; + + const actorIn = Array.isArray(resource.actor) + ? (resource.actor as Array>) + : []; + + // Enrich actor references with resolved display names so the persisted + // Schedule is self-contained after Practitioner/Location entries are gone. + const actor = actorIn.map((a) => { + const reference = typeof a.reference === 'string' ? a.reference : undefined; + const id = refId(reference); + let display = typeof a.display === 'string' ? a.display : undefined; + if (!display && id && reference?.startsWith('Practitioner/')) { + display = practitioners[id]; + } + if (!display && id && reference?.startsWith('Location/')) { + display = locations[id]; + } + return display ? { reference, display } : { reference }; + }); + + const extension: Array> = Array.isArray(resource.extension) + ? (resource.extension as Array>).filter( + (e) => e && e.url !== SYNC_SOURCE_EXTENSION_URL + ) + : []; + // Stamp the source endpoint so the grid can identify synced schedules. + extension.push({ url: SYNC_SOURCE_EXTENSION_URL, valueString: sourceUrl }); + + const schedule: Schedule = { + resourceType: 'Schedule', + id: resource.id != null ? String(resource.id) : undefined, + active: resource.active === undefined ? true : Boolean(resource.active), + actor: actor as Schedule['actor'], + serviceType: Array.isArray(resource.serviceType) + ? (resource.serviceType as Schedule['serviceType']) + : undefined, + planningHorizon: (resource.planningHorizon as Schedule['planningHorizon']) || undefined, + comment: typeof resource.comment === 'string' ? resource.comment : undefined, + extension, + }; + + schedules.push(schedule); + } + + return { schedules }; +} + +/** Helper used by tests/callers: does this schedule carry the sync marker? */ +export function isSyncedSchedule(schedule: { extension?: Array> }): boolean { + return Array.isArray(schedule.extension) + && schedule.extension.some((e) => e?.url === SYNC_SOURCE_EXTENSION_URL); +} + +export { AVAILABLE_TIME_EXTENSION_URL }; diff --git a/src/server.ts b/src/server.ts index 563dba1..5d32f5c 100644 --- a/src/server.ts +++ b/src/server.ts @@ -17,6 +17,7 @@ import { locationRoutes } from './routes/locationRoutes'; import { directoryRoutes } from './routes/directoryRoutes'; import { smartSchedulingRoutes, getSmartSchedulingConfig } from './routes/smartSchedulingRoutes'; import { createMLLPServer, MLLPServer } from './hl7/socket'; +import { parseScheduleBundle } from './scheduling/scheduleSync'; // Basic auth is now handled internally by apiKeyAuth as a fallback import { registerApiKeyAuth } from './auth/apiKeyAuth'; import { createMcpServer } from './mcp/mcpServer'; @@ -296,7 +297,148 @@ async function buildServer() { return reply.sendFile('hl7-tester.html', path.join(__dirname, '..', 'public')); }); - // Graceful shutdown + // CORS-bypass proxy for the schedule synchronization feature. + // The browser cannot fetch arbitrary remote FHIR endpoints cross-origin, so + // the Provider View page routes its fetch through this server-side proxy. + fastify.get<{ Querystring: { url?: string } }>('/sync-proxy', async (request, reply) => { + const target = request.query.url; + if (!target) { + return reply.code(400).send({ error: 'Missing "url" query parameter.' }); + } + + let parsed: URL; + try { + parsed = new URL(target); + } catch { + return reply.code(400).send({ error: 'Invalid URL.' }); + } + + // Only allow outbound HTTP(S) requests. + if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') { + return reply.code(400).send({ error: 'Only http and https URLs are supported.' }); + } + + try { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 20000); + const upstream = await fetch(parsed.toString(), { + method: 'GET', + headers: { Accept: 'application/fhir+json, application/json' }, + signal: controller.signal, + }); + clearTimeout(timeout); + + const body = await upstream.text(); + return reply + .code(upstream.status) + .header('Content-Type', upstream.headers.get('content-type') || 'application/json') + .send(body); + } catch (err) { + // Node's fetch throws a generic "fetch failed"; the real reason (DNS, + // TLS, connection refused, timeout) lives on err.cause. Surface it so the + // operator can tell what is actually blocking the outbound request. + let message = err instanceof Error ? err.message : 'Upstream request failed.'; + const cause = (err as { cause?: unknown })?.cause; + if (cause instanceof Error) { + const code = (cause as { code?: string }).code; + message += ` (${code ? code + ': ' : ''}${cause.message})`; + } + request.log.error({ err, target: parsed.toString() }, 'sync-proxy upstream fetch failed'); + return reply.code(502).send({ error: `Upstream fetch failed: ${message}` }); + } + }); + + // Schedule synchronization: fetch a remote FHIR collection Bundle, parse its + // Schedule/Practitioner/Location resources, and upsert the schedules into the + // local store so they become real resources that survive a page reload. + fastify.post<{ Body: { url?: string } }>( + '/sync-schedules', + { + schema: { + description: 'Synchronize provider schedules from a remote FHIR collection Bundle endpoint.', + tags: ['Schedule'], + body: { + type: 'object', + required: ['url'], + additionalProperties: true, + properties: { url: { type: 'string', description: 'Remote FHIR endpoint returning a collection Bundle.' } }, + }, + response: { + 200: { + type: 'object', + additionalProperties: true, + properties: { + success: { type: 'boolean' }, + imported: { type: 'number' }, + source: { type: 'string' }, + }, + }, + 400: { type: 'object', additionalProperties: true, properties: { error: { type: 'string' } } }, + 502: { type: 'object', additionalProperties: true, properties: { error: { type: 'string' } } }, + }, + }, + }, + async (request, reply) => { + const target = request.body?.url; + if (!target) { + return reply.code(400).send({ error: 'Missing "url" in request body.' }); + } + + let parsed: URL; + try { + parsed = new URL(target); + } catch { + return reply.code(400).send({ error: 'Invalid URL.' }); + } + if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') { + return reply.code(400).send({ error: 'Only http and https URLs are supported.' }); + } + + // ── Fetch the remote Bundle ── + let bundle: unknown; + try { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 20000); + const upstream = await fetch(parsed.toString(), { + method: 'GET', + headers: { Accept: 'application/fhir+json, application/json' }, + signal: controller.signal, + }); + clearTimeout(timeout); + + if (!upstream.ok) { + return reply + .code(502) + .send({ error: `Upstream responded with HTTP ${upstream.status} ${upstream.statusText}.` }); + } + bundle = await upstream.json(); + } catch (err) { + let message = err instanceof Error ? err.message : 'Upstream request failed.'; + const cause = (err as { cause?: unknown })?.cause; + if (cause instanceof Error) { + const code = (cause as { code?: string }).code; + message += ` (${code ? code + ': ' : ''}${cause.message})`; + } + request.log.error({ err, target: parsed.toString() }, 'sync-schedules upstream fetch failed'); + return reply.code(502).send({ error: `Upstream fetch failed: ${message}` }); + } + + // ── Parse + persist ── + try { + const { schedules } = parseScheduleBundle(bundle, parsed.toString()); + for (const schedule of schedules) { + await store.upsertSchedule(schedule); + } + request.log.info({ imported: schedules.length, source: parsed.toString() }, 'Schedules synchronized'); + return reply.send({ success: true, imported: schedules.length, source: parsed.toString() }); + } catch (err) { + const message = err instanceof Error ? err.message : 'Failed to parse schedule bundle.'; + return reply.code(400).send({ error: message }); + } + } + ); + + const closeGracefully = async (signal: string) => { fastify.log.info(`Received signal ${signal}, closing gracefully...`); await store.close(); @@ -347,7 +489,7 @@ async function start() { await runEvaporation(); const evaporationInterval = setInterval(runEvaporation, EVAPORATION_CHECK_INTERVAL_HOURS * 60 * 60 * 1000); evaporationInterval.unref(); - + // Start MLLP socket server if enabled let mllpServer: MLLPServer | null = null; if (HL7_SOCKET_ENABLED) { @@ -362,11 +504,11 @@ async function start() { } : undefined, allowedIPs: HL7_MLLP_ALLOWED_IPS.length > 0 ? HL7_MLLP_ALLOWED_IPS : undefined, }); - + mllpServer.on('listening', (info) => { console.log(`πŸ“¨ HL7 MLLP Socket: ${info.tls ? 'tls' : 'tcp'}://${info.host}:${info.port}`); }); - + mllpServer.on('error', (err) => { console.error('MLLP Server error:', err); }); @@ -374,18 +516,18 @@ async function start() { mllpServer.on('rejected', (info) => { fastify.log.warn(info, 'MLLP connection rejected'); }); - + mllpServer.on('message', (event) => { fastify.log.info({ messageType: event.parsed.messageType, controlId: event.parsed.controlId }, 'HL7 message received via socket'); }); - + mllpServer.on('processed', (info) => { fastify.log.info(info, 'HL7 message processed'); }); - + await mllpServer.start(); } - + console.log('\nπŸš€ FHIRTogether Scheduling Synapse'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); console.log(`πŸ“‘ Server running at: http://${HOST}:${PORT}`); @@ -413,11 +555,11 @@ async function start() { } console.log('β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n'); } - + // Update graceful shutdown to include MLLP server process.removeAllListeners('SIGINT'); process.removeAllListeners('SIGTERM'); - + const closeAll = async (signal: string) => { fastify.log.info(`Received signal ${signal}, closing gracefully...`); if (mllpServer) { @@ -427,10 +569,10 @@ async function start() { await fastify.close(); process.exit(0); }; - + process.on('SIGINT', () => closeAll('SIGINT')); process.on('SIGTERM', () => closeAll('SIGTERM')); - + } catch (err) { console.error('Error starting server:', err); process.exit(1); diff --git a/src/store/sqliteStore.ts b/src/store/sqliteStore.ts index 0075364..a485a3d 100644 --- a/src/store/sqliteStore.ts +++ b/src/store/sqliteStore.ts @@ -51,7 +51,7 @@ function toNaiveISO(date: Date): string { * The store will compare it against the version stored in the database * and report a mismatch so the server can warn or rebuild. */ -export const SCHEMA_VERSION = 5; +export const SCHEMA_VERSION = 6; export interface SchemaStatus { current: number; @@ -107,6 +107,7 @@ export class SqliteStore implements FhirStore { planning_horizon_start TEXT, planning_horizon_end TEXT, comment TEXT, + extension TEXT, meta_last_updated TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP ); @@ -267,6 +268,14 @@ export class SqliteStore implements FhirStore { this.db.exec('ALTER TABLE schedules ADD COLUMN availability_template TEXT'); } + // Migration v5β†’v6: add extension column to schedules (stores the original + // FHIR extension array for synced schedules: availableTime, slot length, + // and the sync-source marker). + const schedColsV6 = this.db.pragma('table_info(schedules)') as { name: string }[]; + if (!schedColsV6.some(c => c.name === 'extension')) { + this.db.exec('ALTER TABLE schedules ADD COLUMN extension TEXT'); + } + // Stamp the schema version after all migrations succeed const migrated = dbVersion !== SCHEMA_VERSION; this.db.prepare( @@ -619,9 +628,58 @@ export class SqliteStore implements FhirStore { const stmt = this.db.prepare(` INSERT INTO schedules ( id, active, service_category, service_type, specialty, actor, - planning_horizon_start, planning_horizon_end, comment, meta_last_updated, + planning_horizon_start, planning_horizon_end, comment, extension, meta_last_updated, system_id, location_id, availability_template - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `); + + stmt.run( + id, + schedule.active ? 1 : 0, + JSON.stringify(schedule.serviceCategory || []), + JSON.stringify(schedule.serviceType || []), + JSON.stringify(schedule.specialty || []), + JSON.stringify(schedule.actor), + schedule.planningHorizon?.start, + schedule.planningHorizon?.end, + schedule.comment, + schedule.extension ? JSON.stringify(schedule.extension) : null, + now, + schedule.system_id || null, + schedule.location_id || null, + schedule.availability_template || null, + ); + + return { ...schedule, id, meta: { lastUpdated: now } }; + } + + /** + * Insert a schedule, or replace it in place if a schedule with the same id + * already exists. Used by schedule synchronization so re-syncing an endpoint + * updates availability without deleting the row (which would cascade-delete + * its slots) and without touching appointments. + */ + async upsertSchedule(schedule: Schedule & { system_id?: string; location_id?: string; availability_template?: string }): Promise { + const id = schedule.id || this.generateId(); + const now = toNaiveISO(new Date()); + + const stmt = this.db.prepare(` + INSERT INTO schedules ( + id, active, service_category, service_type, specialty, actor, + planning_horizon_start, planning_horizon_end, comment, extension, meta_last_updated, + system_id, location_id, availability_template + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(id) DO UPDATE SET + active = excluded.active, + service_category = excluded.service_category, + service_type = excluded.service_type, + specialty = excluded.specialty, + actor = excluded.actor, + planning_horizon_start = excluded.planning_horizon_start, + planning_horizon_end = excluded.planning_horizon_end, + comment = excluded.comment, + extension = excluded.extension, + meta_last_updated = excluded.meta_last_updated `); stmt.run( @@ -634,6 +692,7 @@ export class SqliteStore implements FhirStore { schedule.planningHorizon?.start, schedule.planningHorizon?.end, schedule.comment, + schedule.extension ? JSON.stringify(schedule.extension) : null, now, schedule.system_id || null, schedule.location_id || null, @@ -643,6 +702,7 @@ export class SqliteStore implements FhirStore { return { ...schedule, id, meta: { lastUpdated: now } }; } + async getSchedules(query: FhirScheduleQuery & { system_id?: string }): Promise { let sql = 'SELECT s.*, sys.name AS system_name FROM schedules s LEFT JOIN systems sys ON s.system_id = sys.id WHERE 1=1'; const params: SqlParam[] = []; @@ -1324,8 +1384,15 @@ export class SqliteStore implements FhirStore { meta: { lastUpdated: row.meta_last_updated }, }; - // Build FHIR extensions array - const extensions: { url: string; valueString?: string }[] = []; + // Build FHIR extensions array. Start with any extensions stored verbatim + // (synced schedules persist their availableTime / slot-length / source + // marker here), then append the synthesized system/availability extensions. + const extensions: Record[] = []; + + const stored = this.parseJson(row.extension); + if (Array.isArray(stored)) { + extensions.push(...stored); + } if (row.system_name) { extensions.push({ @@ -1342,7 +1409,7 @@ export class SqliteStore implements FhirStore { } if (extensions.length > 0) { - (schedule as Schedule & { extension?: unknown[] }).extension = extensions; + schedule.extension = extensions; } return schedule; diff --git a/src/types/fhir.ts b/src/types/fhir.ts index 162388a..155fb6c 100644 --- a/src/types/fhir.ts +++ b/src/types/fhir.ts @@ -48,6 +48,8 @@ export interface Schedule extends FhirResource { actor: Reference[]; planningHorizon?: Period; comment?: string; + /** FHIR extensions (e.g. availableTime, slot length, sync source marker). */ + extension?: Array>; } /** @@ -299,6 +301,7 @@ export interface FhirStore { getSchedules(query: FhirScheduleQuery): Promise; getScheduleById(id: string): Promise; createSchedule(schedule: Schedule): Promise; + upsertSchedule(schedule: Schedule): Promise; updateSchedule(id: string, schedule: Partial): Promise; deleteSchedule(id: string): Promise; deleteAllSchedules(): Promise; From eabc140d91f0a79207c2c44d891f05d2f6245d15 Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 19:01:31 +0000 Subject: [PATCH 08/12] feat(sync): generate bookable slots from synced schedules Expand each synced schedule's availableTime extension into FHIR Slots during /sync-schedules, projecting the weekly pattern forward from today through planningHorizon.end. Slots are tagged with the schedule's serviceType (appointment types). Schedules whose horizon already ended report a skip note instead of producing past-dated slots. --- src/__tests__/scheduleSync.test.ts | 51 ++++++++++++++++++ src/scheduling/scheduleSync.ts | 83 ++++++++++++++++++++++++++++++ src/server.ts | 48 +++++++++++++++-- 3 files changed, 179 insertions(+), 3 deletions(-) diff --git a/src/__tests__/scheduleSync.test.ts b/src/__tests__/scheduleSync.test.ts index 3a316cb..9c19994 100644 --- a/src/__tests__/scheduleSync.test.ts +++ b/src/__tests__/scheduleSync.test.ts @@ -1,6 +1,7 @@ import { parseScheduleBundle, isSyncedSchedule, + buildSlotTemplate, SYNC_SOURCE_EXTENSION_URL, } from '../scheduling/scheduleSync'; @@ -105,3 +106,53 @@ describe('parseScheduleBundle', () => { ).toThrow(/collection/); }); }); + +describe('buildSlotTemplate', () => { + const [schedule] = parseScheduleBundle(COLLECTION_BUNDLE, SOURCE_URL).schedules; + + it('converts availableTime + slot-length into a forward-projected template', () => { + const { template } = buildSlotTemplate(schedule, '2026-02-01'); + expect(template).not.toBeNull(); + expect(template!.weekdays).toEqual(['mon', 'tue']); + expect(template!.blocks).toEqual([{ start: '08:00', end: '17:00', duration: 15 }]); + // Starts at today (after the horizon start), ends at the horizon end. + expect(template!.startDate).toBe('2026-02-01'); + expect(template!.endDate).toBe('2026-08-30'); + }); + + it('starts at the horizon start when it is still in the future', () => { + const { template } = buildSlotTemplate(schedule, '2025-01-01'); + expect(template!.startDate).toBe('2026-01-30'); + }); + + it('produces no template when the planning horizon has already ended', () => { + const { template, note } = buildSlotTemplate(schedule, '2027-01-01'); + expect(template).toBeNull(); + expect(note).toMatch(/in the past/); + }); + + it('defaults to weekdays when daysOfWeek is empty', () => { + const noDays = { + ...schedule, + extension: (schedule.extension || []).map((e) => + e.url === 'http://hl7.org/fhir/StructureDefinition/availableTime' + ? { ...e, availableTime: [{ availableStartTime: '08:00:00', availableEndTime: '17:00:00', daysOfWeek: [] }] } + : e + ), + }; + const { template } = buildSlotTemplate(noDays, '2026-02-01'); + expect(template!.weekdays).toEqual(['mon', 'tue', 'wed', 'thu', 'fri']); + }); + + it('returns no template when availableTime is missing', () => { + const noAvail = { + ...schedule, + extension: (schedule.extension || []).filter( + (e) => e.url !== 'http://hl7.org/fhir/StructureDefinition/availableTime' + ), + }; + const { template, note } = buildSlotTemplate(noAvail, '2026-02-01'); + expect(template).toBeNull(); + expect(note).toMatch(/availableTime/); + }); +}); diff --git a/src/scheduling/scheduleSync.ts b/src/scheduling/scheduleSync.ts index 170adbc..e5c6d80 100644 --- a/src/scheduling/scheduleSync.ts +++ b/src/scheduling/scheduleSync.ts @@ -12,6 +12,7 @@ */ import { Schedule } from '../types/fhir'; +import { AvailabilityTemplate } from './slotExpander'; /** Marker extension url stamped on every synced schedule (source endpoint). */ export const SYNC_SOURCE_EXTENSION_URL = @@ -21,6 +22,9 @@ export const SYNC_SOURCE_EXTENSION_URL = const AVAILABLE_TIME_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/availableTime'; +/** Suffix of WebChart's slot-length extension url (minutes per slot). */ +const SLOT_LENGTH_EXTENSION_SUFFIX = 'schedule-portal-time-slots'; + interface BundleEntry { resource?: Record; } @@ -139,4 +143,83 @@ export function isSyncedSchedule(schedule: { extension?: Array e?.url === SYNC_SOURCE_EXTENSION_URL); } +/** Format a Date as a local "YYYY-MM-DD" string. */ +function toDateString(d: Date): string { + return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`; +} + +export interface SlotTemplateResult { + /** The expandable template, or null when no bookable window could be derived. */ + template: AvailabilityTemplate | null; + /** Human-readable reason when no template/slots could be produced. */ + note?: string; +} + +/** + * Convert a synced Schedule's `availableTime` + slot-length extensions into an + * AvailabilityTemplate suitable for {@link expandSlots}. + * + * The weekly availability is projected *forward from today* through the + * schedule's `planningHorizon.end`. WebChart horizons are often historical + * single-day windows, so a schedule whose horizon already ended yields no + * slots β€” surfaced via the returned `note`. + */ +export function buildSlotTemplate( + schedule: Schedule, + today: string = toDateString(new Date()), +): SlotTemplateResult { + const ext = Array.isArray(schedule.extension) ? schedule.extension : []; + + const availExt = ext.find((e) => e?.url === AVAILABLE_TIME_EXTENSION_URL); + const availArr = availExt?.availableTime as + | Array<{ daysOfWeek?: string[]; availableStartTime?: string; availableEndTime?: string }> + | undefined; + const avail = Array.isArray(availArr) ? availArr[0] : undefined; + if (!avail || !avail.availableStartTime || !avail.availableEndTime) { + return { template: null, note: 'no availableTime defined' }; + } + + const slotExt = ext.find( + (e) => typeof e?.url === 'string' && (e.url as string).endsWith(SLOT_LENGTH_EXTENSION_SUFFIX), + ); + const slotMinutes = + slotExt && typeof slotExt.valueInteger === 'number' && (slotExt.valueInteger as number) > 0 + ? (slotExt.valueInteger as number) + : 30; + + const weekdays = + Array.isArray(avail.daysOfWeek) && avail.daysOfWeek.length > 0 + ? avail.daysOfWeek + : ['mon', 'tue', 'wed', 'thu', 'fri']; + + const ph = schedule.planningHorizon || {}; + const horizonStart = typeof ph.start === 'string' ? ph.start.slice(0, 10) : ''; + const horizonEnd = typeof ph.end === 'string' ? ph.end.slice(0, 10) : ''; + + // Project forward: never generate slots before today. + const startDate = horizonStart && horizonStart > today ? horizonStart : today; + const endDate = horizonEnd; + + if (!endDate) { + return { template: null, note: 'no planningHorizon end date' }; + } + if (endDate < startDate) { + return { template: null, note: `planning horizon ended ${endDate} (in the past)` }; + } + + const template: AvailabilityTemplate = { + startDate, + endDate, + weekdays, + blocks: [ + { + start: avail.availableStartTime.slice(0, 5), + end: avail.availableEndTime.slice(0, 5), + duration: slotMinutes, + }, + ], + }; + return { template }; +} + export { AVAILABLE_TIME_EXTENSION_URL }; diff --git a/src/server.ts b/src/server.ts index 5d32f5c..79c5669 100644 --- a/src/server.ts +++ b/src/server.ts @@ -17,7 +17,8 @@ import { locationRoutes } from './routes/locationRoutes'; import { directoryRoutes } from './routes/directoryRoutes'; import { smartSchedulingRoutes, getSmartSchedulingConfig } from './routes/smartSchedulingRoutes'; import { createMLLPServer, MLLPServer } from './hl7/socket'; -import { parseScheduleBundle } from './scheduling/scheduleSync'; +import { parseScheduleBundle, buildSlotTemplate } from './scheduling/scheduleSync'; +import { expandSlots } from './scheduling/slotExpander'; // Basic auth is now handled internally by apiKeyAuth as a fallback import { registerApiKeyAuth } from './auth/apiKeyAuth'; import { createMcpServer } from './mcp/mcpServer'; @@ -370,6 +371,8 @@ async function buildServer() { properties: { success: { type: 'boolean' }, imported: { type: 'number' }, + slotsGenerated: { type: 'number' }, + notes: { type: 'array', items: { type: 'string' } }, source: { type: 'string' }, }, }, @@ -426,11 +429,50 @@ async function buildServer() { // ── Parse + persist ── try { const { schedules } = parseScheduleBundle(bundle, parsed.toString()); + let slotsGenerated = 0; + const notes: string[] = []; + for (const schedule of schedules) { await store.upsertSchedule(schedule); + if (!schedule.id) continue; + + const label = + schedule.actor?.find((a) => a.display)?.display || `Schedule/${schedule.id}`; + const { template, note } = buildSlotTemplate(schedule); + + // Replace mode: clear previously-synced free slots before regenerating. + await store.deleteSlotsBySchedule(schedule.id, 'free'); + + if (!template) { + if (note) notes.push(`${label}: ${note}`); + continue; + } + + const { slots, warnings } = expandSlots(template, `Schedule/${schedule.id}`); + // Tag each generated slot with the schedule's appointment types. + if (Array.isArray(schedule.serviceType) && schedule.serviceType.length > 0) { + for (const slot of slots) slot.serviceType = schedule.serviceType; + } + if (slots.length > 0) { + const { count } = await store.createSlots(slots); + slotsGenerated += count; + } else { + notes.push(`${label}: no slots in date range`); + } + for (const w of warnings) notes.push(`${label}: ${w}`); } - request.log.info({ imported: schedules.length, source: parsed.toString() }, 'Schedules synchronized'); - return reply.send({ success: true, imported: schedules.length, source: parsed.toString() }); + + request.log.info( + { imported: schedules.length, slotsGenerated, source: parsed.toString() }, + 'Schedules synchronized', + ); + return reply.send({ + success: true, + imported: schedules.length, + slotsGenerated, + notes, + source: parsed.toString(), + }); } catch (err) { const message = err instanceof Error ? err.message : 'Failed to parse schedule bundle.'; return reply.code(400).send({ error: message }); From 9360427f8b8563eaab5e69cf37296a4c20151f27 Mon Sep 17 00:00:00 2001 From: Monika Date: Thu, 11 Jun 2026 19:15:19 +0000 Subject: [PATCH 09/12] fix(slots): remove orphaned date-offset unshift from Slot queries getSlots subtracted getDateOffsetDays() from the start/end query bounds via unshiftDate, but stored slots are never shifted on read (date shifting is applied once at seed-import time, per importSeedData). With a non-zero offset this shifted per-day slot queries backward, so the booking calendar listed dates (counts use a wide range) but selecting a day returned no slots ("No available times for this date"). Filter slot queries against stored absolute dates, consistent with getAppointments. --- src/store/sqliteStore.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/store/sqliteStore.ts b/src/store/sqliteStore.ts index a485a3d..2587676 100644 --- a/src/store/sqliteStore.ts +++ b/src/store/sqliteStore.ts @@ -848,18 +848,6 @@ export class SqliteStore implements FhirStore { return { ...slot, id, meta: { lastUpdated: now } }; } - /** - * Un-shift a date by the offset so it matches raw DB values. - * shiftDate adds offsetDays on read; this subtracts them for queries. - */ - private unshiftDate(isoDate: string): string { - const offsetDays = this.getDateOffsetDays(); - if (offsetDays === 0) return isoDate; - const date = new Date(isoDate); - date.setDate(date.getDate() - offsetDays); - return date.toISOString(); - } - async getSlots(query: FhirSlotQuery): Promise { let sql = 'SELECT * FROM slots WHERE 1=1'; const params: SqlParam[] = []; @@ -877,12 +865,12 @@ export class SqliteStore implements FhirStore { if (query.start) { sql += ' AND start >= ?'; - params.push(this.unshiftDate(query.start)); + params.push(query.start); } if (query.end) { sql += ' AND end <= ?'; - params.push(this.unshiftDate(query.end)); + params.push(query.end); } sql += ' ORDER BY start ASC'; From c108ae47618646254e823019a2cc5593c3338fbd Mon Sep 17 00:00:00 2001 From: Monika Date: Fri, 26 Jun 2026 20:06:16 +0000 Subject: [PATCH 10/12] docs(scheduler): add before/after screenshots for synced slot booking --- packages/fhir-scheduler/docs/SYNC-SLOTS.md | 42 ++++++++++++++++++ .../docs/screenshots/sync-after-dates.png | Bin 0 -> 108549 bytes .../docs/screenshots/sync-after-times.png | Bin 0 -> 99486 bytes .../docs/screenshots/sync-before-dates.png | Bin 0 -> 44865 bytes 4 files changed, 42 insertions(+) create mode 100644 packages/fhir-scheduler/docs/SYNC-SLOTS.md create mode 100644 packages/fhir-scheduler/docs/screenshots/sync-after-dates.png create mode 100644 packages/fhir-scheduler/docs/screenshots/sync-after-times.png create mode 100644 packages/fhir-scheduler/docs/screenshots/sync-before-dates.png diff --git a/packages/fhir-scheduler/docs/SYNC-SLOTS.md b/packages/fhir-scheduler/docs/SYNC-SLOTS.md new file mode 100644 index 0000000..e2fec9f --- /dev/null +++ b/packages/fhir-scheduler/docs/SYNC-SLOTS.md @@ -0,0 +1,42 @@ +# Schedule Sync β€” Bookable Slots (Before / After) + +Visual record for the change that makes **synced schedules generate bookable +slots**, and fixes the date-offset bug that hid available times. + +See also: [scheduleSync](../../../src/scheduling/scheduleSync.ts) Β· +[slotExpander](../../../src/scheduling/slotExpander.ts) Β· +[booking calendar](../src/components/SlotCalendar.tsx) + +## Before β†’ After + +| Before | After | +|---|---| +| ![No available dates for a synced provider](screenshots/sync-before-dates.png) | ![Available dates grid for a synced provider](screenshots/sync-after-dates.png) | +| A synced schedule persisted the provider but generated **no Slots**, so the booking calendar showed _"No available dates found."_ | Sync now expands the provider's `availableTime` into bookable `Slot`s, so every working day shows its open slot count. | + +### Selecting a date now shows times + +![Selectable time slots after picking a date](screenshots/sync-after-times.png) + +Previously, even when dates appeared, selecting one returned _"No available +times for this date"_ because `Slot` queries subtracted the demo date-offset +from the query window. The offset has been removed from `Slot` queries (it is +applied once at seed-import time), so per-day queries match the stored slots. + +## Screenshot metadata + +| Field | Value | +|---|---| +| Feature / screen | Booking calendar (`` widget) | +| Source route | `/scheduler/index.html#calendar/5` (Butler, Internist E.) | +| Viewport | 1100 Γ— 950, desktop (Chromium) | +| Capture date | 2026-06-26 | +| Data | Synthetic sandbox data (synced from a WebChart `rest/schedules` feed) | + +### How to reproduce + +1. Sync a provider whose planning horizon extends into the future + (`POST /sync-schedules` with the source feed `url`). +2. Open `/scheduler/index.html#calendar/` and select the provider. +3. Available dates list working days with slot counts; selecting a date lists + the open times. diff --git a/packages/fhir-scheduler/docs/screenshots/sync-after-dates.png b/packages/fhir-scheduler/docs/screenshots/sync-after-dates.png new file mode 100644 index 0000000000000000000000000000000000000000..d49535e27f77417d1ec13b0dbe60baa41b81a50e GIT binary patch literal 108549 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

>DmfWhV@VU)jd0=2&-#hJ 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 UpL_TN@CuxysNCmL;V(Y_2fY{J7XSbN literal 0 HcmV?d00001 diff --git a/packages/fhir-scheduler/docs/screenshots/sync-after-times.png b/packages/fhir-scheduler/docs/screenshots/sync-after-times.png new file mode 100644 index 0000000000000000000000000000000000000000..81042791e7403c96467aa7ab2ebd5cf40351c924 GIT binary patch literal 99486 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ΜUm^;$bVIYAO)$6R9_XAS6HRTv^f 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%0D;;3X8i%}pZXXu`-tt8{wzB@JS=~6 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%0D_RIyS;(_s5|;n0uL|$G2Y#JzAY^G6aX0>H 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 j3EEN<3ufe{=_3o7qjkK$5^p+?s(rc)JsE8#1 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 j|I;7mfx~$wN=fm=_y Date: Fri, 26 Jun 2026 17:52:34 -0400 Subject: [PATCH 11/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- packages/fhir-scheduler/src/provider-view.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/fhir-scheduler/src/provider-view.tsx b/packages/fhir-scheduler/src/provider-view.tsx index 535e595..0d1f164 100644 --- a/packages/fhir-scheduler/src/provider-view.tsx +++ b/packages/fhir-scheduler/src/provider-view.tsx @@ -71,6 +71,7 @@ function ProviderView() { Import Data