Skip to content

Commit 28d94f1

Browse files
author
sreeder
committed
add functionality to save annotations to the db
1 parent 23d3351 commit 28d94f1

2 files changed

Lines changed: 46 additions & 11 deletions

File tree

odmtools/odmdata/memory_database.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,11 @@ def chunking(self, data):
190190
def updateFlag(self, ids, value):
191191

192192

193-
flags = pd.DataFrame(columns = ['AnnotationID', 'DateTime', 'ResultID', 'ValueID'])
194-
flags["DateTime"] = ids
195-
flags["AnnotationID"] = value
196-
flags["ResultID"] = self.series.ResultID
197-
flags["ValueID"] = None
193+
flags = pd.DataFrame(columns = ['annotationid', 'valuedatetime', 'resultid', 'valueid'])
194+
flags["valuedatetime"] = ids
195+
flags["annotationid"] = value
196+
flags["resultid"] = self.series.ResultID
197+
flags["valueid"] = None
198198

199199

200200
#what if the column already exists

odmtools/odmservices/edit_service.py

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -678,15 +678,50 @@ def overlapcalc(self, result, values, overwrite):
678678

679679
def add_annotations(self, annolist):
680680
#match up with existing values and get value id
681-
#get df with only ValueID and AnnotationID
682-
#remove any duplicates
683-
#save df to db
681+
684682
print("ANNOTATIONS ARE ATTEMPTED TO ADD")
685-
query = "SELECT resultid, datetime FROM TSRV"
686-
pd.read_sql(query, self._session_factory.engine)
683+
engine = self.memDB.series_service._session_factory.engine
684+
685+
q =self.memDB.series_service._session.query(TimeSeriesResultValues) \
686+
.filter(TimeSeriesResultValues.ResultID == int(min(annolist["resultid"])))
687+
688+
query = q.statement.compile(dialect=engine.dialect)
689+
# data = pd.read_sql_query(sql=query, con=self._session_factory.engine,
690+
# params=query.params)
691+
# query = "SELECT ValueID, ResultID, ValueDateTime FROM TimeSeriesResultValues Where ResultID="+annolist["ResultID"][0]
692+
693+
vals = pd.read_sql_query(sql=query, con=engine,params=query.params)
694+
# remove any duplicates
695+
annolist.drop_duplicates(["resultid", "annotationid", "valuedatetime"], keep= 'last', inplace = True)
696+
newdf = pd.merge(annolist, vals, how='left', on= ["resultid", "valuedatetime"], indicator = True)
697+
print "after merge"
698+
print newdf
699+
# newdf = newdf(newdf['_merge'], axis = 1, inplace = True)
700+
# print "after filter"
701+
# print newdf
702+
703+
#get only AnnotationID and ValueID
704+
print "after column selection"
705+
mynewdf= newdf[["valueid_y","annotationid"]]
706+
print "rename columns"
707+
mynewdf.columns = ["ValueID", "AnnotationID"]
708+
print newdf
709+
710+
711+
# save df to db
712+
print "save to db"
713+
self.memDB.series_service.add_annotations(mynewdf)
714+
print "done"
715+
716+
717+
# df.drop_duplicates(dup_cols, keep='last', inplace=True)
718+
# newdf = pd.merge(df, pd.read_sql(query, engine), how='left', on=dup_cols, indicator=True)
719+
# newdf = newdf[newdf['_merge'] == 'left_only']
720+
# newdf.drop(['_merge'], axis=1, inplace=True)
721+
# return df[df['valuedatetime'].isin(newdf['valuedatetime'])]
722+
687723

688724

689-
pass
690725

691726

692727
#

0 commit comments

Comments
 (0)