MedModels Logo

A Rust-Powered Python Framework for Modern Healthcare Research

MedModels provides a standardized, reliable, and efficient framework for handling, processing, and analyzing claims data and electronic health records (EHR).

Introducing Patient Synthesizer

Breaking through European data access barriers with high-fidelity synthetic medical data that preserves privacy while unlocking innovation

The Solution Life Sciences Companies Have Been Waiting For

Privacy-First Innovation

Generate non-identifiable datasets that preserve patient privacy while maintaining statistical fidelity to real patient data

Accelerate Research Cycles

Eliminate months of data access negotiations and start your research immediately with ready-to-use synthetic datasets

Proven Statistical Fidelity

Validation shows R² values up to 0.971 for medical concept concordance and accurate survival modeling

Validation Results

Rigorous testing on synthetic patient data

✓ Validated on synthetic patient data
✓ Preserves complex medical relationships
✓ Resistant to privacy attacks

€M

Reduce Research Costs

Eliminate expensive data licensing fees and lengthy legal negotiations

Faster Time to Market

Start research immediately instead of waiting months for data access approvals

Regulatory Compliance

Enable compliant research workflows while maintaining data privacy and regulatory requirements

Why MedModels?

Analyzing real-world evidence, especially patient data, is a complex task demanding accuracy and reproducibility. Currently, research teams often re-implement the same statistical methods and data processing pipelines, leading to inefficient codebases and technical debt.

MedRecord Data Structure

A graph-based representation that organizes medical data using nodes and edges to capture complex interactions and dependencies.

  • Efficient querying and data retrieval
  • Dynamic management of nodes and edges
  • Support for multiple data sources

Standardized Workflows

Streamlines common tasks in real-world evidence analyses, reducing the need for custom code.

  • Consistent analysis pipelines
  • Reproducible research methods
  • Reduced technical debt

Rust-Powered Performance

Built on a Rust backend for optimal performance and efficient handling of large-scale medical data.

  • High-performance computing
  • Memory-efficient data handling
  • Familiar Python interface

Additional Key Features

Treatment Effect Analysis

Comprehensive tools for estimating treatment effects from observational data with statistical rigor.

Effortless Creation

Create MedRecord from Pandas DataFrames, Polars DataFrames, or standard Python data structures.

Interoperability

Supports collaboration and data sharing through a unified data structure and analysis framework.

Quick Start Example

See how MedModels simplifies healthcare data analysis with an intuitive Python interface powered by Rust.

example.py
import pandas as pd
import medmodels as mm

# Patients DataFrame (Nodes)
patients = pd.DataFrame(
    [
        ["Patient 01", 72, "M", "USA"],
        ["Patient 02", 74, "M", "USA"],
        ["Patient 03", 64, "F", "GER"],
    ],
    columns=["ID", "Age", "Sex", "Loc"],
)

# Medications DataFrame (Nodes)
medications = pd.DataFrame(
    [["Med 01", "Insulin"], ["Med 02", "Warfarin"]], columns=["ID", "Name"]
)

# Patients-Medication Relation (Edges)
patient_medication = pd.DataFrame(
    [
        ["Patient 02", "Med 01", pd.Timestamp("20200607")],
        ["Patient 02", "Med 02", pd.Timestamp("20180202")],
        ["Patient 03", "Med 02", pd.Timestamp("20190302")],
    ],
    columns=["Pat_ID", "Med_ID", "Date"],
)

# Create a MedRecord object using the builder pattern
record = (
    mm.MedRecord.builder()
        .add_nodes((patients, "ID"), group="Patients")
        .add_nodes((medications, "ID"), group="Medications")
        .add_edges((patient_medication, "Pat_ID", "Med_ID"))
        .add_group("US-Patients", nodes=["Patient 01", "Patient 02"])
        .build()
)

# Print an combined overview of the nodes and edges in the MedRecord
print(record)

# Accessing all available nodes
print(record.nodes)
# Output: ['Patient 03', 'Med 01', 'Med 02', 'Patient 01', 'Patient 02']

# Accessing a certain node and its attributes
print(record.node["Patient 01"])
# Output: {'Age': 72, 'Loc': 'USA', 'Sex': 'M'}

# Getting all available groups
print(record.groups)
# Output: ['Medications', 'Patients', 'US-Patients']

This example shows how to create a MedRecord object, add nodes and edges, and perform basic operations.

Who It's For

MedModels is designed for a wide range of users working with real-world data and electronic health records.

(Pharmaco-)Epidemiologists

Analyze real-world evidence with standardized methods and reproducible workflows.

Real-World Data Analysts

Process and analyze large-scale healthcare datasets efficiently and reliably.

Health Economists

Evaluate healthcare interventions and outcomes with robust statistical methods.

Clinicians

Extract meaningful insights from patient data to inform clinical decision-making.

Data Scientists

Leverage high-performance computing for complex healthcare data analysis.

Software Developers

Build healthcare applications with a reliable and efficient data processing framework.

Installation

Get started with MedModels in minutes. Our framework is available on PyPI.

Terminal
pip install medmodels

Supported Python Versions

  • Python 3.10
  • Python 3.11
  • Python 3.12
  • Python 3.13

Need Custom Solutions?

Beyond our open-source framework, we provide expert consulting services for custom healthcare data implementations and synthetic data solutions.

Custom Implementation

Tailored MedModels solutions for your specific data sources and workflows

Synthetic Data Services

Enterprise Patient Synthesizer deployment with full privacy compliance

Training & Support

Comprehensive training programs and ongoing technical support

MedModels Logo

Ready to Transform Your Healthcare Research?

Start using MedModels today to standardize your healthcare data analysis workflows and improve reproducibility.