| | |
| | | title="治疗模式" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col2-row1" |
| | | class="mini-card row1-col2-row1" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box dialysis-mode-content"> |
| | |
| | | title="处方脱水量" |
| | | :icon="cljdImg" |
| | | background-color="#ffffff" |
| | | class="row1-col2-row2" |
| | | class="mini-card row1-col2-row2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box prescription-ehydration-olume"> |
| | |
| | | title="置换总量" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col3-row1" |
| | | class="mini-card row1-col3-row1" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box total-amount-replacement"> |
| | |
| | | title="透析时长" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col3-row2" |
| | | class="mini-card row1-col3-row2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box dialysis-duration"> |
| | |
| | | title="透析器" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col4-row1" |
| | | class="mini-card row1-col4-row1" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box dialyzer"> |
| | |
| | | title="抗凝剂" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col4-row2" |
| | | class="mini-card row1-col4-row2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box anticoagulant"> |
| | |
| | | title="处方备注" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row1-col5-row2" |
| | | class="mini-card row1-col5-row2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box prescription-remarks"> |
| | |
| | | title="处方血流量" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row2-col1-row1-col1" |
| | | class="mini-card row2-col1-row1-col1" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box blood-flow"> |
| | |
| | | title="处方钠" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row2-col1-row1-col2" |
| | | class="mini-card row2-col1-row1-col2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box prescription-sodium"> |
| | |
| | | title="透析液流量" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row2-col1-row2-col1" |
| | | class="mini-card row2-col1-row2-col1" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box dialysis-fluid-flow-rate"> |
| | |
| | | title="透析液种类" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row2-col1-row2-col2" |
| | | class="mini-card row2-col1-row2-col2" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box types-dialysis-fluid"> |
| | |
| | | title="治疗状态" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="row2-col1-row3" |
| | | class="mini-card row2-col1-row3" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <div class="item-box treatment-status"> |
| | |
| | | title="参考指标" |
| | | :icon="zlmsImg" |
| | | background-color="#ffffff" |
| | | class="mini-card reference-indicators" |
| | | class="reference-indicators" |
| | | header-class-name="mihi-header" |
| | | > |
| | | <template #right> |
| | |
| | | <table class="item-box reference-indicators-content"> |
| | | <tbody> |
| | | <tr> |
| | | <td>血压<br />超滤量<br />{{ pageData.上次透析单所属日期 }}</td> |
| | | <td>血压<br />超滤量<br /></td> |
| | | <td |
| | | ref="bloodPressureRectangularChart" |
| | | style="overflow: hidden" |
| | |
| | | </tr> |
| | | <tr> |
| | | <td>干体重</td> |
| | | <td>{{ pageData.干体重 }}kg</td> |
| | | <td>{{ fourPointBloodPressureMap.干体重 }}kg</td> |
| | | </tr> |
| | | <tr> |
| | | <td>体重增长</td> |
| | | <td> |
| | | <td class="flex-td"> |
| | | <span class="sub-text">(透前-上次透后)</span |
| | | >{{ pageData.体重增长_透前_上次透后 }}kg |
| | | ><span class="right-text">{{ weightGain1 }}kg</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>体重增长</td> |
| | | <td> |
| | | <span class="sub-text">(透前-干体重)</span |
| | | >{{ pageData.体重增持_透前_干体重 }}kg |
| | | <td class="flex-td"> |
| | | <span class="sub-text">(透前-干体重)</span><span class="text-right">{{ weightGain2 }}kg</span> |
| | | </td> |
| | | </tr> |
| | | <!-- <tr> |
| | |
| | | </tr> --> |
| | | <tr> |
| | | <td>透前体重</td> |
| | | <td>{{ pageData.透前体重 }}kg</td> |
| | | <td>{{ fourPointBloodPressureMap?.透前体重 }}kg</td> |
| | | </tr> |
| | | <tr> |
| | | <td>上次透后体重</td> |
| | | <td>{{ pageData.上次透后体重 }}kg</td> |
| | | <td>透后体重</td> |
| | | <td>{{ fourPointBloodPressureMap?.透后体重 }}kg</td> |
| | | </tr> |
| | | <tr> |
| | | <td>透析时间</td> |
| | | <td>{{ pageData.上次透析单所属日期 }}</td> |
| | | <td>{{ fourPointBloodPressureMap?.透析时间 }}</td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | |
| | | import Card from "../components/Card.vue"; |
| | | import DoctorAdvice from "../components/DoctorAdvice/index.vue"; |
| | | import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen"; |
| | | import type { 四点血压图数据 } from "@/store/type/bedsideAuxiliaryScreen.type"; |
| | | import tslImg from "@/img/tsl.png"; |
| | | import dingShiImg from "@/img/dingshi2.png"; |
| | | import jiaoHaoImg from "@/img/jiaoHao.png"; |
| | |
| | | }); |
| | | }); |
| | | |
| | | const fourPointBloodPressureMap = computed(() => { |
| | | let result = {}; |
| | | if ( |
| | | pageData.value.四点血压图数据 && |
| | | pageData.value.四点血压图数据.length > 0 |
| | | ) { |
| | | result = pageData.value.四点血压图数据[0]; |
| | | } |
| | | return result; |
| | | }); |
| | | |
| | | const nowDateText = computed(() => { |
| | | if (pageData.value.本次透析单所属日期) { |
| | | let result = dayjs(pageData.value.本次透析单所属日期).format("YYYY-MM-DD"); |
| | | result += `(${dayjs(pageData.value.本次透析单所属日期).format("ddd")})`; |
| | | if (fourPointBloodPressureMap.value?.透析日期) { |
| | | let result = dayjs(fourPointBloodPressureMap.value?.透析日期).format( |
| | | "YYYY-MM-DD" |
| | | ); |
| | | result += `(${dayjs(fourPointBloodPressureMap.value?.透析日期).format( |
| | | "ddd" |
| | | )})`; |
| | | return result; |
| | | } |
| | | return ""; |
| | | }); |
| | | |
| | | const weightGain1 = computed(() => { |
| | | if ( |
| | | pageData.value.四点血压图数据 && |
| | | pageData.value.四点血压图数据.length > 1 |
| | | ) { |
| | | const value = |
| | | pageData.value.四点血压图数据[0].透前体重 - |
| | | pageData.value.四点血压图数据[1].透后体重; |
| | | const formattedValue = Number.isInteger(value) |
| | | ? value |
| | | : Number(value.toFixed(1)); |
| | | return formattedValue; |
| | | } |
| | | return ""; |
| | | }); |
| | | |
| | | const weightGain2 = computed(() => { |
| | | const value = |
| | | fourPointBloodPressureMap.value.透前体重 - |
| | | fourPointBloodPressureMap.value.干体重; |
| | | const formattedValue = Number.isInteger(value) |
| | | ? value |
| | | : Number(value.toFixed(1)); |
| | | return formattedValue; |
| | | }); |
| | | |
| | | /** 点击定时任务 */ |
| | |
| | | type: "warning", |
| | | }); |
| | | }; |
| | | const genderBloodPressureRectangularChart = (datas: any) => { |
| | | const genderBloodPressureRectangularChart = ( |
| | | datas: 四点血压图数据[] | null |
| | | ) => { |
| | | if (bloodPressureRectangularChart.value) { |
| | | const benchmarkData = { |
| | | width: 386, |
| | | height: 280, |
| | | }; |
| | | // 获取容器实际宽高 |
| | | const containerWidth = bloodPressureRectangularChart.value.offsetWidth; |
| | | const containerHeight = bloodPressureRectangularChart.value.offsetHeight; |
| | | const containerWidth = bloodPressureRectangularChart.value.offsetWidth * 0.9; |
| | | const containerHeight = bloodPressureRectangularChart.value.offsetHeight * 0.9; |
| | | // 等比例缩放因子 |
| | | const scale = Math.min( |
| | | containerWidth / benchmarkData.width, |
| | |
| | | } |
| | | |
| | | // 设置 canvas 尺寸 |
| | | canvas.width = benchmarkData.width * scale; |
| | | canvas.height = benchmarkData.height * scale; |
| | | canvas.width = containerWidth; |
| | | canvas.height = containerHeight; |
| | | canvas.style.width = `${canvas.width}px`; |
| | | canvas.style.height = `${canvas.height}px`; |
| | | |
| | |
| | | { systolic: 139, diastolic: 73 }, |
| | | { systolic: 139, diastolic: 73 }, |
| | | ]; |
| | | // if (datas && datas.血压1_透前收缩压) { |
| | | // measurements[0].systolic = datas?.血压1_透前收缩压 ?? null; |
| | | // measurements[0].diastolic = datas?.血压1_透前舒张压 ?? null; |
| | | // measurements[1].systolic = datas?.血压2_前半程最低收缩压 ?? null; |
| | | // measurements[1].diastolic = datas?.血压2_前半程最低舒张压 ?? null; |
| | | // measurements[2].systolic = datas?.血压3_后半程最低收缩压 ?? null; |
| | | // measurements[2].diastolic = datas?.血压3_后半程最低舒张压 ?? null; |
| | | // measurements[3].systolic = datas?.血压4_透后收缩压 ?? null; |
| | | // measurements[3].diastolic = datas?.血压4_透后舒张压 ?? null; |
| | | // } |
| | | |
| | | measurements[0].systolic = datas[0]?.血压1_透前收缩压 ?? null; |
| | | measurements[0].diastolic = datas[0]?.血压1_透前舒张压 ?? null; |
| | | measurements[1].systolic = datas[0]?.血压2_前半程最低收缩压 ?? null; |
| | | measurements[1].diastolic = datas[0]?.血压2_前半程最低舒张压 ?? null; |
| | | measurements[2].systolic = datas[0]?.血压3_后半程最低收缩压 ?? null; |
| | | measurements[2].diastolic = datas[0]?.血压3_后半程最低舒张压 ?? null; |
| | | measurements[3].systolic = datas[0]?.血压4_透后收缩压 ?? null; |
| | | measurements[3].diastolic = datas[0]?.血压4_透后舒张压 ?? null; |
| | | |
| | | const chartHeight = canvas.height; |
| | | const chartWidth = canvas.width; |
| | |
| | | }); |
| | | |
| | | // 绘制圆柱体 |
| | | const 计算脱水量刻度 = 100 / datas.超滤总量; |
| | | const 计算脱水量刻度 = 100 / datas[0]?.超滤总量; |
| | | const cylinderX = canvas.width * 0.9; // 圆柱体中心X坐标 |
| | | const cylinderY = canvas.height; // 圆柱体中心Y坐标 |
| | | const cylinderRadius = 6 * scale; // 圆柱体半径 |
| | | const cylinderHeight = 计算脱水量刻度 * datas.超滤总量 || 20; // 圆柱体高度 |
| | | const 超滤总量 = datas.超滤总量 || "0 L"; // 超滤总量 |
| | | const 脱水百分比 = datas.脱水百分比 || 0; // 脱水百分比 |
| | | const 透后体重减干体重的差值 = datas.透后体重减干体重的差值 || 0; // 透后体重减干体重的差值 |
| | | const cylinderHeight = 计算脱水量刻度 * datas[0]?.超滤总量 * scale || 0; // 圆柱体高度 |
| | | const 超滤总量 = datas[0]?.超滤总量 + "" || "0 L"; // 超滤总量 |
| | | const 脱水百分比 = datas[0]?.脱水百分比 || 0; // 脱水百分比 |
| | | const 透后体重减干体重的差值 = datas[0]?.透后体重减干体重的差值 || 0; // 透后体重减干体重的差值 |
| | | drawCylinder( |
| | | ctx, |
| | | canvas.height, |
| | | scale, |
| | | cylinderX, |
| | | cylinderY, |
| | | cylinderRadius, |
| | |
| | | |
| | | const drawCylinder = ( |
| | | ctx: CanvasRenderingContext2D, |
| | | canvasHeight: number, |
| | | scale: number, |
| | | x: number, |
| | | y: number, |
| | | radius: number, |
| | |
| | | ctx.fill(); |
| | | ctx.stroke(); |
| | | |
| | | const baseFontSize = 16; |
| | | |
| | | // 添加文本说明 |
| | | ctx.font = "16px Arial"; |
| | | ctx.font = `${baseFontSize * scale}px Arial`; |
| | | ctx.textAlign = "center"; |
| | | ctx.fillStyle = "#409EFF"; |
| | | ctx.fillText(超滤总量, 180, 280 - height - 10); // 文本位于圆柱上方一点 |
| | | ctx.fillText(超滤总量, x, canvasHeight - height - 5); // 文本位于圆柱上方一点 |
| | | |
| | | if (透后体重减干体重的差值 > 0) { |
| | | ctx.font = "16px Arial"; |
| | | ctx.font = `${baseFontSize * scale}px Arial`; |
| | | ctx.textAlign = "center"; |
| | | ctx.fillStyle = "#000000"; |
| | | ctx.fillText(透后体重减干体重的差值 + "", x, 280); // 文本位于圆柱上方一点 |
| | | ctx.fillText(透后体重减干体重的差值 + "", x, canvasHeight - 5); // 文本位于圆柱上方一点 |
| | | } |
| | | }; |
| | | onMounted(() => { |
| | | genderBloodPressureRectangularChart({}); |
| | | genderBloodPressureRectangularChart(pageData.value.四点血压图数据); |
| | | }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | |
| | | .item-box { |
| | | height: 100%; |
| | | } |
| | | :deep(.mini-header) { |
| | | flex: 0 0 4px !important; |
| | | .card-icon { |
| | | width: 4px !important; |
| | | height: 4px !important; |
| | | } |
| | | .card-title { |
| | | font-size: 4px !important; |
| | | } |
| | | } |
| | | </style> |
| | | // <style lang="less"> |
| | | // .reference-indicators { |
| | |
| | | font-style: normal; |
| | | } |
| | | & td:last-child { |
| | | position: relative; |
| | | width: 64%; |
| | | border-right: none; |
| | | font-family: PingFangSC, PingFang SC; |
| | |
| | | color: #333333; |
| | | text-align: center; |
| | | font-style: normal; |
| | | &.flex-td { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | width: 100%; |
| | | } |
| | | .sub-text { |
| | | font-size: 3.2px; |
| | | font-size: 3px; |
| | | color: #666; |
| | | margin-right: 1.2px; |
| | | white-space: nowrap; |
| | | } |
| | | // .text-right { |
| | | // position: absolute; |
| | | // right: 0; |
| | | // top: 50%; |
| | | // transform: translateY(-50%); |
| | | // font-size: 3px; |
| | | // color: #666; |
| | | // } |
| | | } |
| | | & tr:not(:first-child) td { |
| | | height: 6px; |