Advertisement
Mochinov

Untitled

May 22nd, 2022
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.41 KB | None | 0 0
  1. import os
  2. import xml.dom.minidom
  3. from register.models import RegisterMedicalOrganizations, RegisterMedicalInsurance
  4. from datetime import datetime
  5.  
  6. ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
  7.  
  8. register_of_medical_organizations_of_the_russian_federation_arr = {
  9. 'id' : 'Уникальный идентификатор',
  10. 'oid': 'OID',
  11. 'oldOid' : 'OID(неактуальный)',
  12. 'nameFull' : 'Полное наименование',
  13. 'nameShort' : 'Сокращенное наименование',
  14. 'parentId' : 'Уникальный идентификатор родительской организации',
  15. 'medicalSubjectId' : 'Код субъекта системы здравоохранения',
  16. 'medicalSubjectName' : 'Наименование субъекта системы здравоохранения',
  17. 'inn' : 'ИНН',
  18. 'kpp' : 'КПП',
  19. 'ogrn' : 'ОГРН',
  20. 'regionId' : 'Код региона РФ',
  21. 'regionName' : 'Наименование региона РФ',
  22. 'organizationType' : 'Форма собственности',
  23. 'moDeptId' : 'Идентификатор ведомственной принадлежности',
  24. 'moDeptName' : 'Ведомственная принадлежность',
  25. 'founder' : 'Учредитель',
  26. 'deleteDate' : 'Дата удаления записи',
  27. 'deleteReason' : 'Причина удаления записи',
  28. 'createDate' : 'Дата создания записи',
  29. 'modifyDate' : 'Дата последнего изменения записи',
  30. 'moLevel' : 'Уровень организации',
  31. 'moAgencyKindId' : 'Идентификатор вида деятельности',
  32. 'moAgencyKind' : 'Вид деятельности',
  33. 'profileAgencyKindId' : 'Идентификатор профиля деятельности',
  34. 'profileAgencyKind' : 'Профиль деятельности',
  35. 'postIndex' : 'Почтовый индекс',
  36. 'cadastralNumber' : 'Кадастровый номер',
  37. 'latitude' : 'Широта',
  38. 'longtitude' : 'Долгота',
  39. 'fiasVersion' : 'Версия ФИАС',
  40. 'aoidArea' : 'Идентификатор населенного пункта',
  41. 'aoidStreet' : 'Идентификатор улицы',
  42. 'houseid' : 'Идентификатор дома',
  43. 'addrRegionId' : 'Код региона',
  44. 'addrRegionName' : 'Наименование региона',
  45. 'territoryCode' : 'Код региона по ОКАТО',
  46. 'isFederalCity' : 'Город федерального значения',
  47. 'areaName' : 'Наименование населенного пункта',
  48. 'prefixArea' : 'Префикс населенного пункта',
  49. 'streetName' : 'Наименование улицы',
  50. 'prefixStreet' : 'Префикс улицы',
  51. 'house' : 'Номер дома',
  52. 'building' : 'Номер строения',
  53. 'struct' : 'Номер корпуса',
  54. 'parentOspOid' : 'OID головной организации для СП-1',
  55. 'ospOid' : 'OID СП-1',
  56. 'childrenOspOid' : 'OID СП-1, дочерних для организации',
  57. }
  58.  
  59. register_of_medical_insurance_organizations_arr = {
  60. 'ID' : 'ID',
  61. 'SMOCOD' : 'Код СМО в едином реестре ОМС',
  62. 'OGRN' : 'ОГРН',
  63. 'KPP' : 'КПП',
  64. 'NAM_SMOP' : 'Полное наименование СМО',
  65. 'NAM_SMOK' : 'Краткое наименование СМО',
  66. 'ADDR_F' : 'Фактический адрес, заданный в строку',
  67. 'FAM_RUK' : 'Фамилия руководителя',
  68. 'IM_RUK' : 'Имя руководителя',
  69. 'OT_RUK' : 'Отчество руководителя',
  70. 'PHONE' : 'Телефон (с кодом города)',
  71. 'FAX' : 'Факс (с кодом города)',
  72. 'HOT_LINE' : 'Телефон «горячей линии» СМО',
  73. 'E_MAIL' : 'Адрес электронной почты',
  74. 'N_DOC' : 'Номер лицензии СМО',
  75. 'D_START' : 'Дата выдачи лицензии СМО',
  76. 'DATE_E' : 'Дата окончания действия лицензии СМО',
  77. 'D_BEGIN' : 'Дата включения в реестр СМО',
  78. 'D_END' : 'Дата исключения из реестра СМО',
  79. }
  80.  
  81. def register_of_medical_insurance_organizations():
  82.  
  83. register_of_medical_organizations_document = os.path.join(ROOT_PATH, 'register_of_medical_insurance_organizations.xml')
  84.  
  85. dom = xml.dom.minidom.parse(register_of_medical_organizations_document)
  86. dom.normalize()
  87.  
  88.  
  89. nodeArrays=dom.getElementsByTagName("entries")
  90. count = 0
  91. for nodeArray in nodeArrays[0].childNodes:
  92. childList=nodeArray
  93. count += 1
  94. _ = RegisterMedicalInsurance()
  95. for child in childList.childNodes:
  96. try:
  97. if child.nodeName != 'ID':
  98. if child.nodeName in ['D_START', 'DATE_E', 'D_BEGIN', 'D_END']:
  99. date = datetime.strptime(child.childNodes[0].nodeValue, '%d.%m.%Y').date()
  100. setattr(_, child.nodeName, date)
  101. else:
  102. setattr(_, child.nodeName, child.childNodes[0].nodeValue)
  103. except Exception as e:
  104. print(e)
  105. _.save()
  106.  
  107.  
  108. def register_of_medical_organizations():
  109. register_of_medical_organizations_document = os.path.join(ROOT_PATH, 'register_of_medical_organizations_of_the_russian_federation.xml')
  110.  
  111. dom = xml.dom.minidom.parse(register_of_medical_organizations_document)
  112. dom.normalize()
  113.  
  114.  
  115. nodeArrays=dom.getElementsByTagName("entries")
  116. count = 0
  117. for nodeArray in nodeArrays[0].childNodes:
  118. childList=nodeArray
  119. count += 1
  120. _ = RegisterMedicalOrganizations()
  121. for child in childList.childNodes:
  122. try:
  123. if child.nodeName != 'id':
  124. if child.nodeName in ['deleteDate', 'createDate', 'modifyDate']:
  125. date = datetime.strptime(child.childNodes[0].nodeValue, '%d.%m.%Y').date()
  126. setattr(_, child.nodeName, date)
  127. else:
  128. setattr(_, child.nodeName, child.childNodes[0].nodeValue)
  129. except Exception as e:
  130. print(e)
  131.  
  132. _.save()
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement