Ver código fonte

bug fix: including _id as unique identifier for a claim

Steve Nyemba 4 anos atrás
pai
commit
96c3dbe5a8
3 arquivos alterados com 11 adições e 6 exclusões
  1. 4 3
      healthcareio/export/export.py
  2. 6 2
      healthcareio/export/workers.py
  3. 1 1
      setup.py

+ 4 - 3
healthcareio/export/export.py

@@ -108,6 +108,7 @@ def meta(config) :
 def create (**_args) :
     skip = [] if 'skip' not in _args else _args['skip']
     fields =  ([_args['key']] if 'key' in _args else []) + _args['fields']
+    fields = ['_id'] + fields
     table = _args['table'] 
     sql = ['CREATE TABLE :table ',"(",",\n".join(["\t".join(["\t",name,"VARCHAR(125)"]) for name in fields]),")"]
     return " ".join(sql)
@@ -145,7 +146,7 @@ def init (**_args) :
         
         _name = "".join(["$",field_name])
         project[field_name] = {"$ifNull":[_name,""]}
-    project["_id"] = 0
+    project["_id"] = 1
     project = {"$project":project}
     
     r = [{"table":TABLE_NAME,"mongo":{"aggregate":TABLE_NAME,"pipeline":[project],"cursor":{},"allowDiskUse":True},"sql":create(table=TABLE_NAME,fields=_info['main'])}] 
@@ -154,12 +155,12 @@ def init (**_args) :
         # NOTE: Adding _index to the fields
         fields = _info['rel'][table] +["_index"]
         
-        project = {"_id":0,"claim_id":1,"_index":1} #dict.fromkeys(["_id","claim_id"]+fields,[ ".".join([table,field_name]) for field_name in fields])
+        project = {"_id":1,"claim_id":1,"_index":1} #dict.fromkeys(["_id","claim_id"]+fields,[ ".".join([table,field_name]) for field_name in fields])
         for field_name in fields :
             # project[field_name] = "$"+".".join([table,field_name])
             _name = "$"+".".join([table,field_name])
             project[field_name] = {"$ifNull":[_name,""]} #{"$cond":[{"$eq":[_name,None]},"",_name]}
-        project["_id"] = 0
+        project["_id"] = 1
         pipeline = [{"$unwind":"$"+table},{"$project":project}]
         r += [{"table":table,"mongo":{"aggregate":TABLE_NAME,"cursor":{},"pipeline":pipeline,"allowDiskUse":True},"sql":create(table=table,key='claim_id',fields=fields)}]
     

+ 6 - 2
healthcareio/export/workers.py

@@ -183,8 +183,12 @@ class Writer(Worker):
                 # print (['segment # ',index,len(rows)])
                 self.log(**{"context":self.name(),"segment":(index+1),"args":{"rows":len(rows),"table":table}})                
                 if len(rows) :
-                    
-                    writer.write(list(rows))
+                    #
+                    # @TODO: Upgrade to mongodb 4.0+ and remove the line below 
+                    # Upon upgrade use the operator "$toString" in export.init function
+                    #
+                    rows = [dict(item,**{"_id":str(item["_id"])}) for item in rows]
+                    writer.write(rows)
                 index += 1
                 # for _e in rows :
                     # writer.write(_e) 

+ 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.5.6",
+    "name":"healthcareio","version":"1.5.8",
     "author":"Vanderbilt University Medical Center",
     "author_email":"steve.l.nyemba@vumc.org",
     "include_package_data":True,