This generator produces realistic-looking but entirely fake patient records so you can build and demo health-tech dashboards, EHR prototypes, and analytics tools without touching real protected health information. Everything is created locally in your browser.
How it works
Each record is assembled from fixed sample pools using a simple uniform random pick per field:
- A patient ID like
P-00042from a running counter. - A name combined from first-name and surname pools.
- An age (1–95) and sex, then plausible vitals: systolic/diastolic blood pressure and heart rate drawn from normal physiological ranges.
- A primary diagnosis chosen from a list of common conditions, each paired with its real ICD-10 code so the data passes a glance test.
- A last-visit date randomly placed within the past two years.
The output is serialized to either CSV (with a header row) or pretty-printed JSON.
Why synthetic patient data is essential in health-tech
Healthcare software development faces a fundamental tension: the data that makes demos compelling — diverse diagnoses, realistic vitals, varied demographics — is exactly the data most tightly regulated under HIPAA and equivalent frameworks. Using de-identified real data is legally complex and still carries residual re-identification risk. Synthetic data generated from statistical distributions has no re-identification risk because there is no real person behind any record. There is no PHI because there is no patient.
What each patient record contains
| Field | Description |
|---|---|
| patientId | Sequential ID in P-NNNNN format |
| name | First and surname from randomised name pools |
| age | Integer 1–95 |
| sex | Male or Female |
| systolicBP | Systolic blood pressure, drawn from physiologically plausible ranges |
| diastolicBP | Diastolic blood pressure, consistent with systolic |
| heartRate | Heart rate in BPM, within normal-to-mildly-elevated range |
| diagnosis | Common condition name from a fixed list |
| icd10Code | Real ICD-10 code paired with the diagnosis |
| lastVisit | Random date within the past two years |
The diagnosis list uses real ICD-10 codes paired with common conditions — for example Type 2 diabetes mellitus (E11.9), essential hypertension (I10), and chronic obstructive pulmonary disease (J44.9). This means the data passes a glance test and works correctly in demos of diagnosis code lookup, clinical grouping, and comorbidity analysis tools.
Vitals are drawn from ranges representing a mix of healthy and mildly abnormal readings — more useful for demo purposes than all-normal values, and realistic for a general outpatient population.
Common use cases
EHR prototype development: Populate a patient list, record viewer, or clinical note interface with enough records to validate layout, scrolling, and search without real data.
Analytics dashboards: Drive charts showing diagnoses by frequency, age distribution, blood pressure trending, and visit recency — fields commonly featured in population health management tools.
Non-production environment testing: Any dev, staging, or QA environment that must not contain real PHI but needs realistic-looking data to test UI, imports, or business logic.
Tips and notes
Use a few hundred rows for dashboard layout work and a few thousand to stress pagination and charting. Because the diagnosis codes are real ICD-10 entries, the dataset is good for demoing code-lookup or grouping features. Save the output if you need a stable dataset — each generation is independently random.