fix(#566): 请修复 Bug #566:[一般] [住院护士站-三测单] 体征数据已录入成功,但在“体温单”图表区中未渲染显示数据点

根因:
- Bug #请修复 Bug #566 存在的问题

修复:
- 调整 `confirmCharge` 中 `vitalSignsCode` 的入队顺序:
- 原顺序: 体温 → 血压(001,002) → 心率(014) → 脉搏(002) → 呼吸(001) → 其他
- 新顺序: 体温 → 心率(014) → 脉搏(002) → 呼吸(001) → 血压(001,002) → 其他
- 脉搏(`002`)排在舒张压(`002`)之前,呼吸(`001`)排在收缩压(`001`)之前,`find()` 优先匹配到正确的体征数据。
- 2. `src/action/nurseStation/temperatureSheet/drawfn.js`**
- 问题**: 旧数据兼容层中 `some()` 检查会阻止添加映射编码。例如:旧数据已有 `001`(收缩压)和 `006`(旧呼吸)时,`006→001` 因 `some()` 检测到已存在 `001` 而跳过,导致旧呼吸数据丢失。
- 移除 `some()` 检查,始终添加映射条目
- 用 `unshift()` 替代 `push()`,将映射后的脉搏(`002`)、呼吸(`001`)条目插入 `rowBOS` 头部,确保 `find()` 优先匹配它们而非同编码的血压条目
This commit is contained in:
2026-05-28 23:21:45 +08:00
parent 0d1710a4d8
commit d9434abb84
2 changed files with 14 additions and 8 deletions

View File

@@ -166,14 +166,18 @@ export function getData(allData) {
const OLD_CODE_MAP = { '004': '014', '005': '002', '006': '001' };
rowsData.forEach(row => {
if (row.rowBOS) {
const extraItems = [];
const prependItems = [];
row.rowBOS.forEach(item => {
const newCode = OLD_CODE_MAP[item.typeCode];
if (newCode && !row.rowBOS.some(i => i.date === item.date && i.times === item.times && i.typeCode === newCode)) {
extraItems.push({ ...item, typeCode: newCode });
// 始终添加映射条目,用 unshift 插入数组头部
// 这样 getType 的 find() 优先匹配映射后的编码(如脉冲、呼吸)
// 即使存在同编码的旧条目(如血压舒张压用 002、收缩压用 001
// 映射后的脉搏(002)和呼吸(001)条目排在前面,确保图表正确渲染
if (newCode) {
prependItems.push({ ...item, typeCode: newCode });
}
});
row.rowBOS.push(...extraItems);
row.rowBOS.unshift(...prependItems);
}
});
const infoData = allData.grParamBOS;

View File

@@ -999,22 +999,24 @@ function confirmCharge() {
vitalSignsCode.push('003');
vitalSignsValues.push(params.temperature);
}
if (params.systolicPressure && params.diastolicPressure) {
vitalSignsCode.push('001', '002');
vitalSignsValues.push(params.systolicPressure, params.diastolicPressure);
}
if (params.heartRate) {
vitalSignsCode.push('014');
vitalSignsValues.push(params.heartRate);
}
// 脉搏(002)排血压舒张压(002)之前确保图表getType('002')优先匹配脉搏
if (params.pulseRate) {
vitalSignsCode.push('002');
vitalSignsValues.push(params.pulseRate);
}
// 呼吸(001)排血压收缩压(001)之前确保图表getType('001')优先匹配呼吸
if (params.respirationRate) {
vitalSignsCode.push('001');
vitalSignsValues.push(params.respirationRate);
}
if (params.systolicPressure && params.diastolicPressure) {
vitalSignsCode.push('001', '002');
vitalSignsValues.push(params.systolicPressure, params.diastolicPressure);
}
if (params.bloodOxygen) {
vitalSignsCode.push('021');
vitalSignsValues.push(params.bloodOxygen);