bug fix: including _id as unique identifier for a claim

master
Steve L. Nyemba 4 years ago
parent 0a2803000a
commit 96c3dbe5a8

@ -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)}]

@ -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)

@ -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,

Loading…
Cancel
Save