HL7 是什么?
HL7
全称 Health Level Seven, Inc.
它是一个标准制定组织(SDO),由美国国家标准协会(ANSI)认证。该组织成立于1987年,旨在为电子健康信息的交换/整合/共享/检索制定标准。 Health Level 7 中的 Level 7 是指 OSI 的七层模型中的最高一层,第七层。
HL7协议可以追溯到1970年代后期,当时它的前身是在UCSF开发的,并于1979年首次在生产中实施。
在HL7标准到来之前,医院和其他医疗保健组织通常会有许多不同的软件应用程序在各种操作系统和硬件平台上运行,并且独立运行。即使这些应用程序支持某些网络连接,它们也会使用专有协议交换信息。这使得应用程序(尤其是来自不同供应商的应用程序)的集成变得非常困难。
例如,患者注册系统将无法与计费系统或实验室系统进行通信,因此,这些系统将无法提供患者配置文件的合并视图以供医疗保健专业人员使用。因此,大多数组织通常被锁定在专有技术/解决方案中,并且与实施,集成和维护医疗保健系统相关的成本和风险非常高。
HL7 v.1
HL7 v.1 仅用于概念验证实现,并用于定义标准的内容和结构。自 1987 年 3 月召开为期两天的首次会议以来,HL7 工作组大约每 3 或 4 个月召开一次会议,以制定和审查该规范。5月、6月和9月举行了三次为期两天的工作组会议,以制定标准草案。他们有7-15人的出席。1.0 版标准草案涵盖了接口、ADT、订单输入和面向显示的查询的整体结构。
HL7 v.2
HL7 v.2 于1988年9月在图森举行的第二次全体会议上提出。HL7董事会的指示是使之成为生产中实际使用的第一个版本。2.1版于1990年6月发布,包括基于ASTM E1238规范的实验室结果报告。
在v2.1发布后,HL7采用了新的正式附则和投票程序。这些程序以其他相关医疗保健行业计算机消息传递标准组织(例如ASTM)的投票程序为蓝本,旨在符合美国国家标准协会(ANSI)的要求。1994年6月,HL7成为ANSI认证标准组织。
HL7自1987年发布V1.0版后相继发布了v2.0 v2.1 v2.2 v2.3 v2.3.1 ,2000年发布了v2.4版,现已用XML开发了v3.0版。
消息编码和结构组件
发送和接收消息可以是 HL7 消息词汇表中定义的数百种消息类型(Message Types)
中的任何一种。这些 HL7 消息通常由信息系统创建和发送,以响应事件的发生,例如患者入院,患者出院或可能是对另一个系统的查询。每条消息都包含有关该事件的信息。此外,这些HL7消息中的每一个本身都是由段(segments)
组成的。这些段被认为是 HL7 消息的真正构建块,尽管这些段本身又由 字段(fields)
组成。段具有三个字符的名称和特定字段的预定义格式。字段由 |
分隔(管道)字符和可进一步划分为具有 ^
字符的子组件
。例如,PID
段包含患者信息,例如ID号,姓名,地址和出生日期。不同的 HL7 事件触发不同的消息类型 – 每种消息类型都有一组已定义的段,这些段连接在一起以提供有关该事件的所有必需信息。某些段是必需的,必须包含在消息中,而其他段是可选的。
例如,发送 ADT^A01
消息(ADT 代表 入院、出院、转移),因为患者正在接受将患者分配到病床上的入院过程。它标志着患者开始在医疗机构中住宿。此事件可以触发向其他辅助系统
(例如,药房系统)发出通知,告知患者已被入院并可能被合法开具药物;患者已被入院并需要准备护理计划的护理系统;计费周期开始的财务系统;患者已被收治并有权接受服务的实验室,病理学和放射学系统。此消息由 MSH
EVN
PID
PV1
段组成,有时还包括更多。
HL7 消息类型
HL7 消息类型包含很多,如下表。
Msg. Type | Description Chapter |
---|---|
ACK | General acknowledgment message |
ADR | ADT response |
ADT | ADT message |
BAR | Add/change billing account |
CRM | Clinical study registration message |
CSU | Unsolicited study data message |
DFT | Detail financial transactions |
DOC | Document response |
DSR | Display response |
EDR | Enhanced display response |
EQQ | Embedded query language query |
ERP | Event replay response |
MCF | Delayed Acknowledgment |
MDM | Medical document management |
MFD | Master files delayed application acknowledgment |
MFK | Master files application acknowledgment |
MFN | Master files notification |
MFQ | Master files query |
MFR | Master files response |
NMD | Application management data message |
NMQ | Application management query message |
NMR | Application management response message |
NUL | No message required (for referential integrity) |
ORF | Query for results of observation |
ORM | Pharmacy/treatment order message |
ORR | General order response message response to any ORM |
ORU | Unsolicited transmission of an observation message |
OSQ | Query response for order status |
OSR | Query response for order status |
PEX | Product experience message |
PGL | Patient goal message |
PIN | Patient insurance information |
PPG | Patient pathway message (goal-oriented) |
PPP | Patient pathway message (problem-oriented) |
PPR | Patient problem message |
PPT | Patient pathway goal-oriented response |
PPV | Patient goal response |
PRR | Patient problem response |
PTR | Patient pathway problem-oriented response |
QCK | Deferred query |
QRY | Query, original mode |
RAR | Pharmacy/treatment administration information |
RAS | Pharmacy/treatment administration message |
RCI | Return clinical information |
RCL | Return clinical list |
RDE | Pharmacy/treatment encoded order message |
RDR | Pharmacy/treatment dispense information |
RDS | Pharmacy/treatment dispense message |
REF | Patient referral |
RER | Pharmacy/treatment encoded order information |
RGR | Pharmacy/treatment dose information |
RGV | Pharmacy/treatment give message |
ROR | Pharmacy/treatment order response |
RPA | Return patient authorization |
RPI | Return patient information |
RPL | Return patient display list |
RPR | Return patient list |
RQA | Request patient authorization |
RQC | Request clinical information |
RQI | Request patient information |
RQP | Request patient demographics |
RQQ | Event replay query |
RRA | Pharmacy/treatment administration acknowledgment message |
RRD | Pharmacy/treatment dispense acknowledgment message |
RRE | Pharmacy/treatment encoded order acknowledgment message |
RRG | Pharmacy/treatment give acknowledgment message |
RRI | Return referral information |
SIU | Schedule information unsolicited |
SPQ | Stored procedure request |
SQM | Schedule query message |
SQR | Schedule query response |
SRM | Schedule request message |
SRR | Scheduled request response |
SUR | Summary product experience report |
TBR | Tabular data response |
UDM | Unsolicited display update message |
VQQ | Virtual table query |
VXQ | Query for vaccination record |
VXR | Vaccination record response |
VXU | Unsolicited vaccination record update |
VXX | Response for vaccination query with multiple PID matches |
HL7 Inc. 提供的 HL7 标准手册提供了有关触发器事件、消息类型和分段的大量详细信息。本地供应商之间的互操作性。有关更多详细信息,请参阅与您所在国家/地区相关的标准机构。
例子
患者张三于2002年12月1日上午11点12分由301医院急诊室转往北医三院急诊外科李四。
301医院转诊系统转诊确认后2分钟向北医三院发出患者转诊信息和患者基本情况:张三,身份证号110108197404012346,男性,住址:海淀区复兴路38号,电话:85591234。
转成HL7消息后为:
MSH|^?~\&|005^急诊室|0802^301医院|0052^急诊外科|0801^北医三院
PID|||| 330108197404012346||张三|19740401|男||C|海淀区^复兴路^38号
PV1||急诊外科||||0007^李四|||急诊科|
下面简单介绍几个常见的消息。
ACK Message
描述
交换通信中使用的确认消息
-
原始应答模式 – 表示确认消息已收到,但不一定处理完成。
-
增强应答模式 – 返回由此产生的状态,而不是通信响应(即查询结果、订单响应等)。
HL7 消息传递标准包括接收消息后返回 ACK 消息,以表示已收到消息。因此,如果接收方不返回 ACK 消息,发送方可能会认为存在问题并停止发送消息。
ACK 还会影响发送消息的速度。由于 HL7 通常被配置为发送消息,然后等待 ACK 然后再在队列中发送下一条消息,因此确认返回得越快,下一条消息发送得越快。
Segment MSA-1 作为响应状态码, AA 接受成功,AE 接受错误,AR 拒绝消息。
示例
MSH|^~\&|||||||ACK|||2.3.1
MSA|AA||TextMessage
QRY Message
描述
QRY 消息主要用于中间件向 LIS 查询患者数据。。
示例
MSH|^~\&|||||||QRY^A19|||2.3.1
QRD||||QueryID||||PatientID1~PatientID2~PatientID3|^TubeNum1~^TubeNum2~^TubeNum3
MDM Message
描述
MDM 用来传输医疗文档信息,LIS 根据 QRY 消息,响应对应患者数据的 MDM 消息。
示例
MSH|^~\&|||||||MDM^T01|||2.3.1
PID||PatientID|||^PatientName||2021/10/17|Sex
PV1||||||||||||||||||PatientType|||ChargeType|||||||||||||||||||BedStatus
ORU Message
描述
HL7 ORU 用于将结果数据从生成系统传输到病历存档系统,或传输到其他系统。由中间件从机器获取血液信息,与患者信息组装后,重新发送给 LIS。
示例
MSH|^~\&|||||||ORU^R01|||2.3.1
OBX||NM|WBC||4.41|10⁹/L|3-10|A|||F
OBX||NM|RBC||4.77|10¹²/L|4-10|N|||F
OBX||NM|HGB||127|g/L|4-10|N|||F
OBX||NM|HCT||0.374|L/L|4-10|N|||F
OBX||ED
HL7 Segments
MSH Segment
描述
MSH
段包含有关消息的详细信息,例如发送和接收系统,日期和消息类型。EVN
段包含有关触发事件的详细信息,例如事件类型,事件日期/时间,触发事件的人。PID
段包含有关相关患者的详细信息。
示例
MSH|^~\&|||LIS||||ADT^A01|||2.3.1
PID||PatientID|||||2021/10/17|Sex
PV1||||||||||||||||||PatientType||||||||||||||||||||||BedStatus
PV1 Segment
描述
PV1
段包含患者就诊的详细信息,例如就诊次数,病房/床位,主治医生,财务分类。因此,有关患者入院事件的所有相关信息都使用此消息传达给接收系统。以同样的方式,与患者,观察,财务和计费相关信息有关的其他信息也可以在各种软件系统之间进行通信。
消息确认机制
当传入消息(参见上面示例 ADT A01 消息的屏幕截图)到达接收系统时,消息确认(在 HL7 中称为 ACK
)将传输回发送系统(如下面的屏幕截图所示)。这种确认可以采取许多不同的形式,具体取决于接收系统处理传入消息的能力。如果消息已成功
处理,则会向发送系统发送一条肯定的 ACK 消息,并完成该消息的通信。在 HL7 中,通过在 MSA 段的第一个字段中使用 AA
(应用程序确认)值来传达正 ACK,该字段在 MSA 段的第 3 个字段中传输确认包含与发送系统创建的消息相同的消息控制 ID。这允许发送系统将确认与之前传输的原始消息相匹配。如果在处理传入消息期间出现错误,则否定确认(在 HL7 中称为 NACK
)将传输回发送系统。然后,传输系统可以诊断、修复故障消息,并在以后将失败的消息重新发送回接收系统。通过在 MSA 段的第一个字段中使用 AE
(应用程序错误)值来指示负 ACK。此代码指示消息结构或消息本身存在问题。
最小下层协议 (MLLP)
HL7 V2标准提出了一种建立在TCP / IP协议之上的传输协议,称为最小下层协议(MLLP)。它本质上是一种包装协议,其中核心HL7消息被封装在特殊字符中
,以指示消息信息向接收应用程序的传输的开始和结束。使用 MLLP 协议传输的 HL7 消息以开始块字符为前缀,消息段以段分隔符结束,然后消息本身以两个字符(即结束块和回车符)结束。大多数情况下,通常用于表示起始块
的字符是 VT
(垂直制表符),即 ASCII 11
。FS
(文件分隔符 ASCII 28
)用于表示结束块
,CR (ASCII 13) 用于回车。但是,实现站点可以自由地自定义这些字符,以便在必要时使用不同的字符。
库
-
hapi-hl7v2(Java)
-
nHapi(.NET)
using NHapi.Model.V231.Message;
NHapi.Base.Parser.PipeParser parser = new();
// ADT 进出院
var adt = new ADT_A01();
adt.MSH.SendingApplication.NamespaceID.Value = "Middleware"; // MSH-3
adt.MSH.ReceivingApplication.NamespaceID.Value = "LIS"; // MSH-5
adt.PID.PatientID.ID.Value = "PatientID"; // PID-2
adt.PID.DateTimeOfBirth.TimeOfAnEvent.Set(DateTime.Now, "yyyy/MM/dd"); // PID-7
adt.PID.Sex.Value = "Sex"; // PID-8
adt.PV1.PatientType.Value = "PatientType"; // PV1-18
adt.PV1.BedStatus.Value = "BedStatus"; // PV1-40
string adtMessage = parser.Encode(adt);
Console.WriteLine(adtMessage);
// 输出:
// MSH|^~\&|Middleware||LIS||||ADT^A01|||2.3.1
// PID||PatientID|||||2021/10/17|Sex
// PV1||||||||||||||||||PatientType||||||||||||||||||||||BedStatus
// ACK 消息确认/应答
var ack = new ACK();
ack.MSA.AcknowledgementCode.Value = "AcknowledgementCode"; // MSA-1
ack.MSA.TextMessage.Value = "TextMessage"; // MSA-3
string ackMessage = parser.Encode(ack);
Console.WriteLine(ackMessage);
// 输出:
// MSH|^~\&|||||||ACK|||2.3.1
// MSA|AcknowledgementCode||TextMessage
ASTM 是什么?
ASTM(美国材料与试验学会:American Society of Testing Materials)是一个国际标准组织,致力于开发和发布针对各种材料,产品,系统和服务的自愿性共识技术标准。 全球大约有12,575个ASTM自愿性共识标准。该组织的总部位于美国宾夕法尼亚州。ASTM是美国最老、最大的非盈利性的标准学术团体之一。ASTM应用很广,是国际化标准组织,但国内工程人员常常将ASTM称之为美国标准或美标。
ASTM 标准分以下六种类型:
标准试验方法(Standard Test Method)它是为鉴定、检测和评估材料、产品、系统或服务的质量、特性及参数等指标而采用的规定程序。
-
标准规范(Standard Specification) 它对材料、产品、系统,或项目提出技术要求并给出具体说明,同时还提出了满足技术要求而应采用的程序。
-
标准惯例(Standard Practice) 它对一种或多种特定的操作或功能给予说明,但不产生测试结果的程序。
-
标准术语(Standard Terminology) 它对名词进行描述或定义、符号、缩略语、首字缩写进行说明。
-
标准指南(Standard Guide) 它对某一系列进行选择或对用法进行说明,但不介绍具体实施方法。
-
标准分类(Class.fication) 它根据其来源、组成、性能或用途,对材料、产品、系统,或特定服务进行区分和归类。
ASTM由132多个技术标准编写委员会组成。他们共同发布了9,100多种材料,产品,系统和服务的标准规范,测试,实践,指南和定义。已发布了有关金属,易燃性,化学产品,润滑剂,化石燃料,纺织品,油漆,塑料,橡胶,管道,法医学,电子,能源,医疗设备和无数其他主题的标准。
LIS01-A2 是什么?
LIS2-A2 是临床实验室仪器和信息系统之间传输信息的规范
美国材料与试验协会(ASTM)制定了在临床仪器和计算机系统之间传输信息的标准。规范ASTM E1394-97涵盖了临床仪器和计算机系统之间远程请求和结果的双向数字传输。它指定了用于构建文档内容和表示这些结构中包含的数据元素的约定。它没有指定低级通信协议和数据传输要求的约定。ASTM E1381–02 是一项单独的规范,详细规定了低级数据传输通信的标准。Ensemble ASTM 软件包支持这两个标准。有关更多详细信息,请参阅网站 http://www.astm.org/.
此后,ASTM已将维护这些标准的责任移交给临床和实验室标准协会(CLSI)。您可以在网站上找到有关这些标准的更多信息 http://www.clsi.org.Ensemble 支持两个组织的以下标准。
定义
消息–通过消息终止符由标题(H)记录组成的文本信息体记录。
记录–描述完整消息一个方面的字段集合。
字段–记录的一个特定属性,其中可能包含进一步细化基本属性的数据元素集合。
组件–单个或多个数据元素,表示其前面的数据元素的更精细聚合或扩展, 组件不能包含重复内容。
消息内容
字符代码
所有数据应表示为ISO 8859-1:1987中定义的八位单字节编码图形字符值。对应于ASCII标准字符集中0到127范围。不允许0到31之间的值,但7(BEL)、9(水平选项卡)、11(垂直选项卡)和13(CR)除外,其中13保留为记录终止符。
最大字段长度
所有字段的长度都是可变的。规范未定义任何字段或记录的最大长度,并依赖接收器的缓冲能力和逻辑层的传输设施,将信息解析为可用于传输和处理的可用长度。仪器供应商和信息系统供应商有责任就可能需要强制执行的任何任意字段或记录截断达成一致。
<ENQ>
<STX>1H|\^&|||BALABALA^002YAXH02919^1.2.1.4|||||||D|LIS2-A2|20220421163325<ETX>35
<STX>2P|1|||||||||||||||||||||||||||||||||||<ETX>
<STX>3O|1|ID_0008||^^^DIF|R|20220415113239|||||||||BLOOD||||||||||F|||||<ETX>43
<STX>4C|1|I|CONDITIONS^^TECHNICIAN_ANALYSIS\SUSPECTED_PATHOLOGY^^LYMPHOPENIA\SUSPECTED_PATHOLOGY^^NEUTROPHILIA|I<ETX>1F
<STX>5M|1|HISTOGRAM|RBC/PLT|RbcAlongRes|FLOATLE-stream/deflate:base64^Y2AAgW5nMOVg5QIiQUwA|FLOATLE-stream/deflate:base64^1dRvbBNlHMDxR5xKqOBEU5hOXcM/0VbrlK0s4O6eXyWI25giahF0YkWGxqJDMXXiMbcynIYNEl3YQhYIFDVLlsbgsqShRkkagmShEEAjQ4KGNcY/2RoNIcTvjSP2B<ETB>7D<STX>6cYX+sYm3931+vTzPL27nVL2q03GNkZFkD+GUgu1UmlyXzrOQaU2SNjTVhn2uAx3otZg30gO97I/aESiI7x3mR0txWZy2GdmqytNxpjiXmlGog1mTaTJZLwZzWxjTLcZL9/NuF4z07WPsftN5mL8oOkLn+Q7Z8xQOsv3RsyY9wLfHadD6Ws1vo5Eb9DRzE065p2qmUt3nyrR8fIZOtE+WzOvTutSnekq00OjFZo16Nwe0fZvc<ETB>6E<STX>7YWqNOvRHtdS7QuHdCC5QrM2XRNZhb0GO4LdgL0euxHH4rMmrGY+j+G1MqYN8wPGbcHtYOw27A8Z34m/nfV0M8cO1tTDPLtY127mirO2j5nvU9bXy5x92Ansz7D3YfdjD2Ansfdjf4H9JfaBsfMf8x7EPoR9GHsQ+wj2Mezj2Cexv8X+DnsI+wz2Wewfsc9hZ7F/wv4F+zfsEewc9u/Y57EvYF/kO0pcoauE8ywdLVdLpqtA3<ETB>B3<STX>0IlrhHMu3aeuk6HR8eJxTeDauyRefr1kqyeKLzxJuBaSaC+U3J4bJZCcLFwXSQ7fLPY9I+4pwjWStC7CvgX7Vuxi7Nuwb8e+A7sE24M9DXs69gzsmdizsO/Eno19F/bd2F5sH/a92H7s+7BLse/HfgB7DnYZdjl2AHsudgX2POz52A9iV2Ib2Ca2xhbsIPZD2AuwF2I/jL0I+xHsKuxq7Brsxdi12I9iP4a9BHsp9hPYT2I/h<ETB>CA<STX>1R3CXob9NPZy7BXYz2A/i/0c9krs57HD2C9gr8J+EXs1dj32GuyXsF/GfgU7gr0W+1Xs17AbsNdhv479BvZ67Dexo9hvYTdiv429Afsd9i3Jfm3xfqP4zm7kWJNEzjcx57uSKGxm3mbJzWxh7hYJzI8xf0yiSzaxhk2SrG9lHa2irM2s5b3Lz4B/+bIqL2U/Swwny6mHUnmdzkuZf1VIJeSnWrKoc+z5odSv9ufc2356nBqpk<ETB>69<STX>2/rpG7pI9v1p30eLqJ5i9BG/M04D7B+m79kfFZUqCCpjEk3lmegJKmsWWy9bf1Cl5nA8wHZucOyZabFNlVEpY+7hmD22hG0Rn01mO4HtOI7l8H+go3SAPqe91MWcW9g2UwPVUS3NIz9NoyKaSAVi//8q9TOdpqN0kL6iAeqjT2gnbaet9D7FnHOyjlZTnXOeqshwztt0KrbPE42nAvrDObfn6AQNOuc7Rf1OfU57nevRTq3O9<ETB>E8<STX>3VlLdU72NTOc/M61zK/QSV2h/Hsi/17pycv6h4y/SV2hy/frf93/5/Un<ETX>43
<STX>1M|4|REAGENT|CLEANER\DILUENT\LYSE|211029I18^20220415000000^20220715\210917H18^20220415000000^20220917\210707M11^20220215000000^20220415<ETX>16
<STX>2R|1|^^^PCT^51637-7|0.15|%|0.15 - 0.40^REFERENCE_RANGE|L||F||technician^^TECHNICIAN|20220415113239||<ETX>6C
<STX>3R|2|^^^MCV^787-2|90.2|um3|76.0 - 100.0^REFERENCE_RANGE|N||F||technician^^TECHNICIAN|20220415113239||<ETX>33
<STX>4R|3|^^^NEU#^751-8|9.83|10E3/uL|1.60 - 7.00^REFERENCE_RANGE|HH||F||technician^^TECHNICIAN|20220415113239||<ETX>26
<STX>5L|1|N<ETX>08
<EOT>
分隔符
字母数字字符不应用作分隔符,因为它们可能出现在字段内容中。此外,一些字母字符有以下特殊用途:
H、 P、O、R、C、Q、S、L、M记录类型ID
. 拉丁文-1(46)小数点(句点)
, 拉丁文-1(44)逗号
S、 P、R、C优先级代码L、H、<、>、N、U、D、B、W结果代码C、P、F、X、I、O结果状态
为了提供示例,本规范中使用了以下分隔符:字段分隔符=垂直条(|)拉丁文-1(124)
重复分隔符=反斜杠(\)拉丁文-1(96)
组件分隔符=插入符号(^)拉丁文-1(94)转义分隔符=符号和(&)拉丁文-1(38)
记录分隔符
回车符(13)应为任何已定义记录类型的结束符。
字段分隔符
字段分隔符是可变的(不允许使用13,回车),在消息头中定义。
H|\^&|||MHR1^00364^1.4.1|||||||P|LIS2-A2|20211104131823
&|
定义了分隔符为 |
(124)
重复分隔符
重复分隔符必须在消息头中定义,并用于分隔同一集合的成员。
组件分隔符
组件分隔符用于分隔具有层次结构或限定符性质的字段的数据元素。例如,地址字段的街道、城市、州、邮政编码等将由组件分隔符分隔。
H|\^&|||H550^002YAXH02921^1.2.1.4|||||||D|LIS2-A2|20211214143721
此处 H550^002YAXH02921^1.2.1.4 即为层级关系
- H550 设备类型
- 002YAXH02921 设备序列号
- 1.2.1.4 固件版本号
转译分隔符
转义分隔符的应用是可选的。
H|\^&|||MHR1^00364^1.4.1|||||||P|LIS2-A2|20211104131823
&|
定义了分隔符为 |
(124)
空值
系统允许传输空值的字段,发送系统可以使用空值表示没有更改,因此空值不会覆盖接收系统中的现有数据。
O|1|AUTO_SID0005||^^^DIF|R|20211214143553|||||||||BLOOD||||||||||F|||||
数据记录
应在不同类型的记录中交换数据。每个记录由标识记录类型的字段(编号1)引入,并由回车符终止。定义了以下记录类型。
消息头记录(H)
该记录应包含关于发送方和接收方的信息,即应识别其记录正在交换的仪器和信息系统。它还定义字段、重复字段和组件字段分隔符。
H|\^&|||H550^002YAXH02921^1.2.1.4|||||||D|LIS2-A2|20211216155539
患者识别记录(P)
此记录类型包含有关单个患者的信息。
P|1||2||BOND^JAMES||19770526|M|||||
订单记录(O)
当从信息系统发送到仪器时,该记录应代表一个测试顺序,并可后跟一个或多个结果记录,其中将包含与所订购测试相关的信息。当仪器发送到信息系统时,它应提供有关样本/测试请求的信息,并可随后提供结果记录(订购电池内的每个测试至少有一个记录)。
O|1|AUTO_SID0004||^^^DIF|R|20211229173159|||||||||BLOOD||||||||||F|||||
结果记录(R)
每个结果记录应包含单个分析测定的结果。
R|1^1|^^WBC^66902-|42.39|10E3/uL|3.50 - 10.00^REFERENCE_RANGE|HH||W||technician^^TECHNICIAN|20211229173159||
评论记录(C)
评论记录应适用于除消息尾记录外的任何其他记录。它们可能是发送到仪器或从仪器发出的独立信息,与特定患者或测试程序无关。
请求信息记录(Q)
该记录应用于请求新测试、之前订购的测试以及之前可能报告的测试的信息。单个请求信息记录可以请求单个测试、多个测试或单个日期、一系列日期或一系列日期或两者的所有测试的人口统计信息或结果,以及单个患者、患者组、单个样本、样本组等的结果。
Q|1|^6020210815187^1^010193^1||ALL||||||||O
科学记录(S)
该记录应用于临床现场之间交换结果,以进行能力验证或方法开发。
制造商记录(M)
该记录类似于注释记录,可用于发送复杂结构,其中使用现有的记录类型不合适。此记录类型中的字段由制造商定义。
M|1|HISTOGRAM|WBC|TNCALONGRES|FLOATLE-stream/deflate:base64^Y2AAgXpnMMWwC0Q7ABEQNwBxgSMQQ+Ua7EFyAA==|FLOATLE-stream/deflate:base64^3dR9aNR1HAfwX/mQleksK7Wpy4daZTl11nwob958trxqpabVtGk+zFqlNk3ryIipISKaIiKnqEkMGVqxJOKICAkRCRGRiBEREiEjQkRCfP3m9/DwAfQ/6QsvPvf93Zfj7nufzzuK4vVRsrVEB0NtXYkoSod9etTFfSJ+RoYszUTlUVRAESUkSFFFLWnqWc8WMuylkSayHOIoJ2jmFC2cJRodRW3pQEcK6Eo3CimiH8UMoIRSyhhJggrGM5kUlUxjJlVUM48aallMHStI8zGf8Cn1rOEz1rGeDWzkc7awlW1sJ8NOdrGHvXxJA/toZD9f8Q1NHOQ7vifLD/zITxziZw5zhKP8wjGOc4KT/MpvNPM7f/Anp/iLvzlNC//wL2c4yzn+4zyRHriFW2lDW9rRntvowO3cwZ105C460ZkCunA399CVe7mP++lGd3rwAIX0pBe9KeJB+tCXfvTnIR6mmEd4lMcYwOM8wUBKGMRghlDKUJ7kKcoYxnBGMJKneYZRJChnNEkqGMNYxjGeCUxkEpN5lueYQorneYEXqeQlXmYq05jOK8xgJq/yGq9TxSxm8wbVzGEubzKP+SxgITUs4i3eppZ3eJf3WMwSlvI+dSxjOR+wgpV8mLyUCze64pxIhVkuDDNZEma0OMxlTZidhtDDUeiDgeHOp4fvuor6ZJReq25St7HD693qFzTQaN+UbM2v9Lfq1+oBdT+N4Ux8NmO/WV3H6vDZy8P9VIf/qCL0RGnombjv4j4+H2boSJjVrSEL6kJ2VIZ8KQuZFGdVnF0t4R6yeXnXFPIwPx9rQ24mQo7Gudqcl7E52ZC/uQzOyVwmnZfX6Wvsc8+ixMWMz+V8rubLvX81Vzt7Pet6z92M64o7+B+t+PfEPZUqvwA=
常见字段类型
通用测试ID
测试ID字段用于识别测试。所有测试ID部分必须由组件分隔符分隔,并且与位置相关。仪器制造商负责定义测试ID字段的数据内容。当在结果记录中使用测试ID时,测试ID字段中必须有足够的信息来确定测试结果与测试的关系。
日期和时间
在所有情况下,应按照ANSI X3的要求,以YYYYMMDD格式记录日期。1989年12月1日的代表为19891201。传输时间时,时间应表示为HHMMS,并应与ANSI X3规定的日期相联系。日期和时间应指定为最多14个字符的字符串:YYYYMMDDHHMMSS。
O|1|AUTO_SID0004||^^^DIF|R|20211229173159|||||||||BLOOD||||||||||F|||||
常见的记录
记录中每个位置的字段都有特定的含义,这里简单介绍两个
消息头记录
消息头的记录类型为 H
记录类型|分隔符定义|消息ID|访问密码|发送者信息|发送者地址|保留字段|发送人者电话号码|发送者特征|接收器ID|注释|处理ID|版本号|消息的日期时间
H|\^&|||H550^002YAXH02921^1.2.1.4|||||||D|LIS2-A2|20211216155539
患者信息记录
患者信息的记录类型为 P
记录类型|序列号|机构分配的患者ID|实验室指定的患者ID|患者ID号|患者姓名|母亲的婚前姓|出生日期|性别|种族|地址|保留字段|电话|主治医师ID|保留字段|保留字段|身高|体重|诊断结果|用药|饮食|保留字段|保留字段|入院和出院日期|入院状态|病房床位|…..|宗教|婚姻|隔离状态|…..
P|1||2||BOND^JAMES||19770526|M|||||
消息的结构
库
Essy.LIS(.NET)
SwatInc.Lis(.NET)
using Essy.LIS.Connection;
using Essy.LIS.LIS02A2;
using System.IO.Ports;
// TCP/IP
var someIP = "192.168.1.11";
UInt16 somePort = 1111;
Lis01A02TCPConnection lowLevelConnection = new(someIP, somePort);
Lis01A2Connection lisConnection = new(lowLevelConnection);
// Serial Port
SerialPort sp = new("COM1");
// Config Serial port to your needs
Lis01A02RS232Connection lowLevelConnection = new (sp);
Lis01A2Connection lisConnection = new(lowLevelConnection);
// Create LIS parser object and connect:
LISParser LISParser = new(lisConnection);
//Send data progress will trigger this event
LISParser.OnSendProgress += (o, e) => { };
//incoming LIS frames will trigger this event
LISParser.OnReceivedRecord += (o, e) => { };
LISParser.Connection.Connect();