據(jù))
如何用 Synthea 一條命令生成百萬條合成患者數(shù)據(jù)【免費下載鏈接】syntheaSynthetic Patient Population Simulator項目地址: https://gitcode.com/gh_mirrors/sy/syntheaSynthea 是一個由 MITRE 開發(fā)的合成患者模擬器Synthetic Patient Population Simulator。它把每個虛擬患者從出生到死亡的完整生命周期跑一遍產(chǎn)出疾病、就診、用藥、檢驗等合成的醫(yī)療記錄——數(shù)據(jù)足夠逼真但和任何真實患者無關(guān)。如果你需要批量、合規(guī)、可復現(xiàn)的醫(yī)療測試數(shù)據(jù)它就是干這件事的工具。裝好環(huán)境、構(gòu)建并跑通第一次合成患者數(shù)據(jù)生成唯一硬性依賴是 Java。Synthea 需要JDK 17 或更高版本倉庫 README 明確要求推薦用 LTS 版本。裝好之后克隆、構(gòu)建、生成三步git clone https://gitcode.com/gh_mirrors/sy/synthea cd synthea ./gradlew build check test ./run_synthea第一條命令拉代碼第二條構(gòu)建項目并跑完整測試套件想快速驗證可以只跑./gradlew build第三條開始生成。不帶參數(shù)時Synthea 會按默認人口規(guī)模開始逐個生成患者結(jié)果落在./output目錄每個患者一個以 ID 命名的文件夾。跑通之后幾個最常用的參數(shù)值得記下來./run_synthea -p 1000 # 只生成 1000 名患者 ./run_synthea -s 12345 # 指定隨機種子結(jié)果可復現(xiàn) ./run_synthea -g M -a 60-65 # 限定性別女性和 60–65 歲年齡段 ./run_synthea -h # 查看全部參數(shù)還支持按地理區(qū)域圈定人群人口統(tǒng)計默認使用馬薩諸塞州普查數(shù)據(jù)例如./run_synthea Massachusetts或./run_synthea Alaska Juneau。產(chǎn)出的是 FHIR 數(shù)據(jù)改一行配置就能切換 CSV 或批量導出默認情況下./output里每個患者目錄裝的是HL7 FHIR R4格式的 JSON 資源Patient、Condition、MedicationRequest、Observation、Procedure 等覆蓋疾病、過敏、藥物、疫苗接種、生命體征、檢驗、護理計劃這些記錄類型。也就是說開箱即得的是可以直接喂給 FHIR 服務(wù)端或 EHR 系統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)。想換或追加輸出格式改 src/main/resources/synthea.properties 里的開關(guān)即可三個最常碰到的配置項exporter.fhir.export true # 默認開啟輸出 FHIR exporter.csv.export false # 改為 true追加 CSV 輸出 exporter.fhir.bulk_data false # 改為 true輸出 ndjson 批量 FHIR每行一條資源CSV 適合快速用表格工具抽查ndjson 批量格式適合直接導入數(shù)據(jù)管道。此外 C-CDAexporter.ccda.export和 CPCDSexporter.cpcds.export也都是同樣的布爾開關(guān)默認關(guān)閉。更省事的做法是不改文件直接在命令行覆蓋任意配置項./run_synthea -p 10 --exporter.csv.exporttrue --exporter.baseDirectory./output_csv/這里順帶介紹了--exporter.baseDirectory它讓你把每次實驗的輸出隔離到不同目錄避免相互覆蓋。另外兩個 Gradle 任務(wù)排查問題時很順手./gradlew graphviz會渲染規(guī)則和疾病模塊的圖形化視圖./gradlew concepts和./gradlew attributes分別列出記錄中使用到的臨床概念和每個患者身上的屬性變量。兩個擴展入口JSON 規(guī)則模塊和 Java 模塊不用讀全部源碼先記住兩條擴展路徑。第一條JSON 通用規(guī)則模塊。src/main/resources/modules/ 目錄下放著 85 個以上的 JSON 文件每一個都是一條完整的疾病或診療流程比如asthma.json、congestive_heart_failure.json描述觸發(fā)條件、狀態(tài)流轉(zhuǎn)、概率和產(chǎn)生的臨床記錄。寫一個新疾病流程往往只需要按這套 JSON 規(guī)則格式新建一個文件放進目錄不需要寫 Java、不需要重新編譯業(yè)務(wù)代碼。第二條自定義 Java 模塊。需要復雜邏輯時繼承引擎里的Module類實現(xiàn)process(Person person, long time)方法即可。典型例子是 CardiovascularDiseaseModule.java它繼承org.mitre.synthea.engine.Module在每個時間點上用 Framingham 或 ASCVD 公式為這位虛擬患者算一次年度心血管風險再據(jù)風險值決定后續(xù)是否發(fā)生房顫、卒中等事件。引擎本身——狀態(tài)機State、轉(zhuǎn)移Transition、邏輯表達式Logic、隨機分布Distribution——都集中在 src/main/java/org/mitre/synthea/engine/擴展時基本不需要動這里只調(diào)用它的 API。輸出側(cè)同理src/main/java/org/mitre/synthea/export/ 下每個導出器對應(yīng)一種格式FhirR4、CSVExporter、CCDAExporter、TextExporter各管一攤。要加新格式照著這些類實現(xiàn)Exporter接口就行。上手前先看這三條建議調(diào)試階段永遠帶-s種子。隨機生成意味著兩次無種子的運行結(jié)果完全不同帶上種子你才能穩(wěn)定復現(xiàn)某份數(shù)據(jù)去排查問題。先小規(guī)模驗證再生成大批量。用-p 10確認流程和格式符合預期再放大到幾萬、幾十萬。默認generate.thread_pool_size -1表示自動使用全部處理器并行大規(guī)模生成無需額外調(diào)參。給每次運行指定獨立的輸出目錄。用--exporter.baseDirectory...區(qū)分不同參數(shù)組合的實驗結(jié)果否則./output會被后來的運行混在一起很難追溯哪份數(shù)據(jù)來自哪次配置。常見疑問生成的數(shù)據(jù)包含真實患者信息嗎不包含全部是合成的。逼真指統(tǒng)計分布貼近真實人群而非來自任何真人。想加一個自定義疾病從哪下手優(yōu)先在src/main/resources/modules/下按現(xiàn)有 JSON 模塊的格式新建規(guī)則文件涉及復雜計算或需要訪問患者屬性做判斷的再寫繼承Module的 Java 類。能生成多少患者-p參數(shù)就是目標數(shù)量本身沒有硬上限規(guī)模受限于你的內(nèi)存和可用時間。【免費下載鏈接】syntheaSynthetic Patient Population Simulator項目地址: https://gitcode.com/gh_mirrors/sy/synthea創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考