| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| sbom.cdx.json | 2026-07-28 | 9.0 kB | |
| openmed-2.0.0-py3-none-any.whl.sigstore.json | 2026-07-28 | 10.9 kB | |
| openmed-2.0.0.tar.gz.sigstore.json | 2026-07-28 | 11.0 kB | |
| python-distributions.intoto.json | 2026-07-28 | 11.0 kB | |
| release-artifact-digests.txt | 2026-07-28 | 184 Bytes | |
| release-source.json | 2026-07-28 | 195 Bytes | |
| image-sbom.cdx.json | 2026-07-28 | 1.4 MB | |
| image-sbom.cdx.json.sha256 | 2026-07-28 | 86 Bytes | |
| openmed-image-sbom_7d19f01994f6f807172c42f4120c65ef8648889a.cyclonedx.json | 2026-07-28 | 1.4 MB | |
| OpenMed v2.0.0 source code.tar.gz | 2026-07-28 | 26.9 MB | |
| OpenMed v2.0.0 source code.zip | 2026-07-28 | 28.1 MB | |
| README.md | 2026-07-28 | 45.8 kB | |
| Totals: 12 Items | 57.8 MB | 0 | |
OpenMed 2.0: Local-First Health Intelligence for Agents, Skills & Privacy
OpenMed v2.0.0 is here, expanding the local-first healthcare privacy and clinical AI platform across Python, Swift, Kotlin/Android, JavaScript, MCP, REST, and container deployments.
This major release adds 34 built-in PII language codes, deterministic identifier and safety-sweep paths, native-script surrogates, offset-preserving CJK and Indic processing, structured-data privacy-risk analysis, exact reference-population assessment, signed expert-review evidence, richer clinical extraction, new interoperability adapters, and broader on-device support.
OpenMed 2.0 also introduces radiology extraction, serial measurement trends, longitudinal document linking, clinical coreference and temporal normalization, multilingual relations, flowsheets, lab panels, discharge structures, typed MCP tools, watchOS and visionOS targets, Android span metadata, WebGPU and GGUF guidance, and reproducible release-evidence workflows.
The documented v1 Python entry points remain available, the REST surface retains the same 15 paths and 12 component schemas, and the static public Python inventory grows from 14,488 to 20,538 symbols with 6,050 additions and no removed, narrowed, or newly deprecated public symbols.
Install or upgrade:
:::bash
pip install --upgrade "openmed==2.0.0"
npm install openmed@2.0.0
Swift Package Manager:
:::swift
.package(url: "https://github.com/maziyarpanahi/openmed.git", from: "2.0.0")
Android through JitPack:
:::kotlin
implementation("com.github.maziyarpanahi:openmed:v2.0.0")
Container:
:::bash
docker pull ghcr.io/maziyarpanahi/openmed:v2.0.0
Release notes: https://openmed.life/docs/release/v2.0.0/
Migration guide: https://openmed.life/docs/migration/1.9-to-2.0/
Full changelog: https://github.com/maziyarpanahi/openmed/compare/v1.9.1...v2.0.0
Release scope
The audited v1.9.1..v2.0.0 candidate contains 540 reachable commits, including 142 merge commits and 299 first-parent commits, with 1,025 files changed. The release inventory maps 197 merged pull requests and every direct, integration, and release-preparation commit to the exact Git ancestry recorded in CHANGELOG.md.
The release contains 255,162 insertions and 12,770 deletions across the Python package, tests, documentation, examples, website, Swift, Android, JavaScript, service, MCP, deployment, evaluation, security, and release-engineering surfaces.
Highlights
- Multilingual privacy: OpenMed now routes 34 built-in PII language codes and adds deterministic identifier, date, phone, address, safety-sweep, and surrogate capabilities across Chinese, Indic, African, Nordic, Central and Eastern European, Russian, Urdu, Vietnamese, and regional Arabic workflows.
- Offset and script integrity: Full-width and half-width text, native digits, Simplified and Traditional Chinese, Chinese numerals, Indic graphemes, legacy encodings, cross-script transliteration, Hinglish, and mixed-script confusables are handled with source-aligned offsets.
- Regional privacy policy: China PIPL, India DPDP and ABDM, South Africa POPIA, Nigeria NDPA, Kenya DPA, Egypt PDPL, Morocco Law 09-08, the Malabo Convention, GDPR, the EU AI Act, ISO 27701/27001, consent tags, and data-residency evidence gain explicit local workflows.
- Structured-data privacy risk: New offline workflows cover quasi-identifier discovery, reviewer overrides, patient-level k-anonymity, distinct and entropy l-diversity, variational t-closeness, bounded generalization and suppression search, materialized-output revalidation, and rollback-safe publication.
- Reference-population assessment: Callers can evaluate k-map, exact-linkage risk, and delta-presence against an explicit row-level or longitudinal reference population while keeping aggregate reports free of raw profiles and privacy-unit values.
- Expert-review evidence: Structured-risk dashboards, the strict
openmed risk gatecommand, deterministic review records, and expert-authored Ed25519 attestations bind conclusions to data, schema, policy, integrity, and freshness evidence without claiming automated Expert Determination. - Clinical extraction: Radiology sections and findings, BI-RADS and Lung-RADS capture, serial measurement trends, longitudinal document linking, coreference, temporal normalization, abbreviation disambiguation, multilingual relations, flowsheets, lab panels, discharge summaries, procedures, pulmonology, and pediatrics expand the local clinical toolkit.
- Interoperability: OpenMRS, DHIS2, OpenHIM, ODK Central, CommCare, KoBoToolbox, WHO SMART profiles, PySpark, Prefect, scrubadub, LlamaIndex, scispaCy, QuickUMLS, and offline ICD-11 integration points support deployment inside existing health-data environments.
- Agent Skills for healthcare workflows: OpenMed 2.0 ships 72 portable Agent Skills across 14 categories for Claude Code, OpenAI Codex, OpenCode, and compatible agents. They cover local de-identification, clinical NER, FHIR and OMOP handoffs, evaluation, compliance, document intake, analytics, and deployment, with a safe one-command installer that preserves existing user-owned entries.
- MCP and agent tooling: A typed MCP registry, structured tool outputs, the
openmed-mcpentry point, an MCP-enabled container, andllms.txtdocumentation feeds make OpenMed easier to use from local agents without moving PHI into a hosted control plane. - On-device SDKs: OpenMedKit adds watchOS and visionOS targets, grapheme-safe Swift span parity, compact on-device segmenters, Android
OpenMedSpanandEntityPredictionmetadata, and guidance for WebGPU, WebAssembly, GGUF, and constrained ARM devices. - Release engineering: Multilingual golden fixtures, adversarial-PHI checks, parser fuzzing, throughput and latency budgets, model-integrity verification, API compatibility output, vulnerability policy, SBOM and provenance workflows, and signed evidence contracts strengthen the release path.
Agent Skills: from a prompt to a local pipeline
OpenMed 2.0 includes a 72-skill catalog that works unchanged in Claude Code, OpenAI Codex, OpenCode, and compatible agents. The multi-agent onboarding delivered in #1866 installs every skill in one command and safely preserves existing files, directories, and unrelated symlinks.
:::bash
git clone https://github.com/maziyarpanahi/openmed
cd openmed
./install-skills.sh
Or install for one client:
:::bash
./install-skills.sh claude # ~/.claude/skills/
./install-skills.sh codex # ~/.codex/skills/
./install-skills.sh opencode # ~/.config/opencode/skills/
./install-skills.sh agents # ~/.agents/skills/
Then ask the agent for a concrete local workflow using synthetic input:
Build a local OpenMed pipeline that de-identifies a synthetic discharge note and extracts medication entities. Keep the example synthetic.
The agent can combine deidentifying-clinical-text and extracting-clinical-entities into runnable OpenMed code:
:::python
import openmed
note = "Synthetic patient Jane Example (MRN 12345), seen 2024-03-02, started on metformin 500mg BID."
deid = openmed.deidentify(
note,
method="mask",
policy="hipaa_safe_harbor",
)
meds = openmed.analyze_text(
deid.deidentified_text,
model_name="pharma_detection_superclinical",
)
After the one-time model download, inference runs locally. Keep real PHI out of cloud-hosted agent prompts, logs, and copied examples.
Multilingual privacy and de-identification
The language-pack catalog is now the shared source of truth for runtime routing, model-backed languages, deterministic identifier-only packs, locale capabilities, service metadata, CLI reporting, fixtures, and documentation.
Chinese processing adds word-aware Pinyin romanization, Simplified and Traditional conversion through OpenCC, source-aligned numeral parsing, mixed-variant detection, address handling, name surrogates, and tone-insensitive consistency keys. Indic processing adds native-digit folding, grapheme-safe offsets, ISO 15919 transliteration, ITRANS and Harvard-Kyoto parsing, and cross-script name linkage.
African coverage adds Hausa, Yoruba, Igbo, Swahili-oriented documentation and safety sweeps, regional locale providers, Nigerian and Nigerien identifiers, context-aware clinical patterns, and data-residency evidence. Arabic coverage gains explicit Gulf, Levant, Egyptian, Algerian, and Moroccan locale routes with conservative fallbacks.
Russian and Vietnamese receive full local PII packs, while Czech, Hungarian, and additional regional routes add validator-backed national identifiers. Pattern-only packs remain explicit about their capabilities and do not silently claim a default neural model.
Surrogate generation preserves locale and script behavior where supported, validates checksum-bearing identifiers, and maintains deterministic identity consistency without writing raw identifiers into release evidence.
Structured privacy and quasi-identifier risk
The new structured release workflow separates advisory quasi-identifier discovery from reviewed policy. Every source column requires an explicit disposition, and every materialized output is revalidated before publication.
Patient-level privacy units can span multiple rows. The risk engine supports k-anonymity, distinct and entropy l-diversity, variational t-closeness, bounded hierarchy search, whole-unit suppression, utility constraints, and conservative failure behavior.
Reference-population analysis requires an explicit caller-supplied population and explicit thresholds. It does not infer that an available table represents the attack population, and it records separate data, schema, policy, and integrity digests.
Aggregate dashboards and audit artifacts report counts, hashes, provenance, thresholds, and risk scores rather than raw quasi-identifier values. Expert attestations verify authorship and evidence binding but do not replace qualified legal, statistical, or privacy review.
Clinical extraction and interoperability
Radiology workflows can segment sections, extract findings, bind laterality, measurements, and anatomy with provenance spans, and capture only explicitly stated BI-RADS or Lung-RADS categories.
Longitudinal tooling adds deterministic near-duplicate clustering, amendment relationships, retained superseded documents, source provenance, serial measurement normalization, timeline ordering, and conservative handling for incompatible units.
Clinical relation extraction expands to Chinese and Hindi with source character offsets, assertion propagation, constrained graph decoding, and language-specific evaluation. Additional domains cover procedures, devices, pulmonology, pediatrics, immunization, flowsheets, laboratory panels, and discharge summaries.
Interoperability adapters remain optional and local. Large frameworks, licensed terminologies, gated datasets, UMLS, SNOMED CT, CPT, MIMIC, i2b2, and n2c2 assets are not bundled.
Python, service, MCP, and CLI
The documented root imports remain stable:
:::python
from openmed import OpenMedConfig, analyze_text, deidentify, extract_pii
CLI commands now expose consistent --json success and error envelopes for automation while keeping human-readable output as the default.
The typed MCP registry provides annotations and structured outputs through openmed-mcp. Existing MCP clients should refresh cached schemas, and applications pinned to an older MCP runtime should retest against the new optional mcp>=1.27,<2 route.
The REST/OpenAPI contract retains the same 15 paths and 12 component schemas as v1.9.1. Regenerating clients is optional when only the release metadata is needed.
Swift, Android, browser, Node.js, and deployment
Swift OpenMedKit continues to use the repository-root package and adds watchOS and visionOS alongside iOS, iPadOS, and macOS. Span handling remains source-aligned and gains grapheme-safe parity across supported Apple platforms.
Android OpenMedKit adds OpenMedSpan, richer EntityPrediction metadata, immutable JitPack installation, and offline ONNX guidance while retaining the existing package coordinate.
The public npm package remains the unscoped openmed package and provides ESM and CommonJS exports for browsers and Node.js.
The service container, MCP container path, Compose configuration, Helm chart, multi-architecture image workflow, image SBOM, and provenance paths are synchronized on v2.0.0.
Security and hardening
- Telemetry remains off by default, runtime PHI processing remains local after explicit artifact download, and no raw PHI belongs in logs, caches, temporary files, or audit evidence.
- Model downloads and manifests gain stronger integrity, signature, digest, cache, and provenance checks.
- Mixed-script, confusable-text, direct-identifier, leakage, span-integrity, and adversarial-PHI defenses gain dedicated deterministic tests and evidence structures.
- ONNX-producing optional routes now require ONNX 1.21+ and spaCy 3.8.9+, with incompatible scispaCy and ONNX environments intentionally separated.
- Release images exclude generated SBOM, audit, vulnerability, and JavaScript dependency artifacts from their Docker build contexts.
- Dependency, license, workflow-reference, secret-scan, vulnerability, artifact-content, and reproducible-lock policies remain explicit release gates.
- Indic segmenter resources pin their ICU 57.1 source revision, use the SPDX
ICUidentifier, and carry the complete ICU notice in Python distributions and every standalone converted-model bundle.
Compatibility and migration
The static public Python comparison against v1.9.1 records 6,050 additions, no removals, no narrowed callable signatures, and no newly deprecated symbols.
The new DEVICE canonical label is additive. Applications that treat canonical labels as an exhaustive enum or switch must add DEVICE; applications that accept arbitrary canonical-label strings require no change.
Pattern-only language packs no longer imply a neural default. Pass an explicit model identifier when combining deterministic language capabilities with model-backed inference, and validate that model against local fixtures before deployment.
The optional ONNX and multimodal routes require ONNX 1.21+ and are isolated from the scispaCy NumPy 1.x route. Applications needing both should use separate environments.
Structured-data release workflows now require explicit column dispositions and reviewed quasi-identifier policy. Existing text-only deidentify, extract_pii, and analyze_text calls are unaffected.
MCP clients should refresh cached schemas, closed label enums must recognize DEVICE, and custom CLI automation should select --json rather than scrape human-readable output.
See the complete migration guide at https://openmed.life/docs/migration/1.9-to-2.0/.
Validation completed during final release preparation
- Complete ancestry inventory: 540 commits represented, including 197 merged pull requests plus all direct, integration, and release-preparation commits.
- Python: 8,685 tests passed and 58 were skipped; the structured QI-risk scope passed 658 tests.
- Static API compatibility: 14,488 to 20,538 public symbols, 6,050 additions, zero breaking removals or narrowed signatures, and zero new deprecations.
- REST/OpenAPI: 15 paths and 12 component schemas retained; generated OpenAPI output matched the candidate checkout.
- Release suite: 71 release, provenance, policy, changelog, and workflow regression tests passed on the final local release branch.
- Documentation and examples: strict MkDocs builds, localized documentation trees, LLM documentation feeds, website checks, and structured-risk examples passed.
- Python artifacts: wheel and source distribution built successfully, passed
twine check, passed content inspection, and installed and imported successfully in clean isolated environments. - Swift: formatting, lint, resolve, build, and 70 tests passed with 14 expected local MLX-resource skips.
- Android: AAR assembly and unit tests passed.
- JavaScript: the browser and Node.js package passed 9 tests, audit with zero vulnerabilities, and dry-run packaging; the React Native package passed 4 tests, audit, and dry-run packaging.
- Helm: default and CI values passed lint and template validation.
- Security: dependency and container scanning evaluated 174 findings under repository policy with 23 accepted unfixable base-image findings and zero blocking findings.
- Container: the production image built successfully after the Docker context was reduced from 139 MB to 307 KB by excluding generated evidence and JavaScript dependencies.
- Version preflight: all 19 active release surfaces matched 2.0.0, and the v2.0.0 tag was unused locally and on origin at the time of preparation.
Registry availability, live documentation, immutable consumer coordinates, and published release assets are verified after the tag-driven release workflows complete.
Privacy and clinical boundaries
OpenMed keeps local processing as the default, but no de-identification system can guarantee zero residual risk. Validate direct-identifier recall, critical leakage, span integrity, language and script coverage, policy behavior, quantized-model deltas, and device behavior against deployment-specific fixtures before production use.
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.
Build hashes and package checksums establish artifact identity; they do not prove model quality. Model-specific evidence should be evaluated independently for each selected model, language, quantization, and runtime.
Contributor and change inventory
Thank you to every contributor whose work is included in this release. The complete pull-request and commit inventory, including every merged branch commit and every direct release-preparation commit, is recorded in CHANGELOG.md.
What's Changed
- feat: add full-width/half-width normalization with offset preservation by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1547
- feat: add Indic native-digit folding with offset preservation by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1548
- feat: add Unified Social Credit Code recognizer and MOD-31-3 validator by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1596
- feat(ner): add pulmonology domain with spirometry and respiratory labels by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1595
- feat: add Estonian (et) PII language pack with isikukood validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1592
- feat: add Hungarian TAJ language pack by @thangldw in https://github.com/maziyarpanahi/openmed/pull/1593
- feat: add Serbian (sr) PII language pack with JMBG validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1597
- feat: add Croatian (hr) PII language pack with OIB validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1598
- feat: add Bulgarian (bg) PII language pack with EGN validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1599
- feat: add Finnish (fi) PII language pack with HETU validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1600
- feat: add Czech (cs) PII language pack with rodne cislo validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1602
- Fix/social cards fix by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1612
- test(security): add telemetry-off-by-default enforcement guard (OM-099) by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1617
- feat(android): add EntityPrediction description and OpenMedSpan data model by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1613
- test: cover help for every CLI command by @ShiHuiwen-creat in https://github.com/maziyarpanahi/openmed/pull/1618
- fix(clinical): scope experiencer cues across contrastive clauses (#277) by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1614
- docs: add per-language PII de-identification guide by @cycsmail in https://github.com/maziyarpanahi/openmed/pull/1615
- docs: decide and document the on-device Android tokenization strategy by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1608
- docs: add Android quickstart covering setup, model load, and redaction by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1606
- feat: add Greek (el) PII language pack with AMKA validator by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1603
- feat: add Portuguese NIF validator distinct from Brazilian CPF by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1605
- test(eval): add per-language i18n golden fixtures for all wired languages by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1616
- feat: sign release distributions and attach verifiable evidence by @DrVelvetFog in https://github.com/maziyarpanahi/openmed/pull/1604
- feat(locales): add regional Arabic Faker-locale overrides (OM-285) by @chawki-nasrallah in https://github.com/maziyarpanahi/openmed/pull/1549
- feat: add Vietnamese PII language pack by @thangldw in https://github.com/maziyarpanahi/openmed/pull/1601
- fix: raise TypeError for malformed policy argument types by @abdouloued in https://github.com/maziyarpanahi/openmed/pull/687
- feat: add pediatrics growth-parameter domain to NER model and labels map by @mrfeathers in https://github.com/maziyarpanahi/openmed/pull/1611
- docs/examples: add synthetic datasets walkthrough by @otmanm in https://github.com/maziyarpanahi/openmed/pull/1702
- feat: add inter-annotator agreement metrics for extraction gold sets by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1697
- feat: add synthetic multi-annotator gold corpus and consensus loader by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1698
- feat: add gold-corpus quality report and evidence-bundle output by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1700
- feat: add Prefect task and flow for batch de-identification by @RonitGandhi in https://github.com/maziyarpanahi/openmed/pull/1716
- feat: add flowsheet and vitals time-series structurer by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1746
- feat: add lab-panel structurer mapping results into analyte rows by @pardeep-singh in https://github.com/maziyarpanahi/openmed/pull/1744
- feat: add portable Agent Skills catalog for building with OpenMed by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1743
- test: locate py.typed through importlib.resources by @lntutor in https://github.com/maziyarpanahi/openmed/pull/1778
- fix: format skills catalog test by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1840
- docs: add v1 to v2 migration guide by @lntutor in https://github.com/maziyarpanahi/openmed/pull/1755
- docs: define detector plugin SDK stability by @lntutor in https://github.com/maziyarpanahi/openmed/pull/1762
- Add language pack registry foundation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1586
- feat: add MCP console entry point by @lntutor in https://github.com/maziyarpanahi/openmed/pull/1761
- feat: make language packs source of truth by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1844
- feat(cli): uniform --json output, error envelopes, and a tool-schema drift guard by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1780
- feat(core): add language-pack coherence validation and capability coverage by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1779
- docs: add Windows uv installation steps by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1845
- build: consolidate dependency updates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1850
- feat: generate llms.txt and llms-full.txt by @vamshiss in https://github.com/maziyarpanahi/openmed/pull/1839
- feat: add offset-safe Indic Unicode normalization by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1566
- Add Indic Unicode script routing metadata by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1573
- Script-aware span decoder for no-whitespace CJK and grapheme-cluster Indic by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1587
- Non-Latin-script leakage evaluation harness with per-script recall floors by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1588
- Add pluggable Chinese word segmentation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1558
- Defend de-identification against confusable and mixed-script evasion by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1669
- Add token- and document-level language routing by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1665
- Resident ID (居民身份证) recognizer, MOD-11-2 validator, and locale-correct surrogate generator by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1563
- Add Chinese personal-name detection and locale-correct surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1564
- China PIPL de-identification policy profile by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1565
- Add India DPDP Act de-identification policy profile by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1575
- India ABDM/ABHA-aware health-record de-identification mode by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1576
- Add Nigeria NIN and BVN recognizers with +234 mobile prefix validation and deterministic surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1620
- Add Ghana Card and Kenya identity recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1621
- Add Swahili language pack with Sheng clinical note handling by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1623
- Add isiZulu and isiXhosa PII packs with South African ID validation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1625
- Add MasakhaNER African-language NER evaluation suite by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1626
- Add South Africa POPIA policy profile by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1627
- Add Nigeria NDPA 2023 policy profile by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1628
- Add Kenya Data Protection Act 2019 policy profile (ke_dpa) with health-data handling posture by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1629
- feat: add de-identified DHIS2 district exporter by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1631
- feat(clinical): radiology report section parser with stated RADS capture by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1849
- Add resilient integrity-checked model downloads by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1632
- feat: add Urdu RTL PII language pack with Pakistani CNIC validation by @AlyanPremani05 in https://github.com/maziyarpanahi/openmed/pull/1852
- Add CPU-only low-resource de-identification profile by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1634
- Add crash-safe batch checkpoints and resume by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1635
- Add Chinese clinical NER evaluation foundation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1562
- Add Indic grapheme-safe span offsets by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1567
- Aadhaar recognizer hardening: Verhoeff validation, UIDAI masking rules, and checksum-valid surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1574
- Add synthetic India code-mixed clinical de-identification corpus by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1581
- feat: add Chinese and Indic optional extras by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1589
- Audit PII tokenizer script coverage by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1590
- Verify cached model artifacts and signed manifests by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1591
- Add South African ID and mobile phone recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1619
- Add Egypt and Morocco identity recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1622
- Amharic language pack with Ethiopic script detection and grapheme-safe offsets by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1624
- OpenMRS adapter: de-identify REST and FHIR2 handoffs locally by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1630
- Add offline installation kit builder by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1633
- feat: add SMS short-text de-identification by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1841
- Add clinical abbreviation and acronym sense disambiguation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1636
- Build a shared free-vocabulary lexical matcher engine and loader registry by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1637
- Add tamper-evident audit chains for de-identification runs by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1638
- Add a HIPAA Safe Harbor attestation report generator by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1639
- Add clinical coreference resolution linking entity mentions and pronouns by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1640
- Normalize TIMEX3 temporal expressions to ISO values by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1641
- Render a public auto-published benchmark leaderboard from archived eval reports by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1642
- Add a k-anonymity engine for tabular outputs by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1643
- Add an eval-result provenance and reproducibility-hash ledger by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1644
- Add Chinese sentence segmentation honoring CJK punctuation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1647
- Add Chinese terminology grounding for user-supplied dictionaries by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1648
- Chinese address de-identification across province/city/district hierarchy with consistent surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1649
- Add Chinese mobile, bank-card, and travel-document recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1650
- Add cross-script Indic transliteration with ISO 15919 by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1651
- Add Indic danda-aware sentence and word tokenization by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1652
- Add optional Indic NER and 11-language evaluation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1656
- Add code-mixed Hinglish de-identification pipeline by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1658
- feat: add India health-ID de-identification mode by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1660
- Add India code-mixed clinical NER by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1661
- India AYUSH and Indian drug terminology grounding (user-supplied, license-aware) by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1662
- India locale-correct surrogate providers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1663
- Add consistent India transliterated-name surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1664
- Add license-aware CMeEE and Naamapadam eval suites by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1666
- Multilingual surrogate framework with script-correct providers and cross-document consistency by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1667
- Package compact on-device segmenters for MLX, CoreML, and ONNX by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1668
- Bring Simplified Chinese README to full parity and add translation drift check in CI by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1670
- Bring Hindi README to parity with a synthetic Hinglish example by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1671
- docs: add China mirror and offline-cache onboarding by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1673
- docs: add India DPDP onboarding guide by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1674
- Add Chinese and Hindi de-identification examples by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1675
- Add multilingual de-identification Space demo by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1676
- Add API-surface migration completeness gate by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1678
- Add East African national ID recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1679
- Add pan-African mobile phone patterns and prefix-preserving surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1680
- Add M-Pesa transaction code protection for Kenya and Tanzania by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1681
- Add mobile-money billing reference recognizers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1683
- Add Kenya KMHFL and Nigeria HFR health-facility code support by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1684
- Add Hausa Boko and Ajami PII pack by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1685
- Add deterministic radiology finding extractor by @Udaytaneja in https://github.com/maziyarpanahi/openmed/pull/1855
- Yoruba language pack with combining-diacritic-safe span offsets by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1686
- Add Igbo language pack for Nigerian clinical text by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1687
- African French and Portuguese locale surrogate providers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1688
- Add Egypt PDPL and Morocco Law 09-08 profiles by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1689
- Add Africa data-residency deployment guide and attestation reports by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1690
- Add African healthcare-context safety-sweep terms by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1691
- OpenHIE mediator packaging: run the de-identification service as an OpenHIM mediator by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1692
- feat: de-identify community health worker form exports by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1694
- feat: add WHO SMART Guidelines FHIR profile checks by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1695
- Add model size budget command by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1696
- Add Swahili README and African developer onboarding by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1701
- Add ARM SMS latency benchmark and budget gate by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1703
- Add Simplified/Traditional Chinese conversion with offset-preserving alignment by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1645
- Add Chinese numeral normalization for dates, IDs, and quantities by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1646
- Add token-level Hinglish language routing for de-identification by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1657
- Add Indian multi-identifier recognizer pack by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1659
- docs: add Chinese and Hindi site locales by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1672
- Harden multilingual ingestion boundaries by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1677
- Add offline ICD-11 MMS snapshot grounding by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1693
- Add mirror and proxy installation guidance by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1699
- Build an adversarial-PHI red-team corpus and harness for the redactor by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1842
- Fix PharmaDetect entity boundaries and medication filtering by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1858
- Add Nordic PII language packs (Swedish, Danish, Norwegian) by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1704
- Add GDPR and EU AI Act compliance templates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1705
- Add LlamaIndex node redaction postprocessor by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1707
- Add a WASM/WebGPU browser inference demo and load-time benchmark page by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1708
- Add a synthetic gold-corpus annotation toolkit with BRAT and CoNLL IO by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1752
- Add ISO 27701/27001 control-evidence pack generator by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1753
- Add consent and data-use tag enforcement by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1754
- Add an AWQ grounding embedder recall gate by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1756
- Add a per-language leakage dashboard renderer over benchmark runs by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1757
- Add a discharge-summary section structurer with typed slots by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1759
- Add a synthetic tabular-data generator preserving column distributions by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1760
- Add ISCII and legacy-font Devanagari conversion by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1763
- Add conservative Indic morphology boundary refinement by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1764
- Add transliteration-robust Indian name matching by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1765
- feat: Added Russian (ru) PII language package by @mrfeathers in https://github.com/maziyarpanahi/openmed/pull/1860
- Add optional MuRIL and IndicBERT encoder backbones by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1766
- feat: add scrubadub adapter to openmed.interop by @affanhamid in https://github.com/maziyarpanahi/openmed/pull/1857
- feat(eval): add release-readiness gate aggregating shippability checks (#1814) by @JonthanaHanh in https://github.com/maziyarpanahi/openmed/pull/1859
- Add scispaCy/QuickUMLS approximate-linker adapters by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1706
- Add a model-sharding and streaming weight loader for low-RAM devices by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1751
- Add coverage-guided fuzzing for document format parsers by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1846
- Add regression escape tracker dashboard by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1758
- Add multilingual clinical relation extraction by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1847
- Add Central and Eastern European PII language packs by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1767
- Add GGUF embedding-backbone export for grounding retrieval by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1768
- Add a Nix flake for reproducible builds and dev shells by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1769
- feat: add watchOS and visionOS OpenMedKit targets by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1777
- Build exact Chinese character-to-word offset mapping by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1865
- feat(clinical): add serial measurement and trend extractor by @PouyanJay in https://github.com/maziyarpanahi/openmed/pull/1854
- feat: add procedures zero-shot domain and DEVICE canonical label by @RonitGandhi in https://github.com/maziyarpanahi/openmed/pull/1885
- feat: add PySpark pandas_udf for batch de-identification by @affanhamid in https://github.com/maziyarpanahi/openmed/pull/1892
- Document ONNX and WebGPU export by @alberthammerich in https://github.com/maziyarpanahi/openmed/pull/1893
- Add grapheme-safe scalar span parity for Swift de-identification by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1869
- Add Marathi PII language pack by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1873
- Add a consumer agent-usage guide and ready-to-use repository skills by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1888
- Add Afrikaans PII language pack via Dutch pattern transfer by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1889
- Add CJK-aware span decoding for Chinese text by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1867
- Add Tamil PII language pack with native surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1872
- Add path-filtered CJK and Indic fixture CI job by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1879
- Add Chinese and Indic throughput release gates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1880
- Publish Chinese and Indic PII registry metadata and model cards by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1882
- Ship an MCP-enabled container image and compose service by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1887
- Add pan-African Malabo baseline and policy coverage eval by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1890
- African deployment reference: facility EMR to national HMIS synthetic demo by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1891
- Add Pinyin romanization and deterministic Chinese name surrogates by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1883
- Add an Odia (or) PII language pack with native or_IN surrogates and Bengali-script confusion guards by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1884
- Add Assamese PII language pack with Bengali-script disambiguation by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1886
- feat(clinical): add longitudinal document near-duplicate hash and cop… by @eslam-ahmed43 in https://github.com/maziyarpanahi/openmed/pull/1894
- docs: one-command multi-agent install and quickstart for the skills catalog by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1866
- Render the MCP server from the tool registry with annotations and structured output by @maziyarpanahi in https://github.com/maziyarpanahi/openmed/pull/1900
New Contributors
- @PouyanJay made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1595
- @thangldw made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1593
- @ShiHuiwen-creat made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1618
- @chawki-nasrallah made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1549
- @mrfeathers made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1611
- @RonitGandhi made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1716
- @lntutor made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1778
- @vamshiss made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1839
- @Udaytaneja made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1855
- @affanhamid made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1857
- @JonthanaHanh made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1859
- @eslam-ahmed43 made their first contribution in https://github.com/maziyarpanahi/openmed/pull/1894
Full Changelog: https://github.com/maziyarpanahi/openmed/compare/v1.9.1...v2.0.0