OpenMed v1.8.0¶
OpenMed 1.8.0 is the cross-platform runtime, production service, privacy coverage, clinical extraction, and release-evidence release.
This release extends the v1.7 multimodal and browser work into a coordinated Python, Swift, Kotlin/Android, TypeScript, React Native, browser, REST, gRPC, and deployment surface. It also adds deeper clinical terminology and event extraction, broader multimodal privacy coverage, stronger privacy gates, and supply-chain evidence for containers and releases.
Release date: 2026-07-09.
Reviewed range: v1.7.0..v1.8.0 release target.
Highlights¶
- Added Android OpenMedKit: Gradle project setup, Kotlin API, span merger, BIO/BIOES decoder, ONNX and ORT Mobile inference, ML Kit OCR, model catalog/download cache, document/image intake, Compose and scan demos, Android CI, parity fixtures, and guarded Maven Central publishing.
- Added browser and mobile JavaScript runtimes: typed OpenMedKit web package, ONNX Runtime Web loader for WASM/WebGPU, React Native bridge, TypeScript client parity, and Swift-Kotlin API parity checks.
- Hardened production service paths with API-key/JWT authentication, request IDs, no-PHI JSON logging, OpenTelemetry tracing, gRPC, async jobs, webhooks, Helm deployment, multi-arch images, circuit breakers, retries/backoff, metrics, warm pools, batching, coalescing, and graceful readiness/liveness handling.
- Expanded structured and batch privacy pipelines across SMART-on-FHIR bulk ingestion, object storage, Spark, Dask, DuckDB, pandas, polars, lakehouse tables, streaming columnar redaction, dbt/warehouse redaction, and privacy-gateway redaction before external model calls.
- Added multimodal privacy coverage for DOCX text offsets, plain-image redaction, DICOM headers, burned-in DICOM pixel OCR redaction, redacted-PDF text-layer fidelity checks, EPUB extraction, vCard/iCalendar redaction, and PHI-safe document examples.
- Added new identifier coverage: UK NHS/NINO, IBAN, SWIFT/BIC, ICAO passport/MRZ, and validator-backed national-ID support for Slovak, Latvian, Malay, Filipino, and Danish locales. The model-backed PII language allow-list remains the 15 codes in
openmed.core.pii_i18n.SUPPORTED_LANGUAGES. - Deepened clinical extraction with normalized timelines, document assertion graphs, clinical event frames, medication attribute relations, coreference, concept normalization, UCUM units, free vocabulary grounding, RxNorm, ICD-10-CM, HPO, CodeableConcept export, OMOP CDM loader foundations, GDPR DSAR exports, and expanded domain label maps.
- Strengthened evaluation and release evidence with streaming token classification, speculative MLX PII decoding, QLoRA smoke recipes, leakage-weighted distillation, ONNX/Core ML/OpenVINO optimization, paged KV-cache attention, memory-budgeted scheduling, benchmark ledgers, active-learning queues, hard-negative mining, cross-lingual transfer gates, model-card/datasheet generation, flakiness control, conformal calibration/abstention, mobile performance benchmarks, comparator matrices, load tests, and training provenance gates.
- Added release and supply-chain hardening: SLSA provenance, image signing, container SBOMs, vulnerability gates, baseline-aware secret scanning, pre-commit scanning, reproducible release metadata, and guarded PyPI publishing.
Platform Runtimes¶
Android and Kotlin¶
The Android surface is now a first-class OpenMedKit target. The release adds a standalone Gradle project, Kotlin API types, de-identification engine, token decoder, semantic-unit merger, ONNX token classifier, ORT Mobile export path, ML Kit OCR adapter, model catalog, offline cache manager, document/image intake, Compose demo, scan demo, parity fixtures, and Android CI.
Users building mobile apps can now validate Python-to-Android span equivalence, exercise model download/cache behavior, and prepare AAR publishing through the guarded Central Portal workflow.
Browser, TypeScript, and React Native¶
The JavaScript work moves beyond static export. The new typed web package wraps token-classification decoding and ONNX Runtime Web loading for WASM/WebGPU. React Native gains a bridge for on-device de-identification, and client parity tests keep generated REST client surfaces aligned with the committed OpenAPI document.
Swift and Apple¶
The Swift package remains the Apple-native surface. v1.8.0 adds Swift-Kotlin API parity checks, mobile benchmarking, Core ML residency gates, ONNX/Core ML optimization checks, and the OPENMED_MLX_MMAP toggle for debugging eager vs. memory-mapped MLX weight loading.
Service, Deployment, and Operations¶
The FastAPI service gained production controls around identity, observability, scale, and failure handling:
- API-key/JWT authentication middleware
- request correlation IDs and no-PHI JSON logging
- OpenTelemetry tracing with PHI-safe span attributes
- gRPC protobuf contracts and generated stubs
- async jobs and webhook callbacks for long-running de-identification
- priority queues, backpressure, dynamic batching, and request coalescing
- circuit breakers and retry/backoff around model loading and inference
- Helm deployment, multi-arch container builds, hardened distroless images, container SBOMs, signed images, SLSA provenance, and vulnerability scanning
Batch and data-platform integrations also expanded through object-storage runners, SMART-on-FHIR bulk ingestion, Spark structured streaming, Dask accessors, DuckDB UDFs, pandas/polars accessors, streaming columnar redaction, lakehouse column redaction, and a dbt-style warehouse transformation package.
Privacy and Multimodal Coverage¶
v1.8.0 broadens both file-format and identifier coverage:
- DOCX text extraction with offset maps
- plain-image pixel redaction
- DICOM header de-identification and burned-in pixel OCR redaction
- redacted-PDF text-layer leakage and visual fidelity verification
- EPUB text extraction with inline whitespace preservation
- vCard and iCalendar PHI redaction
- UK health identifiers, IBAN, SWIFT/BIC, passport/MRZ, and validator-backed locale ID packs
The per-language PII extraction API still uses the 15 model-backed SUPPORTED_LANGUAGES entries. New validator-backed ID coverage is exposed through the locale and national-ID provider paths where those languages are marked as ID-only.
Clinical Extraction and Interop¶
Clinical extraction moved from individual helpers toward a richer structured layer:
- normalized timeline resolution
- clinical event frames for medication and lab trends
- document assertion graph reconciliation
- medication attribute relation decoding
- clinical coreference and entity linking
- pluggable terminology concept normalization
- UCUM measurement normalization
- RxNorm, ICD-10-CM, and HPO linkers
- CodeableConcept builders and span mapping
- deterministic note-to-CDM extraction and OMOP CDM loader foundations
- GDPR DSAR subject-access exports
- severity/laterality, genomic variant, gastroenterology, endocrinology, nutrition/diet, anesthesia, and multilingual context cue coverage
Evaluation, Models, and Release Evidence¶
This release adds evidence infrastructure for model quality, privacy leakage, and reproducibility:
- streaming token classification and speculative MLX PII decoding
- QLoRA smoke recipe gate and leakage-weighted distillation primitives
- ONNX graph optimization, dynamic-shape validation, ORT Mobile, OpenVINO, Core ML residency, and ARM INT8 recall certification
- paged KV-cache attention and memory-budgeted model scheduling
- benchmark run ledger, comparator matrix runner, load-test harness, and mobile performance benchmark runner
- active-learning gate failure queues, context masking, and hard-negative mining
- cross-lingual transfer evaluation, multilingual context cues, and lexical grounding aliases
- model-card/datasheet generation from provenance-hashed evaluation artifacts
- flakiness quarantine, conformal calibration, conformal abstention, and training provenance reproducibility gates
Fixes and Hardening¶
Key fixes include:
- replaced optimizer-stripped bare
assertstatements with explicit exceptions - added explicit UTF-8 handling in MLX/Core ML and other file/subprocess paths
- guarded JSON decoding and malformed manifest logging
- chained re-raised exceptions cleanly
- pinned MLX Swift for iOS builds
- fixed multilingual test span offsets
- constrained DSAR matching by vault key
- adapted HPO linker tests to the vocabulary loader
- kept Pages deployments from canceling in-progress docs publishes
- completed F401/F541 cleanup after the large merge train
Migration Notes¶
- Update package references from
1.7.0to1.8.0in Swift Package Manager, Docker image tags, Helm values, and deployment runbooks. - The Python package version is
1.8.0; the committed OpenAPI spec should be regenerated fromopenmed.__version__when the version changes. - The model-backed PII language allow-list remains 15 codes:
ar,de,en,es,fr,he,hi,id,it,ja,nl,pt,te,th, andtr. Additional locale work in this release adds validator-backed national-ID paths rather than full default PII model entries for every new locale. - Service operators can adopt auth, tracing, batching, coalescing, metrics, and Helm settings independently. Review
docs/serving/anddocs/deploy/helm.mdbefore enabling them in production. - Android, browser, and React Native paths now have runnable packages and parity tests, but mobile apps should still validate target-device performance, model cache behavior, and redaction quality with local synthetic fixtures before release.
- New privacy-gateway paths are designed to redact before external model calls; they do not change the local-first default for PHI workflows.
Review Summary¶
- Last release tag:
v1.7.0at82dece146bed8bbbae7fc731afee1448534b2b29 - Reviewed target: final
release/openmed-180branch tip prepared for thev1.8.0tag - Local range reviewed:
v1.7.0..HEADonrelease/openmed-180 - Total commits reviewed: 434
- Merge commits reviewed: 223
- Non-merge commits reviewed: 211
- First-parent commits reviewed: 79
- First-parent merge commits reviewed: 41
- Unique PR links in GitHub generated notes for
v1.7.0...v1.8.0: 144 - Aggregate diff reviewed: 631 files changed, 114,993 insertions, 1,396 deletions
First-parent direct commits reviewed separately from top-level merge commits:
4a017e7f- scaffold Android OpenMedKit module (#1114)fd96321e- versioned agent tool schema registry (#1081)46afd4c1-.gitignorecleanup13fcc458- HPO linker test adaptationa2e65d75- deterministic batch sharding (#1074)a14834f3- exactly-once streaming checkpointing (#1067)30762ad4- mobile performance benchmark runner (#1172)038662af- conformal abstention risk control (#1056)8c1a034b- paged KV-cache attention (#1017)5e79abbe- F401/F541 cleanup8e110f75- multilingual context cue lexicons (#1219)af27e519- training provenance reproducibility gate (#1220)713f4fd5- cross-lingual lexical grounding aliases (#1292)bd38b145- OMOP CDM loader foundation (#1299)83d4612b- updateCHANGELOG.mdfor v1.8.0dbbcba43- update Helm chart app version654e8627- update Helm CI image tag054fa0fd- update Helm default image tagc92873b0- update anonymization documentation4c6a2800- regenerate committed OpenAPI version metadata24b78a0b- update Helm deployment guidec9ded79c- update examples documentation48123c87- update FAQ release language077090b5- update feature map release links1feb8d24- update docs landing page release links28fcd53a- update SemVer and channel documentationc3c809f7- add v1.8.0 release notes4d2a8a1d- update Swift OpenMedKit documentationbd840a72- update static website release copya2ad7188- add v1.8.0 page to MkDocs navigation43407867- update Python package version7e15d3e0- update README release surfacesd53740c0- make OpenAPI export import the local checkout56be42e7- update OpenMed demo bundle version38da7b90- update OpenMed scan demo bundle version70529b59- update Helm chart version test- final release-metadata commit - make the v1.8.0 review summary tag-stable
Major PR groups reviewed:
- Android and mobile runtime: #1114, #1115, #1116, #1117, #1118, #1119, #1120, #1121, #1122, #1123, #1124, #1146, #1148, #1149, #1150, #1155, #1156, #1161, #1162, #1177.
- Browser, TypeScript, and React Native: #1132, #1177, #1178.
- Service and deployment: #1080, #1082, #1085, #1127, #1129, #1130, #1131, #1133, #1136, #1138, #1139, #1140, #1141, #1143, #1144, #1152, #1153, #1154, #1175, #1176, #1179, #1180.
- Structured data and warehouse pipelines: #1109, #1110, #1133, #1175, #1179, #1185, #1189.
- Clinical extraction, grounding, and interop: #1019, #1022, #1025, #1026, #1027, #1079, #1086, #1105, #1134, #1135, #1137, #1160, #1164, #1165, #1166, #1167, #1170, #1182, #1183, #1184, #1187, #1219, #1292, #1299.
- Multimodal and identifier privacy: #1093, #1098, #1106, #1107, #1108, #1112, #1128, #1142, #1163, #1171, #1173, #1186, #1188, #1406.
- Evaluation, model, and training evidence: #1002, #1003, #1009, #1014, #1015, #1016, #1017, #1018, #1036, #1054, #1055, #1056, #1062, #1063, #1064, #1065, #1066, #1097, #1113, #1147, #1151, #1172, #1220.
- Security and release engineering: #189, #190, #1034, #1035, #1037, #1043, #1047, #1104, #1141, #1144, #1153, #1154, #1405.
- Docs, examples, and cleanup: #961, #1023, #1024, #1087, #1091, #1094, #1095, #1096, #1100, #1145, #1158, #1181, #1190, #1194, #1404.
Verification For This Draft¶
- Local commit range was recomputed after fetching tags from origin.
- GitHub release-note generation was checked with
tag_name=v1.8.0,previous_tag_name=v1.7.0, and therelease/openmed-180target. - The local commit log, first-parent log, aggregate diff, docs version surfaces, and release-sensitive publish code paths were reviewed before writing this page.
Full Changelog: https://github.com/maziyarpanahi/openmed/compare/v1.7.0...v1.8.0