如何将ASTM框架写入医疗设备?

问题描述 投票:0回答:2

我目前正在使用node js处理ASTM协议,问题是我无法正确向设备发送消息 例如,我想发送这条消息:

let msg = "H|!~|||LISHOST|||||||P|LIS2-A2|20040318235959
P|1||12345677||AHMED!SARMOUM||20120112!4!Y|M|||||
O|1|SID_133||!!!CD|||20160510111238||||N||||WB
L|1|N"

当前目标机器是SELECTRA和COBAS E411

node.js
2个回答
0
投票
async function messageHostQuery(lastname, firstname, id, sendCodes) {
try {
  let value = [];
  sendCodes.map((val, index) => {
    value += `^^^${val}\\`;
  });
  let Header = '1H|\\^&||||||||||P|1';
  let Patient = `2P|1||||${lastname}^${firstname.slice(0,10)}`;
  let Order = `3O|1|${id}||${value.toString().slice(0, 
 -1)}|R||||||N||||||||||||||Q`;
  let endMessage = `4L|1`

  return {Header: Header, Patient: Patient, Order: Order, End: endMessage}

} catch (err) {
 if(err instanceof Error) {
  return Promise.reject(err)
 }
}

};

0
投票
const messageCreatorHostQuery = async (Header, Patient, Order, End) => {
 try {
 const STX = 0x02; // Start of Text
 const ETX = 0x03; // End of Text
 const ETB = 0x17; // End of Transmission Block
 const CR = 0x0d; // Carriage Return
 const LF = 0x0a; // Line Feed
 const ACK = 0x06; // Acknowledgment
 const NAK = 0x15; // Not Acknowledgment
 const EOT = 0x04; // Fin de transmisión
 const ENQ = 0x05; // Solicitud de respuesta
 const INIT = 0x1c;

 const STX_ = "\x02"; // Start of Text
 const ETB_ = "\x17"; // End of Transmission Block
 const ETX_ = "\x03"; // End of Transmission Block
 const CR_ = "\x0D"; // Carriage Return
 const LF_ = "\x0A"; // Line Feed
 const ACK_ = "\x06"; // Line Feed

 let messages = [
   Buffer.from([STX]) +
    `${Header}` +
    Buffer.from([CR]) +
    Buffer.from([ETX]) +
    `${calculateChecksum(`${Header}${CR_}${ETX_}`)}` +
    Buffer.from([CR]) +
    Buffer.from([LF]),
  Buffer.from([STX]) +
    `${Patient}` +
    Buffer.from([CR]) +
    Buffer.from([ETX]) +
    `${calculateChecksum(`${Patient}${CR_}${ETX_}`)}` +
    Buffer.from([CR]) +
    Buffer.from([LF]),
  Buffer.from([STX]) +
    `${Order}` +
    Buffer.from([CR]) +
    Buffer.from([ETX]) +
    `${calculateChecksum(`${Order}${CR_}${ETX_}`)}` +
    Buffer.from([CR]) +
    Buffer.from([LF]),
  Buffer.from([STX]) +
    `${End}` +
    Buffer.from([CR]) +
    Buffer.from([ETX]) +
    `${calculateChecksum(`${End}${CR_}${ETX_}`)}` +
    Buffer.from([CR]) +
    Buffer.from([LF]),
  ];
 return messages;
} catch (error) {
 if (error instanceof Error) {
  return Promise.reject(error.message);
 }
 }
};
© www.soinside.com 2019 - 2024. All rights reserved.