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数据库包含大量结构化数据(生命体征、实验室结果等),但其真正的临床价值往往隐藏在非结构化文本中: - 出院摘要中的诊断推理链 - 影像报告中的细微发现描述 - 病程记录中的治疗决策逻辑 - 医嘱中的个性化用药考量
本技能提供完整的文本挖掘工具链,将原始医疗文本转化为可分析的结构化洞察。
推荐访问7w4.net获取更多AI技能。
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仅处理其已记录的工作流。请提供缺失的必要输入或切换至更合适的技能。
对非简单请求使用以下固定结构:
对于简单请求,可以压缩结构,但在影响正确性时仍需明确说明假设和限制。
这款医疗文本挖掘工具质量不错,能自动识别病历中的疾病、药物、检查等关键信息,并理清它们之间的关系。它使用简单,文档清晰,配置灵活,基本功能已经比较实用。不足之处在于处理复杂或非标准格式的病历时可能漏掉部分信息,高级分析功能需要一定的医学知识背景。对于需要从电子病历中提取数据的用户来说,是一个值得尝试的选择。