103 lines
4.2 KiB
Python
103 lines
4.2 KiB
Python
from mods.db import db, Settings, Diag, DiagCategory, diag_db, Diagnosis, DiagnosisCategory, DiagnosisIndex, rls_db, RlsInit, RlsInitCountry
|
|
from mods.db import RlsInitPharmacoTherapeuticGroup, Rls, RlsCountry, RlsPharmacoTherapeuticGroup, RlsIndex
|
|
|
|
# Имена ключей параметров
|
|
S_KEY_RECEPTION_LIST = 'reception_list'
|
|
S_RECEPTION_LIST_DAY_START = 'day_start'
|
|
S_RECEPTION_LIST_DAY_END = 'day_end'
|
|
S_RECEPTION_LIST_INTERVAL = 'interval'
|
|
|
|
# Получение параметров
|
|
def s_get_reception_list():
|
|
class RLSettings:
|
|
day_start = None
|
|
day_end = None
|
|
interval = None
|
|
s = Settings.get(Settings.key == S_KEY_RECEPTION_LIST).val
|
|
o = RLSettings()
|
|
o.day_start = s[S_RECEPTION_LIST_DAY_START]
|
|
o.day_end = s[S_RECEPTION_LIST_DAY_END]
|
|
o.interval = s[S_RECEPTION_LIST_INTERVAL]
|
|
return o
|
|
# Установка параметров
|
|
def s_set_reception_list(dstart, dend, interval):
|
|
v = {
|
|
S_RECEPTION_LIST_DAY_START: dstart,
|
|
S_RECEPTION_LIST_DAY_END: dend,
|
|
S_RECEPTION_LIST_INTERVAL: interval
|
|
}
|
|
with db.atomic():
|
|
q = Settings.select().where(Settings.key == S_KEY_RECEPTION_LIST)
|
|
if not len(q):
|
|
Settings.create(key=S_KEY_RECEPTION_LIST, val=v)
|
|
else:
|
|
Settings.update(val=v).where(Settings.key == S_KEY_RECEPTION_LIST).execute()
|
|
|
|
### Инициализация начальных значений параметров
|
|
# Начальный график приёмов
|
|
with db.atomic():
|
|
q = Settings.select().where(Settings.key == S_KEY_RECEPTION_LIST)
|
|
if not len(q):
|
|
s_set_reception_list([8,0], [17,0], 30)
|
|
##########################
|
|
# Загрузка диагнозов МКБ 10
|
|
q = Diagnosis.select().limit(10)
|
|
if not len(q):
|
|
diag_db.connect()
|
|
__root_cat_map_ = {}
|
|
__subcat_map_ = {}
|
|
for root_cat in DiagCategory.select().where(DiagCategory.parent == None):
|
|
__root_cat_ = DiagnosisCategory.create(title=root_cat.title)
|
|
__root_cat_map_[root_cat] = __root_cat_
|
|
for root_cat in __root_cat_map_.keys():
|
|
for sc in DiagCategory.select().where(DiagCategory.parent == root_cat):
|
|
__subcat_ = DiagnosisCategory.create(parent=__root_cat_map_[root_cat], title=sc.title)
|
|
__subcat_map_[sc] = __subcat_
|
|
for diag in Diag.select().where(Diag.category == sc):
|
|
new_diag = Diagnosis.create(category=__subcat_map_[sc], code=diag.code, title=diag.title)
|
|
DiagnosisIndex.insert({
|
|
DiagnosisIndex.rowid: new_diag.id,
|
|
DiagnosisIndex.code: new_diag.code,
|
|
DiagnosisIndex.title: new_diag.title
|
|
}).execute()
|
|
del __subcat_map_
|
|
del __root_cat_map_
|
|
diag_db.close()
|
|
###########################
|
|
q = Rls.select().limit(10)
|
|
if not len(q):
|
|
rls_db.connect()
|
|
__rls_ptg_map_ = {}
|
|
for ptg in RlsInitPharmacoTherapeuticGroup.select():
|
|
__rls_ptg_map_[ptg] = RlsPharmacoTherapeuticGroup.create(title=ptg.title)
|
|
for ptg in __rls_ptg_map_.keys():
|
|
for ls in RlsInit.select().where(RlsInit.pharmacotherapeuticgroup == ptg):
|
|
q = RlsCountry.select().where(RlsCountry.title == ls.country.title)
|
|
if len(q):
|
|
cnt = q.get()
|
|
else:
|
|
cnt = RlsCountry.create(title=ls.country.title)
|
|
new_rls = Rls.create(
|
|
regnumber=ls.regnumber,
|
|
regdate=ls.regdate,
|
|
enddate=ls.enddate,
|
|
cancellationdate=ls.cancellationdate,
|
|
nameregcertificate=ls.nameregcertificate,
|
|
country=cnt,
|
|
tradename=ls.tradename,
|
|
internationalname=ls.internationalname,
|
|
formrelease=ls.formrelease,
|
|
stages=ls.stages,
|
|
barcodes=ls.barcodes,
|
|
normativedocumentation=ls.normativedocumentation,
|
|
pharmacotherapeuticgroup=__rls_ptg_map_[ptg]
|
|
)
|
|
RlsIndex.insert({
|
|
RlsIndex.rowid: new_rls.id,
|
|
RlsIndex.tradename: new_rls.tradename,
|
|
RlsIndex.internationalname: new_rls.internationalname
|
|
}).execute()
|
|
del __rls_ptg_map_
|
|
rls_db.close()
|
|
###########################
|