import { keys } from "localforage"
|
|
const STX = 'S4'//‘S4’固定
|
const LEN = ''//所有DATAID,DATA的字节数相加后的数
|
const ID = 'PAT123456789'//患者 ID
|
const CN = 'TC'//命令名,用于指定各命令的类别代码
|
const DATAID = '13'//日期识别码 2字节
|
const DATA = ''//
|
const SUM = ''//校验用数据(将CR、LF以外的全部数据相加,将下位的HEX2位转换为ASCII代码)
|
const ETX = '' // 0d0a
|
|
|
const data患者ID = 'B1PAT123456789'
|
const data患者名 = 'B2王小二'// B2 20接受治疗的患者的姓名、汉字。
|
const data治疗方案 = 'B30'// 0:HD,1:ECUM,2:HDF,3:HF,4:OHDF(オンライン HDF),5:I‒HDF,6:O/I‒HDF(オンライン I‒HDF),7:予備(未使用)
|
const data补充液的选择 = 'D10'//0: 预补充(稀释前)1: 后补充(稀释后)
|
const data体重 = 'D2100.00' //0-300.00 6字节 治疗前测量的体重值
|
const data干体重 = 'D3098.00' // 0-300.00 6字节 治疗前测量的体重值
|
const data透析时间 = 'C1240' // 0-599 3 分钟
|
const data脱水时间 = 'C2240' // 0-599 3 分钟
|
const data目标脱水 = 'C32.40' // 4字节 2.40 L
|
const data脱水率 = 'C40.60' // 4字节 0.60L/h
|
const data补液时间 = 'C5060' // 3字节 4分钟
|
const data补液量 = 'C604.0' // 4字节 0-99.9 4L
|
const data补液率 = 'C704.0' //4字节 4/(60/60) =4L/h 该项目是采用目标补液量和补液时间,还是根据目标补液量和补液时间计算得出,取决于设备。
|
const data注射泵一次量 = 'D420.0' // 4 0-20.0 毫升/
|
const data注射泵速度 = 'C810.0' // 0-10.0毫升/小时
|
const data注射泵自动停止时间 = 'D5120' //0-120 3 分钟 治疗结束前 xx 分钟停止治疗的时间。
|
const data血流量 = 'D6300' //D6 0-600 3 毫升/分钟
|
const data透析液温度 = 'C936.6' //33.0-40.0 4 ℃
|
const data补给温度 = 'CA33.6' //33.0-40.0 4 ℃
|
const data透析液流量 = 'D71000' //0-1000 4 毫升/分钟 对于在线 HDF,该值应包括置换液的体积。
|
const dataHDF补液时间 = 'D81000' //0-1000 4 毫升/分钟 对于在线 HDF,该值应包括置换液的体积。
|
const dataHDF每次剂量的液体量 = 'D9300' //D9. 0-300 3 毫升 I-HDF 每次剂量的补充液体量
|
const dataHDF补液间隔 = 'DA120' //DA 0-120 3 分钟 I-HDF 补充剂的间隔时间。
|
const dataHDF补充率 = 'DB300' //DB 0-300 3 毫升/分钟 I-HDF 的补液率。
|
const data收缩压上限 = 'DC300' //DC 0,1-300 3 毫米汞柱 收缩压上限警戒点。0 不受监控
|
const data收缩压下限 = 'DD300' //DD 0,1-300 3 毫米汞柱 降低收缩压警示点0 不受监控
|
const data舒张压上限 = 'DE300' //DE 0,1~300 3 mmHg
|
const data舒张压下限 = 'DF300' // DF 0,1~300 3 mmHg
|
const data脉冲上限 = 'DG200' // DG 0,1~200 3 bpm
|
const data脉搏下限 = 'DH200' // DH 0,1~200 3 bpm
|
const data血压自动测量间隔 = 'DI180' // DI 0,1~180 3 min
|
|
export interface iTCdata {
|
data患者ID: string,
|
data患者名: string,
|
data治疗方案: string,
|
data补充液的选择: string,
|
data体重: string,
|
data干体重: string,
|
data透析时间: string,
|
data脱水时间: string,
|
data目标脱水: string,
|
data脱水率: string,
|
data补液时间: string,
|
data补液量: string,
|
data补液率: string,
|
data注射泵一次量: string,
|
data注射泵速度: string,
|
data注射泵自动停止时间: string,
|
data血流量: string,
|
data透析液温度: string,
|
data补给温度: string,
|
data透析液流量: string,
|
dataHDF补液时间: string,
|
dataHDF每次剂量的液体量: string,
|
dataHDF补液间隔: string,
|
dataHDF补充率: string,
|
data收缩压上限: string,
|
data收缩压下限: string,
|
data舒张压上限: string,
|
data舒张压下限: string,
|
data脉冲上限: string,
|
data脉搏下限: string,
|
data血压自动测量间隔: string,
|
}
|
export interface IMsgBody {
|
STX: string //‘S4’固定
|
LEN: string //所有DATAID,DATA的字节数相加后的数
|
ID: string //患者 ID
|
CN: string //命令名,用于指定各命令的类别代码
|
DATAID?: string //日期识别码 2字节
|
DATA: Object
|
SUM: string //校验用数据(将CR、LF以外的全部数据相加,将下位的HEX2位转换为ASCII代码)
|
ETX: string // 0d0a
|
|
}
|
export interface iCMdata {
|
data患者姓名: string, //DA 20 接收数据时设备上显示的病人姓名
|
data评论: string, // DA 500 改行可(改行代码替换为/n’)显示在画面上的接受治疗的患者相关信息
|
|
}
|
/**
|
* 获取 DATA对象 dataString
|
*/
|
export function getDATAmodeStr(mode: any) {
|
let str = ''
|
for (const key in mode) {
|
if (mode.hasOwnProperty(key)) {
|
const value = mode[key];
|
console.log(key, value);
|
str += value
|
}
|
}
|
return str
|
}
|
/**
|
*
|
* @param mode 发送的数据对象
|
*/
|
export function getMsgDataStr(mode: IMsgBody) {
|
let str = ''
|
const DATAstr = getDATAmodeStr(mode.DATA)
|
console.log(`数据对象字符串位等于${DATAstr}--------------------------------------`)
|
const modeLEN = (DATAstr + mode.DATAID).length.toString().padStart(3,'0')
|
// num.toString().padStart(3, '0');
|
console.log(`数据长度位等于${modeLEN}--------------------------------------`)
|
// 校验码===检查用镊子(CR,将除LF外的所有数据相加,将下位的HEX2位转换为ASCI代码)
|
str = mode.STX + modeLEN + mode.ID + mode.CN + mode.DATAID + DATAstr
|
// 算出校验码
|
const modeSUM = jianyan(str)
|
str += modeSUM + '\r\n'
|
console.log(`发送数据字符串=${str}--------------------------------------`)
|
return str
|
}
|
export function jianyan(data: string) {
|
let sum = 0
|
const str=data.replace(/[\r\n]/g,'');
|
for (let char of str) {
|
sum += char.charCodeAt(0);
|
}
|
// 转换为 HEX,并取低两位
|
const hexSum = sum.toString(16).toUpperCase();
|
const checksum = hexSum.slice(-2); // 取低两位
|
console.log(`校验位-${checksum}------------------------------`)
|
return checksum;
|
}
|