在急救转运任务创建页面的病情选择功能中,添加了病情ID列表(diseaseIds)字段的存储功能,用于在同步调度单到旧系统时传递OrdICD_ID参数。
2025-10-25
selectedDiseases 转换为ID数组diseaseIds 作为参数传递给后端List<Long> diseaseIdssys_task_emergency 表的 disease_ids 字段disease_ids 字段OrdICD_ID 参数传递给旧系统调度单接口const submitData = {
// ... 其他字段
// 病情ID列表(用于同步调度单的OrdICD_ID参数)
diseaseIds: this.selectedDiseases.map(d => d.id),
// ... 其他字段
}
// selectedDiseases 数组结构
[
{
id: 1,
icdCode: "A00.0",
icdName: "霍乱弧菌所致的霍乱",
sm: "霍乱"
},
{
id: 2,
icdCode: "A00.1",
icdName: "埃尔托弧菌所致的霍乱",
sm: "霍乱"
}
]
// 转换后的 diseaseIds
[1, 2]
/** 病情ID列表(ICD-10疾病ID列表,用于同步调度单的OrdICD_ID参数) */
private List<Long> diseaseIds;
public List<Long> getDiseaseIds() {
return diseaseIds;
}
public void setDiseaseIds(List<Long> diseaseIds) {
this.diseaseIds = diseaseIds;
}
/** 病情ID列表(ICD-10疾病ID列表,逗号分隔,用于同步调度单的OrdICD_ID参数) */
private String diseaseIds;
public String getDiseaseIds() {
return diseaseIds;
}
public void setDiseaseIds(String diseaseIds) {
this.diseaseIds = diseaseIds;
}
import java.util.stream.Collectors;
private void saveEmergencyInfo(Long taskId, TaskCreateVO createVO) {
// ... 其他代码
// 设置病情ID列表(将List<Long>转换为逗号分隔的字符串)
if (createVO.getDiseaseIds() != null && !createVO.getDiseaseIds().isEmpty()) {
String diseaseIdsStr = createVO.getDiseaseIds().stream()
.map(String::valueOf)
.collect(Collectors.joining(","));
emergencyInfo.setDiseaseIds(diseaseIdsStr);
}
// ... 其他代码
}
<result property="diseaseIds" column="disease_ids" />
select id, task_id, ..., passenger_phone, disease_ids, document_type_id, ...
<if test="diseaseIds != null">disease_ids,</if>
<!-- values部分 -->
<if test="diseaseIds != null">#{diseaseIds},</if>
<if test="diseaseIds != null">disease_ids = #{diseaseIds},</if>
ALTER TABLE sys_task_emergency
ADD COLUMN IF NOT EXISTS disease_ids VARCHAR(500)
COMMENT '病情ID列表(ICD-10疾病ID列表,逗号分隔,用于同步调度单的OrdICD_ID参数)'
AFTER passenger_phone;
disease_idsVARCHAR(500)passenger_phone 字段之后{
"taskType": "EMERGENCY_TRANSFER",
"diseaseIds": [1, 2, 3],
"patient": { ... },
"hospitalOut": { ... },
...
}
// List<Long> -> String
[1, 2, 3] -> "1,2,3"
disease_ids: "1,2,3"
// String -> List<Long>
"1,2,3" -> [1, 2, 3]
// 传递给旧系统
OrdICD_ID = 病情ID列表的第一个ID(或拼接的字符串,具体根据旧系统接口要求)
app/pages/task/create-emergency.vue - 前端任务创建页面ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/TaskCreateVO.java - 任务创建VOruoyi-system/src/main/java/com/ruoyi/system/domain/SysTaskEmergency.java - 急救转运实体类ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java - 任务服务实现类ruoyi-system/src/main/resources/mapper/system/SysTaskEmergencyMapper.xml - MyBatis映射文件sql/update_sys_task_emergency_add_disease_ids.sql - 数据库表结构更新脚本prd/病情选择列表存储功能说明.md - 本文档执行SQL脚本添加字段:
bash mysql -u root -p your_database < sql/update_sys_task_emergency_add_disease_ids.sql
验证字段是否添加成功:
sql DESC sys_task_emergency;
确认 disease_ids 字段存在且类型正确
disease_ids 字段的值格式是否正确LegacySystemSyncServiceImpl.buildDispatchOrderParams 方法中实现了调度单同步disease_ids 字段读取病情ID列表OrdICD_ID 参数ServiceOrder_ICD 表,用于病情诊断// LegacySystemSyncServiceImpl.buildDispatchOrderParams方法中添加
// 病情ID列表(ICD-10疾病ID,用于诊断ICD)
// 格式:逗号分隔的ID列表,如 ",1,2,3,"
String ordIcdId = "";
if (StringUtils.isNotEmpty(emergency.getDiseaseIds())) {
// 将存储的 "1,2,3" 格式转换为旧系统要求的 ",1,2,3," 格式
ordIcdId = "," + emergency.getDiseaseIds() + ",";
log.info("病情ID列表已设置,任务ID: {}, OrdICD_ID: {}", task.getTaskId(), ordIcdId);
}
params.put("OrdICD_ID", ordIcdId);
params.put("OrdICD_ID_old", ""); // 旧病情ID列表(用于对比是否需要更新)
'写入诊断ICD
OrdICD_ID = SafeRequest(Request.form("OrdICD_ID"))
OrdICD_ID_old = SafeRequest(Request.form("OrdICD_ID_old"))
If OrdICD_ID <> OrdICD_ID_old Then
sql="delete from ServiceOrder_ICD where ServiceOrdIDDt="&ServiceOrdID
objConn.Execute sql
If OrdICD_ID<>"" then
OrdICD_IDSP = SPLIT(OrdICD_ID,",")
for i=1 to ubound(OrdICD_IDSP)-1
If OrdICD_IDSP(i)<>"" Then
sql="insert into ServiceOrder_ICD (ServiceOrdIDDt,icd_id) values ("&ServiceOrdID&","&OrdICD_IDSP(i)&")"
objConn.Execute sql
End If
Next
End If
End If
disease_ids 查询病情详细信息disease_ids 字段List<Long> 类型String 类型(逗号分隔)disease_ids 字段为NULL