Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
k-dense-ai avatar

Pyhealth

  • 847 installs
  • 32k repo stars
  • Updated July 29, 2026
  • k-dense-ai/scientific-agent-skills

pyhealth is a scientific agent skill that scaffolds complete clinical deep-learning pipelines with the PyHealth library for EHR, signal, and imaging healthcare ML features.

About

pyhealth is a clinical machine-learning skill for building healthcare prediction pipelines with PyHealth inside AI coding agents. It covers loading EHR and clinical datasets such as MIMIC-III, MIMIC-IV, eICU, OMOP, SleepEDF, ChestXray14, and EHRShot, then defining tasks like mortality, readmission, length-of-stay, drug recommendation, sleep staging, ICD coding, and EEG events. The skill instantiates models including Transformer, RETAIN, GAMENet, SafeDrug, MICRON, StageNet, AdaCare, and CNN, RNN, or MLP variants, trains with the PyHealth Trainer, computes clinical metrics, and uses ICD, ATC, NDC, and RxNorm code utilities. Developers reach for pyhealth when implementing regulated healthcare ML features rather than generic tabular models.

  • Implements the canonical 5-stage pipeline: Dataset → Task → Model → Trainer → Metrics
  • Loads 10+ major clinical datasets including MIMIC-III/IV, eICU, OMOP, SleepEDF, and ChestXray14
  • Supports clinical tasks such as mortality prediction, readmission, length-of-stay, drug recommendation, sleep staging, a
  • Instantiates specialized models including Transformer, RETAIN, GAMENet, SafeDrug, MICRON, StageNet, AdaCare, plus standa
  • Provides medical code utilities for ICD, ATC, NDC, and RxNorm lookup with cross-mapping

Pyhealth by the numbers

  • 847 all-time installs (skills.sh)
  • +38 installs in the week ending Jul 29, 2026 (Skillselion tracking)
  • Ranked #338 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pyhealth

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs847
repo stars32k
Security audit3 / 3 scanners passed
Last updatedJuly 29, 2026
Repositoryk-dense-ai/scientific-agent-skills

How do you build clinical ML pipelines with PyHealth?

Instantly scaffold complete clinical deep-learning pipelines using the PyHealth library when building healthcare ML features.

Who is it for?

Healthcare ML engineers building EHR, signal, or imaging prediction features with MIMIC, eICU, OMOP, or PyHealth-native datasets.

Skip if: Developers working on non-clinical tabular or NLP apps without EHR codes or PyHealth datasets should skip pyhealth.

When should I use this skill?

The user mentions PyHealth, MIMIC, eICU, OMOP, EHR modeling, clinical prediction, drug recommendation, sleep staging, or ICD coding.

What you get

PyHealth dataset loaders, task definitions, model instances, Trainer configurations, clinical metric reports, and medical code mappings.

  • Clinical ML training pipeline
  • PyHealth model and task configuration
  • Clinical metrics and code-mapping utilities

By the numbers

  • Covers 7+ named clinical datasets including MIMIC-III/IV, eICU, and OMOP
  • Documents 10+ clinical models including RETAIN, GAMENet, SafeDrug, and StageNet

Files

SKILL.mdMarkdownGitHub ↗

PyHealth

