近期在项目需要对接一些医疗设备,成功解析Mindary ,GE,Philipes 监护仪各型号数据,mark一下。
GEB850650450,IPM10,PM8000,PM9000,GEDAsh4000,Philips 等

如有技术问题可联系 QQ:2568885920 分享交流经验。
function getData()
//读取数据长度
while(_buffer.length>=_headsize)
//完事帧数据
let rawData=_buffer.slice(0,totallen+_headsize)
// parseDataEx(rawData)
// console.log(rawData)
// console.log('bz:'+bzValue+",len:"+totallen)/console.log(rawData)
// parsePackage(rawData)
// console.log('---------------')
_event.emit('data',rawData)
// console.log('buflen:'+_buffer.length)
parsePackage(_buffer)
_buffer=_buffer.slice(totallen+_headsize)
if(_buffer.length>40960) {
_buffer=_buffer.slice(_buffer.length)
}
}
//console.log('getData')
}
function CheckPollPacketActionType(packetbuff) {
const actionBuf=Buffer.alloc(2)
packetbuff.copy(actionBuf,0,20,22)
let action_type=actionBuf.readUInt16BE()
switch (action_type) {
case ActionType.NOM_ACT_POLL_MDIB_DATA:
PollPacketDecoder(packetbuff,44)
break
case ActionType.NOM_ACT_POLL_MDIB_DATA_EXT:
PollPacketDecoder(packetbuff,46)
break
default:
break
}
}
//解析数据
function PollPacketDecoder(buffer,offset) , function(err)
// })
if(attributeliststruct.count>0)
}
}
}
}
}
}
}
})
}
function ReadIDLabelString(buffer) {
let strmp = new StringMP()
strmp.length=buffer.readUInt16BE()
strmp.value1=buffer.slice(2,strmp.length+2).toString()
// console.log('STRMP:')
// console.log(strmp)
}
function ReadNumericObservationValue(buffer)
else{
NumObjectValue.value=-1
}
switch (NumObjectValue.physio_id) {
case 19384:{
datavalue.spo2=NumObjectValue.value
// console.log(datavalue)
break
}
case 18466:{
datavalue.ecg=NumObjectValue.value
// console.log(datavalue)
break
}
case 20490:{
datavalue.resp=NumObjectValue.value
break
}
case 18949:{
datavalue.nibp_max=NumObjectValue.value
// console.log(datavalue)
break
}
case 18950:{
datavalue.nibp_min=NumObjectValue.value
// console.log(datavalue)
break
}
default:
break
}
_event.emit('package',datavalue)
// // console.log('NumObjectValue:')
// console.log(NumObjectValue)
}
function ReadCompoundNumericObsValue(avaattribobjects)
}
}
function DecodePollObjects(packetbuffer,callback)
function CheckLinkedPollPacketActionType(packetbuff) {
const actionBuf=Buffer.alloc(2)
packetbuff.copy(actionBuf,0,22,24)
let action_type=actionBuf.readUInt16BE()
switch (action_type) {
case ActionType.NOM_ACT_POLL_MDIB_DATA:
PollPacketDecoder(packetbuff,46)
break
case ActionType.NOM_ACT_POLL_MDIB_DATA_EXT:
PollPacketDecoder(packetbuff,48)
break
default:
break
}
}
function ParseMDSCreateEventReport(packetbuff){
}
function parsePackage(buffer)
_event.emit('dataCms',obj)
const data=Buffer.from(buffer)
// fs.writeFile('./philips2.txt', bytesToHex(data)+'
', { 'flag': 'a' }, function(err)
// })
const ropdu_type=Buffer.alloc(2) //数据长度四个字节
data.copy(ropdu_type,0,4,6)
let pdutype=ropdu_type.readUInt16BE()
switch (pdutype) {
case ROType.ROIV_APDU:
//sendmdscreateevent
ParseMDSCreateEventReport(data)
break
case ROType.RORS_APDU:
CheckPollPacketActionType(data)
break
case ROType.ROLRS_APDU:
CheckLinkedPollPacketActionType(data)
break
case ROType.ROER_APDU:
break
default:
break
}
}