slug: unstructured-medical-text-miner displayName: 非結構化醫療文本挖掘器 version: 1.1.0 description: 從MIMIC-IV非結構化臨床文本中提取診斷邏輯。適用於醫療文本挖掘、臨床NLP分析、NOTEEVENTS實體識別(NER)與關係抽取任務。 license: MIT author: AIPOCH
scripts/main.py(主指令碼)及 scripts/__init__.py(包入口)。references/ 目錄提供任務專項參考材料。pandas>=1.3.0
spacy>=3.4.0
scispacy>=0.5.1
negspacy
cd "unstructured-medical-text-miner"
python -m py_compile scripts/main.py
python scripts/main.py --help
示例執行步驟:
1. 確認使用者輸入、輸出路徑及必要的配置值。
2. 如有需要,修改 config.yaml 中的引數設定。
3. 使用驗證後的輸入執行 python scripts/main.py。
4. 檢查生成的輸出,並在返回最終結果時明確說明所有假設。
scripts/main.py 中的 MedicalTextMiner 類。references/ 包含支援規則、提示或檢查清單。使用以下命令驗證指令碼入口點可被解析:
python -m py_compile scripts/main.py
以下為具體的驗證命令,刻意保持自包含,避免佔位符路徑:
python -m py_compile scripts/main.py
python scripts/main.py --help
python scripts/main.py -h
挖掘MIMIC-IV中長期被忽視的文本資料,提取非結構化診斷邏輯、醫囑詳情和病程記錄。
MIMIC-IV資料庫包含大量結構化資料(生命體徵、實驗室結果等),但其真正的臨床價值往往隱藏在非結構化文本中: - 出院摘要中的診斷推理鏈 - 影像報告中的細微發現描述 - 病程記錄中的治療決策邏輯 - 醫囑中的個性化用藥考量
本技能提供完整的文本挖掘工具鏈,將原始醫療文本轉化為可分析的結構化洞察。
from scripts.main import MedicalTextMiner
# 初始化挖掘器
miner = MedicalTextMiner()
# 載入MIMIC-IV記錄資料
miner.load_notes(notes_path="path/to/noteevents.csv")
# 獲取特定患者的所有文本記錄
patient_texts = miner.get_patient_texts(subject_id=10000032)
# 執行完整的資訊抽取
insights = miner.extract_insights(
text=patient_texts[0].get('note_text', ''),
extract_entities=True,
extract_relations=True,
extract_timeline=True
)
| 欄位名 | 描述 | 是否必填 |
|---|---|---|
| subject_id | 患者唯一識別符號 | 是 |
| hadm_id | 住院記錄識別符號 | 否 |
| note_type | 記錄型別(DS/RR/ECG等) | 是 |
| note_text | 記錄文本內容 | 是 |
| charttime | 記錄時間 | 否 |
{
"entities": [
{
"text": "acute myocardial infarction",
"type": "DISEASE",
"start": 156,
"end": 183,
"confidence": 0.94
},
{
"text": "aspirin 81mg",
"type": "MEDICATION",
"start": 245,
"end": 257,
"attributes": {
"dose": "81mg",
"frequency": "daily"
}
}
]
}
{
"clinical_logic": {
"presenting_complaint": "chest pain",
"differential_diagnoses": ["ACS", "PE", "aortic dissection"],
"workup": ["ECG", "troponin", "CTA chest"],
"final_diagnosis": "STEMI",
"treatment_plan": ["PCI", "dual antiplatelet"]
}
}
{
"timeline": [
{
"time": "2020-03-15 08:30",
"event": "admission",
"description": "presented with chest pain"
},
{
"time": "2020-03-15 09:15",
"event": "ECG",
"description": "ST elevation in V1-V4"
}
]
}
# config.yaml
extraction:
entity_types: ["DISEASE", "SYMPTOM", "MEDICATION", "PROCEDURE", "ANATOMY"]
relation_types: ["TREATS", "CAUSES", "CONTRAINDICATED_WITH"]
enable_negation_detection: true
models:
ner_model: "en_core_sci_lg" # 或 "en_core_sci_scibert"
relation_model: null
output:
format: "json" # json/fhir/kg
include_raw_text: false
# 處理單個檔案
python scripts/main.py \
--input notes.csv \
--output extracted.json \
--extract all
# 處理特定患者
python scripts/main.py \
--subject-id 10000032 \
--input mimic_noteevents.csv \
--output patient_insights.json
# 直接處理文本片段
python scripts/main.py \
--sample-text "Patient presented with chest pain. No fever."
Skill ID: 213 類別:醫療資料探勘 複雜度:高階
| 風險指標 | 評估 | 級別 |
|---|---|---|
| 程式碼執行 | 本地執行Python指令碼 | 中 |
| 網路訪問 | 無外部API呼叫 | 低 |
| 檔案系統訪問 | 讀取輸入檔案,寫入輸出檔案 | 中 |
| 指令篡改 | 標準提示詞指南 | 低 |
| 資料暴露 | 輸出檔案儲存至工作區 | 低 |
# Python依賴安裝
pip install -r requirements.txt
每個最終響應在相關時應明確以下內容:
scripts/main.py 失敗,報告失敗點,總結仍可安全完成的內容,並提供手動備用方案。本技能接受符合 unstructured-medical-text-miner 已記錄用途且包含足夠上下文可安全完成工作流的請求。
當請求超出範圍、缺少關鍵輸入或需要不支援的假設時,不得繼續工作流。請回復:
unstructured-medical-text-miner僅處理其已記錄的工作流。請提供缺失的必要輸入或切換至更合適的技能。
7w4.net小蔥技能。
對非簡單請求使用以下固定結構:
對於簡單請求,可以壓縮結構,但在影響正確性時仍需明確說明假設和限制。
這款醫療文本挖掘工具質量不錯,能自動識別病歷中的疾病、藥物、檢查等關鍵資訊,並理清它們之間的關係。它使用簡單,文件清晰,配置靈活,基本功能已經比較實用。不足之處在於處理複雜或非標準格式的病歷時可能漏掉部分資訊,高階分析功能需要一定的醫學知識背景。對於需要從電子病歷中提取資料的使用者來說,是一個值得嘗試的選擇。