Skip to content

OpenMed v2.1.0

OpenMed 2.1.0 is the first feature release on the stable v2 line. It expands local-first clinical extraction, structured privacy, terminology grounding, interoperability, evaluation, and on-device tooling without removing a public Python symbol.

Release date: 2026-08-11.

The release scope covers every current-master change after the v2.0.0 integration boundary at b9ab7a3d. The current published v2.0.0 tag resolves to rewritten-history commit 94ace7d and is an ancestor of master through that boundary. API compatibility compares the published tag tree directly with the v2.1.0 tree; the integration ledger starts after the boundary.

Highlights

  • Clinical extraction: note-type and section routing, temporal and coreference graphs, calibrated relations, radiology and discharge-summary structures, dosing sanity checks, clinical fact recall, and span-grounded faithfulness.
  • Grounding and interoperability: offline terminology snapshots, hybrid grounding, OMOP loading, FHIR and OpenEHR export, local cohort phenotype resolution, and typed clinical MCP workflows.
  • Structured privacy: declarative generalization, relational k-anonymity, streaming tabular anonymization, aggregate-only differential privacy, attacker-model risk reports, and review-first column semantics.
  • Multilingual and multimodal intake: Unicode normalization, Belgian and Swiss national-ID validation, RTF and DICOM-SR extraction, OCR layout reconstruction, and opt-in YASBD sentence segmentation.
  • On-device and distributed adapters: Android Unicode-scalar parity and grapheme repair, packaged R8 consumer rules, a 753-entry on-device model catalog derived from the 2,266-entry public manifest snapshot, a cross-platform Flutter FFI plugin, and optional Beam, Ray Data, PySpark, Haystack, and LangGraph paths.
  • Evaluation and release safety: DirectID evidence, deterministic safety sweeps, signed scorecards, cross-corpus and cross-lingual evaluation, staged promotion, last-green rollback, public-API checks, and fail-closed release readiness.

Compatibility

The static public Python comparison grows from 20,538 to 31,619 symbols: 11,081 additions, zero removals or narrowed signatures, and zero new deprecations. The REST surface grows additively from 15 to 17 paths and from 12 to 15 component schemas with POST /cohort/resolve and POST /omop/load.

Android now enforces the documented cross-platform Unicode scalar offset contract. Applications that passed OpenMed offsets directly to Kotlin UTF-16 string APIs for text containing non-BMP characters must use EntityPrediction.utf16SpanIn. See the 2.0-to-2.1 migration guide for details and the complete cross-surface review.

The bundled Android model catalog is generated from public manifest metadata only and contains 753 permissively licensed ONNX/TFLite entries in this release. Its build now fails if that derivation is empty, preventing a successful AAR from shipping a catalog that makes the documented ModelCatalog.entries.first() flow unusable.

The prior Tamil default checkpoint is no longer present in the public Hub catalog. Tamil now uses the same explicit public placeholder convention as Russian, so this release advertises 33 model-backed PII languages across 35 supported routes. The compatibility alias remains available, but production Tamil extraction requires caller-qualified weights and evaluation.

Install and upgrade

The immutable tag drives package and image publication. Registry availability can lag the source release while those workflows complete, so automation should verify the required coordinate before deployment.

Python

pip install --upgrade "openmed==2.1.0"
pip install --upgrade "openmed[hf,zh,indic]==2.1.0"

Browser and Node.js

npm install openmed@2.1.0

The web package remains unscoped and provides ESM and CommonJS exports.

Swift

dependencies: [
    .package(url: "https://github.com/maziyarpanahi/openmed.git", from: "2.1.0"),
]

Swift package sources are unchanged in this release range.

Android

dependencies {
    implementation("com.github.maziyarpanahi:openmed:v2.1.0")
}

Container and Helm

After publication, the immutable container coordinate is ghcr.io/maziyarpanahi/openmed:v2.1.0. The Helm chart's app version and default image tag are synchronized to 2.1.0; explicit release-image selection uses image.tag=v2.1.0.

Privacy and clinical boundaries

OpenMed keeps local processing as the default. Model downloads and optional remote integrations are explicit boundaries; after required artifacts are present, core PHI processing does not require a cloud service. Telemetry stays off by default, and release evidence uses hashes, counts, offsets, and provenance rather than raw identifiers.

No de-identification system can guarantee zero residual risk. Validate direct identifier recall, leakage, span integrity, language coverage, policy behavior, and quantized-model deltas on the exact deployment path.

Clinical extraction is assistive software, not a medical device or a source of clinical ground truth. Outputs require qualified review and must not automatically trigger diagnosis, treatment, billing, or other clinical decisions.

Validation and publication

The exact release commit is required to pass:

  • repository, dependency-license, secret, and action-reference policy;
  • locked dependencies, lint, formatting, and the complete Python test suite;
  • strict documentation, README translation drift, marketing staging, and regenerated OpenAPI checks;
  • wheel/sdist build, metadata, contents, Twine, SBOM, and provenance tests;
  • npm install, audit, tests, and tarball inspection;
  • Swift resolve/build/tests plus applicable hosted Apple platform jobs;
  • Android AAR build/tests, consumer-rule verification, and catalog checks;
  • Helm default and synthetic-value lint/render checks;
  • applicable amd64 and arm64 container build/smoke jobs; and
  • real staged golden and public SHIELD benchmarks, a signed extraction/model gate, API compatibility evidence, and a final readiness decision of exactly READY.

A skipped or missing candidate report is incomplete evidence. Hosted checks must refer to the exact release commit; successful jobs on an earlier source head do not qualify the release. Package publication, container publication, release assets, and live documentation remain tag-driven follow-up actions.

Full Changelog: https://github.com/maziyarpanahi/openmed/compare/v2.0.0...v2.1.0