Skip to main content

AI-powered medical imaging analysis toolkit

Project description

MedCheck

AI-powered medical imaging analysis toolkit

CI codecov Python 3.10+ License GitHub release GitHub stars

MedCheck analyzes MRI scans using local ML models and frontier Vision-LLMs (Claude, GPT, Gemini) to generate professional radiology-style reports with annotated images.


Quick Start · Documentation · Contributing · Report Bug


Features

  • Plug & Play Docker — single docker run command, no local setup required
  • Multiple data sources — local DICOM files, easyRadiology platform, and custom plugins
  • Local ML analysis — on-device inference with LLaVA-Med and MONAI-based models; fully offline capable
  • Vision-LLM analysis — frontier model support for Claude Opus 4.7, GPT-5.5, and Gemini 3.5 Flash
  • Clinical context input — attach patient history, symptoms, and prior findings to guide report generation
  • Professional PDF/HTML reports — annotated images with structured radiology-style findings and impressions
  • YAML workflow engine — compose and version-control custom analysis pipelines as code
  • Generic anatomy support — brain, spine, knee, shoulder, abdomen, and more
  • Web UI + CLI — interactive browser dashboard and a scriptable command-line interface

Quick Start

Option 1 — Docker (recommended)

docker run -p 8080:8080 \
  -e ANTHROPIC_API_KEY=your_key_here \
  -v $(pwd)/scans:/data/scans \
  ghcr.io/liohtml/medcheck:latest

Then open http://localhost:8080.

Option 2 — pip install

pip install medcheck
medcheck serve

Option 3 — From source

git clone https://github.com/Liohtml/MedCheck.git
cd MedCheck
uv sync
uv run medcheck serve

How It Works

┌─────────┐    ┌────────────┐    ┌────────────┐    ┌───────────┐    ┌────────┐
│  Ingest  │───▶│ Preprocess │───▶│ ML Analyze │───▶│ Vision AI │───▶│ Report │
│          │    │            │    │            │    │           │    │        │
│ DICOM /  │    │ Normalize  │    │ LLaVA-Med  │    │ Claude /  │    │ PDF /  │
│ easyRad  │    │ Resize     │    │ MONAI      │    │ GPT /     │    │ HTML   │
│ Plugins  │    │ Anonymize  │    │ Anomaly    │    │ Gemini    │    │ + PNG  │
└─────────┘    └────────────┘    └────────────┘    └───────────┘    └────────┘
  1. Ingest — load studies from local paths, the easyRadiology API, or third-party plugins.
  2. Preprocess — normalize pixel values, resize to model input dimensions, and strip PHI.
  3. ML Analyze — run local segmentation and anomaly-detection models (no API key required).
  4. Vision AI — send annotated slices to a frontier Vision-LLM for language-based findings.
  5. Report — render a structured radiology report with annotated images in PDF and HTML.

Supported Models

Model Provider Best For
Claude Opus 4.7 Anthropic Highest diagnostic quality and reasoning depth
GPT-5.5 OpenAI High-resolution image understanding
Gemini 3.5 Flash Google Speed-optimized, cost-effective batch processing
LLaVA-Med Local Fully offline, no API key required

Data Sources

Source Type Notes
Local DICOM file:// Supports single files and directory trees
easyRadiology REST API Requires EASYRAD_API_KEY
Custom providers Plugin See docs/providers.md

Configuration

Copy .env.example and fill in your API keys:

cp .env.example .env
# .env.example
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
GOOGLE_API_KEY=
EASYRAD_API_KEY=

# Optional overrides
MEDCHECK_DEFAULT_MODEL=claude-opus-4-7
MEDCHECK_REPORT_FORMAT=pdf
MEDCHECK_PORT=8080

Docker environment variables

docker run \
  -e ANTHROPIC_API_KEY=sk-ant-... \
  -e MEDCHECK_DEFAULT_MODEL=claude-opus-4-7 \
  -e MEDCHECK_REPORT_FORMAT=pdf \
  ghcr.io/liohtml/medcheck:latest

Custom Workflows

Define analysis pipelines as YAML and commit them alongside your code:

# workflows/brain-mri-full.yml
name: brain-mri-full
description: Full brain MRI analysis with FLAIR and T1 sequences

steps:
  - name: preprocess
    op: normalize
    params:
      modality: MRI
      sequences: [FLAIR, T1]

  - name: segment
    op: local_model
    params:
      model: monai-brain-seg-v2

  - name: analyze
    op: vision_llm
    params:
      model: claude-opus-4-7
      prompt_template: prompts/neuro-radiology.txt

  - name: report
    op: render_report
    params:
      format: [pdf, html]
      include_annotations: true

Run the workflow:

medcheck run workflows/brain-mri-full.yml --input /data/scans/patient_001/

Documentation

Topic Link
Quickstart guide docs/quickstart.md
Data providers & plugins docs/providers.md
Workflow engine reference docs/workflows.md
Supported models docs/models.md

Contributing

Contributions are welcome. Please read CONTRIBUTING.md first.

git clone https://github.com/Liohtml/MedCheck.git
cd MedCheck
uv sync
pre-commit install
pytest

All pull requests require passing CI and at least one approving review.


Acknowledgments

MedCheck builds on the shoulders of excellent open-source work:


Disclaimer

MedCheck is NOT a medical device and has NOT been cleared or approved by any regulatory authority (FDA, CE, or otherwise). It is intended solely as a research and educational tool. All outputs must be reviewed and verified by a qualified radiologist or licensed medical professional before use in any clinical decision-making context. Do not use MedCheck as a substitute for professional medical advice, diagnosis, or treatment.


License

Distributed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

medcheck-0.1.0.tar.gz (51.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

medcheck-0.1.0-py3-none-any.whl (46.2 kB view details)

Uploaded Python 3

File details

Details for the file medcheck-0.1.0.tar.gz.

File metadata

  • Download URL: medcheck-0.1.0.tar.gz
  • Upload date:
  • Size: 51.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for medcheck-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b0e3b5423e52cc88bf02f46e89fdd35119bb96bb943f495e29a28f45923ebec6
MD5 9ca1a807a2f321f7927ea78f18029b19
BLAKE2b-256 e21824ca3f8d32a399856f4fe511bee8d537421cc952fa7b615d3d292352e416

See more details on using hashes here.

File details

Details for the file medcheck-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: medcheck-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 46.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.5

File hashes

Hashes for medcheck-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aafe7ac59fd6c5ad82fcc473cd9b1b5607b98ece219659f6b203ce7e606eec0e
MD5 df09cf712bcf2abf29c53ed33b480a8e
BLAKE2b-256 3ecd1096138fe46c0774c6c22b1b1db7ed073cb9ac327cb6ff5dc413c3af2b4b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page