2016-09-29 39 views
0

解析HL7我使用hl7apy解析在python HL7文件和我下面this鏈接。當我使用sample.hl7我得到想要的結果,但是當我用我自己的HL7文件我收到以下錯誤錯誤使用hl7apy

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: 

我不明白我在做什麼錯。

編輯: 這是我使用的示例。

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 

代碼:這是我使用我的解析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")) 

回答

3

您應該在此處顯示來自文件的消息以獲取definitiv答案。

但最可能的原因是,您的文件的內容不符合HL7規則。你確定你使用了正確的段分隔符(ASCII 13或HEX 0D)嗎?你使用非標準段名稱嗎?

只是Free Online HL7 Messages Validation支票給這些

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' 

但是這並不能說明你的錯誤消息。你確定,你閱讀了消息文件並解析了內容嗎?

您的代碼有錯誤。它應該是

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

如果您要替換錯誤的段分隔符。

+0

我已經更新了我使用的hl7的答案。請檢查 – animal

+0

我在我的問題中添加了我的代碼。請檢查 – animal

+0

然後我建議使用二進制編輯器檢查您的HL7文件並與示例文件進行比較。你檢查了段分隔符嗎? – sqlab