Диплом: Разработка программы по оформлению медико-экономической экспертизы и экспертизы качества стационарной медицинской помощи

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
81
 Выборка записей с летальным исходом
 Выборка записей с пересечением сроков
 Просмотр и печать
 Акт медико-экономического контроля
 Акт результатов медико-экономической экспертизы
 Акт результатов экспертизы качества
 Выход
Рис. 15 Главная форма программы
В соответствии с пунктом 1.2.2 разрабатываем в Delphi следующую
форму для получения документа «Акт результатов медико-экономической
экспертизы»
Рис. 16 Шаблон для формирования акта результатов
медико-экономической экспертизы или экспертизы качества
2.2.3. Характеристика результатной информации
82
Прежде чем формировать акт результатов медико-экономической
экспертизы, необходимо проверить за какой период выполнялись
экспертизы данного вида. Для получения информации о выполненных
медико-экономических экспертизах создаём следующий запрос к базе
данных:
declare @KodLPU smallint
set @KodLPU = :KodLPU
select mesEx, godEx
,(select sum(ex2.Sum_Ex-r5.sum_before) from Reestr r5 (nolock)
inner join Expert ex2 (nolock) on --ex2.Num_Exp=isNull(r5.Num_Ex,0)
ex2.NumRee=r5.NumRee and ex2.DaySt=r5.DaySt and
ex2.Num_PP=r5.Num_PP
and ex2.Kod_Otd=r5.Kod_Otd and ex2.Profil=r5.Profil
inner join FIO_Exp f2 (nolock) on f2.Num_Ex=isNull(r5.Num_Ex,0)
where r5.Expert=1 and f2.Expert=1
and datename(month,r5.Date_Ex) = mesEx
and year(r5.Date_Ex) = godEx and r5.NumRee in
(select NumRee from SpisRee s (nolock) where Kod_LPU=@KodLPU ))
as ExK
,(select sum(ex2.Sum_Ex-r5.sum_before) from Reestr r5 (nolock)
inner join Expert ex2 (nolock) on --ex2.Num_Exp=isNull(r5.Num_Ex,0)
ex2.NumRee=r5.NumRee and ex2.DaySt=r5.DaySt and
ex2.Num_PP=r5.Num_PP
and ex2.Kod_Otd=r5.Kod_Otd and ex2.Profil=r5.Profil
inner join FIO_Exp f2 (nolock) on f2.Num_Ex=isNull(r5.Num_Ex,0)
where r5.Expert=1 and f2.Expert=0
and datename(month,r5.Date_Ex) = mesEx
and year(r5.Date_Ex) = godEx and r5.NumRee in
(select NumRee from SpisRee s (nolock) where Kod_LPU=@KodLPU ))
as MEcEx
,mesNum
from (select distinct
datename(month,r5.Date_Ex) as mesEx, year(r5.Date_Ex) as godEx,
month(r5.Date_Ex) as mesNum
from Reestr r5 (nolock)
inner join Expert ex2 (nolock) on --ex2.Num_Exp=isNull(r5.Num_Ex,0)
ex2.NumRee=r5.NumRee and ex2.DaySt=r5.DaySt and
ex2.Num_PP=r5.Num_PP
and ex2.Kod_Otd=r5.Kod_Otd and ex2.Profil=r5.Profil
inner join FIO_Exp f2 (nolock) on f2.Num_Ex=isNull(r5.Num_Ex,0)
-- where r5.Expert=1 and f2.Expert=1 and r5.NumRee in
where r5.Expert=1 and r5.NumRee in
(select NumRee from SpisRee s (nolock) where Kod_LPU=@KodLPU )
) EK
order by godEx desc, mesNum desc
Данный запрос построен таким образом, что его можно
использовать для выбора периода, за который будет формироваться акт
результатов экспертизы качества в соответствии с пунктом 1.2.3. Так как
структура акта результатов экспертизы качества идентична структуре акта
результатов медико-экономической экспертизы, то для формирования акта
используем один и тот же шаблон (рис. 16). Следовательно, можно
использовать один и тот же запрос и для выборки данных для
83
формирования актов результатов медико-экономической экспертизы или
экспертизы качества, задавая соответствующий параметр,
например[46.стр.205]:
/* CtrlStP(quAct2) */
declare @KodLPU smallint, @godEx smallint, @mesEx tinyint, @Ex tinyint
select @KodLPU = :KodLPU, @godEx = :godEx, @mesEx = :mesEx, @Ex = :Ex
--select @KodLPU = 8685, @godEx = 2009, @mesEx = 6, @Ex = 1
--select @KodLPU = 218, @godEx = 2010, @mesEx = 05, @Ex = 0
if exists( select * from vw_mesExAdd EK where Kod_LPU=@KodLPU
and godEx = @godEx and mesNum = @mesEx and Ex = @Ex
)
select * from (
select datename(month,s.period)+' '+convert(char(4),year(s.period))as nam_Ree,
right(convert(varchar(8),s.period,4),5) as period, EK.NumRee as Ree,
r5.Num_PP, r5.DaySt, r5.Nozo, r5.Tarif as TarifLPU,
case isNull(r5.Day_opl,0) when 0 then convert(numeric(8,2),0) else
convert(numeric(8,2),r5.sum_before/r5.Day_opl)end as TarifOpl,--t.summa as
TarifSK,
r5.Ukdl, r5.S_day, r5.Day_opl, d.Name_otd, p.Prof_name,
ex2.Kod_Otd as Otd, ex2.Profil as Prof, ex2.UKDL_Ex, ex2.day_ex,
case isNull(ex2.day_ex,0) when 0 then convert(numeric(8,2),0) else
convert(numeric(8,2),ex2.Sum_Ex/ex2.day_ex)end as tarif_ex,
ex2.Sum_Ex as ExK, r5.sum_before as Opl, f2.fio_Ex,
r5.family, convert(varchar(8),r5.date_R,4) as date_R, r5.Polis_Num,
ltrim(isNull(sh.punkt,'-')) as punkt,
isNull(sh2.Sum_Shtr,convert(numeric(12,2),0)) as Sum_Shtr,
convert(varchar(180),r5.note) as note
from vw_mesExAdd EK
inner join Reestr r5 (nolock) on r5.Num_PP=EK.Num_PP and r5.NumRee=EK.NumRee
inner join Expert ex2 (nolock) on --ex2.Num_Exp=isNull(r5.Num_Ex,0)
ex2.NumRee=EK.NumRee and ex2.Num_PP=EK.Num_PP
left outer join ExpShtr sh2 (nolock) on sh2.Num_Exp=ex2.Num_Exp
left outer join Shtraf sh (nolock) on sh.num_punkt=sh2.num_punkt
inner join FIO_Exp f2 (nolock) on f2.Num_Ex=isNull(r5.Num_Ex,0)
inner join SpisRee s (nolock) on s.NumRee=r5.NumRee
left outer join departLPU d (nolock) on d.kod_otd=r5.kod_otd and
d.Kod_LPU=@KodLPU
left outer join profil p (nolock) on p.profil=r5.profil
where EK.Kod_LPU=@KodLPU
and godEx = @godEx and mesNum = @mesEx and Ex = @Ex
union
select datename(month,s.period)+' '+convert(char(4),year(s.period))as nam_Ree,
right(convert(varchar(8),s.period,4),5) as period, EK.NumRee as Ree,
r5.Num_PP, r5.DaySt, r5.Nozo, r5.Tarif as TarifLPU,
case isNull(r5.Day_opl,0) when 0 then convert(numeric(8,2),0) else
convert(numeric(8,2),r5.sum_before/r5.Day_opl)end as TarifOpl,--t.summa as
TarifSK,
r5.Ukdl, r5.S_day, r5.Day_opl, d.Name_otd, p.Prof_name,
ex2.Kod_Otd as Otd, ex2.Profil as Prof, ex2.UKDL_Ex, ex2.day_ex,
case isNull(ex2.day_ex,0) when 0 then convert(numeric(8,2),0) else
convert(numeric(8,2),ex2.Sum_Ex/ex2.day_ex)end as tarif_ex,
ex2.Sum_Ex as ExK,
case when EK.Num_PP in (select Num_PP from Expert ex3(nolock)
where ex3.NumRee=EK.NumRee and ex3.Num_PP=EK.Num_PP)
then 0 else r5.sum_before end as Opl,
f2.fio_Ex, r5.family, convert(varchar(8),r5.date_R,4) as date_R,
r5.Polis_Num,
ltrim(isNull(sh.punkt,'-')) as punkt,
isNull(sh2.Sum_Shtr,convert(numeric(12,2),0)) as Sum_Shtr,
convert(varchar(180),r5.note) as note
from vw_mesExAdd EK
inner join Reestr r5 (nolock) on r5.Num_PP=EK.Num_PP and r5.NumRee=EK.NumRee
inner join AddExpert ex2 (nolock) on
ex2.NumRee=EK.NumRee and ex2.Num_PP=EK.Num_PP
left outer join ExpShtr sh2 (nolock) on sh2.Num_Exp=ex2.Num_Exp
left outer join Shtraf sh (nolock) on sh.num_punkt=sh2.num_punkt
84
inner join FIO_Exp f2 (nolock) on f2.Num_Ex=isNull(r5.Num_AddEx,0)
inner join SpisRee s (nolock) on s.NumRee=r5.NumRee
left outer join departLPU d (nolock) on d.kod_otd=r5.kod_otd and
d.Kod_LPU=@KodLPU
left outer join profil p (nolock) on p.profil=r5.profil
where EK.Kod_LPU=@KodLPU
and godEx = @godEx and mesNum = @mesEx and Ex = @Ex
) spis_ex order by Ree, Otd, Prof, family
else
select 'Нет экспертиз' as nam_Ree,
'-' as period, 0 as Ree, 0 as Num_PP, 0 as DaySt, '-' as Nozo,
convert(numeric(8,2),0)as TarifLPU, convert(numeric(8,2),0)as TarifOpl,
-- convert(numeric(8,2),0)as TarifSK,
convert(numeric(5,3),0)as Ukdl, 0 as S_day, 0 as Day_opl, '-' as Name_otd,
'-' as Prof_name, 0 as Otd, 0 as Prof,
convert(numeric(5,3),0) as UKDL_Ex, 0 as day_ex,
convert(numeric(8,2),0) as tarif_ex, convert(numeric(12,2),0) as ExK,
convert(numeric(12,2),0) as Opl, '-' as fio_Ex,
'-' as family, '-' as date_R, '-' as Polis_Num,
'-' as punkt, convert(numeric(12,2),0) as Sum_Shtr, '' as note
2.3. Программное обеспечение задачи
2.3.1. Общие положения
Работа программы начинается с запуска главного модуля в режиме
запрета всех функциональных возможностей программы кроме настройки
доступа к базе данных, идентификации пользователя и пункта меню
«Выход».
Настройка доступа к базе данных осуществляется выбором пункта
меню «Параметры/ Настройка подключения к серверу баз данных»
главного модуля (рис. 17)
Рис. 17 Форма для настройки подключения к серверу баз данных
По нажатию кнопки «ОК» результат настройки записывается в INI-
файл и завершается работа модуля. Проверка верности введенных данных
не проверяется. По нажатию кнопки «Омена» или стандартных средств
закрытия окна, например, «Alt+F4», введенные данные не сохраняются и
остаются прежние настройки доступа к базе данных.
85
Для начала работы с программой необходимо пройти
идентификацию пользователя (рис 18), выбрав пукт меню
«Парметры/Подключение к серверу баз данных» главного модуля или
нажать кнопку на панели инструментов (рис. 15).
Рис. 18 Форма идентификации пользователя
Далее после успешной регистрации, в зависимости от ситуации,
могут выполняться любые функции, заложенные в программное средство
дополнительного контроля реестров стационарной и
стационарозамещающей медицинской помощи. Наиболее вероятна
следующая последовательность работы врача-эксперта по оплате и
контролю качества оказанной стационарной и стационарозамещающей
медицинской помощи. Вначале осуществляется приём реестров в
программе «Контроль реестров стационаров». После этого в программе
дополнительного контроля можно сформировать и распечатать медико-
экономического контроля (МЭК). Акт МЭК формируется по выбору
пункта меню «Просмотр и печать/Акт медико-эконмического контроля»
следующей процедурой:
procedure TfrMain.m_prnAct1Click(Sender: TObject);
begin
iAct:=1;
frKeySelect.Caption:='Акт медикоэкономического контроля';
if frKeySelect.ShowModal=mrOk then
begin
//try dm.quAct1.Active:=false; except end;
dm.quAct1.Parameters.ParamByName('KodLPU').Value:=iKodLPU;
dm.quAct1.Parameters.ParamByName('NumRee').Value:=iNumRee;
if dm.quAct1.Active then
86
dm.quAct1.Requery(dm.quAct1.ExecuteOptions)
else
dm.quAct1.Open;
//frErr.ShowModal;
qrAct1.QRLabel7.Caption:=frKeySelect.eLPU.Text+' за '+frKeySelect.eRee.Text;
sumOtd:=0;
sumItog:=0;
qrAct1.Preview;
end;
end;
Как видно по тексту программного кода акт МЭК формируется по
шаблону (рис. 12) только после выбора соответсвующего реестра в модуле
«Определение параметров» (рис. 13; frKeySelect).
2.3.2. Характеристика базы данных
При определении парметров вначале выбирается ЛПУ. Для выбора
ЛПУ используется форма, представленная на рисунке 19.
Рис 19 Форма для выбора ЛПУ
2.3.3. Структурная схема пакета
87
Вызов формы осуществляется по нажатию кнопки с тремя точками
поля «Выбор ЛПУ» (см. рис. 13). Для вызова формы и определения кода
ЛПУ используем следующий программный код:
procedure TfrKeySelect.spbLPUClick(Sender: TObject);
var sss: string;
begin
if frLPU.ShowModal=mrOk then
begin
iKodLPU:=dm.quLPUKod_LPU.AsInteger;
sss:=eLPU.Text;
eLPU.Text:='('+dm.quLPUKod_LPU.AsString+') '+dm.quLPUName.AsString;
if sss<>eLPU.Text then
begin
if iAct=1 then
eRee.Text:='Выбор реестра ЛПУ'
else
eRee.Text:='Выбор даты экспертизы';
iNumRee:=0;
end;
eRee.Color:=clWindow;
end;
end;
Для выбора принятого реестра ЛПУ используем форму,
представленную на рис. 20.
88
Рис 20 Форма для выбора принятого реестра ЛПУ
Для вызова формы и определения регистрационного номера реестра
ЛПУ используем следующий программный код[47.стр.33]:
procedure TfrKeySelect.spbReeClick(Sender: TObject);
begin
if iAct=1 then
begin
dm.quSpisRee.Active:=false;
dm.quSpisRee.Parameters.ParamByName('KodLPU').Value:=
iKodLPU; //dm.quLPUKod_LPU.AsInteger;
dm.quSpisRee.Active:=true;
if frSpisRee.ShowModal=mrOk then
begin
eRee.Text:=dm.quSpisReeimMes.AsString+' '+dm.quSpisReeGod.AsString;
iNumRee:=dm.quSpisReeNumRee.AsInteger;
end;
end else begin
dm.quSpisEx2.Active:=false;
dm.quSpisEx2.Parameters.ParamByName('KodLPU').Value:=
iKodLPU; //dm.quLPUKod_LPU.AsInteger;
dm.quSpisEx2.Active:=true;
if frSpisEx.ShowModal=mrOk then
begin
eRee.Text:=dm.quSpisEx2mesEx.AsString+' '+dm.quSpisEx2GodEx.AsString;
iMes:=dm.quSpisEx2mesNum.AsInteger;
iGod:=dm.quSpisEx2GodEx.AsInteger;
iNumRee:=0;
89
end;
end;
end;
Для просмотра и печати акта медико-экономического контроля
используем встроенные возможности Quick Report.
Рис. 21 Акт медико-экономической экспертизы (МЭК)
Далее врач-эксперт формирует выборки для проведения медико-
экономической экспертизы и/или для запроса исторй болезней для
проведения экспертизы качества (рис 22). Сформированные выборки (рис.
23) служат основой для медико-экономического анализа и обора записей
для проведения экспертизы качества. Медико-экономическая экспертиза и
экспертиза качества выполняются в программе «Контроль реестров
стационаров» (пункт 1.1).
90
Рис. 22 . Формирование данных для проведения медико-экономической
экспертизы или для запроса историй болезней для проведения экспертизы
качества
Рис. 23 Выборка записей по коду нозологии
2.3.4. Описание программных модулей
После проведения медико-экономической экспертизы или
экспертизы качества в конце месяца или в начале следующего за датой
проведения экспертиз формируются и распечатываются «Акт результатов
медикоэкономической экспертизы» и «Акт результатов экспертизы
качества».
Для формирования документа «Акт медико-экономической
экспертизы» вызывается модуль «Определение параметров» (рис. 13)
выбором пункта меню «Просмотр и печать/Акт результатов медико-

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран