自然语言医学检查解析接口文档
注意: 本系统支持多患者医学检查解析,使用严格语义匹配技术从自然语言描述中识别检查项目。
技术特点: 严格语义分析,支持历史记录追踪和批量处理。
接口概览
| 接口名称 | 方法 | 端点 | 描述 |
|---|---|---|---|
| 医学检查解析 | POST | /aie_parse |
核心解析接口,使用严格语义匹配识别检查项目 |
| 获取用户历史 | POST | /aie_user_history |
获取用户的医学检查解析历史记录 |
| 清除历史记录 | POST | /aie_clear_history |
清除指定用户的医学检查历史记录 |
| 获取患者列表 | GET | /aie_patients |
获取系统支持的所有患者列表 |
| 获取序号历史 | POST | /aie_exam_index_history |
获取用户的检查项目序号历史记录 |
| 状态检查 | GET | /aie |
系统状态检查接口 |
| 对话医学检查解析 | POST | /aie_parse_conversation |
从对话记录中解析医学检查项目 |
接口1: 医学检查解析
POST https://aicds.micplatform.top/aie_parse
请求参数 (JSON格式)
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
sentence |
字符串 | 是 | 医学检查描述语句 |
userid |
字符串 | 否 | 用户唯一标识,默认为"anonymous" |
patient_id |
字符串 | 否 | 患者ID,默认为"likuoran" |
请求示例
{
"sentence": "测量一下身高体重,检查皮肤情况",
"userid": "user001",
"patient_id": "likuoran"
}
响应示例 (成功)
{
"success": true,
"userid": "user001",
"patient_id": "likuoran",
"patient_name": "李廓然",
"original_sentence": "测量一下身高体重,检查皮肤情况",
"physical_exam_data_available": true,
"matched_exam_indexes": [1, 3],
"matched_exam_names": ["身高体重测量", "皮肤检查"],
"new_exam_indexes": [1, 3],
"total_exam_indexes": [1, 3],
"matched_exam_details": [
{
"检查项目序号": 1,
"检查项目名称": "身高体重测量",
"检查项目分类": "一般检查",
"检查关注点": "身高、体重、BMI",
"检查目的": "评估生长发育和营养状况"
},
{
"检查项目序号": 3,
"检查项目名称": "皮肤检查",
"检查项目分类": "皮肤黏膜检查",
"检查关注点": "皮肤颜色、湿度、弹性、皮疹",
"检查目的": "评估皮肤健康状况"
}
],
"timestamp": "2025-04-23T08:48:49.632866"
}
响应示例 (失败)
{
"success": false,
"error": "不支持的患者ID: unknown_patient",
"userid": "user001",
"patient_id": "unknown_patient",
"timestamp": "2025-04-23T08:48:49.632866"
}
说明: 从自然语言描述中精确匹配检查项目。
返回匹配的检查项目序号、名称数组、详细信息,并自动保存到用户历史记录中。
接口2: 获取用户历史记录
POST https://aicds.micplatform.top/aie_user_history
请求参数 (JSON格式)
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
userid |
字符串 | 是 | 用户唯一标识 |
patient_id |
字符串 | 否 | 患者ID,不传则返回所有历史 |
limit |
整数 | 否 | 返回记录数量限制,默认10 |
请求示例
{
"userid": "user001",
"patient_id": "likuoran",
"limit": 5
}
响应示例 (指定患者)
{
"userid": "user001",
"patient_id": "likuoran",
"patient_name": "李廓然",
"exam_history": [
{
"timestamp": "2025-04-23T08:48:49.632866",
"exam_type": "strict_semantic_parse",
"content": {
"original_sentence": "测量身高体重",
"patient_info": {
"name": "李廓然",
"gender": "男"
},
"physical_exam_data_used": true,
"matched_exam_indexes": [1],
"matched_exam_names": ["身高体重测量"],
"new_exam_indexes": [1],
"total_exam_indexes": [1],
"timestamp": "2025-04-23T08:48:49.632866"
}
}
],
"exam_index_history": [1, 3]
}
响应示例 (所有历史)
{
"userid": "user001",
"all_histories": [
{
"userid": "user001",
"patient_id": "likuoran",
"patient_name": "李廓然",
"exam_history": [],
"exam_index_history": [1, 3]
},
{
"userid": "user001",
"patient_id": "lvruolan",
"patient_name": "吕若兰",
"exam_history": [],
"exam_index_history": [2, 4]
}
]
}
说明: 返回指定用户的医学检查解析历史记录,包含时间戳和详细内容。
可以获取特定患者的历史或所有患者的历史记录。
接口3: 清除历史记录
POST https://aicds.micplatform.top/aie_clear_history
请求参数 (JSON格式)
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
userid |
字符串 | 是 | 用户唯一标识 |
patient_id |
字符串 | 否 | 患者ID,不传则清除所有历史 |
请求示例
{
"userid": "user001",
"patient_id": "likuoran"
}
响应示例
{
"message": "已清除用户 user001 患者 likuoran 的医学检查历史记录",
"userid": "user001",
"patient_id": "likuoran"
}
说明: 清除指定用户的医学检查历史记录。可以清除特定患者的历史或所有患者的历史记录。
接口4: 获取患者列表
GET https://aicds.micplatform.top/aie_patients
响应示例
{
"patients": [
{
"patient_id": "likuoran",
"name": "李廓然",
"gender": "男",
"has_physical_exam_data": true,
"physical_exam_file": "config/physical_exam_likuoran.json"
},
{
"patient_id": "lvruolan",
"name": "吕若兰",
"gender": "女",
"has_physical_exam_data": true,
"physical_exam_file": "config/physical_exam_lvruolan.json"
},
{
"patient_id": "wangkexin",
"name": "王可馨",
"gender": "女",
"has_physical_exam_data": false,
"physical_exam_file": ""
}
]
}
说明: 返回系统支持的所有患者列表,包含患者ID、姓名、性别和体格检查数据可用性信息。
接口5: 获取检查项目序号历史(获取历史的简化版)
POST https://aicds.micplatform.top/aie_exam_index_history
请求参数 (JSON格式)
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
userid |
字符串 | 是 | 用户唯一标识 |
patient_id |
字符串 | 否 | 患者ID,默认为"likuoran" |
请求示例
{
"userid": "user001",
"patient_id": "likuoran"
}
响应示例
{
"success": true,
"userid": "user001",
"patient_id": "likuoran",
"patient_name": "李廓然",
"exam_index_history": [1, 3, 5],
"total_count": 3,
"timestamp": "2025-04-23T08:48:49.632866"
}
说明: 获取用户的历史检查项目序号记录,用于追踪已执行的检查项目。
接口6: 状态检查
GET https://aicds.micplatform.top/aie
响应示例
{
"message": "Micube AI - 自然语言医学检查解析系统"
}
说明: 系统状态检查接口,用于验证服务是否正常运行。
接口7: 对话医学检查解析
POST https://aicds.micplatform.top/aie_parse_conversation
请求参数 (JSON格式)
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
userid |
字符串 | 是 | 用户唯一标识 |
patient_id |
字符串 | 是 | 患者ID |
records |
对象 | 是 | 对话记录,按会话ID分组 |
physicalExamData |
对象 | 是 | 体格检查数据,按会话ID分组 |
请求示例
{
"userid": "0001",
"patient_id": "likuoran",
"records": {
"BZ_0_0000000003": [
{
"groupId": null,
"content": "基于目前已经了解到情况,你觉得初步诊断是什么?",
"senderId": 0,
"senderName": "AI带教",
"sendTime": "2025-10-23 14:48:47",
"relativeTime": "00:00"
}
],
"BZ_0_0000000004": [
{
"groupId": null,
"content": "基于目前已经了解到情况,你觉得初步诊断是什么?",
"senderId": 0,
"senderName": "AI带教",
"sendTime": "2025-10-23 17:15:58",
"relativeTime": "01:07"
},
{
"groupId": null,
"content": "心肌梗死,主动脉夹层,心包炎,或者急性肺栓塞",
"senderId": 16,
"senderName": "王云",
"sendTime": "2025-10-23 17:23:54",
"relativeTime": "09:03"
},
{
"groupId": null,
"content": "诊断依据是什么?",
"senderId": 0,
"senderName": "AI带教",
"sendTime": "2025-10-23 17:35:49",
"relativeTime": "20:58"
},
{
"groupId": null,
"content": "患者主诉胸痛和呼吸困难,并且呼吸和疼痛程度相关",
"senderId": 16,
"senderName": "王云",
"sendTime": "2025-10-23 17:49:40",
"relativeTime": "34:49"
},
{
"groupId": null,
"content": "需要做哪些体格检查项目?",
"senderId": 0,
"senderName": "AI带教",
"sendTime": "2025-10-23 18:22:04",
"relativeTime": "07:13"
},
{
"groupId": null,
"content": "检查基本状况,胸部的触诊,测量两侧血压,还有体温",
"senderId": 16,
"senderName": "王云",
"sendTime": "2025-10-23 19:16:28",
"relativeTime": "01:37"
}
]
},
"physicalExamData": {
"BZ_0_0000000003": [
{
"id": "CSID_9_9999999991",
"name": "心脏检查",
"combination": "心脏听诊",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000007",
"item1basename": "人型背面",
"item2basecode": "RXBM_2_0000000005",
"item2basename": "运动检查",
"answer": "心率116次/分,节律规整,心音减低。心尖部可闻及Ⅱ/6级收缩期吹风样杂音,向腋下传导不明显。肺动脉瓣区(P2)及主动脉瓣区(A2)心音强度正常,未闻及杂音。无心包摩擦音及额外心音。"
},
{
"id": "CSID_9_9999999992",
"name": "触诊胸部",
"combination": "胸部触诊",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000007",
"item1basename": "人型背面",
"item2basecode": "RXBM_2_0000000005",
"item2basename": "运动检查",
"answer": "胸部无肿块,无压痛。乳房无红肿、压痛、肿块。"
},
{
"id": "YDJCB_3_0000000001",
"name": "脊柱",
"combination": "脊柱运动检查",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000007",
"item1basename": "人型背面",
"item2basecode": "RXBM_2_0000000005",
"item2basename": "运动检查",
"answer": "脊柱正常,活动自如。"
},
{
"id": "KZC_3_0000000001",
"name": "脊柱",
"combination": "脊柱叩诊锤",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000007",
"item1basename": "人型背面",
"item2basecode": "RXBM_2_0000000006",
"item2basename": "叩诊锤",
"answer": "无叩击痛。"
},
{
"id": "WDJ_3_0000000002",
"name": "左腋下",
"combination": "体温测量(左腋温)",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000006",
"item1basename": "人型正面",
"item2basecode": "RXZM_2_0000000005",
"item2basename": "温度计",
"answer": "体温:36.9°C"
},
{
"id": "WDJ_3_0000000001",
"name": "口",
"combination": "体温测量(口温)",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000006",
"item1basename": "人型正面",
"item2basecode": "RXZM_2_0000000005",
"item2basename": "温度计",
"answer": "体温:36.9°C"
},
{
"id": "XYJ_3_0000000001",
"name": "左上臂",
"combination": "血压测量(左上肢)",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000006",
"item1basename": "人型正面",
"item2basecode": "RXZM_2_0000000002",
"item2basename": "血压计",
"answer": "血压:165/90 mmHg"
},
{
"id": "XYJ_3_0000000002",
"name": "右上臂",
"combination": "血压测量(右上肢)",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000006",
"item1basename": "人型正面",
"item2basecode": "RXZM_2_0000000002",
"item2basename": "血压计",
"answer": "血压:165/90 mmHg"
},
{
"id": "WDJ_3_0000000003",
"name": "右腋下",
"combination": "体温测量(右腋温)",
"casecode": "1200064",
"baseonecode": "BZ_0_0000000003",
"item1basecode": "TGJC_1_0000000006",
"item1basename": "人型正面",
"item2basecode": "RXZM_2_0000000005",
"item2basename": "温度计",
"answer": "体温:36.9°C"
}
],
"BZ_0_0000000004": [
{
"id": "LCSHJC_3_0000000137",
"name": "肌钙蛋白Ⅰ(TnI)测定",
"combination": null,
"casecode": "1200064",
"baseonecode": "BZ_0_0000000004",
"item1basecode": "FZJC_1_0000000001",
"item1basename": "实验室检查",
"item2basecode": "SYSJC_2_0000000004",
"item2basename": "临床生化检查",
"answer": ""
},
{
"id": "LCPXWHFMWJC_3_0000000057",
"name": "大便常规+隐血试验",
"combination": null,
"casecode": "1200064",
"baseonecode": "BZ_0_0000000004",
"item1basecode": "FZJC_1_0000000001",
"item1basename": "实验室检查",
"item2basecode": "SYSJC_2_0000000003",
"item2basename": "临床排泄物和分泌物检查",
"answer": ""
}
]
}
}
响应示例
{
"physical_exam_matches": [
{
"answer": "胸部无肿块,无压痛。乳房无红肿、压痛、肿块。",
"baseonecode": "BZ_0_0000000003",
"casecode": "1200064",
"combination": "胸部触诊",
"id": "CSID_9_9999999992",
"matched_keyword": "胸部触诊",
"name": "触诊胸部"
},
{
"answer": "血压:165/90 mmHg",
"baseonecode": "BZ_0_0000000003",
"casecode": "1200064",
"combination": "血压测量(左上肢)",
"id": "XYJ_3_0000000001",
"matched_keyword": "血压测量(左上肢)",
"name": "左上臂"
},
{
"answer": "血压:165/90 mmHg",
"baseonecode": "BZ_0_0000000003",
"casecode": "1200064",
"combination": "血压测量(右上肢)",
"id": "XYJ_3_0000000002",
"matched_keyword": "血压测量(右上肢)",
"name": "右上臂"
},
{
"answer": "体温:36.9°C",
"baseonecode": "BZ_0_0000000003",
"casecode": "1200064",
"combination": "体温测量(右腋温)",
"id": "WDJ_3_0000000003",
"matched_keyword": "体温测量(右腋温)",
"name": "右腋下"
}
],
"success": true
}
说明: 从对话记录中解析医学检查项目,返回匹配的体格检查数据。
该接口专门处理包含对话内容和体格检查数据的复杂结构。