我正在使用C#和ASP.NET开发医疗应用程序,在此应用程序中,我需要为患者血液结果制作一个模块。在该模块中,我需要导入HL7然后解析它以获得患者的血液结果,并且我还需要突出该血液测试的正常值。我不知道如何做到这一点我在谷歌搜索但不幸的是我没有得到任何与我的兴趣相关的东西。我得到了一些像NHAPI一样的dll我得到了它的DLL文件,但我不知道如何使用它。任何人都可以给我一个示例代码的链接,我应该如何启动这个模块。
我的实际要求是:
答案 0 :(得分:3)
我希望您在HL7解析器上取得了一些进展。
您可能想要访问的第一站是HL7 website。它包含可能对您有所帮助的工具和资源以及其他链接。
我发现以下链接非常有助于弄清楚应从v2.x消息中提取哪些信息:
http://amisha.pragmaticdata.com/~gunther/oldhtml/tables.html
如果您查看此网页顶部的上一个链接,您还会注意到您可以选择“消息”,“细分”或“复合材料”。每个页面都会为您提供非常有用但一般的信息。
另外,我做了一些谷歌搜索,发现以下网站将向您展示v2和v3消息的示例:
http://www.ringholm.de/docs/04300_en.htm
如果您要使用v3,您很可能希望尝试找到一个可以在Visual Studio中使用的xml架构,以生成一些直接绑定到您需要发送/接收的xml的类,这将是使开发更容易。我在Google上搜索过,发现这个网站包含的模式可以用来为你可能需要或可能不需要的大量邮件生成类:
http://schemas.liquid-technologies.com/HL7/hl7_24_xsd/
我无法向您详细说明您需要哪些消息,因为我从未编写过处理您正在寻找的患者信息类型的HL7应用程序,但您应该遵循这些标准指针:
MSH段告诉您分隔关键信息的分隔符(分隔符在应用程序之间是通用的,但总是相同,因此知道分隔符到达此消息段的顺序将节省你后来头疼)它还包括消息号,消息系统名称,并且可能包含您与另一个HL7系统通信所需的连接信息。它还为您提供了消息类型,如果您计划在数据库中保留数据,这非常重要。如果您需要添加,更新或删除数据,消息类型将通知您。
PID段为您提供患者信息,这有助于您唯一地识别您需要存储的信息。
所有细分都会在之前提供的amisha.pragmaticdata.com链接中详细列出
我希望这些信息有所帮助。我已经给了很多,如果你有具体的问题,我很乐意回答这些问题。
问候。
答案 1 :(得分:3)
要向实验室发送HL7请求,您必须向Lab发送文件,因此首先需要创建一个文件。
String fileName = "testOrder.txt"
StreamWriter sr = new StreamWriter(fileName)
现在逐行添加行,第一行必须是MSH(消息标题标记),如: MSH | ^〜\&安培; | LCS | LCA | LIS | TEST9999 | 199807311532 || ORU ^ R01 | 3629 | P | 2.2
所以你的代码行将是:
sr.WriteLine("MSH|^~\&|" + _YOURAPPLICATIONNAME + "|" + _YOURHOSPITAL + "|" + _RECEIVINGAPPLICATIONNAME + "|" + _RECEIVINGLAB + "|" + _DATETIME + "||ORU^R01|" + _IDOFORDERINYOURDATABASE + "|P|2.2");
接下来,您需要在文件中添加PID行,如: PID | 2 | 2161348462 | 20809880170 | 1614614 | 20809880170 ^ TESTPAT || 19760924 | M ||| ^^^^ 00000-0000 ||||||| 86427531 ^^^ 03 | SSN#HERE
所以你需要告诉你的流写入在文件的上一行写,但显然也改变了这一行中的值,就像你对MSH段所做的那样,可以在http://www.corepointhealth.com/resource-center/hl7-resources/hl7-pid-segment找到PID规范
此后你需要在文件中添加ORC和OBR行: ORC | NW | 8642753100012 ^ LIS | 20809880170 ^ LCS |||||| 199807.27亿||| HAVILAND OBR | 1 | 8642753100012 ^ LIS | 20809880170 ^ LCS | 008342 ^ UPPER RESPIRATORY 文化^ L ||| 19980727175800 |||||| SS#634748641 CH14885 SRC:THROA SRC:PENI | |||||| 199807.27亿|| 20809880170 || 19980730041800 BN | F
也替换这些行中的所需值。 这将使您的测试请求文件完整。如果医生给了一些额外的评论,你可以添加另一行NTE标签,如: NTE | 1 | L | MORAXELLA(BRANHAMELLA)CATARRHALIS
当您的文件完成后,现在可以将其发送到实验室,文件中的重要内容是MSH标记中的ORU ^ R01,它告诉实验室它是一个测试请求。 实验室稍后会向您发送一个HL7文件,其中包含相同的MSH,PID,ORC和OBR标记,以及将具有测试结果的OBX标记。 在MSH标签中,您发送了数据库的订单ID,因此当实验室将其发回时,您可以检查该文件的订单。
您可以逐行读取文件,将每行的字符串拆分为“|”并取出所需数据并将其转储到数据库中。
我希望它会让你更好地了解你必须做什么以及如何做。
答案 2 :(得分:1)
我在临床实验室的IT部门工作 - 也许我可以提供帮助。大多数实验室使用HL7版本2.x中的HL7 ORU ^ R01记录和大多数EMR以版本2.x格式发送电子订单(HL7 ORM ^ O01)来报告结果。 您构建的解析器应设置为处理v2.x管道分隔结果消息(如果您的目的是读取,记录和报告患者结果)。这里有一个关于你需要从文件中取出的内容的入门读物:
HL7文件通常每个文件只包含一个加入(实验室代表患者遭遇) - 这只是一组患者结果。每个文件包含HL7“段”(每个段通常由文件中的CR / LF分隔),并由三个字母的助记符表示。每个段的字段由管道分隔符“|”分隔字符,如果字段有子分段,则它们由插入符分隔符“^”
分隔对于患者信息,您将查看PID段(患者 标识符):PID段5(PID.5)将拥有患者 姓氏^名字^中间初始PID段7(PID.7)将具有 患者的出生日期(通常为YYYYMMDD格式)PID段8 (PID.8)将患者性别(M或F)PID段11(PID.11) 将患者的地址:Add1 ^ Add2 ^ City ^ State ^ Zip
对于结果,您必须解析OBR和OBX段 OBR是来自实验室OBX的医生订购的 该订单的相应结果(有时一对一,有时 一对多)您的重点应放在OBX段:OBX段2 (OBX.2)通常会指定此测试的结果类型 由“NM”(数字)“TX”(文本)或“ST”(字符串)表示 - 保留 请注意,并非所有实验室测试结果都是严格的数字 - 远非 它。 OBX段3(OBX.3)将具有实验室标识符 测试 - 它可能是内部代码编号和描述,也可能是 LOINC(见www.loinc.org),这是一个通用的标准数字系统 用于实验室测试 - 取决于实验室。 OBX段5(OBX.5) 将具有观察值(结果)OBX段6(OBX.6) 测试OBX段7(OBX.7)的测量单位将具有 tst OBX段8(OBX.8)的参考范围将具有 异常标志指示器。这是责任 实验室(不是你的解析器)发送“标志”,如果结果注明 这个测试是不正常的。标准是:NULL或“N”表示正常,“H” 异常高,“HH”为临界高,“L”为异常低和 “LL”表示严重低