How Synthea Works
Synthea is a synthetic patient population simulator designed to generate realistic yet artificial longitudinal health records. It operates by modeling the medical history of synthetic patients from birth to death, simulating their conditions, encounters, medications, and other healthcare-related events. The system uses a modular rule-based approach, where each patient’s medical journey is independently generated based on statistical and demographic data.
The core of Synthea’s functionality lies in its Generic Module Framework (GMF). This framework allows for the creation of disease and condition modules that define the progression of medical events in a patient’s life. Each module is informed by clinical expertise and real-world statistics from sources such as the CDC, NIH, and other research organizations. These modules cover a wide range of conditions, starting with the top ten reasons patients visit primary care and the top ten conditions contributing to years of life lost. The framework supports both generic and custom Java-based modules, enabling extensibility for additional capabilities.
Synthea generates patient data dynamically, ensuring that each synthetic individual has a complete medical history, including allergies, medications, vaccinations, observations, lab results, procedures, and care plans. The system supports multiple encounter types, such as primary care visits, emergency room encounters, and symptom-driven interactions. These encounters are statistically modeled to reflect real-world healthcare patterns, including the timing and frequency of visits.
The output formats of Synthea include HL7 FHIR (in versions R4, STU3, and DSTU2), C-CDA, CSV, and CPCDS. FHIR output can also be generated in bulk using ndjson format.
Synthea’s architecture is built on Java, with a requirement for Java JDK 17 or newer, preferably a Long-Term Support (LTS) release such as JDK 17 or 25. The project uses Gradle for build automation, and recent updates have included support for JDK 25 while dropping support for older versions like JDK 11. The system is modular, allowing developers to extend its functionality by adding custom rules or modules. Graphical visualizations of rules and modules can also be generated using Graphviz, aiding in the understanding and debugging of complex workflows.
The generation process begins with a seed value for randomization, which ensures reproducibility. Users can specify parameters such as state, city, population size, gender, age range, and reference date to tailor the synthetic population to specific research or testing needs. For instance, running Synthea with the command ./runsynthea Massachusetts generates a synthetic population for Massachusetts, while ./runsynthea -s 12345 -p 1000 creates a population of 1,000 patients with a fixed seed for reproducibility. Output files are stored in a designated directory, such as ./output, and can include FHIR bundles, C-CDA documents, or CSV files depending on the configuration.
Synthea’s design ensures that synthetic data is free from privacy and legal restrictions, making it ideal for research, software testing, and policy simulation. The data can be used to evaluate healthcare IT systems, clinical decision support tools, and care management models without the risks associated with real patient data. Additionally, the system supports policy simulations at state and county levels, providing a scalable and repeatable environment for testing healthcare interventions.
Use Cases
Synthea is primarily used in research and development environments where realistic patient data is required but real data cannot be used due to privacy or legal constraints. One of its key applications is in the testing and validation of Health IT systems, including electronic health record (EHR) software, clinical decision support tools, and interoperability frameworks. By providing synthetic data in FHIR, C-CDA, and CSV formats, Synthea enables developers to simulate real-world scenarios without exposing patient privacy.
In healthcare research, Synthea supports population health studies by generating synthetic cohorts that reflect real-world demographics and medical conditions. Researchers can use these datasets to validate hypotheses, test statistical models, or explore the impact of healthcare policies on synthetic populations. For example, Synthea can simulate the effects of a new treatment protocol or a public health intervention across a synthetic population, allowing for iterative testing and refinement before implementation in real-world settings.
Synthea’s synthetic patient data can be used to create realistic training scenarios for healthcare professionals, enabling them to practice diagnosing conditions, prescribing medications, and managing care plans in a risk-free environment. The inclusion of social determinants of health in the synthetic records further enhances the realism of these training scenarios, providing a comprehensive view of patient care.
Synthea also plays a role in healthcare policy analysis. Policymakers and researchers can use synthetic populations to simulate the impact of proposed policies, such as changes to insurance coverage or healthcare access programs. By generating data at the state or county level, Synthea allows for granular analysis of how policy changes might affect different demographic groups. This capability is particularly valuable for iterative policy development, where multiple scenarios can be tested without the ethical or legal concerns associated with real patient data.
For software developers working on health information exchange (HIE) platforms or data integration tools, Synthea provides a reliable source of synthetic data for testing interoperability and data exchange protocols. The support for multiple data standards, including FHIR and C-CDA, ensures compatibility with a wide range of healthcare IT systems.
Additionally, Synthea has been used to power applications like SyntheticMass, which provides API access to synthetic patient data at the city, town, and individual levels. This application serves as a sandbox for Health IT innovators, allowing them to experiment with new healthcare solutions in a controlled environment. The ability to generate virtually unlimited synthetic patients makes Synthea a foundational tool for architects and developers working on next-generation Health IT solutions.
Key Features and Capabilities
The Generic Module Framework (GMF) enables the creation of disease-specific modules that define the progression of medical conditions over time. These modules are informed by clinical guidelines and real-world statistics, ensuring that the synthetic data reflects the complexity of real patient histories.
The system supports a comprehensive range of medical data types, including conditions, allergies, medications, vaccinations, observations (such as vitals and lab results), procedures, and care plans. Each synthetic patient’s record includes a longitudinal history of encounters, from primary care visits to emergency room admissions and symptom-driven interactions.
Synthea’s output capabilities are extensive, with support for multiple data standards. The most commonly used formats are HL7 FHIR (in versions R4, STU3, and DSTU2), C-CDA, and CSV. The flexibility in output formats allows Synthea to integrate seamlessly with existing healthcare IT infrastructure, whether for testing or research.
The system’s configuration options are highly granular, enabling users to specify parameters such as population size, geographic location, age range, and gender distribution. For example, users can generate a synthetic population for a specific state or city by providing the appropriate command-line arguments, such as ./runsynthea Massachusetts. Advanced users can further customize the generation process by modifying the synthea.properties file or by developing custom Java modules to extend Synthea’s functionality. This level of customization ensures that the synthetic data aligns closely with the requirements of specific use cases.
By default, the system uses Massachusetts Census data for demographics, but this can be replaced with international configurations or other datasets.
Graphviz integration allows users to generate graphical representations of Synthea’s workflows, which can be useful for debugging or understanding complex module interactions. This feature is particularly valuable for developers contributing to the project or extending its capabilities. Additionally, Synthea provides commands to list concepts and attributes used in the synthetic records, offering transparency into the data generation process.
Version 4.0.0, released in March 2026, added support for US Core 7 in FHIR R4 exports, fixed display text for multiple codes, and introduced a new module for Adolescent Idiopathic Scoliosis (AIS).
Synthea’s open-source nature and permissive Apache 2.0 license encourage collaboration and customization. The project is maintained by a global community of developers, academics, and healthcare experts, many of whom contribute by reviewing or developing new disease modules. The GitHub repository serves as the primary hub for contributions, where users can report issues, submit pull requests, or request new features. This collaborative approach ensures that Synthea remains responsive to the evolving needs of the healthcare IT community.
The system’s ability to generate synthetic data without privacy or legal restrictions makes it an invaluable tool for healthcare innovation. By providing a risk-free environment for testing and research, Synthea enables developers, clinicians, and policymakers to explore new ideas without the constraints of real patient data. This capability is particularly important in fields such as clinical decision support, care management, and health policy simulation, where realistic data is essential but real data is often inaccessible.
