在创建急救转运任务时,可以从SQL Server的ICD-10疾病分类数据库中选择标准化的疾病诊断,支持多个病情同时添加,并可补充其他病情描述。
表名: ICD10
字段:
- id: 主键ID
- icd_code: ICD编码(如:A00.0)
- icd_name: 疾病名称(如:霍乱)
- zjm: 助记码(用于快速搜索)
- sm: 疾病说明
- ICDState: 状态(1=启用)
支持多种方式搜索:
- 按疾病名称:如"肺炎"
- 按ICD编码:如"J18"
- 按助记码:如"FY"
实时防抖搜索,300ms延迟
每条结果显示:
- 疾病名称(粗体)
- ICD编码(蓝色标签)
- 疾病说明(灰色小字)
- 选中状态(✓ 或空心圆圈)
文件: Icd10.javajava public class Icd10 { private Integer id; private String icdCode; private String icdName; private String zjm; private String sm; // ... 其他字段 }
文件: Icd10Mapper.javajava @DataSource(DataSourceType.SQLSERVER) public interface Icd10Mapper { List<Icd10> searchIcd10(@Param("keyword") String keyword); }
文件: Icd10Mapper.xmlxml <select id="searchIcd10" resultMap="Icd10Result"> SELECT TOP 50 ... FROM ICD10 WHERE (icd_name LIKE '%' + #{keyword} + '%' OR icd_code LIKE '%' + #{keyword} + '%' OR zjm LIKE '%' + #{keyword} + '%') AND ICDState = 1 ORDER BY icd_name </select>
注意:使用SQL Server语法
文件: Icd10Controller.javajava @RestController @RequestMapping("/system/icd10") public class Icd10Controller { @GetMapping("/search") public AjaxResult searchIcd10(@RequestParam String keyword) { List<Icd10> list = icd10Mapper.searchIcd10(keyword); return success(list); } }
文件: app/api/icd10.jsjavascript export function searchIcd10(keyword) { return request({ url: '/system/icd10/search', method: 'get', params: { keyword } }) }
selectedDiseases(已选疾病列表)javascript [ { id: 疾病ID, icdCode: 'ICD编码', icdName: '疾病名称', sm: '疾病说明' } ]
tempSelectedDiseases(临时选择列表)
- 在弹窗中使用
- 确认后才同步到 selectedDiseases
showDiseaseSelector()
- 打开病情选择弹窗
- 初始化临时选择列表
onDiseaseSearch(e)
- 处理搜索输入
- 300ms防抖延迟
searchDiseaseByKeyword(keyword)
- 调用后端API搜索疾病
- 更新搜索结果列表
toggleDiseaseSelection(disease)
- 切换疾病选中状态
- 添加/移除临时列表
confirmDiseaseSelection()
- 确认选择
- 同步临时列表到正式列表
- 关闭弹窗
removeDisease(index)
- 移除已选疾病标签
buildSubmitData()
- 合并病情信息
- 格式:疾病1(编码1)、疾病2(编码2)\n其他:补充描述
病情
┌─────────────────────────────┐
│ [肺炎(J18.9)] [糖尿病(E11)] ✗│ <- 已选疾病标签
├─────────────────────────────┤
│ + 添加病情 │ <- 打开选择弹窗
├─────────────────────────────┤
│ 其他病情描述(选填) │ <- 补充描述
│ │
└─────────────────────────────┘
┌────────────────────────────┐
│ 选择病情(ICD-10) ✗ │ <- 标题栏
├────────────────────────────┤
│ 🔍 搜索疾病名称、编码等 │ <- 搜索框
├────────────────────────────┤
│ │
│ 肺炎 [J18.9] │ <- 搜索结果
│ 由未特指的病原体所致的... │
│ ✓ │
│ │
│ 支气管炎 [J40] │
│ 未指明为急性或慢性的... │
│ ○ │
│ │
├────────────────────────────┤
│ [取消] [确定(已选2)] │ <- 底部操作栏
└────────────────────────────┘
linear-gradient(135deg, #667eea 0%, #764ba2 100%)border-radius: 30rpx#e6f2ff#007AFFborder-radius: 6rpx#f5f5f5点击"添加病情"
↓
showDiseaseSelector()
↓
初始化 tempSelectedDiseases
↓
打开弹窗
输入关键词
↓
onDiseaseSearch() - 防抖300ms
↓
searchDiseaseByKeyword()
↓
调用API: searchIcd10(keyword)
↓
显示搜索结果
↓
点击疾病
↓
toggleDiseaseSelection()
↓
更新临时选择列表
点击"确定"
↓
confirmDiseaseSelection()
↓
selectedDiseases = tempSelectedDiseases
↓
关闭弹窗
↓
显示疾病标签
↓
提交任务
↓
buildSubmitData()
↓
合并病情信息:
- 疾病名称(编码)、疾病2(编码2)
- 其他:补充描述
{
patient: {
// ... 其他患者信息
condition: "肺炎(J18.9)、糖尿病(E11)\n其他:患者发热3天",
diseases: [
{
icdId: 1,
icdCode: "J18.9",
icdName: "肺炎"
},
{
icdId: 2,
icdCode: "E11",
icdName: "糖尿病"
}
]
}
}
肺炎(J18.9)\n其他:患者发热3天@DataSource(DataSourceType.SQLSERVER)TOP、+ 拼接)ruoyi-system/src/main/java/com/ruoyi/system/domain/Icd10.java - 实体类ruoyi-system/src/main/java/com/ruoyi/system/mapper/Icd10Mapper.java - Mapper接口ruoyi-system/src/main/resources/mapper/system/Icd10Mapper.xml - MyBatis映射ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/Icd10Controller.java - Controllerapp/api/icd10.js - API接口app/pages/task/create-emergency.vue - 急救转运任务创建页面sql/icd10.sql - ICD-10表结构