clns-eTarget_ingest/setSubtype.py (42 lines of code) (raw):

# # This file is part of the eTarget ingest distribution (https://github.com/digital-ECMT/eTarget_ingest). # Copyright (C) 2017 - 2021 digital ECMT # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # from openpyxl import Workbook from openpyxl import load_workbook import sys import pymssql class SetSubtype: def __init__(self, remotepassword, filename="SubtypesForPatients.xlsx", remotehostname="uomdevsqlserveret.database.windows.net", remoteusername="uomadmin@uomdevsqlserveret.database.windows.net", remotedbname="uom_dev_etarget_db"): self.excelFile=filename self.host=remotehostname self.user=remoteusername self.pw=remotepassword self.db=remotedbname self.conn = pymssql.connect(self.host,self.user, self.pw, self.db, autocommit=False) self.wb = load_workbook(self.excelFile) print(self.wb.sheetnames) self.ws=self.wb["Sheet1"] def process(self): for row in self.ws.iter_rows(min_row=2): tarid=row[0].value category=row[1].value subtype=row[2].value addInfo=row[3].value print(str(tarid)+ "; " + str(category)+"; "+ str(subtype)+"; "+str(addInfo)) self.checkAddSubtype(str(subtype)) self.updateDB(str(tarid), str(category), str(subtype), str(addInfo)) self.conn.commit() def updateDB(self, tarid,category,subtype,addInfo): update="UPDATE CONDITION_OCCURRENCE SET condition_concept_id=(SELECT TOP 1 condition_concept_id FROM CONCEPT_CONDITION_SUBTYPE WHERE subtype_name = '"+subtype+"'), condition_subtype_concept_id=(SELECT TOP 1 subtype_concept_id FROM CONCEPT_CONDITION_SUBTYPE WHERE subtype_name = '"+subtype+"'), additional_details='"+addInfo+"'WHERE person_id=(SELECT person_id from PERSON where target_id='"+tarid+"')" cursor=self.conn.cursor() cursor.execute(update) def checkAddSubtype(self, subtype): select="IF NOT EXISTS (SELECT * FROM CONCEPT_CONDITION_SUBTYPE WHERE subtype_name = '"+subtype+"') INSERT INTO CONCEPT_CONDITION_SUBTYPE (subtype_name, condition_concept_id) values ('"+subtype+"',(select top 1 condition_concept_id from CONCEPT_CONDITION where condition_name='Other'))" cursor=self.conn.cursor() cursor.execute(select) if __name__ == '__main__': print(sys.argv[1:]) print(*sys.argv[1:]) classinst = SetSubtype(*sys.argv[1:]) classinst.process()