PyHealth (https://pyhealth.dev/) is a Python toolkit for clinical deep learning. It provides a unified, modular pipeline across electronic health records (EHR), physiological signals, and medical imaging.

The library is built around a 5-stage pipelineDataset → Task → Model → Trainer → Metrics — where each stage is replaceable and the interfaces between stages are stable. Code that follows this pipeline shape composes well; code that bypasses it usually fights the library.

When to use this skill

Use this skill whenever the user is doing clinical/healthcare ML and any of the following are true:

  • They mention PyHealth, MIMIC-III/IV, eICU, OMOP-CDM, EHRShot, SleepEDF, SHHS, ISRUC, COVID19-CXR, ChestX-ray14, TUEV/TUAB.
  • They want to predict mortality, readmission, length of stay, drug recommendations, sleep stages, ICD codes, EEG events, or de-identification.
  • They need to look up or cross-map medical codes (ICD-9-CM, ICD-10-CM, ATC, NDC, RxNorm, CCS).
  • They have EHR-shaped data and want to train a clinical model without writing the plumbing themselves.

PyHealth is the right tool when the workflow fits its 5 stages. If the user just wants generic PyTorch on tabular data, this skill is not necessary.

Installation (uv)

PyHealth 2.0 requires Python ≥ 3.12, < 3.14. Use uv for environment management — it's faster and reproducible.

# Create a project with the right Python
uv init my-pyhealth-project
cd my-pyhealth-project
uv python pin 3.12

# Add PyHealth (this also pulls in PyTorch and friends)
uv add pyhealth

# Run scripts inside the env
uv run python train.py

For a one-off script without a project, use uv run --with pyhealth python script.py. For the legacy 1.x line (Python 3.9+), uv add pyhealth==1.16. Detailed install notes, MIMIC access, and GPU/CPU device tips are in references/installation.md.

The 5-stage pipeline

A complete pipeline is typically <20 lines. This is the canonical shape — start here and modify pieces:

from pyhealth.datasets import MIMIC3Dataset, split_by_patient, get_dataloader
from pyhealth.tasks import MortalityPredictionMIMIC3
from pyhealth.models import Transformer
from pyhealth.trainer import Trainer
from pyhealth.metrics.binary import binary_metrics_fn

# 1. Dataset — raw patient registry
base = MIMIC3Dataset(
    root="https://storage.googleapis.com/pyhealth/Synthetic_MIMIC-III/",
    tables=["DIAGNOSES_ICD", "PROCEDURES_ICD", "PRESCRIPTIONS"],
)

# 2. Task — converts patients into supervised samples
samples = base.set_task(MortalityPredictionMIMIC3())

# 3. Split + DataLoaders (split by patient to avoid leakage)
train_ds, val_ds, test_ds = split_by_patient(samples, [0.8, 0.1, 0.1])
train_loader = get_dataloader(train_ds, batch_size=32, shuffle=True)
val_loader   = get_dataloader(val_ds,   batch_size=32, shuffle=False)
test_loader  = get_dataloader(test_ds,  batch_size=32, shuffle=False)

# 4. Model — must be passed the SampleDataset, not the BaseDataset
model = Transformer(dataset=samples)

# 5. Train + evaluate
trainer = Trainer(model=model)
trainer.train(
    train_dataloader=train_loader,
    val_dataloader=val_loader,
    epochs=50,
    monitor="pr_auc",
)

y_true, y_prob, _ = trainer.inference(test_loader)
print(binary_metrics_fn(y_true, y_prob, metrics=["pr_auc", "roc_auc"]))

A copy-pasteable starter is in assets/starter_pipeline.py.

Critical things to get right

These are the mistakes that PyHealth code most commonly trips on. Internalize them before writing pipelines:

1. Models take a `SampleDataset`, not a `BaseDataset`. MIMIC3Dataset(...) returns a BaseDataset (a queryable patient registry). Only after .set_task(task) do you get a SampleDataset, which is what models, splitters, and DataLoaders expect. If you pass base to a model, it will fail or behave wrong.

2. Always split by patient (or visit), not by sample. Random sample-level splits leak information across train/test because the same patient can appear in both. Use split_by_patient for patient-level prediction, split_by_visit only when visits are independent.

3. Match the task to the dataset. Tasks are dataset-specific: MortalityPredictionMIMIC3 won't work on MIMIC-IV — use MortalityPredictionMIMIC4 or InHospitalMortalityMIMIC4. The full mapping is in references/tasks.md.

4. Pick `monitor` to match the task type. For binary classification use "pr_auc" or "roc_auc". For multilabel (drug rec) use "pr_auc_samples" or "jaccard_samples". For multiclass use "accuracy" or "f1_macro". Wrong monitor → checkpoint selection saves the wrong epoch.

5. MIMIC-IV uses `ehr_root=`, not `root=`. This is the one inconsistency in the dataset constructors.

6. For reproducible work, point `cache_dir=` somewhere persistent. PyHealth caches the parsed dataset; without cache_dir, you re-parse every run.

How to use this skill

PyHealth has a large API surface — there's no point loading it all at once. Read the reference file that matches the user's task:

If the user is asking about…Read
Installing, env setup, MIMIC access, GPUreferences/installation.md
Which dataset class to use, loading patterns, splittingreferences/datasets.md
What prediction task to choose (mortality, readmission, drug rec, sleep…)references/tasks.md
Picking a model architecture, model-specific argumentsreferences/models.md
Looking up or cross-mapping ICD/ATC/NDC/RxNorm/CCS codes, tokenizersreferences/medcode.md
End-to-end recipes for common scenariosreferences/examples.md

For multi-step tasks (e.g., "build a drug recommendation pipeline on MIMIC-IV"), read tasks.md + models.md + examples.md together — they cross-reference each other.

A note on style

Write minimal, idiomatic PyHealth. The library is opinionated; lean into its abstractions instead of reimplementing them in raw PyTorch. If you find yourself writing a custom training loop, ask whether Trainer would do the job — it almost always will, and it handles checkpointing, logging, and best-model selection for free.

When the user has private MIMIC access, point them at the local CSV root; for demos and learning, the synthetic MIMIC-III bucket (https://storage.googleapis.com/pyhealth/Synthetic_MIMIC-III/) is fine and works without credentialing.

Related skills

How it compares

Choose pyhealth for EHR-centric clinical pipelines; use scanpy or torchdrug when the domain is single-cell RNA-seq or molecular graphs instead.

FAQ

Which datasets does pyhealth support?

pyhealth supports clinical datasets including MIMIC-III, MIMIC-IV, eICU, OMOP, SleepEDF, ChestXray14, and EHRShot for EHR, signal, and imaging pipelines inside PyHealth.

What clinical tasks can pyhealth scaffold?

pyhealth scaffolds mortality, readmission, length-of-stay, drug recommendation, sleep staging, ICD coding, and EEG event tasks, with models such as RETAIN, GAMENet, SafeDrug, and Transformer variants trained via PyHealth Trainer.

Is Pyhealth safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Data Science & MLautomationresearch

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.