Need help with synthea?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

1.0K Stars 333 Forks Apache License 2.0 3.5K Commits 114 Opened issues


Synthetic Patient Population Simulator

Services available


Need anything else?

Contributors list

SyntheaTM Patient Generator Build Status codecov

SyntheaTM is a Synthetic Patient Population Simulator. The goal is to output synthetic, realistic (but not real), patient data and associated health records in a variety of formats.

Read our wiki for more information.

Currently, SyntheaTM features include: - Birth to Death Lifecycle - Configuration-based statistics and demographics (defaults with Massachusetts Census data) - Modular Rule System - Drop in Generic Modules - Custom Java rules modules for additional capabilities - Primary Care Encounters, Emergency Room Encounters, and Symptom-Driven Encounters - Conditions, Allergies, Medications, Vaccinations, Observations/Vitals, Labs, Procedures, CarePlans - Formats - HL7 FHIR (STU3 v3.0.1, DSTU2 v1.0.2 and R4) - Bulk FHIR in ndjson format (set

exporter.fhir.bulk_data = true
to activate) - C-CDA (set
exporter.ccda.export = true
to activate) - CSV (set
exporter.csv.export = true
to activate) - CPCDS (set
exporter.cpcds.export = true
to activate) - Rendering Rules and Disease Modules with Graphviz

Developer Quick Start

These instructions are intended for those wishing to examine the Synthea source code, extend it or build the code locally. Those just wishing to run Synthea should follow the Basic Setup and Running instructions instead.


System Requirements: SyntheaTM requires Java 1.8 or above.

To clone the SyntheaTM repo, then build and run the test suite:

git clone
cd synthea
./gradlew build check test

Changing the default properties

The default properties file values can be found at

. By default, synthea does not generate CCDA, CPCDA, CSV, or Bulk FHIR (ndjson). You'll need to adjust this file to activate these features. See the wiki for more details.

Generate Synthetic Patients

Generating the population one at a time...


Command-line arguments may be provided to specify a state, city, population size, or seed for randomization.

Usage is

run_synthea [-s seed] [-p populationSize] [-m moduleFilter] [state [city]]
For example:
  • run_synthea Massachusetts
  • run_synthea Alaska Juneau
  • run_synthea -s 12345
  • run_synthea -p 1000
  • run_synthea -s 987 Washington Seattle
  • run_synthea -s 21 -p 100 Utah "Salt Lake City"

Some settings can be changed in


SyntheaTM will output patient records in C-CDA and FHIR formats in


SyntheaTM GraphViz

Generate graphical visualizations of SyntheaTM rules and modules.

./gradlew graphviz

Concepts and Attributes

Generate a list of concepts (used in the records) or attributes (variables on each patient).

./gradlew concepts
./gradlew attributes


Copyright 2017-2021 The MITRE Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.