简体   繁体   English

使用hl7apy解析HL7时出错

[英]Error in parsing HL7 using hl7apy

i am using hl7apy to parse hl7 files in python and i am following this link. 我正在使用hl7apy来解析python中的hl7文件,我正在关注链接。 When i am using the sample.hl7 i am getting the desired result but when i am using my own hl7 file i am getting below error 当我使用sample.hl7时,我得到了期望的结果,但是当我使用自己的hl7文件时,我得到了以下错误

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "hl7apy/parser.py", line 82, in parse_message
    m.structure_by_name)
  File "hl7apy/parser.py", line 144, in parse_segments
    reference))
  File "hl7apy/parser.py", line 189, in parse_segment
    reference=reference)
  File "hl7apy/core.py", line 1564, in __init__
    validation_level, traversal_parent)
  File "hl7apy/core.py", line 632, in __init__
    self._find_structure(reference)
  File "hl7apy/core.py", line 808, in _find_structure
    structure = ElementFinder.get_structure(self, reference)
  File "hl7apy/core.py", line 524, in get_structure
    raise InvalidName(element.classname, element.name)
  hl7apy.exceptions.InvalidName: Invalid name for Segment: 

I dont understand what am i doing wrong. 我不明白我在做什么错。

EDIT : This is the sample that i am using. 编辑:这是我正在使用的示例。

MSH|^~\&|SQ|BIN|SMS|BIN|20121009151949||ORU^R01|120330003918|P|2.2
PID|1|K940462|T19022||TEIENT|JYSHEE|1957009|F|MR^^RM^MR^DR^MD^3216|7|0371 HOES LANE^0371 HOES LANE^NORTH CENTRE^FL^0854^INDIA^P^98|^UA^|(21)2-921|203960|ENG^ENGLISH^HL7096^ENG^ENGLISH^9CLAN|U|^HINU^|^^^T1M|05-1-900||||NW HAVEN||||PAS|NOTH CETRE|
PV1|1|I|BDE^BDE||||960^FALK,HENRY^^^MD|||MED|||||||960^FALK,HENRY^^^MD||22599|||||||||||||||||||||||||20160613102300||||
ORC|RE|10112|1705||D||^^^20103102300^216061102300||201208100924|PS||10084^BRUCE^PALTHROW|||201606310230|
OBR|1|10112|1705|1786-6^HEMOGOI A1C|||201606131300|201606131300||SGR||||201208056||1029^BONE,EAN|3-266-91|||||201280058||CH|F||R^^^2012070957|||||104^VRNEY,SCT|
OBX|1|NM|1856-6^LOINC^LN^HEMOGOI A1C^L||5.9|%|4.2-6.3||||F|||20160613|A^^L

Code : This is the code that i am using for parsing my hl7 files and same code i used while parsing the sample hl7 file mentioned in above link. 代码:这是我用来解析我的hl7文件的代码,也是我解析上面链接中提到的示例hl7文件时使用的代码。

from hl7apy import parser
from hl7apy.exceptions import UnsupportedVersion

hl7 = open('ICD9.hl7', 'r').read()

try:
    m = parser.parse_message(hl7)
except UnsupportedVersion:
    m = parser.parse_message(hl7.replace("n", "r"))

You should show a message from your file here for a definitiv answer. 您应该在此处显示文件中的消息以获取definitiv答案。

But the most probable reason is, that the content of your file does not follow the HL7 rules. 但是,最可能的原因是文件的内容不符合HL7规则。 Are you sure that you use the correct segment delimiter (ASCII 13 or HEX 0D) ? 您确定使用正确的段定界符(ASCII 13或HEX 0D)吗? Do you use non standard segment names? 您是否使用非标准细分受众群名称?

Just a check with Free Online HL7 Messages Validation gives these 只需通过免费在线HL7消息验证进行检查即可获得这些信息

ID  ELEMENT_TYPE POSITION   LINE_NO VALIDATION ERROR
1   Field        MSH.9.3    1       Component required
2   Field        PID.7      2       Invalid date time format : '1957009'
3   Component    PID.9.7    2       Invalid table entry value : '3216' for table Name Type
4   Component    PID.9.7    2       Value '3216' length (4) exceed limit (1)
5   Component    PID.11.6   2       Invalid table entry value : 'INDIA' for table Country Code
6   Component    PID.11.6   2       Value 'INDIA' length (5) exceed limit (3)
7   Field        PID.12     2       Field should not contain component(s)
8   Component    PID.18.1   2       Field required but has no value.
9   Field        ORC.5      4       Invalid table entry value : 'D' for table Order status
10  Component    ORC.7.4    4       Invalid date time format : '20103102300'
11  Component    ORC.7.5    4       Invalid date time format : '216061102300'
12  Field        ORC.15     4       Invalid date time format : '201606310230'
13  Field        OBR.14     5       Invalid date time format : '201208056'
14  Field        OBR.22     5       Invalid date time format : '201280058'
15  SubComponent OBR.27.1.1 5       Invalid numeric format : 'R'
16  Component    OBR.27.4   5       Invalid date time format : '2012070957'
17  Component    OBR.32.2   5       Invalid date time format : 'VRNEY,SCT'

But this does not explain your error message. 但这不能解释您的错误信息。 Are you sure, that you read the message file and parse the content? 确定要阅读消息文件并解析内容吗?

You have an error in your code. 您的代码中有错误。 It should be 它应该是

hl7.replace("\n", "\r")

if you want to replace the wrong segment delimiter. 如果要替换错误的段定界符。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM