Files
his/openhis-ui-vue3/src/action/nurseStation/temperatureSheet/utils.js
2025-09-02 19:16:04 +08:00

298 lines
9.0 KiB
JavaScript

import moment from 'moment'
export function getG(svg, translateX, translateY) {
return svg
.append('g')
.attr('transform', `translate(${translateX},${translateY})`)
}
// function generatePointer ({ pathData, type, yScaleInstance }) {
// return (event) => {
// var index = Math.round(
// (d3.pointer(event)[0] - step - textLeftMargin) / xScale.step()
// )
// var val = xScale.domain()[index]
// const i = d3.bisectCenter(d3.range(pathData.length), val)
// console.log(val, index, '=====', pathData[i], 'pathData[i]')
// const yPos = yScaleInstance(pathData[i].value) + marginTop + HEAD_HEIGHT
// console.log(`translate(${xScale(i)},${yPos})`)
// tooltip.style('display', null)
// tooltip.attr('class', 'myTooltip')
// tooltip.attr('transform', `translate(${xScale(i) + micoStep},${yPos})`)
// const path = tooltip
// .selectAll('path')
// .data(['', ''])
// .join('path')
// .attr('fill', 'white')
// .attr('stroke', 'black')
// const text = tooltip
// .selectAll('text')
// .data(['', ''])
// .join('text')
// .call((text) =>
// text
// .selectAll('tspan')
// .data([`${type}: ${pathData[i].value}`, `${pathData[i].date}`])
// .join('tspan')
// .attr('x', 0)
// .attr('y', (_, i) => `${i * 1.2}em`)
// .attr('font-weight', (_, i) => (i ? null : 'bold'))
// .text((d) => d)
// )
// const { x, y, width: w, height: h } = text.node().getBBox()
// text.attr('transform', `translate(${-w / 2},${15 - y})`)
// path.attr(
// 'd',
// `M${-w / 2 - 10},5H-5l5,-5l5,5H${w / 2 + 10}v${h + 20}h-${w + 20}z`
// )
// }
// }
export function getTypeDatas(typeData, beginDate) {
const types = typeData.sort((a, b) => new Date(a.date) - new Date(b.date))
return types.map(item => {
return {
index: getIndex(beginDate, item.date, '00:00:00') / 6,
times: 0,
date: item.date,
typeCode: item.typeCode,
typeValue: (item.typeValue) || null
}
})
}
export function getTypeData(type, allData = [], isNumber = true, beginDate) {
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date,
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
return getList.sort((a, b) => a.index - b.index)
}
// 获取不升
export function getType(type, allData = [], beginDate) {
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date,
value: cur.typeValue !== '' ? (parseFloat(cur.typeValue) <= 35 ? '不升' : null) : null
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
return getList.sort((a, b) => a.index - b.index)
}
// 合并标记内容
export function setMergeTag(ymbolTextArr = [], symbolContent = []) {
const arr = []
ymbolTextArr.forEach(item => {
symbolContent.forEach(res => {
if (item.index === res.index) {
arr.push({ ...item, ...res, value: (item.value !== null ? item.value : '') + (res.value !== null ? res.value : '') })
}
})
})
return arr
}
// 筛选手术产后日数
export function postpartumDays(type, arr) {
return arr.filter(item => item.typeCode === type).map(i => i.typeValue)
}
// 筛选体温
export function getTypeAnimalHeat(type, allData = [], code, beginDate) {
const getList = allData
.map((rowBOSItem, index) => {
console.log(rowBOSItem.rowBOS, 'rowBOSItem.rowBOS')
const rowBOS = rowBOSItem.rowBOS
const curList = // 改为 filter 来获取所有符合条件的项
rowBOS.filter((item) => {
return item.typeCode === type
}) || []
// 针对每个 cur 处理并生成新的对象数组
return curList.map((cur) => ({
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date,
value: (+cur.collectionMode === +code ? +cur.typeValue : null) || null
}))
})
.flat() // 将二维数组展平为一维数组
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
console.log(getList, 'getList')
return getList.sort((a, b) => a.index - b.index)
}
// 设置折线
export function getBrokenLine(type, allData = [], arr = [], list = [], topList = [], beginDate) {
const result = []
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date,
value: +cur.typeValue
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
const _a = arr.filter(item => item.value)
const _b = list.filter(item => item.value)
const _c = topList.filter(item => item.value)
const mergingData = [..._a, ..._b, ..._c, { index: 50 }].sort((a, b) => a.index - b.index)
let start = 0
mergingData.forEach(item => {
const _p = getList.sort((a, b) => a.index - b.index).slice(start, item.index)
start = item.index + 1
result.push(_p)
})
return result
}
// 处理脉搏心率
export function getHeartRate(type, allData = [], arr = [], topList = [], isNumber = true, beginDate) {
const result = []
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date,
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
const _a = arr.filter(item => item.value)
const _c = topList.filter(item => item.value)
const mergingData = [..._a, ..._c, { index: 50 }].sort((a, b) => a.index - b.index)
let start = 0
mergingData.forEach(item => {
const _p = getList.slice(start, item.index).sort((a, b) => { return a.index - b.index })
start = item.index
result.push(_p)
})
return result
}
function getIndex(beginDate, date, time) {
if (beginDate === undefined || date === undefined) return
const diffTime = moment(date.substring(0, 10)).diff(moment(beginDate.substring(0, 10))) / 1000 / 3600 / 24
const diffIndex = parseInt(time.substring(0, 2))
return diffTime * 6 + Math.floor(diffIndex / 4)
}
// 筛选35和40~42数据
export function degreesOnline(allData, data, type) {
const arr = allData.map((item, index) => {
const cur = data?.find(res => item.value === res.name && +res.isShowPlace === type) || null
return {
index: index,
date: item.date,
value: cur?.name || null
}
})
return arr
}
// 35或42上断开的事件
export function disconnectEvents(allData, data, code, type) {
const arr = allData.map((item, index) => {
const cur = data?.find(res => item.value === res.name && +res.isShowPlace === type && +res[code] === 1) || null
return {
index: index,
date: item.date,
value: cur?.name || null
}
})
return arr
}
export function getDrawCoolData(type, allData = [], isNumber = true, beginDate) {
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date + cur.times,
value: (isNumber ? +cur.typeValue : cur.typeValue) || null
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
return getList.sort((a, b) => a.index - b.index)
}
// 筛选降温getDrawData
export function getDrawData(type, allData = [], code, beginDate) {
const getList = allData
.map((rowBOSItem, index) => {
const rowBOS = rowBOSItem.rowBOS
const cur =
rowBOS.find((item) => {
return item.typeCode === type
}) || {}
return {
index: getIndex(beginDate, cur.date, cur.times),
date: cur.date + cur.times,
value: (+cur.collectionMode === +code ? +cur.typeValue : null) || null
}
})
.map((item) => {
if (item.value) {
// item.value = NaN
}
return item
})
return getList.sort((a, b) => a.index - b.index)
}