Добавоение/редактирование/просмотр пациента. Часть таблиц приёмов

This commit is contained in:
Бородин Роман 2019-11-05 19:40:50 +03:00
parent 0bf880cab7
commit 0a5634bb59
13 changed files with 2359 additions and 224 deletions

224
app.py
View File

@ -2,14 +2,35 @@ import gi
import os
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
from mods.db import Patient, store_patient_index, search_patients, db
from mods.db import Patient, store_patient_index, update_patient_index, search_patients, db
from datetime import date
import peewee
gender_dict = {
'male': 'Мужской',
'female': 'Женский'
}
doc_type_dict = {
'passport': 'Паспорт',
'birth_cert': 'Св.о рождении',
'foreign_passport': 'Паспорт иностранца'
}
# Variables
resource_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'res')
ui_dir = os.path.join(resource_dir, 'ui')
icon_dir = os.path.join(resource_dir, 'icons')
main_win_file = os.path.join(ui_dir, 'main_win.glade')
new_patient_win_file = os.path.join(ui_dir, 'new_patient_win.glade')
open_patient_win_file = os.path.join(ui_dir, 'open_patient_win.glade')
edit_patient_win_file = os.path.join(ui_dir, 'edit_patient_win.glade')
male_patient_row_file = os.path.join(ui_dir, 'male_patient_row.glade')
female_patient_row_file = os.path.join(ui_dir, 'female_patient_row.glade')
gender_ui_str = {}
with open(male_patient_row_file, 'r') as f:
gender_ui_str['male'] = f.read()
with open(female_patient_row_file, 'r') as f:
gender_ui_str['female'] = f.read()
############
builder = Gtk.Builder()
@ -30,10 +51,21 @@ class PatientRow(Gtk.ListBoxRow):
@GObject.Property
def db_id(self):
return self._db_id
@db_id.setter
def my_custom_property(self, value):
def db_id_setter(self, value):
self._db_id = value
@GObject.Property
def fio(self):
return self._fio
@fio.setter
def fio_setter(self, value):
self._fio = value
@GObject.Property
def birth_date(self):
return self._birth_date
@birth_date.setter
def birth_date_setter(self, value):
self._birth_date = value
class MainWinHandler:
def main_win_close(self, *args):
@ -41,9 +73,21 @@ class MainWinHandler:
def show_new_patient_win(self, button):
new_patient_win = create_new_patient_win()
new_patient_win.show_all()
def show_open_patient_win(self, button):
pl = builder.get_object('patient_list')
row = pl.get_selected_row()
open_patient_win = create_open_patient_win(row.props.db_id)
open_patient_win.show_all()
def patient_list_selected(self, *a):
button = builder.get_object('patient_open_button')
button.set_sensitive(True)
def patient_list_unselected(self, *a):
button = builder.get_object('patient_open_button')
button.set_sensitive(False)
def patient_filter_changed(self, filter_widget):
pl = builder.get_object('patient_list')
pl.unselect_all()
self.patient_list_unselected()
pl.invalidate_filter()
'''pl = builder.get_object('patient_list')
for r in pl.get_children():
@ -59,14 +103,26 @@ class MainWinHandler:
pl.show_all()'''
def build_patient_row(patient):
b = Gtk.Builder()
b.add_from_string(gender_ui_str[patient.gender])
win = b.get_object('win')
box = b.get_object('patient_box')
icon = b.get_object('icon')
icon.set_from_file(os.path.join(icon_dir, f'{patient.gender}.png'))
fio = f'{" ".join([patient.last_name, patient.first_name, patient.middle_name])}'
b.get_object('fio').set_text(fio)
birth_date = patient.birth_date
b.get_object('birth_date').set_text(birth_date.strftime('%d.%m.%Y'))
win.remove(win.get_children()[0])
row = PatientRow()
row.props.db_id = patient.id
label = Gtk.Label(f'{" ".join([patient.last_name, patient.first_name, patient.middle_name])}, {patient.birth_date}', xalign=0)
row.add(label)
row.props.fio = fio
row.props.birth_date = birth_date
row.add(box)
return row
def patient_sort_func(row1, row2, *a):
text1 = row1.get_children()[0].get_text()
text2 = row2.get_children()[0].get_text()
text1 = row1.props.fio
text2 = row2.props.fio
return (text1 > text2) - (text1 < text2)
def patient_filter_func(row):
fstr = builder.get_object('patient_filter').get_text().strip()
@ -94,6 +150,130 @@ def show_msg(text, sec_text='', level='info'):
w.run()
w.close()
def get_patient_win_values(b):
l_name = b.get_object('last_name').get_text().replace(' ', '')
f_name = b.get_object('first_name').get_text().replace(' ', '')
m_name = b.get_object('middle_name').get_text().replace(' ', '')
if '' in (l_name, f_name):
show_msg('Не указаны имя или фамилия', 'Данные поля должны быть заполнены', level='warn')
return None
try:
birth_d = int(b.get_object('birth_day').get_text())
if birth_d < 1 or birth_d > 31:
return show_msg('Неверный день месяца', 'Укажите число в диапазоне 1-31', level='warn')
birth_m = int(b.get_object('birth_month').get_text())
if birth_m < 1 or birth_m > 12:
show_msg('Неверный номер месяца', 'Укажите число в диапазоне 1-12', level='warn')
return None
birth_y = int(b.get_object('birth_year').get_text())
except ValueError:
show_msg('Неверно указана дата рождения', 'Все поля даты должны быть заполнены', level='warn')
return None
gender = b.get_object('gender').get_active_id()
if not gender:
show_msg('Не выбран пол', level='warn')
return None
birth_date = date(birth_y, birth_m, birth_d)
doc_type = b.get_object('doc_type').get_active_id()
doc_serial = b.get_object('doc_serial').get_text()
doc_number = b.get_object('doc_number').get_text()
policy_number = b.get_object('policy_number').get_text()
policy_company = b.get_object('policy_company').get_text()
snils_number = b.get_object('snils_number').get_text()
notes_buffer = b.get_object('notes_buffer')
notes_start = notes_buffer.get_start_iter()
notes_end = notes_buffer.get_end_iter()
notes = notes_buffer.get_text(notes_start, notes_end, True)
return {
'last_name': l_name,
'first_name': f_name,
'middle_name': m_name,
'gender': gender,
'birth_date': birth_date,
'doc_type': doc_type,
'doc_serial': doc_serial,
'doc_number': doc_number,
'policy_number': policy_number,
'policy_company': policy_company,
'snils_number': snils_number,
'notes': notes
}
def set_patient_values(patient_id, b, edit=False):
pat = Patient.select().where(Patient.id == patient_id).get()
b.get_object('last_name').set_text(pat.last_name)
b.get_object('first_name').set_text(pat.first_name)
b.get_object('middle_name').set_text(pat.middle_name)
if not edit:
b.get_object('gender').set_text(gender_dict[pat.gender])
else:
b.get_object('gender').set_active_id(pat.gender)
if not edit:
b.get_object('birth_date').set_text(pat.birth_date.strftime('%d.%m.%Y'))
else:
b.get_object('birth_day').set_text(str(pat.birth_date.day))
b.get_object('birth_month').set_text(str(pat.birth_date.month))
b.get_object('birth_year').set_text(str(pat.birth_date.year))
if not edit:
b.get_object('doc_type').set_text(doc_type_dict[pat.doc_type] if pat.doc_type else '')
elif pat.doc_type:
b.get_object('doc_type').set_active_id(pat.doc_type)
b.get_object('doc_serial').set_text(pat.doc_serial)
b.get_object('doc_number').set_text(pat.doc_number)
b.get_object('policy_number').set_text(pat.policy_number)
b.get_object('policy_company').set_text(pat.policy_company)
b.get_object('snils_number').set_text(pat.snils_number)
b.get_object('notes_buffer').set_text(pat.notes)
def create_open_patient_win(patient_id):
b = Gtk.Builder()
class OpenPatientWinHandler:
def show_edit_patient_win(self, *a):
edit_patient_win = create_edit_patient_win(patient_id)
w.destroy()
edit_patient_win.show_all()
b.add_from_file(open_patient_win_file)
b.connect_signals(OpenPatientWinHandler())
w = b.get_object('open_patient_window')
# db_id = b.get_object('db_id')
# db_id.set_text(str(patient_id))
set_patient_values(patient_id, b)
return w
def create_edit_patient_win(patient_id):
b = Gtk.Builder()
class EditPatientWinHandler:
def edit_patient_win_close(self, *args):
w.destroy()
open_patient_win = create_open_patient_win(patient_id)
open_patient_win.show_all()
def only_digits(self, entry):
text = entry.get_text()
text = ''.join(filter(lambda x: x.isdigit(), text))
entry.set_text(text)
def save_patient(self, *args):
values = get_patient_win_values(b)
if not values:
return
with db.atomic():
try:
Patient.update(**values).where(Patient.id == patient_id).execute()
except peewee.IntegrityError:
return show_msg('Данный пациент уже существует', 'Другой пациент с указанными фамилией, именем\nи датой рождения уже есть с базе данных', level='warn')
patient = Patient.select().where(Patient.id == patient_id).get()
update_patient_index(patient)
cur_row = list(filter(lambda x: x.props.db_id == patient_id, patient_list.get_children()))[0]
patient_list.remove(cur_row)
row = build_patient_row(patient)
patient_list.add(row)
patient_list.select_row(row)
patient_list.show_all()
b.get_object('edit_patient_window').close()
b.add_from_file(edit_patient_win_file)
b.connect_signals(EditPatientWinHandler())
w = b.get_object('edit_patient_window')
set_patient_values(patient_id, b, edit=True)
return w
def create_new_patient_win():
b = Gtk.Builder()
class NewPatienWinHandler:
@ -102,34 +282,12 @@ def create_new_patient_win():
text = ''.join(filter(lambda x: x.isdigit(), text))
entry.set_text(text)
def save_patient(self, *args):
l_name = b.get_object('last_name').get_text().replace(' ', '')
f_name = b.get_object('first_name').get_text().replace(' ', '')
m_name = b.get_object('middle_name').get_text().replace(' ', '')
if '' in (l_name, f_name):
return show_msg('Не указаны имя или фамилия', 'Данные поля должны быть заполнены', level='warn')
try:
birth_d = int(b.get_object('birth_day').get_text())
if birth_d < 1 or birth_d > 31:
return show_msg('Неверный день месяца', 'Укажите число в диапазоне 1-31', level='warn')
birth_m = int(b.get_object('birth_month').get_text())
if birth_m < 1 or birth_m > 12:
return show_msg('Неверный номер месяца', 'Укажите число в диапазоне 1-12', level='warn')
birth_y = int(b.get_object('birth_year').get_text())
except ValueError:
return show_msg('Неверно указана дата рождения', 'Все поля даты должны быть заполнены', level='warn')
gender = b.get_object('gender').get_active_id()
if not gender:
return show_msg('Не выбран пол', level='warn')
birth_date = date(birth_y, birth_m, birth_d)
values = get_patient_win_values(b)
if not values:
return
with db.atomic():
try:
patient = Patient.create(
last_name=l_name,
first_name=f_name,
middle_name=m_name,
birth_date=birth_date,
gender=gender
)
patient = Patient.create(**values)
except peewee.IntegrityError:
return show_msg('Данный пациент уже существует', 'Пациент с указанными фамилией, именем\nи датой рождения уже есть с базе данных', level='warn')
store_patient_index(patient)

View File

@ -1,6 +1,6 @@
import os
from peewee import Model, CharField, BigAutoField, DateTimeField, IntegerField, fn, Field, Expression, TextField, ForeignKeyField, DateField
from playhouse.sqlite_ext import SqliteExtDatabase, FTS5Model, AutoIncrementField, SearchField, RowIDField
from playhouse.sqlite_ext import CSqliteExtDatabase, FTS5Model, AutoIncrementField, SearchField, RowIDField
var_dir = os.path.join(os.path.abspath(os.environ['HOME']), '.eldoc')
db_dir = os.path.join(var_dir, 'db')
@ -11,7 +11,7 @@ if not os.path.exists(var_dir):
if not os.path.exists(db_dir):
os.mkdir(db_dir)
db = SqliteExtDatabase(db_file, pragmas={
db = CSqliteExtDatabase(db_file, pragmas={
'journal_mode': 'wal',
'cache_size': -1 * 64000, # 64MB
'foreign_keys': 'on',
@ -34,12 +34,40 @@ class Patient(BaseModel):
middle_name = TextField(null=True)
birth_date = DateField()
gender = CharField(6)
doc_type = CharField(32, null=True)
doc_serial = TextField(null=True)
doc_number = TextField(null=True)
policy_number = TextField(null=True)
policy_company = TextField(null=True)
snils_number = TextField(null=True)
notes = TextField(null=True)
Patient.add_index(
Patient.index(Patient.last_name, Patient.first_name, Patient.birth_date, unique=True)
)
class Reception(BaseModel):
id = AutoIncrementField()
patient = ForeignKeyField(Patient, backref='receptions', on_delete='CASCADE')
time = DateTimeField()
class Diagnosis(BaseModel):
id = AutoIncrementField()
code = CharField()
title = TextField()
description = TextField(null=True)
class ReceptionDiagnosis(BaseModel):
id = AutoIncrementField()
reception = ForeignKeyField(Reception, backref='reception_diagnosisses', on_delete='CASCADE')
diagnosis = ForeignKeyField(Diagnosis, backref='reception_diagnosisses', on_delete='CASCADE')
class ReceptionAnamnesis(BaseModel):
id = AutoIncrementField()
reception = ForeignKeyField(Reception, backref='reception_anamnesisses', on_delete='CASCADE')
text = TextField()
class AnamnesisTemplate(BaseModel):
id = AutoIncrementField()
text = TextField()
class PatientIndex(BaseFTSModel):
rowid = RowIDField()
fio = SearchField()
def search_patients(q):
with db.atomic():
return (Patient.select()
@ -58,6 +86,15 @@ def store_patient_index(pat):
PatientIndex.fio: ' '.join(fio_list)
}
).execute()
def update_patient_index(pat):
fio_list = [pat.last_name, pat.first_name]
if pat.middle_name:
fio_list.append(pat.middle_name)
PatientIndex.update(
{
PatientIndex.fio: ' '.join(fio_list)
}
).where(PatientIndex.rowid == pat.id).execute()
db.connect()
db.create_tables([

BIN
res/icons/female.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

BIN
res/icons/male.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

View File

@ -0,0 +1,664 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkTextBuffer" id="notes_buffer"/>
<object class="GtkWindow" id="edit_patient_window">
<property name="can_focus">False</property>
<property name="modal">True</property>
<signal name="destroy" handler="edit_patient_win_close" swapped="no"/>
<child type="titlebar">
<object class="GtkHeaderBar" id="header">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image_position">top</property>
<property name="always_show_image">True</property>
<signal name="clicked" handler="save_patient" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">document-save-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStackSwitcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">patient_data</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="patient_data">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFrame">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkEntry" id="last_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">Фамилия</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="first_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">Имя</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="middle_name">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">Отчество</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">ФИО</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkComboBoxText" id="gender">
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item id="male" translatable="yes">Мужской</item>
<item id="female" translatable="yes">Женский</item>
</items>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Пол</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="birth_day">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">3</property>
<property name="input_purpose">digits</property>
<signal name="changed" handler="only_digits" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">.</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="birth_month">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">3</property>
<property name="input_purpose">digits</property>
<signal name="changed" handler="only_digits" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">.</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="birth_year">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">4</property>
<property name="width_chars">5</property>
<property name="input_purpose">digits</property>
<signal name="changed" handler="only_digits" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">г.</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Дата рождения</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="db_id">
<property name="can_focus">False</property>
<property name="width_chars">0</property>
<property name="max_width_chars">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="name">page0</property>
<property name="title" translatable="yes">Основное</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkComboBoxText" id="doc_type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item id="passport" translatable="yes">Паспорт</item>
<item id="birth_cert" translatable="yes">Св.о рождении</item>
<item id="foreign_passport" translatable="yes">Паспорт иностранца</item>
</items>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Вид документа</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="doc_serial">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Серия удостоверяющего документа</property>
<property name="max_length">10</property>
<property name="width_chars">11</property>
<property name="placeholder_text" translatable="yes">Серия</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="doc_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Номер удостоверяющего документа</property>
<property name="max_length">20</property>
<property name="width_chars">21</property>
<property name="placeholder_text" translatable="yes">Номер</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Серия и номер</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Удостоверение личности</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkEntry" id="policy_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Номер полиса</property>
<property name="primary_icon_tooltip_text" translatable="yes">Номер полиса</property>
<property name="placeholder_text" translatable="yes">Номер полиса</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="policy_company">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Страховая компания</property>
<property name="placeholder_text" translatable="yes">Страховая компания</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Полис</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkEntry" id="snils_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">Номер</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">СНИЛС</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Документы</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="notes">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="wrap_mode">word</property>
<property name="buffer">notes_buffer</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Заметки</property>
</object>
</child>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">Дополнительно</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

36
res/ui/error_win.glade Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkMessageDialog" id="error">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Ошибка</property>
<property name="modal">True</property>
<property name="window_position">center</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="gravity">center</property>
<property name="message_type">error</property>
<property name="buttons">close</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<property name="layout_style">end</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="win">
<property name="can_focus">False</property>
<property name="decorated">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkBox" id="patient_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImage" id="icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="fio">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<attributes>
<attribute name="scale" value="2"/>
<attribute name="gravity" value="west"/>
</attributes>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="birth_date">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_right">5</property>
<property name="label" translatable="yes">label</property>
<attributes>
<attribute name="style" value="oblique"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

36
res/ui/info_win.glade Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkMessageDialog" id="info">
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="title" translatable="yes">Информация</property>
<property name="modal">True</property>
<property name="window_position">center</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="gravity">center</property>
<property name="buttons">close</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<property name="layout_style">end</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View File

@ -7,6 +7,7 @@
<property name="title">ElDoc</property>
<property name="default_width">800</property>
<property name="default_height">500</property>
<property name="icon_name">accessories-character-map</property>
<signal name="destroy" handler="main_win_close" swapped="no"/>
<child>
<placeholder/>
@ -48,7 +49,7 @@
<property name="tooltip_text" translatable="yes">Создать</property>
<property name="label" translatable="yes">Создать</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-add</property>
<property name="icon_name">list-add</property>
</object>
<packing>
<property name="expand">False</property>
@ -102,11 +103,12 @@
<object class="GtkToolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
<property name="toolbar_style">both</property>
<child>
<object class="GtkToolButton">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Добавить пациента</property>
<property name="label" translatable="yes">Добавить</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-add</property>
@ -118,12 +120,15 @@
</packing>
</child>
<child>
<object class="GtkToolButton">
<object class="GtkToolButton" id="patient_open_button">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Изменить</property>
<property name="tooltip_text" translatable="yes">Открыть карточку пациента</property>
<property name="label" translatable="yes">Открыть</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-edit</property>
<property name="stock_id">gtk-open</property>
<signal name="clicked" handler="show_open_patient_win" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@ -141,6 +146,7 @@
<object class="GtkListBox" id="patient_list">
<property name="visible">True</property>
<property name="can_focus">False</property>
<signal name="row-selected" handler="patient_list_selected" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@ -149,10 +155,24 @@
</packing>
</child>
<child>
<object class="GtkSearchBar">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="search_mode_enabled">True</property>
<property name="margin_left">3</property>
<property name="margin_right">3</property>
<property name="margin_top">3</property>
<property name="margin_bottom">3</property>
<child>
<object class="GtkFixed">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSearchEntry" id="patient_filter">
<property name="visible">True</property>
@ -162,6 +182,22 @@
<property name="primary_icon_sensitive">False</property>
<signal name="changed" handler="patient_filter_changed" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFixed">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkWindow" id="win">
<property name="can_focus">False</property>
<property name="decorated">False</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkBox" id="patient_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImage" id="icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="fio">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">label</property>
<property name="xalign">0</property>
<attributes>
<attribute name="scale" value="2"/>
</attributes>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="birth_date">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_right">5</property>
<property name="label" translatable="yes">label</property>
<attributes>
<attribute name="style" value="oblique"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View File

@ -2,36 +2,63 @@
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkTextBuffer" id="notes_buffer"/>
<object class="GtkWindow" id="new_patient_window">
<property name="can_focus">False</property>
<property name="modal">True</property>
<property name="default_width">600</property>
<property name="default_height">500</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<object class="GtkHeaderBar" id="header">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Новый пациент</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkButton">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
<property name="image_position">top</property>
<property name="always_show_image">True</property>
<signal name="clicked" handler="save_patient" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">document-save-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkFixed">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStackSwitcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">patient_data</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="patient_data">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
@ -39,6 +66,10 @@
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
@ -61,7 +92,7 @@
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
@ -102,8 +133,58 @@
</child>
</object>
<packing>
<property name="x">5</property>
<property name="y">5</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkComboBoxText" id="gender">
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item id="male" translatable="yes">Мужской</item>
<item id="female" translatable="yes">Женский</item>
</items>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Пол</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
@ -111,6 +192,10 @@
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
@ -217,16 +302,62 @@
</child>
</object>
<packing>
<property name="x">5</property>
<property name="y">130</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="name">page0</property>
<property name="title" translatable="yes">Основное</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="width_request">100</property>
<property name="height_request">40</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
@ -236,12 +367,13 @@
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkComboBoxText" id="gender">
<object class="GtkComboBoxText" id="doc_type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item id="male" translatable="yes">Мужской</item>
<item id="female" translatable="yes">Женский</item>
<item id="passport" translatable="yes">Паспорт</item>
<item id="birth_cert" translatable="yes">Св.о рождении</item>
<item id="foreign_passport" translatable="yes">Паспорт иностранца</item>
</items>
</object>
</child>
@ -251,13 +383,266 @@
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Пол</property>
<property name="label" translatable="yes">Вид документа</property>
</object>
</child>
</object>
<packing>
<property name="x">214</property>
<property name="y">5</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkEntry" id="doc_serial">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Серия удостоверяющего документа</property>
<property name="max_length">10</property>
<property name="width_chars">11</property>
<property name="placeholder_text" translatable="yes">Серия</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="doc_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Номер удостоверяющего документа</property>
<property name="max_length">20</property>
<property name="width_chars">21</property>
<property name="placeholder_text" translatable="yes">Номер</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Серия и номер</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Удостоверение личности</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkEntry" id="policy_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Номер полиса</property>
<property name="placeholder_text" translatable="yes">Номер полиса</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="policy_company">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">Страховая компания</property>
<property name="placeholder_text" translatable="yes">Страховая компания</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Полис</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkEntry" id="snils_number">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="placeholder_text" translatable="yes">Номер</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">СНИЛС</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Документы</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="notes">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="wrap_mode">word</property>
<property name="buffer">notes_buffer</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Заметки</property>
</object>
</child>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">Дополнительно</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>

View File

@ -0,0 +1,624 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkTextBuffer" id="notes_buffer"/>
<object class="GtkWindow" id="open_patient_window">
<property name="can_focus">False</property>
<property name="modal">True</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="open_patient_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="show_close_button">True</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image_position">top</property>
<property name="always_show_image">True</property>
<signal name="clicked" handler="show_edit_patient_win" swapped="no"/>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">document-edit-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkStackSwitcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">patient_data</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="patient_data">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkFrame">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="last_name">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="first_name">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="middle_name">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">ФИО</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="width_request">100</property>
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkLabel" id="gender">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Пол</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="height_request">40</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="birth_date">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> г.</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Дата рождения</property>
<property name="xalign">0</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="name">page0</property>
<property name="title" translatable="yes">Основное</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">3</property>
<property name="margin_bottom">3</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkLabel" id="doc_type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="width_chars">15</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Вид документа</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">3</property>
<property name="margin_bottom">3</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">10</property>
<child>
<object class="GtkLabel" id="doc_serial">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="width_chars">10</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="doc_number">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="width_chars">18</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Серия и номер</property>
<property name="width_chars">15</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Удостоверение личности</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="policy_number">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="policy_company">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Полис</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkLabel" id="snils_number">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">СНИЛС</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Документы</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="bottom_padding">5</property>
<property name="left_padding">12</property>
<property name="right_padding">5</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTextView" id="notes">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
<property name="buffer">notes_buffer</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Заметки</property>
</object>
</child>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">Дополнительно</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">5</property>
<property name="margin_bottom">5</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child>
<object class="GtkListBox" id="reception_list">
<property name="width_request">400</property>
<property name="height_request">150</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child type="label">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Приёмы</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

36
res/ui/warn_win.glade Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkMessageDialog" id="warn">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Предупреждение</property>
<property name="modal">True</property>
<property name="window_position">center</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="skip_pager_hint">True</property>
<property name="gravity">center</property>
<property name="message_type">warning</property>
<property name="buttons">close</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<property name="layout_style">end</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
</interface>