Releases: queelius/chartfold
Releases · queelius/chartfold
v1.3.0
What's New
AI Chat in HTML SPA Export
- Client-side agent loop — ask natural-language questions about your medical record via a proxy to Claude. All patient data stays in your browser.
- Inline charts — the LLM can render line charts (via
render_charttool) directly in the chat conversation for trend visualization. - Conversation persistence — chat history survives navigation between SPA sections (DOM detach/reattach).
- Sliding window — conversation trimmed to 40 messages with pair-aware logic (won't orphan tool_use/tool_result pairs).
- Clear button — reset conversation with one click.
- CLI flags:
--ai-chatand--proxy-url
Visit Prep Section
- Auto-detects most recent encounter date, shows everything new since then
- 9 clinical categories: labs, encounters, medications, imaging, notes, conditions, procedures, pathology, genetic variants
- Editable date input for custom ranges
- Uses parameterized SQL queries
Print Summary Section
- One-page printable view: demographics, active conditions, active medications, recent labs with trend arrows (↑↓→), last 3 encounters
- "Print" button calls
window.print()
Arkiv Export/Import (Round-Trip)
- Replaced JSON export with Arkiv format (JSONL + README.md + schema.yaml)
- Full round-trip: export → import with FK remapping, tag unfolding, source asset restoration
--embedflag for inline base64 assets--validate-onlymode for import
Other Changes
_CLINICAL_TABLESderived from_UNIQUE_KEYS(auto-tracks new tables)- MCP server bug fixes (
get_lab_series_tool,get_visit_prepparameter mismatches) - Removed broken
get_timelineMCP tool - Added
get_medication_list()with optional status filtering - Genetic variants table and MyChart test result MHTML parser
- 1124 tests, 72% coverage
Stats
- 60 commits since v1.0.0
- 1124 tests (up from ~900)
- 72% coverage (minimum 68%)
v1.1.0
What's New
Genetic Variants Table + Test-Result MHTML Parser
- New
genetic_variantstable for structured genomic data (gene, classification, VAF, DNA/protein change, transcript) - Test-result MHTML parser for Epic MyChart genomic panels (Tempus XF)
- TMB and MSI extracted as lab results
- CLI:
chartfold load mychart-test-resultsubcommand with auto-detection
Epic Adapter Improvements
- Procedure metadata captured as JSON (unmapped keys preserved)
- Fallback to encounter date when procedure date missing
SPA HTML Export
- Embedded image viewer with overlay (click to zoom, Escape to close)
Other
- MHTML files renamed for clarity:
mychart_mhtml→mhtml_visit - Arkiv export and visit_diff wired for genetic_variants
- Design and implementation plan docs
- 1090 tests passing
v1.0.0 — First stable release
chartfold v1.0.0
First stable release of the patient-facing EHR data consolidation tool.
Features
- Three-stage data pipeline: Epic MyChart (CDA), MEDITECH Expanse (FHIR+CCDA), athenahealth (FHIR R4)
- Unified SQLite database: 16 clinical tables + audit log + personal notes + structured analyses + source assets
- Self-contained HTML SPA export: Embedded SQLite via sql.js (WebAssembly), Chart.js visualizations, all client-side
- Full-fidelity JSON export/import: Auto-discovered tables with FK-aware topological import
- MCP server: 12+ tools for LLM-assisted clinical analysis (read-only SQL + CRUD for notes/analyses)
- Structured analyses: YAML frontmatter + markdown, stored in DB, queryable via
json_extract() - Bidirectional source linking: Clinical records ↔ source documents (PDFs, images)
- CLI: Load, query, export, manage data —
python -m chartfold
Stats
- 918 tests passing
- Requires Python 3.11+
- Dependencies: lxml, PyYAML, mcp (FastMCP)
Install
git clone https://github.com/queelius/chartfold.git
cd chartfold
pip install -e ".[dev,mcp]"