Skip to content

Roadmap

anarchie is primarily a learning and experimentation project, so the roadmap optimises for learning something at each step and for always having a working artefact, rather than racing to feature-completeness. Each phase produces something runnable and inspectable.

The detailed roadmap - and the open and deferred work - lives in specs/roadmap.md. This page is a reader-friendly summary of what has shipped and what is planned.

Shipped

Phase 1 - The Reference Model in Rust

Native Rust types for the core Reference Model, with byte-stable canonical JSON (de)serialisation proven idempotent and diff-friendly.

Phase 2 - The file store and git

A durable, versioned, inspectable store. One git repository per EHR, the working-tree-holds-head convention, and the CONTRIBUTION-as-commit mapping.

Phase 3 - Validation

Reject invalid data at the door. Reference Model invariants are checked against the typed RM tree; archetype constraints are checked against the canonical JSON guided by an Archetype Object Model tree. Validation runs on every commit, so non-conformant data never reaches the git history.

Phase 3.5 - Starter templates

anarchie init seeds a deployment with a curated, IPS-aligned set of bundled starter Operational Templates - the full Tier-1 International Patient Summary span (vital signs, problems, allergies, medications, laboratory results, immunisations, procedures, and an encounter note) - so a fresh CDR can store real clinical data immediately. Pass --minimal for an empty CDR.

Phase 4 - Query (AQL)

A query engine over a path-extraction index - the read model (CQRS), rebuildable from the canonical files and never authoritative.

  • anarchie index - build or refresh the derived query index.
  • anarchie aql - run an ad-hoc AQL query against the index.
  • anarchie query - register, list, and run stored (named) AQL queries.

Phase 5 - Services

The store, exposed over the wire.

  • anarchie serve - the openEHR REST API over HTTP (binds to localhost).
  • anarchie mcp - a stdio MCP server exposing the store to LLM agents.

Phase 6 - Integrity and packs

Store integrity checking, and sets of Operational Templates installable as a unit.

  • anarchie fsck - re-validate every stored Composition against the RM (and its template), independent of the index.
  • anarchie pack add - install a bundled pack (e.g. ips-core) by name or from a local directory.
  • anarchie pack list - list the bundled packs available to install.
  • anarchie knowledge inventory - deterministically inventory a local CKM mirror checkout, including provenance, licences, dependencies, and parse limitations.
  • anarchie knowledge resolve - apply source policy and hard-dependency closure to produce deterministic knowledge.lock; explain decisions with anarchie knowledge why.
  • anarchie knowledge status - report whether the deployment lock is unresolved, current, or stale against its manifest and source checkout.

Designed and planned

Theme Highlights
Conformance Cross-check the validator against Archie, and the REST/AQL layer against the EHRbase sandbox - test-time oracles only.
Analytics A DuckDB/Parquet path alongside the AQL engine for column-oriented analytics.
Template ingest Ingesting .opt XML exported from Archetype Designer / the ADL Workbench.
Serialisation Web Template generation, and FLAT / STRUCTURED conversion at the REST boundary.
Terminology sct SNOMED CT terminology binding.
Convergence gitehr convergence.
Projection FHIR / IPS projection of stored data.
Distribution cargo install and a curl \| sh one-liner work today (see Install); the crates.io publish is wired up (fires on the first tag), and prebuilt binaries (cargo-dist), Homebrew, Windows installers, and .deb / .rpm are planned.
Interfaces A TUI / GUI over the store.
Conventions House-style conformance - REUSE + SPDX headers, a global --format, shell completions, the s/version++ + cargo-dist release cascade, and dependabot.

No item depends on a later one to be useful. Each is intended to teach something - the next big open question being how much of AQL a DuckDB-over-JSON approach can handle before a bespoke engine is unavoidable.