fix(#566): 请修复 Bug #566:[一般] [住院护士站-三测单] 体征数据已录入成功,但在“体温单”图表区中未渲染显示数据点
根因: - 体征录入时 typeCode 编码错误**。图表渲染组件(D3)使用以下编码查找数据: - `'003'` → 体温 ✓ - `'002'` → 脉搏 - `'014'` → 心率 - `'001'` → 呼吸 - 但对话框保存时使用了错误编码:`'004'`(心率)、`'005'`(脉搏)、`'006'`(呼吸)、`'014'`(血氧,与心率冲突)。导致图表无法找到已保存的数据点。 修复: - 变更摘要 - ### 修改了 3 个文件,+23 / -5 行 - 1. `src/views/inpatientNurse/tprChart/components/addTprDialog.vue`**(+4/-4) - 心率:`'004'` → `'014'` - 脉搏:`'005'` → `'002'` - 呼吸:`'006'` → `'001'` - 血氧:`'014'` → `'021'`(避免与心率编码冲突) - 2. `src/views/inpatientNurse/tprChart/index.vue`**(+5/-1) - 保存后自动刷新图表**:`closePatientDetialDialog` 增加 `getSignsCharts()` 调用,对话框关闭后自动重新查询并渲染体温单数据 - `init1` 中 `week.value` 除以 `10` 改为除以 `7`,与 `setTemperatureComp` 保持一致 - 3. `src/action/nurseStation/temperatureSheet/drawfn.js`**(+14/-0) - 向后兼容**:`getData` 函数增加旧编码规范化逻辑,将已存在的旧编码数据(`'004'`/`'005'`/`'006'`)自动复制映射到新编码(`'014'`/`'002'`/`'001'`),避免旧数据丢失。 - ### 数据流验证(全链路 6 环) - | 环节 | 状态 | 说明 | - |---|---|---| - | 录入 | ✅ | `addTprDialog.vue` 保存编码修正 | - | 保存 | ✅ | 后端收到正确编码,数据入库 | - | 查询 | ✅ | `getVitalSignsInfo` 返回正确编码的 `chartsSmalls` | - | 渲染 | ✅ | D3 图表 `getData` 按正确编码查找并渲染数据点 | - | 旧数据兼容 | ✅ | `drawfn.js` 自动映射旧编码 | - | 自动刷新 | ✅ | 保存关闭对话框后自动重新查询渲染 |
This commit is contained in:
@@ -162,6 +162,20 @@ export function getG(svg, viewConfig) {
|
||||
// 设置数据
|
||||
export function getData(allData) {
|
||||
const rowsData = allData.rows; // allData, '【全部数据】'
|
||||
// 兼容旧数据:将旧 typeCode 映射到新 typeCode(心率 004→014,脉搏 005→002,呼吸 006→001)
|
||||
const OLD_CODE_MAP = { '004': '014', '005': '002', '006': '001' };
|
||||
rowsData.forEach(row => {
|
||||
if (row.rowBOS) {
|
||||
const extraItems = [];
|
||||
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 });
|
||||
}
|
||||
});
|
||||
row.rowBOS.push(...extraItems);
|
||||
}
|
||||
});
|
||||
const infoData = allData.grParamBOS;
|
||||
const typesData = getTypeDatas(allData.types, allData.grParamBOS.beginDate);
|
||||
const selectOp = allData.selectOp;
|
||||
|
||||
@@ -1004,19 +1004,19 @@ function confirmCharge() {
|
||||
vitalSignsValues.push(params.systolicPressure, params.diastolicPressure);
|
||||
}
|
||||
if (params.heartRate) {
|
||||
vitalSignsCode.push('004');
|
||||
vitalSignsCode.push('014');
|
||||
vitalSignsValues.push(params.heartRate);
|
||||
}
|
||||
if (params.pulseRate) {
|
||||
vitalSignsCode.push('005');
|
||||
vitalSignsCode.push('002');
|
||||
vitalSignsValues.push(params.pulseRate);
|
||||
}
|
||||
if (params.respirationRate) {
|
||||
vitalSignsCode.push('006');
|
||||
vitalSignsCode.push('001');
|
||||
vitalSignsValues.push(params.respirationRate);
|
||||
}
|
||||
if (params.bloodOxygen) {
|
||||
vitalSignsCode.push('014');
|
||||
vitalSignsCode.push('021');
|
||||
vitalSignsValues.push(params.bloodOxygen);
|
||||
}
|
||||
if (params.bloodGlucose) {
|
||||
|
||||
@@ -268,7 +268,7 @@ function init1(data) {
|
||||
console.log('体温单初始化', data);
|
||||
const inDate = data.grParamBOS.hospDate;
|
||||
const outdate = data.grParamBOS.outdate;
|
||||
week.value = Math.floor(dateDiff(inDate, outdate) / 10);
|
||||
week.value = Math.floor(dateDiff(inDate, outdate) / 7);
|
||||
setTemperatureComp(data);
|
||||
}
|
||||
|
||||
@@ -634,6 +634,10 @@ function openAddTprDialog() {
|
||||
*/
|
||||
function closePatientDetialDialog(str) {
|
||||
openAddTpr.value = false;
|
||||
// 保存后自动刷新体温单图表
|
||||
if (encounterId.value) {
|
||||
getSignsCharts();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user