Skip to main content

Patient Chart Service — Epics

Service: patient-chart-service Epic prefix: CHART-EPIC Last updated: 2026-04-18

Epics


CHART-EPIC-01 — Problem List (Longitudinal Condition Management)

FieldValue
Issue typeEpic
SummaryCRUD lifecycle for patient problems with ICD/SNOMED coding
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S0
Componentspatient-chart-service, terminology-service
Fix versionM0
FR referencesFR-CHART-001, FR-CHART-002, FR-CHART-003
Legacy FR refsFR-PROB-001..005 (from _sources/problem-list/)
Dependenciescross-service: TERM-EPIC-01
Rollup statusNot started

Business outcome: Clinicians maintain an accurate, coded, longitudinal problem list for every patient, enabling clinical decision support, population health analytics, and FHIR interoperability.

Description: Implement the full Problem aggregate lifecycle: add, update, resolve, inactivate, entered-in-error, and reactivate. Problems must be coded with ICD-10/11 or SNOMED CT via terminology-service lookup or deferred as free-text with a codingPending flag. Domain invariants enforce no duplicate active problems for the same coded condition. Status-change history is preserved in ProblemHistoryEntry. Events are emitted for every transition and consumed by population-health-service for HMIS indicator exports. FHIR Condition read surface exposed via interop-service.

Stories: CHART-US-001, CHART-US-002, CHART-US-003


CHART-EPIC-02 — Allergy and Intolerance Management

FieldValue
Issue typeEpic
SummaryAllergy/intolerance CRUD with NKA/NKDA rules and advisory API
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S0
Componentspatient-chart-service, terminology-service, medication-service, orders-service
Fix versionM0
FR referencesFR-CHART-004, FR-CHART-005, FR-CHART-006
Legacy FR refsFR-ALG-001..006 (from _sources/allergies/)
DependenciesCHART-EPIC-01, cross-service: MED-EPIC-01, ORDERS-EPIC-01
Rollup statusNot started

Business outcome: Clinicians maintain a complete, deduplicated allergy record that drives real-time drug safety checks at order entry and e-prescribing, reducing adverse drug event risk.

Description: Implement the Allergy aggregate with NKA and NKDA exclusive-status rules enforced as domain invariants. The advisory API (GET /v1/allergies/advisory) provides synchronous allergy lookup for medication-service and orders-service at order entry. Reactions (manifestation + severity) stored per allergy. FHIR AllergyIntolerance read surface exposed. Events allergy.added.v1 consumed by medication-service to refresh its allergy-safety-check cache. Duplicate detection prevents the same coded substance from appearing twice as active.

Stories: CHART-US-004, CHART-US-005, CHART-US-006, CHART-US-007


FieldValue
Issue typeEpic
SummaryLOINC-coded vitals recording with range validation and trending
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S0
Componentspatient-chart-service, terminology-service
Fix versionM0
FR referencesFR-CHART-007, FR-CHART-008, FR-CHART-009
Legacy FR refsFR-VIT-001..007 (from _sources/vitals/)
DependenciesCHART-EPIC-01
Rollup statusNot started

Business outcome: Clinical staff capture structured, LOINC-coded vital signs at point of care with automatic range validation and abnormal flagging, supporting early deterioration detection and population health trend analytics.

Description: Implement VitalsSet + Observation aggregate pair. Each VitalsSet groups measurements taken at one time by one performer. BMI is derived automatically when height + weight are present. Range validation policy is configurable per facility (warn vs reject). Abnormal flag computation emits vitals.abnormal_flagged.v1 which communication-service consumes for notifications. Correction is a new-version operation (immutable original). FHIR Observation (vital-signs category) read surface exposed. Trend query API supports graphing over configurable date range.

Stories: CHART-US-008, CHART-US-009


CHART-EPIC-04 — Clinical Notes Authoring and Signing

FieldValue
Issue typeEpic
SummaryStructured note authoring with draft→sign lifecycle and cosign routing
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S0
Componentspatient-chart-service, document-service, provider-directory-service
Fix versionM0
FR referencesFR-CHART-010, FR-CHART-011, FR-CHART-012
Legacy FR refsFR-NOTES-001..008 (from _sources/clinical-notes/)
DependenciesCHART-EPIC-01, cross-service: DOC-EPIC-01
Rollup statusNot started

Business outcome: Clinicians author structured clinical notes using configurable templates, sign them with full legal provenance, and route them for cosigner attestation when required — creating an immutable signed record that is the legal basis for clinical care documentation.

Description: Implement the ClinicalNote aggregate with draft → pending_cosign → signed → amended lifecycle. Note sections are defined by template (SOAP, H&P, consult, procedure, discharge). Signing is atomic with signedAt and signedBy. On sign, a PDF is uploaded to document-service and referenced via DocumentReference. Cosign workflow routes to an attending when policy requires (configurable per author role + note type). Addendum appends to a signed note without modifying original content. NoteAddendum is append-only. Signed note content is immutable (CHART_NOTE_SIGNED_IMMUTABLE enforced).

Stories: CHART-US-010, CHART-US-011, CHART-US-012


CHART-EPIC-05 — Chart Composition (Summary, Timeline, Banner)

