构建AI临床副驾驶:基于Go的电子病历智能助手与HIS对接实战(下)

AI3周前发布 beixibaobao
16 0 0

5.4 接口契约:/v1/cds/suggestions

请求 POST /v1/cds/suggestions

{
   
  "patientId": "p123",
  "chiefComplaint": "发热、咳嗽3天",
  "vitalSigns": {
   
    "temperature": 38.5,
    "heartRate": 90,
    "respiratoryRate": 20,
    "bloodPressure": "125/80"
  },
  "historyPresent": "患者3天前无明显诱因出现发热,体温最高38.5℃,伴咳嗽、咳黄痰,无胸闷气促。",
  "pastMedicalHistory": "高血压病史5年,口服氨氯地平。",
  "allergies": ["青霉素"],
  "orderedTests": ["血常规"],
  "orderedMeds": []
}

响应

{
   
  "suggestions": [
    {
   
      "type": "test",
      "title": "建议行C反应蛋白检测",
      "detail": "发热伴咳嗽,CRP可辅助判断细菌感染可能性。",
      "evidence": "中国成人社区获得性肺炎诊断和治疗指南(2016)"
    },
    {
   
      "type": "test",
      "title": "建议行流感病毒抗原检测",
      "detail": "当前为流感高发季节,且患者有发热、咳嗽。",
      "evidence": "流行性感冒诊疗方案(2025版)"
    },
    {
   
      "type": "warning",
      "title": "青霉素过敏史",
      "detail": "患者自述青霉素过敏,避免使用青霉素类抗生素。若需抗感染,可考虑大环内酯类或喹诺酮类。",
      "level": "critical"
    }
  ]
}

6. 核心功能三:病历质控与术语规范

6.1 场景描述

医生写完一份入院记录,准备保存时,系统自动弹出质控提示:“诊断‘急性阑尾炎’但病程记录中未描述‘右下腹痛’;既往史提及‘糖尿病’但诊断列表中无相关ICD编码;术语‘冠心病’建议使用标准ICD-10 I25.103。”医生可根据提示修改,提升病历质量,减少返修率。

6.2 质控维度

  1. 完整性:必填项是否缺失(如主诉、现病史、既往史等)。
  2. 一致性

    • 诊断与既往史是否矛盾(如诊断新发糖尿病但既往史无糖尿病)。
    • 诊断与体征描述是否一致(如阑尾炎应有右下腹痛)。
    • 用药与诊断是否匹配(如糖尿病诊断无降糖药)。
  3. 术语规范性:非标准术语映射到标准ICD-10、ATC等编码。
  4. 逻辑合理性:如男性患者不应有“子宫”相关诊断。

6.3 规则引擎与AI结合

  • 规则引擎:定义数百条一致性规则,如“if 诊断 contains ‘2型糖尿病’ and 既往史 not contains ‘糖尿病’ then 警告”。
  • NLP模型:用于抽取非结构化文本中的关键信息(如症状、体征),与结构化诊断比对。
  • 术语映射服务:将医生输入的诊断名称(如“冠心病”)映射到标准ICD-10编码,并给出置信度。

6.4 接口契约:/v1/qc/validate

请求 POST /v1/qc/validate

{
   
  "encounterId": "e456",
  "sections": {
   
    "chiefComplaint": "腹痛半天",
    "historyPresent": "患者半天前无明显诱因出现上腹痛,后转移至右下腹,伴恶心、无呕吐。",
    "pastMedicalHistory": "既往体健,否认高血压、糖尿病。",
    "diagnosis": "急性阑尾炎",
    "plan": "急诊行阑尾切除术"
  }
}

响应

{
   
  "issues": [
    {
   
      "level": "error",
      "title": "关键体征描述缺失",
      "detail": "诊断为急性阑尾炎,但病程记录中未描述‘右下腹痛’。当前现病史中提到了‘转移至右下腹’,请明确表述‘右下腹痛’。",
      "location": "historyPresent"
    },
    {
   
      "level": "warn",
      "title": "既往史与诊断不一致",
      "detail": "既往史无糖尿病,但诊断‘2型糖尿病’出现在诊断列表中?实际上当前诊断仅为‘急性阑尾炎’,无此问题。示例需调整。"
    }
  ]
}

7. 统一数据模型与核心结构

为了保证代码可维护,我们需要定义清晰的Go结构体,用于内部流转和API交互。以下为核心模型(已在前文中出现部分):

package model
import "time"
type Patient struct {
   
    ID        string    `json:"id"`
    Name      string    `json:"name"`
    Gender    string    `json:"gender"` // M, F, O
    BirthDate time.Time `json:"birthDate"`
}
type Encounter struct {
   
    ID        string    `json:"id"`
    PatientID string    `json:"patientId"`
    Type      string    `json:"type"` // outpatient, inpatient, emergency
    StartTime time.Time `json:"startTime"`
    EndTime   *time.Time `json:"endTime,omitempty"`
    Dept      string    `json:"dept"`
    DoctorID  string    `json:"doctorId"`
}
type Observation struct {
   
    Code      string    `json:"code"`      // e.g., "BP", "HbA1c", "CREAT"
    Value     string    `json:"value"`     // "140/90", "7.2"
    Unit      string    `json:"unit"`      // "mmHg", "%", "mg/dL"
    TakenAt   time.Time `json:"takenAt"`
    Source    string    `json:"source"`    // LIS, PACS, etc.
}
type Medication struct {
   
    Name      string `json:"name"`
    Dose      string `json:"dose"`
    Frequency string `json:"frequency"`
    Route     string `json:"route"`
    StartDate string `json:"star
© 版权声明

相关文章