Advertisement
Guest User

Code

a guest
Jul 29th, 2015
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.33 KB | None | 0 0
  1. __author__ = 'obhi'
  2. # Importing modules for reading CSV files, running the OS command CURL and writing to XML file
  3. import csv
  4. import os
  5. import sys
  6. import logging
  7. import glob  # For reading only *.csv files in the directory
  8. import xml.etree.cElementTree as ET
  9.  
  10. logging.basicConfig(level=logging.INFO)
  11. logger = logging.getLogger(__name__)
  12.  
  13. handler = logging.FileHandler('update.log')
  14. handler.setLevel(logging.DEBUG)
  15.  
  16. formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  17. handler.setFormatter(formatter)
  18.  
  19. logger.addHandler(handler)
  20.  
  21. hospitals =   {
  22.     'peerless' : {'hosp_dets' : {'dataSet':"C6ciemRdZvd", 'orgUnit': "o3Fdcxep773"},
  23.                   'ITU' : {'Total': "dToLU495hdD" , 'Reserved' : "WtlxTsYjvFO" , 'Occupied' : "HSSL9CQCEmu" ,'Available' : "rNdaHxXE13d"},
  24.                   'ICCU' : {'Total': "SRYSn6KiUgs" , 'Reserved' : "ix8dVgFAqbv" , 'Occupied' : "z5PMfjPOeaU" ,'Available' : "jW487vss0PK"},
  25.                   'NICU' : {'Total': "U97U38U2eBj" , 'Reserved' : "ys96ilizEcV" , 'Occupied' : "IAXlkWdrypq" ,'Available' : "MRCwMGNQOpg"},
  26.                   },
  27.     'bellevue' : {'hosp_dets' : {'dataSet':"L3NTA4t5LPS", 'orgUnit': "iNwzBcDqGsY"},
  28.                   'CCU' : {'Total' : "G8RVMxO86Qc" , 'Reserved' : "GgULTaSUMBS" ,'Occupied' : "MhRIygQBvbx" , 'Available' : "brszB1hGZeG"},
  29.                   'ITU' : {'Total': "dToLU495hdD" , 'Reserved' : "WtlxTsYjvFO" , 'Occupied' : "HSSL9CQCEmu" ,'Available' : "rNdaHxXE13d"},
  30.                   'ICCU' : {'Total': "SRYSn6KiUgs" , 'Reserved' : "ix8dVgFAqbv" , 'Occupied' : "z5PMfjPOeaU" ,'Available' : "jW487vss0PK"},
  31.                   'ICU-I' : {'Total' : "JXGDUZUxfC1" , 'Reserved' : "XJnDJzbnxIS" , 'Occupied' : "VEV5SQ3o4Cl" ,'Available' : "OJFT7dJ6UoL"},
  32.                   'CTVS' : {'Total' : "B3zytjeLBkC" , 'Reserved' : "noOQUiGuYnC" , 'Occupied' : "dG9IYWemUNa" ,'Available' : "cZFZarClUkB"},
  33.                   'NICU' : {'Total': "U97U38U2eBj" , 'Reserved' : "ys96ilizEcV" , 'Occupied' : "IAXlkWdrypq" ,'Available' : "MRCwMGNQOpg"},
  34.                   'SCBU' : {'Total' : "zDEFJIDCUjb" ,'Reserved' : "XqBI7j0SNWg" ,'Occupied' : "oF9zVVtGBz9" ,'Available' : "dCGFxlOVlwg"}
  35.                   }
  36. }
  37.  
  38.  
  39. # Changing the directory to the directory where the CSV file is kept
  40. # os.chdir('/home/obhi/Documents')
  41.  
  42. def indent(elem, level=0):
  43.     i = "\n" + level * "  "
  44.     if len(elem):
  45.         if not elem.text or not elem.text.strip():
  46.             elem.text = i + "  "
  47.         if not elem.tail or not elem.tail.strip():
  48.             elem.tail = i
  49.         for elem in elem:
  50.             indent(elem, level + 1)
  51.         if not elem.tail or not elem.tail.strip():
  52.             elem.tail = i
  53.     else:
  54.         if level and (not elem.tail or not elem.tail.strip()):
  55.             elem.tail = i
  56.  
  57. def checkData(csvfile, hos_name):
  58.     for row in csvfile:
  59.         if len(row) < 4:
  60.             logger.debug("File does not contain whole data, bed_type = ")
  61.             return 0
  62.         if row[1] < row[2]+row[3]:
  63.             logger.debug("Total beds less than Reserved and Occupied")
  64.             return 0
  65.         if row[1] < 0 or row[2] < 0 or row[3] < 0:
  66.             logger.debug("Bed count is negative")
  67.             return 0
  68.         try:
  69.             a = int(row[1])
  70.             b = int(row[2])
  71.             c = int(row[3])
  72.         except ValueError:
  73.             logger.debug("Bed count not in integer values")
  74.             return 0
  75.         if row[0].upper() not in hospitals[hos_name]:
  76.             logger.debug("This type of bed doesnot exist for ")
  77.             return 0
  78.     return 1
  79.  
  80.  
  81.  
  82. def reader_writer_sender():
  83.     flag = 0
  84.     bed_info = ['Total', 'Reserved', 'Occupied', 'Available']
  85.     for filename in glob.glob('*.csv'):
  86.         try:
  87.             with open(filename, 'rb') as f:
  88.                 hos_name = "null"
  89.                 flag = 0
  90.                 flag1 = 1
  91.                 csvfile = csv.reader(f)
  92.                 dataValueSet = ET.Element("dataValueSet")
  93.                 dataValueSet.set("xmlns", "http://dhis2.org/schema/dxf/2.0")
  94.                 for key in hospitals:
  95.                     if key.lower() in filename.lower():
  96.                         hos_name = key
  97.                         dataValueSet.set("dataSet", hospitals[hos_name]['hosp_dets']['dataSet'])
  98.                         dataValueSet.set("orgUnit", hospitals[hos_name]['hosp_dets']['orgUnit'])
  99.                         logger.debug("Hospital Name : "+hos_name)
  100.                         flag1 = 1
  101.                         break
  102.                     else:
  103.                         flag1 = 0
  104.                 if flag1 == 0:
  105.                     logger.debug("The filename sent by hospital does not exist")
  106.                     continue
  107.  
  108.                 #flag1 = checkData(csvfile, hos_name)
  109.                 if flag1 == 0:
  110.                     continue
  111.                 print "true"
  112.                 for row in csvfile:
  113.                     index = 1
  114.                     if row[0] == "#":
  115.                         flag = 1
  116.                         continue
  117.                     bed_type = row[0].upper()
  118.                     dataValueSet.set("completeDate", row[4])
  119.                     dataValueSet.set("period", row[4][:8])
  120.                     for b in bed_info:
  121.                         dataValue = ET.SubElement(dataValueSet, "dataValue")
  122.                         dataValue.set("dataElement", hospitals[hos_name][bed_type][b])
  123.                         if index == 4:
  124.                             dataValue.set("value", str(int(row[1]) - int(row[2]) - int(row[3])))
  125.                             break
  126.                         else:
  127.                             dataValue.set("value", row[index])
  128.                         index += 1
  129.         except:
  130.             e = sys.exc_info()[0]
  131.             logger.debug("Error in reading files ::Message:: " + str(e))
  132.         if flag == 1:
  133.             indent(dataValueSet)
  134.             tree = ET.ElementTree(dataValueSet)
  135.             filename = filename[:-4]
  136.             xml_file = filename + ".xml"
  137.             tree.write(xml_file, xml_declaration=True, encoding='utf-8', method="xml")
  138.             #os.system("curl -d @" +xml_file+ " ""http://180.149.243.107:8080/api/dataValueSets"" -H ""Content-Type:application/xml"" -u admin:district -v")
  139.         else:
  140.             logger.debug("Corrupt file, cannot be processed")
  141.  
  142.  
  143. if __name__ == '__main__':
  144.     reader_writer_sender()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement