From 6995916d8a57369f632520b1bea8efa2f3b25e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=A0=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD?= Date: Thu, 23 Jan 2020 10:02:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=BC=D0=BD=D0=B5=D0=B7=D0=BE=D0=BC=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D1=91=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mods/diagnosis.py | 4 ++-- mods/lists.py | 7 +++++-- mods/receptions.py | 43 +++++++++++++++++++++++++++++++++---------- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/mods/diagnosis.py b/mods/diagnosis.py index eb2bd46..b2bb184 100644 --- a/mods/diagnosis.py +++ b/mods/diagnosis.py @@ -35,7 +35,7 @@ def cats_subcats(cat): def get_categories(parent=None): with db.atomic(): return DiagnosisCategory.select().where(DiagnosisCategory.parent == parent) -def get_reception_diagnosises(cat=None): +def get_reception_diagnosisses(cat=None): with db.atomic(): if cat: d = list(Diagnosis.select().where(Diagnosis.category == cat).order_by(Diagnosis.code)) @@ -87,7 +87,7 @@ def create_choose_diagnosis_win(reception_b): def redraw_diagnosis_list(self, cat): for c in diagnosis_list.get_children(): diagnosis_list.remove(c) - for d in get_reception_diagnosises(cat): + for d in get_reception_diagnosisses(cat): diagnosis_list.add(build_diagnosis_row(d)) diagnosis_list.show_all() def diagnosis_row_selected(self, *a): diff --git a/mods/lists.py b/mods/lists.py index 43d215d..85ce83b 100644 --- a/mods/lists.py +++ b/mods/lists.py @@ -7,9 +7,12 @@ from mods.utils import show_msg, disable_widget, enable_widget, ConditionalFilte import re import peewee +ANAMNEZ_LIST = 'anamnez' +OBSERV_LIST = 'observ' + lists_map = { - 'anamnez': 'Анамнез', - 'observ': 'Осмотр', + ANAMNEZ_LIST: 'Анамнез', + OBSERV_LIST: 'Осмотр', } for s_id in lists_map: diff --git a/mods/receptions.py b/mods/receptions.py index f6a0787..13bc403 100644 --- a/mods/receptions.py +++ b/mods/receptions.py @@ -2,10 +2,11 @@ import gi from mods.utils import disable_widget, enable_widget gi.require_version('Gtk', '3.0') from gi.repository import Gtk, GObject, Gdk -from mods.db import db, Reception, Patient, ReceptionDiagnosis +from mods.db import db, Reception, Patient, ReceptionDiagnosis, ReceptionAnamnesis from mods.files import new_reception_win_file, reception_row_ui_str, reception_list_settings_win_file, open_reception_win_file, diagnosis_row_ui_str from mods.settings import s_get_reception_list, s_set_reception_list from mods.diagnosis import create_choose_diagnosis_win, get_giagnosis +from mods.lists import get_listrecord from mods.root import builder from datetime import datetime, timedelta @@ -59,25 +60,44 @@ class ReceptionDiagnosisRow(Gtk.ListBoxRow): def get_reception(reception_id): with db.atomic(): return Reception.get_by_id(reception_id) -def get_reception_diagnosises(reception): +def get_reception_diagnosisses(reception): with db.atomic(): return ReceptionDiagnosis.select().where(ReceptionDiagnosis.reception == reception) -def delete_reception_diagnosises(reception, diag_id_list): +def get_reception_anamnesisses(reception): + with db.atomic(): + return ReceptionAnamnesis.select().where(ReceptionAnamnesis.reception == reception) +def delete_reception_diagnosisses(reception, diag_id_list): if not len(diag_id_list): return with db.atomic(): ReceptionDiagnosis.delete().where((ReceptionDiagnosis.reception == reception) & (ReceptionDiagnosis.diagnosis.in_(diag_id_list))).execute() -def add_reception_diagnosises(reception, diag_id_list): +def delete_reception_anamnesisses(reception, anam_id_list): + if not len(anam_id_list): return + with db.atomic(): + ReceptionAnamnesis.delete().where((ReceptionAnamnesis.reception == reception) & (ReceptionAnamnesis.anamnesis.in_(anam_id_list))).execute() +def add_reception_diagnosisses(reception, diag_id_list): if not len(diag_id_list): return with db.atomic(): inserts = list(map(lambda x: {'reception': reception, 'diagnosis': get_giagnosis(x)}, diag_id_list)) _ = ReceptionDiagnosis.insert_many(inserts).execute() -def save_reception_diagnosises(reception, diag_id_list): - exist_diags = set(map(lambda x: x.diagnosis.id, get_reception_diagnosises(reception))) +def add_reception_anamnesisses(reception, anam_id_list): + if not len(anam_id_list): return + with db.atomic(): + inserts = list(map(lambda x: {'reception': reception, 'anamnesis': get_listrecord(x)}, anam_id_list)) + _ = ReceptionAnamnesis.insert_many(inserts).execute() +def save_reception_diagnosisses(reception, diag_id_list): + exist_diags = set(map(lambda x: x.diagnosis.id, get_reception_diagnosisses(reception))) new_diags = set(diag_id_list) to_del = list(exist_diags - new_diags) to_add = list(new_diags - exist_diags) - delete_reception_diagnosises(reception, to_del) - add_reception_diagnosises(reception, to_add) + delete_reception_diagnosisses(reception, to_del) + add_reception_diagnosisses(reception, to_add) +def save_reception_anamnesisses(reception, anam_id_list): + exist_anams = set(map(lambda x: x.anamnesis.id, get_reception_anamnesisses(reception))) + new_anams = set(anam_id_list) + to_del = list(exist_anams - new_anams) + to_add = list(new_anams - exist_anams) + delete_reception_anamnesisses(reception, to_del) + add_reception_anamnesisses(reception, to_add) ################################################################################## def build_reception_row(reception_datetime): @@ -138,7 +158,7 @@ def create_open_reception_win(): def save(self, button): # Диагнозы diag_id_list = list(map(lambda x: x.props.db_id, reception_diag_list.get_children())) - save_reception_diagnosises(reception, diag_id_list) + save_reception_diagnosisses(reception, diag_id_list) ####### ####### @@ -152,8 +172,11 @@ def create_open_reception_win(): reception_dt.set_markup(f'{reception_row.props.datetime.strftime("%d.%m.%Y - %H:%M")}') reception_diag_list = b.get_object('diagnosis_list') remove_diag_button = b.get_object('remove_diag_button') + # Анамнезы + + # # Диагнозы - for rd in [x.diagnosis for x in get_reception_diagnosises(reception)]: + for rd in [x.diagnosis for x in get_reception_diagnosisses(reception)]: reception_diag_list.add(build_reception_diagnosis_row(rd)) # w = b.get_object('open_reception_window')