FieldValue
Issue typeEpic
SummaryChart summary, timeline, and banner composition across all owned and remote aggregates
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S1
Componentspatient-chart-service, medication-service, laboratory-service, radiology-service
Fix versionM1
FR referencesFR-CHART-013, FR-CHART-014, FR-CHART-015
Legacy FR refsFR-PCHART-001..004 (from _sources/patient-chart/)
DependenciesCHART-EPIC-01, CHART-EPIC-02, CHART-EPIC-03, CHART-EPIC-04
Rollup statusNot started

Business outcome: Clinicians see a unified chart view at the point of care that assembles the full clinical picture — problems, allergies, vitals, notes, medications, labs, imaging, immunizations, care plans — in one API call, reducing click fatigue and patient safety risk from fragmented information.

Description: Implement GetBannerQuery, GetSummaryQuery, and GetTimelineQuery. Banner provides demographics proxy + active alerts + encounter context. Summary fans out to owned aggregates + medication/lab/radiology/immunizations/care-plan services with per-widget scoping. Timeline is cursor-paginated, merge-sorted over owned events + downstream read events. All downstream fan-out calls have circuit breakers; partial summary is served when a dependency fails. Summary widget composition must complete in < 800 ms P95.

Stories: CHART-US-013, CHART-US-014, CHART-US-015, CHART-US-016


CHART-EPIC-06 — AI-Assisted Clinical Notes

FieldValue
Issue typeEpic
SummaryAI-assist integration for note drafting with mandatory provenance
StatusTo Do
PriorityShould
Labelsservice:patient-chart-service, domain:patient_chart, slice:S3
Componentspatient-chart-service, ai-gateway-service
Fix versionM3
FR referencesFR-CHART-016, FR-CHART-017
Legacy FR refsFR-NOTES-009..010 (STT_APSO_INTEGRATION, from _sources/clinical-notes/)
DependenciesCHART-EPIC-04, cross-service: AIGW-EPIC-01, AIGW-EPIC-03
Rollup statusNot started

Business outcome: Clinicians reduce documentation burden by accepting AI-generated note suggestions with full traceability — every AI-assisted section carries an immutable NoteAIProvenance record linking the content to the model, version, and clinician acceptor.

Description: Implement AcceptAIChunkCommand in the ClinicalNote use case layer. The command calls ai-gateway-service's HITL-accepted event and writes a NoteAIProvenance row atomically with the note section update. No AI content enters a note section without an explicit clinician accept action. If provenanceId is absent, CHART_AI_PROVENANCE_MISSING is raised. STT (speech-to-text) APSO drafts arrive via the standard AI-assist contract from ai-gateway-service. patient_chart.note.ai_accepted.v1 is emitted after each accepted chunk.

Stories: CHART-US-017, CHART-US-018


CHART-EPIC-07 — Chart Safety Controls (Break-Glass, Sensitive Segments, Snapshot)

FieldValue
Issue typeEpic
SummaryBreak-glass access, sensitive segment policy, and handoff snapshot
StatusTo Do
PriorityShould
Labelsservice:patient-chart-service, domain:patient_chart, slice:S2
Componentspatient-chart-service, audit-service
Fix versionM2
FR referencesFR-CHART-018, FR-CHART-019, FR-CHART-020
Legacy FR refsFR-PCHART-005..007
DependenciesCHART-EPIC-05, cross-service: AUDIT-EPIC-01
Rollup statusNot started

Business outcome: Unauthorized chart access is prevented by sensitive-segment policy; emergency access is enabled via break-glass with full audit capture; handoff snapshots enable safe patient transitions between care settings.

Description: Break-glass: InvokeBreakGlassCommand requires a reason string and duration; emits breakglass.invoked.v1 to audit-service; grants time-limited chart access. Sensitive-segment: policy engine (config-service) marks certain categories (mental health, sexual health) as restricted; CHART_SENSITIVE_NOT_AUTHORIZED enforced. Snapshot export: ExportSnapshotCommand assembles active problems + allergies + recent vitals + critical results + active goals + current medications as a structured composition; emits chart.snapshot_exported.v1; gated by permission and audit logged.

Stories: CHART-US-019, CHART-US-020, CHART-US-021


CHART-EPIC-08 — Five-Module Consolidation Migration

FieldValue
Issue typeEpic
SummaryMigrate five legacy module data and consumer services to unified service
StatusTo Do
PriorityMust
Labelsservice:patient-chart-service, domain:patient_chart, slice:S0
Componentspatient-chart-service, platform-eng
Fix versionM1
FR referencesFR-CHART-021
Legacy FR refs
DependenciesCHART-EPIC-01..05, cross-service: MED-EPIC-01, ORDERS-EPIC-01
Rollup statusNot started

Business outcome: All clinical chart data is in a single authoritative service with one RLS boundary, one outbox, and one event stream — eliminating data inconsistency across five legacy schemas.

Description: Execute the phased migration defined in MIGRATION_PLAN.md. Includes: idempotent ETL scripts per module; legacy_id_map table for ID remapping; dual-publish NATS subjects during transition; consumer cutover for medication-service, orders-service, population-health-service, patient-portal-service; legacy module decommission post-validation. Each migration script must exit with zero row-count discrepancy versus legacy source.

Stories: CHART-US-022, CHART-US-023