Skip to content
← OPEN
Roadmap

What's built, what's measured, what isn't

This page mirrors the platform's own named-gaps tracking, in plain words. See the commercial suite's status page for the per-product met/not-met/not-measured counts — this page is about the shared spine underneath them.

Built and falsified
  • The jurisdiction-neutral pack interface (18 fields on the pack dataclass, three Protocols) and two registered packs (us real, xx a deliberate empty stub).
  • A consent gate that reads a record's own pack to decide whether secondary use is allowed, and a patient-release policy that reads the active pack — the two callers of the pack today. Nothing else in the platform changes behaviour when a pack is swapped.
  • A capture-gating mechanism that refuses to enable without a valid, unexpired, jurisdiction-matched approval, and an exporter that never returns a raw record.
  • A standing scanner that fails the build if a surface for exchanging patient records for money — in any shape — is added anywhere in the codebase.
  • A developer kit that ships with the source: a country-pack generator and validator, a synthetic-patient generator, a CSV code-list loader, a CSV patient importer that refuses to write without an explicit synthetic-only acknowledgement, an environment diagnostic, a translator's export/import tool, and one command that runs them all end to end. An API cookbook whose every recipe is executed by a test, and a starter kit of copy-paste prompts for an AI coding agent.
  • A clean source-export script for the free edition and a standalone receipt-specification bundle, each with tests proving no key material, private paths or commercial modules are included; the specification bundle's conformance suite runs from a clean extraction with only its own requirements file.
  • A community build (make community): an image containing only the free edition's modules, with a test proving the commercial ones are absent from the artifact, not merely switched off.
Measured, still open
  • A batch of US-only tokens remain outside the one directory allowed to hold them — a standing test is deliberately red until they're migrated. (This page used to quote a specific count; it had drifted by one when it was checked again days later, because the count never said what token shape it matched or when it ran, so the number is removed until the test states its own methodology.)
  • 28 production-code dependencies run from the platform's core into its application layer — the one figure that's held stable across every recent recount. The broader total (which also counts test-only imports and sys.path entries) has been reported as 115, as 118, and separately as 110 imports plus 9 sys.path entries, all within the same week — so this page states only the stable figure. A standing test is deliberately red until the production boundary closes.
  • An i18n scaffold now exists in platform/web (one lookup function, per-locale JSON catalogues, a completeness test, 52 English keys across the rail, top bar, patient banner labels and the purpose-of-use screen, and a spreadsheet export/import tool for translators) — but four locale files are unreviewed worked examples, and launcher/web has no scaffold at all. The product stays English-only until, for any given screen and language, a named clinical reviewer has signed off.
  • The published community-build images are single-architecture (arm64 only) even though the publish script declares both platforms — its build fallback silently produced single-arch. Most clinic servers are x86-64 and could not run them today.
  • The openmrs/ integration slot named in the addendum has not been created.
Not started
  • A chosen licence and inbound contribution terms (counsel's decision).
  • A public repository of any kind.
  • A funded community-edition maintainer.
Every number on this page is measured against the platform's own tests and tracking files, not estimated. Where a tracking file doesn't state a number, this page doesn't invent one.