Skip to main content
fi-fhir docs

fi-fhir Component Status Matrix

Single source of truth for component maturity, test coverage, and freshness. Refresh with make docs-status after significant merges.

Summary

MaturityCountDescription
Production22Stable, tested, deployed
Beta9Feature-complete, needs coverage or hardening
Alpha5Functional but limited testing or scope
Planned2Designed but not yet implemented (tracked via #7, #8)

Parsers (internal/parser/*)

ComponentPathMaturityCoverageNotesLast Updated
HL7v2 Parserinternal/parser/hl7v2/Production84.3%Legacy adapters plus strict published A01 path2026-07-13
CSV Parserinternal/parser/csv/Production82.0%Schema inference for patient/lab records2026-01-14
EDI X12 Parserinternal/parser/edi/Production73.9%837P, 835, 270/271, 276/277; loop parsing2026-01-14
EDI Companion Guidesinternal/parser/edi/companion/Production89.1%Medicare, BlueCross, United built-in guides2026-01-14
CDA/CCDA Parserinternal/parser/cda/Production85.8%Namespace-aware XML, section handlers2026-02-07
FHIR Parserinternal/parser/fhir/Production95.2%FHIR R4 resource ingestion2026-01-14

Core Libraries (pkg/*)

ComponentPathMaturityCoverageNotesLast Updated
Events (canonical model)pkg/events/Production80.5%Immutable semantic event types2026-03-09
Event Sourcingpkg/eventsourcing/Production72.7%Store, projections, snapshots, sagas, outbox2026-02-27
ES Projectionspkg/eventsourcing/projections/Production88.9%Patient timeline, stats, active encounters2026-01-14
Configpkg/config/Production89.3%Layered loading (defaults → file → env), secrets2026-02-27
Integration Contractspkg/integration/Alpha89.8%Exact provenance plus deployment policy and strict runtime invariants2026-07-14
Source Profilespkg/profile/Beta71.9%Inference, linting, vendor templates2026-02-27
Validatorspkg/validate/Production98.2%NPI, MBI, SSN, DEA; Luhn/checksum2026-01-09
FHIR Mapperpkg/fhir/Production75.2%24+ US Core resources, validation2026-01-19
ETL Pipelinepkg/etl/Beta84.8%Source/sink framework, CLI commands2026-02-27
Storagepkg/storage/Beta56.5%Abstraction layer for file/S3/MinIO2026-02-27
Terminology (core)pkg/terminology/Production84.2%LOINC, ICD-10, fuzzy matching, UMLS2026-03-07
Terminology DBpkg/terminology/db/Beta22.5%PostgreSQL loaders; needs testcontainers2026-03-07
Terminology Uploadpkg/terminology/upload/Beta85.7%Mapping file upload pipeline2026-02-03
Terminology Suggestpkg/terminology/suggest/Beta83.4%Suggestion engine; httptest-based coverage2026-02-28
Terminology Semanticpkg/terminology/semantic/Production95.0%Embedding-based semantic search2026-02-28
Terminology Indexpkg/terminology/index/Production92.2%Vector indexing; httptest + mock coverage2026-03-03
Patient Matchingpkg/matching/Production85.3%Deterministic + probabilistic, MPI, batch2026-02-27
LLM Clientpkg/llm/Production86.3%Multi-provider client, retry, embeddings2026-03-06
LLM Copilotpkg/llm/copilot/Production98.0%†CEL-based copilot + workflow generation2026-02-08

Internal Services (internal/*)

ComponentPathMaturityCoverageNotesLast Updated
Workflow Engineinternal/workflow/Production78.6%Actions plus strict DSL v1 and pure planner2026-07-13
Integration Processorinternal/integration/processor/Alpha84.5%Shared A01 preview/production kernel plus PostgreSQL atomic admission2026-07-14
Integration Lifecycleinternal/integration/lifecycle/AlphaPostgreSQL versioned state, immutable releases, deployed-only MLLP admission2026-07-15
HL7v2 MLLP Ingressinternal/integration/mllp/AlphaLifecycle-gated durable ACK, TLS/client/capacity bounds; GitOps pending2026-07-15
HL7v2 HTTP Ingressinternal/integration/ingress/AlphaBearer/HMAC, bounded body, durable response; GitOps activation pending2026-07-14
Delivery Reliabilityinternal/integration/delivery/AlphaPostgreSQL leases/retry/circuit/DLQ/recovery plus real Kafka publisher2026-07-15
Batch Ingestioninternal/integration/batch/AlphaS3/SFTP streaming, PostgreSQL checkpoint/resume, verified archive2026-07-16
Integration Sessionsinternal/integration/session/AlphaRestart-safe workspace, simulation, signed tested-revision publication, exact lifecycle promotion2026-07-18
Retention Purgeinternal/integration/retention/AlphaPer-tenant audited retention policy plus multi-replica purge by tombstone; PostgreSQL-proved2026-08-09
GraphQL APIinternal/api/graphql/Beta9.5%*Bounded POST plus session-only SSE; WebSocket disabled2026-07-16
FHIR Subscriptionsinternal/fhir/subscription/Production83.7%Bidirectional; client + webhook receiver2026-02-27
Terminology Autorouteinternal/terminology/autoroute/Beta92.1%Routing engine + serve-time pending-expiry sweep + review webhook notifier2026-08-08
Terminology Workflowinternal/terminology/workflow/Production95.7%Temporal workflow + activity + worker unit tests2026-03-03
LLM Explaininternal/llm/explain/Production99.7%Warning + workflow explanation generation2026-02-28
LLM Extractinternal/llm/extract/Production84.3%Structured data extraction from documents2026-03-09
LLM Qualityinternal/llm/quality/Production93.8%Data quality analysis2026-01-23

* GraphQL coverage is low because gqlgen generates ~2000 resolver stubs; actual hand-written resolver logic is well-tested (80.8% in resolvers/ sub-package).

† Copilot coverage is per-package (leaf package not exercised cross-package).

Slice 1.1c shipped in MR !96; main pipeline 18621 passed every blocking gate and published matching API/UI images. GitOps MRs !368 and !369 rolled out their verified digests, passed public auth/origin/containment/provenance/PHI probes, and resumed healthy automation. Exact evidence is recorded in .loom/iteration-plan-phase-1-slice-1-1c-authenticated-preview-adapters.md.

Slice 1.3 adds exact POST /v1/hl7v2 as the first production adapter. MR !99 pipeline 18898 passed 32/32 jobs; required job 182088 ran all 20 PostgreSQL 16 restart, duplicate-collapse, profile-divergence, IDE-parity, preview-side- effect, and leakage assertions. Merge commit 48d156d2 repeated the proof in main job 182694; pipeline 18951 passed 35/35 and published digest-addressed API/UI images. Production GitOps activation and external outbox delivery remain intentionally pending.

Slice 2.1 adds the backend deployment lifecycle contract and PostgreSQL catalog. It keeps legacy integration revision digests stable, records failed and successful connection checks, enforces optimistic lifecycle transitions, prevents revision/ release/history mutation with database triggers, and resolves an exact release only while deployed. MR !101 pipeline 19014 passed 32/32, including lifecycle job 183463; merge commit a95bb44f repeated the lifecycle proof in main job 183702. That main run exposed a pre-existing concurrent receipt primary-key conflict. MR !102 changed receipt insertion to arbitrate either deterministic unique key before the authoritative tenant/idempotency lookup; pipeline 19045 passed 24/24. Final main pipeline 19052 passed 26/26, including durable- submission job 183938 and lifecycle job 183940.

Slice 2.2 adds the optional production MLLP consumer of that catalog. A strict content-addressed UTF-8 listener applies framing/timeouts, TLS 1.3 mutual auth, CIDR, connection, deployed capacity, and ACK policy. Positive ACKs follow the atomic submission commit, and transaction-scoped admission serializes with pause/retire. Unit/race tests and required CI test discovery pass locally; the PostgreSQL 16/TCP proof passed in MR !104 job 184996; pipeline 19175 passed 33/33 and merged as 6205fa39. Main pipeline 19193 passed 36/36 and independently repeated the proof in job 185093. GraphQL and Mapping Studio lifecycle controls and production GitOps activation remain open.

Slice 2.3 adds a PostgreSQL-leased delivery worker, bounded retry and circuit state, durable DLQ, authenticated/idempotent replay and resubmit, and a real Kafka producer with stable attempt keys. Local unit/race/full-suite gates pass; MR !106 pipeline 19226 passed 34/34 with required job 185433 and merged as ca968fbf. Main pipeline 19235 passed 37/37 and independently repeated the PostgreSQL 16/Kafka proof in job 185505.

Slice 2.4 adds an optional lifecycle-gated S3/SFTP batch worker with bounded concatenated-HL7v2 streaming, release-pinned PostgreSQL leases/checkpoints, deterministic admission identity, mandatory S3 versioning/SFTP host-key trust, and verified digest-addressed archive-before-delete. MR !108 pipeline 19331 passed 35/35 with required provider recovery job 186259 and merged as ed32915f. Main pipeline 19344 passed 38/38 and independently repeated the PostgreSQL 16/MinIO/SSH-SFTP proof in job 186476. Production GitOps activation remains intentionally pending.

Slice 3.1 adds an opt-in PostgreSQL Integration Session workspace with durable sessions, redacted-by-default samples, AES-256-GCM explicit retention, append-only artifact revisions, immutable terminal runs, accepted decisions, reopenable exports, and exact profile revision/digest execution. MR !111 pipeline 19409 passed 37/37 with required restart/raw-PHI job 187425 and merged as 15746ccd. Main pipeline 19424 passed 40/40 and independently repeated the proof in job 187618. Production GitOps activation remains intentionally pending.

Slice 3.3 adds exact-revision workflow draft simulation over server-owned immutable session runs. The production pure planner emits PHI-minimal event/route/transform/action traces without executing transforms or actions; PostgreSQL persists those traces and deterministic comparison deltas across restart. Workflow Builder sends revision and run identities rather than browser event payloads. MR !122 pipeline 19872 passed 37/37 with required session job 191685 and benchmark job 191688, and merged as d42f7233; main pipeline 19878 passed 40/40 with independent session job 191786 and benchmark job 191789. Slice 3.4 adds append-only signed publications that prove session profile/workflow content against exact production references before lifecycle approval and deployment. Source Profile reviews now retain a real baseline diff and required actor-attributed change summary. Production GitOps activation remains intentionally pending.

Infrastructure

| CLI | cmd/fi-fhir/ | Production | 83.9% | parse, workflow, config, etl, terminology, eventstore, subscription | 2026-03-24 | | TypeScript SDK | sdk/typescript/ | Production | — | CLI wrapper + type definitions; npm publishable | 2026-01-19 | | UI / Mapping Studio | ui/src/ | Beta | — | Deployed credential gate; bearer/raw samples stay in tab memory | 2026-07-13 | | Helm Chart | deploy/helm/fi-fhir/ | Production | — | Full templating; HPA, PDB, ServiceMonitor | 2026-02-03 | | Kubernetes Manifests | deploy/kubernetes/ | Production | — | Kustomize base + production overlay | 2026-02-03 | | CI/CD Pipeline | .gitlab-ci.yml | Production | — | Blocking lint, test, security, build, scan, and API/UI publish gates | 2026-07-13 | | Grafana Dashboards | dashboards/grafana/ | Production | — | Workflow overview dashboard | 2026-01-14 | | Alerting Rules | dashboards/alerting/ | Production | — | Prometheus rules + K8s PrometheusRule CRD | 2026-01-14 | | OpenAPI Spec | api/openapi.yaml | Production | — | REST API documentation | 2026-01-14 | | Docker | Dockerfile | Production | — | Multi-stage distroless build | 2026-01-14 |


Coverage Legend

RangeIndicator
≥ 80%✅ Good
60–79%⚠️ Acceptable
< 60%❌ Needs work

Refreshing This Document

make docs-status        # Re-run tests + generate fresh data
make docs-status-quick  # Use existing coverage.out (faster)
make docs-status-check  # Check for coverage drift (CI gate)

Contributor Workflow

  1. After changing Go source code, coverage percentages may shift.
  2. CI runs test:docs-status to detect drift > 5% between this file and computed values.
  3. If the job fails, regenerate: make docs-status then commit the updated docs/STATUS.md.
  4. The drift threshold is configurable via DRIFT_THRESHOLD env var (default: 5.0%).

The scripts/docs-status.sh --check-drift script compares computed coverage from coverage.out against the values in this file and exits non-zero when drift exceeds the threshold.

fi-fhir Component Status Matrix | fi-fhir docs