Advertisement
Mochinov

Untitled

Dec 13th, 2021
765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 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