From f27e5773fdc2a7de77e7259488e292421c1653d6 Mon Sep 17 00:00:00 2001 From: Steve Nyemba Date: Fri, 31 Jan 2020 21:54:51 -0600 Subject: [PATCH] bug fix with list of diagnosis codes --- edi/parser.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/edi/parser.py b/edi/parser.py index b64ad1e..caa176d 100644 --- a/edi/parser.py +++ b/edi/parser.py @@ -44,6 +44,7 @@ def get_config(config,row): This function will return the meaningfull parts of the configuration for a given item """ _row = list(row) if type(row[0]) == str else list(row[0]) + _info = config[_row[0]] if _row[0] in config else {} key = None if '@ref' in _info: @@ -60,6 +61,7 @@ def get_config(config,row): if _row[0] in config['SIMILAR'] : key = config['SIMILAR'][_row[0]] _info = config[key] + return _info def format_date(value) : year = value[:4] @@ -73,7 +75,9 @@ def format_proc(value): return {"procedure_type":value.split(':')[0].strip(),"procedure_code":value.split(':')[1].strip()} else: return value +def format_diag(value): + return [ {"code":item[2], "type":item[1]} for item in value if len(item) > 1] def get_map(row,config,version): label = config['label'] if 'label' in config else None @@ -92,6 +96,7 @@ def get_map(row,config,version): if index < len(row) : value = row[index] + if 'cast' in config and key in config['cast'] and value.strip() != '' : value = eval(config['cast'][key])(value) @@ -106,8 +111,11 @@ def get_map(row,config,version): # # we are dealing with a complex object object_value = [] + for row_item in row : - object_value.append( list(get_map(row_item,config,version))) + value = get_map(row_item,config,version) + object_value.append(value) + # object_value.append( list(get_map(row_item,config,version))) # object_value = {label:object_value} return object_value @@ -129,6 +137,7 @@ def get_content(filename,config,section=None) : :filename location of the file """ section = section if section else config['SECTION'] + x12_file = open(filename).read().split('\n') if len(x12_file) == 1 : @@ -144,8 +153,10 @@ def get_content(filename,config,section=None) : VERSION = x12_file[1].split('*')[-1].replace('~','') row = split(x12_file[3]) - _info = get_config(config,row) - _default_value = get_map(row,_info,VERSION) if _info else None + _info = get_config(config,row) + + _default_value = get_map(row,_info,VERSION) if _info else {} + N = len(locations) for index in range(0,N-1): @@ -158,6 +169,9 @@ def get_content(filename,config,section=None) : if _info : try: # tmp = get_map(row,_info,VERSION) + # if 'parser' in _info : + # pointer = eval(_info['parser']) + # print (pointer(row)) tmp = get_map(row,_info,VERSION) except Exception as e: if sys.verion_info[0] > 2 :