[英]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.