Browse Source

bug fix ...

Steve Nyemba 4 years ago
parent
commit
0bbcff95dc
2 changed files with 26 additions and 14 deletions
  1. 25 13
      healthcareio/x12/__init__.py
  2. 1 1
      setup.py

+ 25 - 13
healthcareio/x12/__init__.py

@@ -376,15 +376,20 @@ class Parser (Process):
                         label = _info['label']
 
                         if type(tmp) == list :
-                            
+                           
                             value[label] = tmp if label not in value else value[label] + tmp
                             
                         else:
-                            if label not in value:   
+                            # if 'DTM' in row :
+                            #     print ([label,tmp,label in value])
+                            if label not in value :                                
+                                value[label] = []
+                            value[label].append(tmp)
+                            # if label not in value:   
                                 
-                                value[label] = [tmp]
-                            else:
-                                value[label].append(tmp)    
+                            #     value[label] = [tmp]
+                            # else:
+                            #     value[label].append(tmp)    
                                         
                         tmp['_index'] = len(value[label]) -1 
                     elif 'field' in _info :
@@ -394,7 +399,7 @@ class Parser (Process):
                         value = jsonmerge.merge(value,{name:tmp})
                       
                     else:
-                        
+                       
                         value = dict(value,**tmp)
                     
                     pass
@@ -490,7 +495,8 @@ class Parser (Process):
                     
                     if _claim :
                         _claim['index'] = index #len(claims)
-                        claims.append(dict(DEFAULT_VALUE,**_claim))
+                        # claims.append(dict(DEFAULT_VALUE,**_claim))
+                        claims.append( jsonmerge.merge(DEFAULT_VALUE,_claim))
                     segment = [row]
                     index += 1
                     
@@ -503,13 +509,19 @@ class Parser (Process):
                 
                 claim = self.apply(segment,_code)
                 if claim :
-                    
                     claim['index'] = len(claims)
-                    # for _row_ in _toprows :
-                       
-                    #     claim = jsonmerge.merge(claim,self.apply([_row_],_code))
-                    claim = jsonmerge.merge(claim,self.apply(_toprows,_code))
-                    claims.append(dict(DEFAULT_VALUE,**claim))
+                    schema = [key for key in claim.keys() if type(claim[key]) == list]
+                    if schema :
+                        schema  = {"properties":dict.fromkeys(schema,{"mergeStrategy":"append"})}
+                        print (schema)
+                    else:
+                        schema = {}
+                    merger = jsonmerge.Merger(schema)
+                    top_row_claim = self.apply(_toprows,_code)
+                    
+                    claim = merger.merge(claim,self.apply(_toprows,_code))
+                    # claims.append(dict(DEFAULT_VALUE,**claim))
+                    claims.append(merger.merge(DEFAULT_VALUE,claim))
             if type(file) != list :
                 file.close()
 

+ 1 - 1
setup.py

@@ -8,7 +8,7 @@ import sys
 def read(fname):
     return open(os.path.join(os.path.dirname(__file__), fname)).read() 
 args = {
-    "name":"healthcareio","version":"1.6.2.1",
+    "name":"healthcareio","version":"1.6.2.2",
     "author":"Vanderbilt University Medical Center",
     "author_email":"steve.l.nyemba@vumc.org",
     "include_package_data":True,