Synthetic patient record generator (Synthea-inspired) trained on pristine-healthy episode data
Project description
๐ฉบ syntha
A Synthea-inspired hybrid synthetic patient record generator โ learns the joint distribution of real anonymized Turkish-cohort EHR episodes with a Gaussian copula, then layers Synthea-style clinical pathways on top to emit fully-coded FHIR R4 bundles in Turkish.
๐ฅ๏ธ Desktop app โ generate synthetic patients without code
A Tauri 2 desktop app that bundles the trained Gaussian copula and samples synthetic patients fully client-side (no Python required). Pick cohort + n + seed + constraints, hit Generate, and download a CSV.
๐ฆ Installers are produced by the release workflow on every
v*tag push and live at stable filenames (syntha_aarch64.dmg,syntha_x64-setup.exe,syntha_amd64.AppImage). The buttons above all usereleases/latest/download/โฆso they track the latest release automatically โ no manual link maintenance per version. A daily Install-buttons verification workflow HEAD-checks each URL and opens an issue if any 404s. Source for the app lives inapp/.
๐ก๏ธ macOS sees
"syntha.app" is damaged? That's Gatekeeper's misleading error for unsigned apps. Until the signing pipeline ships (app/README.md โ signing setup), strip the quarantine flag manually:xattr -dr com.apple.quarantine /Applications/syntha.app
๐ Table of contents
- ๐ Why syntha?
- ๐ฏ What it produces
- โ ๏ธ The catch (what it is not)
- ๐น๐ท Turkish cohort + Turkish output
- ๐งช Use cases
- ๐ Quick start
- ๐ Distribution fidelity
- ๐ฆ Example output
- ๐ FHIR endpoints
- ๐งฑ Architecture
- ๐งฌ Synthea-style clinical modules
- ๐ ๏ธ CLI reference
- ๐บ๏ธ Roadmap
- ๐ค Contributing + clinician curation
- ๐ License + citation
๐ Why syntha?
Synthea is the gold standard for synthetic FHIR patients, but it is rules-only and tuned to US population priors. CTGAN-style purely-generative models capture data faithfully but emit physiologically impossible tuples and have no clinical-pathway awareness. syntha gives you both:
| Synthea (rules-only) | CTGAN / copula-only | syntha (hybrid) | |
|---|---|---|---|
| Matches this cohort's lab distributions | โ generic US priors | โ | โ |
| Coherent prescriptions per condition | โ | โ | โ |
| Physiologically valid (BP, eGFRโฆ) | โ | โ ๏ธ sometimes | โ |
| LOINC + SNOMED + ICD-10 + RxNorm-coded FHIR | โ | โ | โ |
| Longitudinal trajectories | โ state machines | โ | โ drift + sticky flags |
| Turkish locale (names, addresses, displays) | โ | โ | โ |
๐ฏ What it produces
For each synthetic patient, syntha emits a FHIR R4 transaction Bundle containing:
- ๐ค Patient โ Turkish HumanName + Address +
trlanguage code, derived birthDate - ๐งช Observation ร ~12 โ LOINC-coded labs and vitals (glucose, lipid panel, CBC, LFTs, eGFR, BP, โฆ)
- ๐ฉบ Condition ร N โ every active comorbidity flag, dual-coded SNOMED CT + ICD-10, with English/Turkish display text
- ๐ฅ Encounter ร M โ one per active condition, driven by the relevant clinical module
- ๐ MedicationRequest ร P โ RxNorm-coded, dosage included
- ๐ฌ Procedure ร Q โ e.g. HbA1c, lipid panel, ECG, spirometry
- ๐ CarePlan ร R โ disease-specific lifestyle / monitoring plans
Plus a flat CSV that matches the input schema for drop-in use as training data.
โ ๏ธ The catch (what it is not)
- ๐ซ Not a substitute for real PHI when validity hinges on rare events โ the copula reproduces the bulk of the joint distribution, not the long tails.
- ๐ซ Not privacy-proof. Gaussian copulas are not differentially private; if the source has fewer than ~50 patients with a rare combination, syntha may reproduce that combination too closely. Do not use when the source is a small sensitive cohort without adding a DP mechanism.
- ๐ซ No disease progression simulator yet โ the copula gives a cross-sectional snapshot; longitudinal mode adds plausible drift but is not a Synthea-PADM state machine. (See v0.8 in the roadmap.)
- ๐ซ The source CSVs are anonymized retrospective Turkish-cohort episodes of healthy patients โ synthetic disease prevalence is lower than Turkish national averages (TรฤฐK). If you need a population-representative Turkish cohort, calibrate per the
v0.6roadmap items. - โ ๏ธ Continuousโbinary correlations are attenuated ~50% in magnitude (signs are correct since v0.3.2). Pure Spearman rank correlation on tied binary columns is biased toward zero; the proper fix is the polyserial/tetrachoric correlation, queued as v0.4 in the roadmap. For most downstream uses (training risk models, healthy-control comparisons) this is acceptable; if you need exact labโdisease correlations, wait for v0.4 or contribute the fix.
๐น๐ท Turkish cohort + Turkish output
The training data comes from pristine_strict_episodes.csv and pristine_tolerant_episodes.csv โ anonymized retrospective EHR episodes from a Turkish patient cohort selected to represent clinically pristine (i.e. healthy / minimally medicated) adults. Source CSVs are never committed to this repo (gitignored).
Synthetic output is Turkish-localized:
- Patient names sampled from common Turkish given-name and family-name distributions (
src/syntha/locale/turkish.py). - Addresses use real Turkish cities weighted by approximate population, with ISO 3166-2:TR province codes.
- Every Condition emits both an English SNOMED display and a clinical-Turkish translation in
Condition.code.text. - Patient.communication is set to
tr.
All clinical terminology used (LOINC, SNOMED CT, ICD-10, RxNorm) comes from open international standards โ no licensed terminology content is reproduced or embedded.
๐งช Use cases
| Where to use it | Why |
|---|---|
| ๐ค Training ML risk models without exposing real PHI | The copula preserves joint distributions, so a model trained on synthetic data transfers reasonably to real test sets (TSTR benchmark in v0.9). |
| ๐งฌ Bioinformatics healthy-control cohorts | The source is pristine healthy episodes โ use the synthetic patients as a normal-baseline group to compare against your disease cohort. |
| ๐ ๏ธ EHR pipeline / ETL integration testing | Realistic-but-fake FHIR R4 bundles with valid LOINC/SNOMED/ICD-10/RxNorm codes are ideal for testing FHIR consumers, mapping pipelines, and OMOP/i2b2 ETLs without DPA paperwork. |
| ๐ Teaching / coursework | Drop-in dataset for biostatistics, epidemiology, and clinical-informatics teaching without IRB. |
| ๐ฌ Data augmentation | Boost rare-event coverage by oversampling synthetic patients with specific comorbidity combinations (conditional sampling lands in v0.7). |
๐ Quick start
# 1. Install
git clone https://github.com/ArioMoniri/syntha.git
cd syntha
pip install -e .
# 2. (Optional) Ingest your source CSVs โ files in data/raw/ are gitignored
bash scripts/ingest_csvs.sh
# 3. Generate 1000 synthetic episodes + FHIR bundles + model card + validation report
syntha generate \
--input data/raw/pristine_tolerant_episodes.csv \
--output output/tolerant \
--n 1000 --cohort tolerant
# 4. Longitudinal โ 500 baseline patients ร ~4 encounters over 3 years
syntha generate \
--input data/raw/pristine_tolerant_episodes.csv \
--output output/tolerant_long \
--n 2000 --cohort tolerant \
--longitudinal --encounters-per-patient 4 --years-of-history 3
# 5. Validate any synthetic CSV against its source
syntha validate \
--source data/raw/pristine_tolerant_episodes.csv \
--synthetic output/tolerant/synthetic_tolerant_episodes.csv \
--output output/tolerant/validation.json
๐ Distribution fidelity
A 100-episode sample of tolerant cohort vs the full 135 569-row source:
Marginal distributions
Spearman correlation structure
Disease prevalence
Numbers (from examples/sample_output/sample_validation_report.json)
| Metric | Value |
|---|---|
| n (source / synthetic) | 135 569 / 100 |
| Max KolmogorovโSmirnov across continuous columns | 0.14 |
| Mean KS | 0.07 |
| Max binary-prevalence error | 0.025 (has_rx_data) |
| Disease-prevalence error (HTN / DM / hyperlipidemia) | 0.015 / 0.004 / 0.010 |
| Spearman correlation-matrix Frobenius diff | 2.94 |
๐ The KS statistic is well below the typical 0.20 "noticeable difference" threshold for every column; binary marginals (gender, disease prevalence) match to within ~1 percentage point.
๐ฆ Example output (embedded)
A pretty-printed sample FHIR Bundle, a 100-episode synthetic CSV, the model card, and the validation report all live under examples/sample_output/ and are tracked in git.
| File | Click to view (GitHub built-in viewer) | What's inside |
|---|---|---|
| ๐งพ Full FHIR Bundle (pretty) | sample_bundle_pretty.json |
One transaction Bundle: Patient + Observations + Conditions + Encounter + MedicationRequests + Procedure + CarePlan |
| ๐ก 100 bundles, NDJSON | sample_bundles.ndjson |
Bulk-FHIR-style export, one transaction Bundle per line |
| ๐ Flat CSV | sample_episodes.csv |
100 synthetic episodes matching input schema |
| ๐๏ธ Model card | sample_model_card.json |
source sha256, n_train, marginals, top correlations |
| โ Validation report | sample_validation_report.json |
KS / Wasserstein / correlation-Frobenius per column |
๐ก Embedded viewer. GitHub renders the linked JSON files with syntax highlighting and a collapsible outline (click the
{}icon top-right of the file view). For full FHIR-aware validation and tree-view rendering, drag the file onto simplifier.net or paste it into the official HL7 Clinical FHIR Renderer.
๐๏ธ Inline preview โ first synthetic patient (click to expand)
{
"resourceType": "Bundle",
"type": "transaction",
"timestamp": "2017-05-27T21:49:42Z",
"entry": [
{
"resource": {
"resourceType": "Patient",
"id": "20f13c43-d17b-443b-b7a7-69ccc40631c6",
"gender": "male",
"name": [{"use": "official", "family": "Avcฤฑ", "given": ["Furkan"]}],
"address": [{
"use": "home", "type": "physical",
"city": "ฤฐstanbul", "state": "TR-34", "country": "TR"
}],
"communication": [{
"language": {"coding": [{"system": "urn:ietf:bcp:47", "code": "tr", "display": "Turkish"}]},
"preferred": true
}],
"birthDate": "1975-โฆ"
}
},
{
"resource": {
"resourceType": "Observation",
"code": {
"coding": [{"system": "http://loinc.org", "code": "8480-6",
"display": "Systolic blood pressure"}]
},
"valueQuantity": {"value": 118.72, "unit": "mm[Hg]"}
}
},
{
"resource": {
"resourceType": "Condition",
"code": {
"coding": [
{"system": "http://snomed.info/sct", "code": "414545008",
"display": "Ischemic heart disease (disorder)"},
{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I25.9",
"display": "Chronic ischaemic heart disease, unspecified"}
],
"text": "Ischemic heart disease (disorder) / ฤฐskemik kalp hastalฤฑฤฤฑ"
}
}
},
{
"resource": {
"resourceType": "MedicationRequest",
"medicationCodeableConcept": {
"coding": [{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "243670", "display": "Aspirin 81 MG Oral Tablet"
}]
},
"dosageInstruction": [{"text": "81 mg daily"}]
}
}
]
}
๐๏ธ Inline preview โ first 5 rows of the CSV
| RF_EPISODE2 | HASTA_ID | episode_date | gender | age | bp_sys | bp_dia | hdl | ldl | hgb | egfr | Hipertansiyon | DM_Tum |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 92893619 | SYN_7D70431D | 2017-05-27 | M | 42 | 118.7 | 63.0 | 95.0 | 58.0 | 12.9 | 105.7 | 0 | 0 |
| โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ | โฆ |
Full file: examples/sample_output/sample_episodes.csv (100 rows ร 73 cols).
๐๏ธ Inline preview โ validation report summary
{
"n_source": 135569,
"n_synthetic": 100,
"ks_max": 0.14,
"ks_mean": 0.07,
"binary_max_abs_error": 0.025,
"correlation_frobenius": 2.94
}
๐ FHIR endpoints
syntha emits canonical FHIR R4 resources, so every emitted resource type maps to its standard REST endpoint:
| Resource type | GET (read) | GET (search) | Create (POST to base) |
|---|---|---|---|
| ๐ค Patient | GET /Patient/{id} |
GET /Patient |
as part of transaction Bundle |
| ๐งช Observation | GET /Observation/{id} |
GET /Observation?subject={ref} |
โ |
| ๐ฉบ Condition | GET /Condition/{id} |
GET /Condition?patient={id} |
โ |
| ๐ฅ Encounter | GET /Encounter/{id} |
GET /Encounter?patient={id} |
โ |
| ๐ MedicationRequest | GET /MedicationRequest/{id} |
GET /MedicationRequest?patient={id} |
โ |
| ๐ฌ Procedure | GET /Procedure/{id} |
GET /Procedure?patient={id} |
โ |
| ๐ CarePlan | GET /CarePlan/{id} |
GET /CarePlan?patient={id} |
โ |
| ๐ฆ Bundle | GET /Bundle/{id} |
โ | POST / (transaction) |
Spin up a demo FHIR server locally
syntha serve --bundles examples/sample_output/sample_bundles.ndjson --port 8080
Then:
curl http://127.0.0.1:8080/metadata # CapabilityStatement
curl http://127.0.0.1:8080/Patient # searchset Bundle (all Patients)
curl http://127.0.0.1:8080/Patient/{id} # single Patient
curl http://127.0.0.1:8080/Observation # all Observations
curl http://127.0.0.1:8080/\$export # FHIR Bulk Data export (NDJSON)
This is a read-only demo server (stdlib http.server, no dependencies). For a production-grade FHIR server, POST the bundles to a HAPI / Microsoft FHIR / Google Healthcare API instance โ see below.
POST the bundles to any FHIR R4 server
scripts/post_to_fhir.sh POSTs every transaction Bundle in an NDJSON file to a configurable FHIR endpoint (default: the public HAPI test server):
# To the public HAPI playground:
bash scripts/post_to_fhir.sh examples/sample_output/sample_bundles.ndjson
# To your own server:
FHIR_BASE=http://localhost:8080/fhir bash scripts/post_to_fhir.sh
Once uploaded, you can browse the resources in any FHIR UI โ e.g. HAPI's built-in browser or the Open Patient Browser.
๐งฑ Architecture
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ
โ Source CSV โโโโถโ Gaussian copula โโโโถโ Physiologic filter โ
โ (Turkish โ โ (Spearman โ ฯ; โ โ (BP, Friedewald, โ
โ pristine) โ โ nearest-PSD) โ โ eGFR/creatinine) โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Longitudinal โ (optional) โ Direct single-episode โ
โ expansion โ โโโโโโโโโโโโโโโโถโ CSV + FHIR R4 export โ
โ (drift, Poisson) โ โ with Synthea-style โ
โโโโโโโโโโโฌโโโโโโโโโ โ module activation โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
(same FHIR export)
Read docs/ARCHITECTURE.md for the math (SpearmanโGaussian transform, nearest-PSD projection, constraint rules).
๐งฌ Synthea-style clinical modules
Nine modules ship out of the box (src/syntha/modules/); each fires on its corresponding source-CSV comorbidity flag:
| Module | Flag(s) | Emits |
|---|---|---|
| ๐ซ Hypertension | Hipertansiyon |
Encounter, 1โ2 antihypertensives (stage 2 โ dual), CarePlan |
| ๐ฌ Diabetes | DM_Tum, DM_Komplikasyonlu |
Encounter, HbA1c, metformin (+ insulin if severe), CarePlan |
| ๐ง Hyperlipidemia | Hiperlipidemi |
Encounter, lipid panel, statin (high-intensity if LDL โฅ 190) |
| ๐ฆ Thyroid | Tiroid |
Encounter, TSH, levothyroxine |
| ๐ Depression | Depresyon |
Psych encounter, sertraline, CBT CarePlan |
| ๐ฐ Anxiety | Anksiyete |
Psych encounter, escitalopram (or buspirone if already on SSRI) |
| โค๏ธ IHD | Iskemik_Kalp |
Cardiology encounter, ECG, aspirin + ฮฒ-blocker + statin |
| ๐ฌ๏ธ Asthma | Astim |
Resp encounter, spirometry, SABA + ICS |
| ๐ญ COPD | COPD |
Resp encounter, spirometry, LABA + SABA |
See docs/MODULES.md for the authoring guide. Clinician contributions for TR-specific drug choices are highly welcome โ see CONTRIBUTING.md.
๐ ๏ธ CLI reference
| Command | Description |
|---|---|
syntha generate |
End-to-end: train copula + sample + modules + CSV/FHIR + model card + validation report |
syntha fit |
Fit and persist a copula in a registry without sampling |
syntha sample |
Raw sampling from a registered model |
syntha fhir |
Convert an existing synthetic CSV to FHIR bundles |
syntha validate |
KS / Wasserstein / correlation diff between source and synthetic |
syntha serve |
Boot a read-only FHIR R4 demo server from a bundles NDJSON file |
syntha export-model |
Export a registered copula to a compact JSON the desktop app consumes |
syntha list-models |
List models in a registry |
syntha show-card |
Print a model card |
Run syntha <cmd> --help for full option lists.
๐บ๏ธ Roadmap
The full phased roadmap (v0.1 โ v1.0) lives in ROADMAP.md. Highlights:
- v0.6 โ clinician curation ๐ฃ โ needs Dr. Moniri (or a collaborator)
- v0.7 โ optional CTGAN/TVAE backend โฌ
- v0.8 โ true Synthea PADM-style state machines โฌ
- v0.9 โ TSTR benchmark โฌ
- v1.0 โ PyPI + paper โฌ
๐ค Contributing + clinician curation welcome
There are three ways to feed clinical guidance into syntha โ pick whichever is least friction for you:
1. ๐ Just tell me (lowest friction)
Reply in any open conversation with Claude (the agent that maintains this repo) saying e.g.
"In Tรผrkiye, perindopril 5 mg is the typical first-line ACEi for uncomplicated hypertension per TKD 2023 โ switch the default in the hypertension module."
โฆand I'll edit the relevant file, push, and re-run CI. No GitHub UI needed.
2. ๐ GitHub issue (recommended for asynchronous tracking)
Open an issue using the ๐งโโ๏ธ Clinical curation template โ one click:
๐ Open a Clinical curation issue ๐
The template pre-lists the files most likely to need changes:
| If you want to changeโฆ | Edit this file |
|---|---|
| Which drug a module prescribes | src/syntha/modules/<condition>.py |
| The RxNorm code or dose text | src/syntha/fhir/rxnorm.py |
| The SNOMED / ICD-10 code for a Condition | src/syntha/fhir/codes.py |
| Turkish display strings | src/syntha/locale/turkish.py |
| Prevalence calibration / disease-progression rules | src/syntha/longitudinal.py |
3. ๐ง Pull request
git clone https://github.com/ArioMoniri/syntha
cd syntha
pip install -e ".[dev]"
# โฆ edit files โฆ
pytest -q
git checkout -b clinical/<short-topic>
git commit -am "clinical: <what you changed and why>"
git push -u origin clinical/<short-topic>
gh pr create # or open via the GitHub UI
What's currently flagged ๐ฃ (waiting for clinician input)
Per ROADMAP.md โ v0.6:
- ๐ฃ TR-specific first-line drug calibration โ current defaults are international (lisinopril/amlodipine for HTN, metformin for DM, atorvastatin for hyperlipidemia). Turkish primary-care reality may differ (e.g. perindopril, nebivolol).
- ๐ฃ New modules: CKD staging (eGFR-driven), MAFLD (ALT/AST + obesity), anemia (Hb-driven), B12 deficiency (vit B12 column directly available).
- ๐ฃ Prevalence calibration to TรฤฐK โ synthetic disease rates currently mirror the pristine-healthy source cohort. To use syntha as a Turkish-population baseline rather than a healthy baseline, the marginals should be calibrated to TรฤฐK figures.
- ๐ฃ Turkish display string review โ confirm clinical-Turkish preferred terms match
Tรผrk Tabipleri Birliฤi/ TR-specific usage rather than literal translations. - ๐ฃ ICD-10 specificity โ the current mapping uses unspecified (".9") forms; specifying further (
E11.65,I50.32, etc.) when the source flag carries the information would improve downstream realism.
Full developer guide: CONTRIBUTING.md. All PRs must pass the CI matrix (Py 3.10 โ 3.13) before merge.
๐ License + citation
Apache 2.0 ยฉ 2026 Ariorad Moniri โ see LICENSE.
If you use syntha in academic work, please cite:
Moniri, A. (2026). syntha: hybrid synthetic patient record generator
trained on Turkish pristine-healthy EHR cohorts.
https://github.com/ArioMoniri/syntha
Acknowledgements
- ๐ฉบ Synthea โ the inspiration for the clinical-module layer and FHIR output format.
- ๐ Open clinical terminologies: LOINC, SNOMED CT, ICD-10, RxNorm.
- ๐ The anonymized Turkish-cohort EHR data used to train the copula (de-identified by the upstream data steward; never redistributed by this repo).
Contributors
Ariorad Moniri ๐ป ๐จ ๐ ๐ง ๐ค ๐ ๐ โ ๏ธ |
This project follows the all-contributors specification โ contributions of any kind welcome. Comment @all-contributors please add @username for code,doc on an issue or PR to nominate someone.
๐ฌ Community
- ๐จ๏ธ GitHub Discussions โ open questions, "is this the right tool for X?", show-and-tell
- ๐ Issues โ bug reports + feature requests + clinical-curation
- ๐ Contributing โ dev setup + commit conventions + clinical-curation workflow
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file syntha_ehr-0.5.0.tar.gz.
File metadata
- Download URL: syntha_ehr-0.5.0.tar.gz
- Upload date:
- Size: 90.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b2d2f6eb3edc79603eea0d12d4d8d9d640cff022921d8591f18fec0c221cb7b
|
|
| MD5 |
8b22241d367e34c13bf34ae200cd9d15
|
|
| BLAKE2b-256 |
f07dff4590b5e91106a3f7ada8b973a65c1108116649876092b0c6c4bc0c1129
|
Provenance
The following attestation bundles were made for syntha_ehr-0.5.0.tar.gz:
Publisher:
pypi-publish.yml on ArioMoniri/syntha
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
syntha_ehr-0.5.0.tar.gz -
Subject digest:
6b2d2f6eb3edc79603eea0d12d4d8d9d640cff022921d8591f18fec0c221cb7b - Sigstore transparency entry: 1544202900
- Sigstore integration time:
-
Permalink:
ArioMoniri/syntha@fdbe32493acbc3f119189b70032b2d37fb2c83b4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/ArioMoniri
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@fdbe32493acbc3f119189b70032b2d37fb2c83b4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file syntha_ehr-0.5.0-py3-none-any.whl.
File metadata
- Download URL: syntha_ehr-0.5.0-py3-none-any.whl
- Upload date:
- Size: 78.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcdf6a5357d10043aa3d8c8bca88600e3df27f0bee5eec46e7f3fb6d0f077210
|
|
| MD5 |
3005886d8f02756ecfe64bd4d455c555
|
|
| BLAKE2b-256 |
b54ba50962f5cc0685175e9f226866630661f4b935ceb36189530dbb455128a4
|
Provenance
The following attestation bundles were made for syntha_ehr-0.5.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on ArioMoniri/syntha
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
syntha_ehr-0.5.0-py3-none-any.whl -
Subject digest:
bcdf6a5357d10043aa3d8c8bca88600e3df27f0bee5eec46e7f3fb6d0f077210 - Sigstore transparency entry: 1544203305
- Sigstore integration time:
-
Permalink:
ArioMoniri/syntha@fdbe32493acbc3f119189b70032b2d37fb2c83b4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/ArioMoniri
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@fdbe32493acbc3f119189b70032b2d37fb2c83b4 -
Trigger Event:
push
-
Statement type: