bug fix: redundant data in labels (diagnosis, procedures, insurrance, dates, ...)

This commit is contained in:
Steve Nyemba 2020-04-20 14:54:37 -05:00
parent e485477361
commit 9ac06a2705
2 changed files with 32 additions and 13 deletions

View File

@ -30,7 +30,7 @@ Usage :
""" """
from params import SYS_ARGS from params import SYS_ARGS
from transport import factory from transport import factory
from parser import * from parser import get_content
import os import os
import json import json
import sys import sys

View File

@ -168,11 +168,12 @@ def get_content(filename,config,section=None) :
section = section if section else config['SECTION'] section = section if section else config['SECTION']
x12_file = open(filename).read().split('\n') x12_file = open(filename).read().split('\n')
if len(x12_file) == 1 : if len(x12_file) == 1 :
x12_file = x12_file[0].split('~') x12_file = x12_file[0].split('~')
partitions = '\n'.join(x12_file).split(section+'*')
locations = get_locations(x12_file,section) locations = get_locations(x12_file,section)
claims = [] claims = []
@ -191,12 +192,18 @@ def get_content(filename,config,section=None) :
N = len(locations) N = len(locations)
for index in range(0,N-1): # for index in range(0,N-1):
beg = locations[index] # beg = locations[index]
end = locations[index+1] # end = locations[index+1]
claim = {} # claim = {}
for row in x12_file[beg:end] : for segment in partitions :
row = split(row)
claim = {}
# for row in x12_file[beg:end] :
segment = segment.replace('\n','').split('~')
for row in segment :
row = split(row)
_info = get_config(config,row) _info = get_config(config,row)
if _info : if _info :
try: try:
@ -205,11 +212,14 @@ def get_content(filename,config,section=None) :
# pointer = eval(_info['parser']) # pointer = eval(_info['parser'])
# print (pointer(row)) # print (pointer(row))
tmp = get_map(row,_info,VERSION) tmp = get_map(row,_info,VERSION)
except Exception as e: except Exception as e:
if sys.version_info[0] > 2 : if sys.version_info[0] > 2 :
logs.append ({"version":VERSION,"filename":filename,"msg":e.args[0],"X12":x12_file[beg:end]}) # logs.append ({"version":VERSION,"filename":filename,"msg":e.args[0],"X12":x12_file[beg:end]})
logs.append ({"version":VERSION,"filename":filename,"msg":e.args[0],"X12":row})
else: else:
logs.append ({"version":VERSION,"filename":filename,"msg":e.message,"X12":x12_file[beg:end]}) # logs.append ({"version":VERSION,"filename":filename,"msg":e.message,"X12":x12_file[beg:end]})
logs.append ({"version":VERSION,"filename":filename,"msg":e.message,"X12":row})
claim = {} claim = {}
break break
@ -231,6 +241,7 @@ def get_content(filename,config,section=None) :
if type(tmp) == list : if type(tmp) == list :
claim[label] = tmp if label not in claim else claim[label] + tmp claim[label] = tmp if label not in claim else claim[label] + tmp
else: else:
if label not in claim: if label not in claim:
claim[label] = [tmp] claim[label] = [tmp]
@ -240,14 +251,22 @@ def get_content(filename,config,section=None) :
claim[label][index] = dict(claim[label][index],**tmp) claim[label][index] = dict(claim[label][index],**tmp)
else: else:
claim[label].append(tmp) claim[label].append(tmp)
if len(claim[label]) > 0 :
labels = []
for item in claim[label] :
if item not in labels :
labels.append(item)
claim[label] = labels
# claim[label] = list( set(claim[label])) #-- removing redundancies
if claim and 'claim_id' in claim: if claim and 'claim_id' in claim:
claim = dict(claim,**_default_value) claim = dict(claim,**_default_value)
claim['name'] = filename[:-5].split(os.sep)[-1] #.replace(ROOT,'') claim['name'] = filename.split(os.sep)[-1] #.replace(ROOT,'')
claim['index'] = index claim['index'] = len(claims) if len(claims) > 0 else 0
claims.append(claim) claims.append(claim)
return claims,logs return claims,logs