diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..3746130 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,9 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +.env diff --git a/.idea/SyncAllEMRs.iml b/.idea/SyncAllEMRs.iml new file mode 100644 index 0000000..50e3ab8 --- /dev/null +++ b/.idea/SyncAllEMRs.iml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..c72e4e8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b57b13c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app.py b/app.py new file mode 100644 index 0000000..fb68c4c --- /dev/null +++ b/app.py @@ -0,0 +1,80 @@ +from flask import Flask, request,Blueprint +from flask_sqlalchemy import SQLAlchemy +from sqlalchemy.sql import func +import os +from os import environ + +from models import * + +from dotenv import load_dotenv + + + +# Load environment variables from .env file +load_dotenv() + +app = Flask(__name__) + +app.secret_key = os.getenv("SECRET_KEY") + +basedir = os.path.abspath(os.path.dirname(__file__)) +app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://'+os.getenv('DB_USERNAME')+':'+os.getenv('DB_PASSWORD')+'@'+os.getenv('DB_Server')+'/'+os.getenv('DB_NAME')+'?driver=ODBC+Driver+17+for+SQL+Server' +# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +db = SQLAlchemy(app) + + +@app.route('/sync/facility' ,methods = ['POST', 'GET']) +def sync_facility(): # put application's code here + content = request.json + # print(content) + db.session.query(All_EMRSites).filter_by(MFL_Code=str(content["mfl_code"])).delete() + db.session.commit() + + user = All_EMRSites(MFL_Code= str(content["mfl_code"]), Facility_Name= content["FacilityName"], County= content["County"], + SubCounty= content["SubCounty"], Owner= str(content["Owner"]), Latitude= str(content["lat"]), + Longitude= str(content["lon"]), SDP= content["SDP"], SDP_Agency= content["Agency"], + Implementation= content["implementation"], EMR= content["EMR"], EMR_Status= content["EMR Status"], + HTS_Use= content["HTS Use"], HTS_Deployment= content["HTS Deployment"], HTS_Status= content["HTS Status"], + IL_Status= content["IL Status"], Registration_IE= content["registration ie"], Phamarmacy_IE= content["pharmacy ie"], + mlab= content["Mlab"], Ushauri= content["Ushauri"],Nishauri= content["Nishauri"], + Appointment_Management_IE= "", OVC= content["ovc"], OTZ= content["otz"], + PrEP= content["prep"], three_PM= content["three_PM"], AIR= content["air"], KP= content["kp"], MCH= content["mnch"], + TB= content["tb"], Lab_Manifest= content["lab_manifest"], Comments= "", Project= "KenyaHMIS III") + db.session.add(user) + db.session.commit() + + emrsdata = db.session.query(All_EMRSites).all() + print(f'============ Facility Synced {str(content["mfl_code"])} {content["FacilityName"]} ============ ') + return f'============ success ============ ' + + +@app.route('/sync/full/list/facilities/emrs' ,methods = ['POST', 'GET']) +def sync_facilities_emrs(): # put application's code here + contents = request.json + #clear table first + db.session.query(All_EMRSites).delete() + db.session.commit() + + for content in contents: + user = All_EMRSites(MFL_Code= str(content["mfl_code"]), Facility_Name= content["FacilityName"], County= content["County"], + SubCounty= content["SubCounty"], Owner= str(content["Owner"]), Latitude= str(content["lat"]), + Longitude= str(content["lon"]), SDP= content["SDP"], SDP_Agency= content["Agency"], + Implementation= content["implementation"], EMR= content["EMR"], EMR_Status= content["EMR Status"], + HTS_Use= content["HTS Use"], HTS_Deployment= content["HTS Deployment"], HTS_Status= content["HTS Status"], + IL_Status= content["IL Status"], Registration_IE= content["registration ie"], Phamarmacy_IE= content["pharmacy ie"], + mlab= content["Mlab"], Ushauri= content["Ushauri"],Nishauri= content["Nishauri"], + Appointment_Management_IE= "", OVC= content["ovc"], OTZ= content["otz"], + PrEP= content["prep"], three_PM= content["three_PM"], AIR= content["air"], KP= content["kp"], MCH= content["mnch"], + TB= content["tb"], Lab_Manifest= content["lab_manifest"], Comments= "", Project= "KenyaHMIS III") + db.session.add(user) + db.session.commit() + + emrsdata = db.session.query(All_EMRSites).count() + print(f'============ ++++ Facilities Synced {emrsdata} count ++++ ============ ') + return f'============ success ============ ' + + +if __name__ == '__main__': + app.run(debug=True) + diff --git a/models.py b/models.py new file mode 100644 index 0000000..b98b42d --- /dev/null +++ b/models.py @@ -0,0 +1,50 @@ +from app import db +#from sqlalchemy_utils import ScalarListType +from sqlalchemy.dialects import postgresql +from sqlalchemy.dialects.postgresql import JSON +from sqlalchemy.dialects.postgresql.base import UUID +db.UUID = UUID + + + + +class All_EMRSites(db.Model): + __tablename__ = 'All_EMRSites' + + MFL_Code = db.Column(db.String(100), nullable=False, primary_key=True) + Facility_Name = db.Column('Facility Name', db.String(100), nullable=False) + County = db.Column(db.String(100), nullable=False) + SubCounty = db.Column(db.String(100), nullable=False) + Owner = db.Column(db.String(100), nullable=False) + Latitude = db.Column(db.String(100), nullable=False) + Longitude = db.Column(db.String(100), nullable=False) + SDP = db.Column(db.String(100), nullable=False) + SDP_Agency = db.Column('SDP Agency',db.String(100), nullable=False) + Implementation = db.Column(db.String(100), nullable=False) + EMR = db.Column(db.String(100), nullable=False) + EMR_Status = db.Column('EMR Status',db.String(100), nullable=False) + HTS_Use = db.Column('HTS Use', db.String(100), nullable=False) + HTS_Deployment = db.Column('HTS Deployment', db.String(100), nullable=False) + HTS_Status = db.Column('HTS Status', db.String(100), nullable=False) + IL_Status = db.Column('IL Status',db.String(100), nullable=False) + Registration_IE = db.Column('Registration IE',db.String(100), nullable=False) + Phamarmacy_IE = db.Column('Phamarmacy IE',db.String(100), nullable=False) + mlab = db.Column(db.String(100), nullable=False) + Ushauri = db.Column(db.String(100), nullable=False) + Nishauri = db.Column(db.String(100), nullable=False) + Appointment_Management_IE = db.Column('Appointment Management IE', db.String(100), nullable=False) + OVC = db.Column(db.String(100), nullable=False) + OTZ = db.Column(db.String(100), nullable=False) + PrEP = db.Column(db.String(100), nullable=False) + three_PM = db.Column('3PM',db.String(100), nullable=False) + AIR = db.Column(db.String(100), nullable=False) + KP = db.Column(db.String(100), nullable=False) + MCH = db.Column(db.String(100), nullable=False) + TB = db.Column(db.String(100), nullable=False) + Lab_Manifest = db.Column('Lab Manifest',db.String(100), nullable=False) + Comments = db.Column(db.String(100), nullable=False) + Project = db.Column(db.String(100), nullable=False) + + + def __repr__(self): + return f'' \ No newline at end of file