Blog Series¶
Open CIS was built in public and documented through a six-part blog series on Medium. The series covers the journey from initial architecture decisions to building a Python SDK for openEHR.
Part 1: Building Open CIS¶
Building Open CIS: A Minimal Clinical Information System on openEHR
The project motivation and introduction. Why build a CIS from scratch? What is openEHR and why does it matter? Setting up EHRBase with Docker Compose and making the first API calls.
Key topics: Project goals, openEHR introduction, EHRBase setup, Docker Compose infrastructure
Part 2: The Clinical Modeling Stack¶
Part 2: The Clinical Modeling Stack
A deep dive into how openEHR models clinical data. Archetypes as reusable building blocks, templates as use-case-specific constraints, and the Clinical Knowledge Manager (CKM) as the community hub for clinical models.
Key topics: Archetypes, templates, CKM, clinical modeling workflow, two-level modeling
Related docs: openEHR Concepts, ADR-0003: Template Management
Part 2b: Template Formats and the Flat Format Deep Dive¶
Part 2b: Template Formats and the Flat Format Deep Dive
The practical side of working with templates. Compares OPT format, FLAT JSON, structured JSON, and canonical JSON. Deep dive into FLAT format path syntax, context fields, and the pitfalls of working with EHRBase's FLAT API.
Key topics: OPT format, FLAT vs structured vs canonical JSON, path syntax, EHRBase API quirks
Related docs: openEHR Concepts
Part 3: Going SDK-less¶
Part 3: Going SDK-less -- Our Architecture Decisions
Why we chose to use direct HTTP calls with httpx instead of an existing SDK. Evaluates the available options (Java SDK, pyEHR, nothing in Python), introduces the ADR process, and explains the lightweight client approach.
Key topics: SDK evaluation, ADR process, httpx integration, thin client pattern
Related docs: ADR-0004: Direct httpx Integration
Part 4: The openEHR SDK Landscape¶
Part 4: The openEHR SDK Landscape
A comprehensive survey of the openEHR SDK ecosystem. The Java SDK's 20+ modules, the dormant pyEHR project, and the gap in the Python ecosystem. This analysis directly led to the creation of oehrpy.
Key topics: EHRbase Java SDK, pyEHR, SDK gap analysis, Python ecosystem gap
Related docs: oehrpy Overview
Part 5: oehrpy -- A Python SDK for openEHR¶
Part 5: oehrpy -- A Python SDK for openEHR
The creation of oehrpy, a Python SDK that fills the gap identified in Part 4. Covers the design philosophy, 134 Pydantic RM classes, async EHRBase client, VitalSignsBuilder, FLAT serialization, and the OPT parser.
Key topics: oehrpy design, Reference Model in Pydantic, VitalSignsBuilder, FLAT serialization, async client
Related docs: oehrpy Overview, oehrpy Integration, oehrpy Coverage & Roadmap
Reading Order¶
The series is designed to be read in order, but each part also stands on its own:
| If you want to... | Start with... |
|---|---|
| Understand the project and openEHR basics | Part 1 |
| Learn about clinical data modeling | Part 2 |
| Understand the technical data formats | Part 2b |
| See how architecture decisions are made | Part 3 |
| Survey the openEHR tooling ecosystem | Part 4 |
| Learn about building a Python openEHR SDK | Part 5 |