Процедура пересчета талонов позволяет скорректировать параметры услуг талона в соответствии с изменениями в прейскуранте, произведенными после создания данного талона. Процедура пересчета учитывает следующие изменения:
·цена на услугу;
·тип цены в наборе услуг;
·тип цены в медицинской программе;
·скидка в договоре.
Пересчет не осуществляется для следующих услуг:
·услуги, цены которых были отредактированы вручную и значение поля Свободная цена в таблице Оказанные услуги для которых равно "Да";
·услуги талонов, по которым был сгенерирован счет;
·услуги, проведенные по медицинским программам, в которые эти услуги не входили (на момент проведения).
Предусмотрено два варианта пересчета талонов: с подбором прикреплений и без подбора прикреплений. В первом случае для каждой услуги талона ищется прикрепление к медицинской программе, по которому она может быть проведена, и после выбора прикрепления запускается процедура пересчета. Во втором случае поиск прикрепления не производится: услуга остается проведенной по прикреплению (или за счет пациента), которое было указано в талоне.
Подбор прикрепления осуществляется по следующему алгоритму:
1.если услуга была проведена за счет пациента и найдено одно возможное прикрепление, услуга проводится по нему (без дополнительных сообщений);
2.если услуга была проведена за счет пациента и найдено более одного возможного прикрепления, выдается окно, где пользователю предлагается выбрать одно из возможных прикреплений;
3.если услуга была проведена по прикреплению и найдено одно возможное прикрепление, услуга проводится по найденному прикреплению (без дополнительных сообщений);
4.если услуга была проведена по прикреплению и не найдено ни одного возможного прикрепления, услуга проводится за счет пациента (без дополнительных сообщений);
5.если услуга была проведена по прикреплению и найдено более одного возможного прикрепления, среди которых то, по которому она была проведена, услуга проводится по этому же прикреплению (без дополнительных сообщений);
6.если услуга была проведена по прикреплению и найдено более одного возможного прикрепления, среди которых нет того, по которому она была проведена, выдается окно, где пользователю предлагается выбрать одно из возможных прикреплений.
Пересчет талонов запускается следующим образом:
|
1.выполнить команду меню Услуги / Талоны и с помощью фильтра отобрать талоны, которые следует пересчитать; 2.снять ограничение на количество отображаемых талонов в окне списка талонов, если такое ограничение используется; |
3.в меню кнопки Операции с талонами выбрать один из пунктов: Пересчитать талоны или Пересчитать талоны и подобрать прикрепления; 4.подтвердить вопрос о пересчете отобранных талонов. |
В процессе пересчета талонов могут возникать ситуации, требующие участия пользователя, например, при превышении максимальной стоимости лечения по договору. В этом случае можно:
·обработать ситуацию — открыть проблемный талон на редактирование и произвести необходимые изменения;
·отложить — обработать ситуацию после пересчета всех талонов;
·прервать — прервать процедуру пересчета талонов.
Пример использования пересчета талонов
При формировании прейскуранта были неверно указаны даты начала действия цен услуг, таким образом, в талоны попадали услуги с неверными ценами.
Чтобы исправить цены в талонах, требуется выполнить следующие действия:
1)исправить дату начала действия цен услуг;
2)выполнить пересчет талонов.
Первый пункт – изменение дат начала действия цен услуг – можно выполнить следующим скриптом:
disable trigger all on FM_BILLDET
GO
declare @BILL_DATE_START datetime
declare @BILL_DATE_END datetime
set @BILL_DATE_START = '2011-01-01 00:00:00.000'
set @BILL_DATE_END = '2011-02-01 00:00:00.000'
update FM_BILLDET
set FM_BILLDET.PRICE = FM_SERVPRICE.PRICE
from FM_BILLDET FM_BILLDET
inner join FM_BILL FM_BILL
on FM_BILLDET.FM_BILL_ID = FM_BILL.FM_BILL_ID
inner join FM_SERVPRICE FM_SERVPRICE
on FM_BILLDET.FM_SERV_ID = FM_SERVPRICE.FM_SERV_ID and
FM_BILLDET.FM_PRICETYPE_ID = FM_SERVPRICE.FM_PRICETYPE_ID and
FM_BILLDET.FM_DEVISE_ID = FM_SERVPRICE.FM_DEVISE_ID and
FM_SERVPRICE.DATE_FROM =
(select max (FM_SERVPRICE_SUB.DATE_FROM)
from FM_SERVPRICE FM_SERVPRICE_SUB
where FM_SERVPRICE_SUB.DATE_FROM < FM_BILL.BILL_DATE and
FM_BILLDET.FM_SERV_ID = FM_SERVPRICE_SUB.FM_SERV_ID and
FM_BILLDET.FM_PRICETYPE_ID = FM_SERVPRICE_SUB.FM_PRICETYPE_ID and
FM_BILLDET.FM_DEVISE_ID = FM_SERVPRICE_SUB.FM_DEVISE_ID)
where FM_BILL.BILL_DATE between @BILL_DATE_START and @BILL_DATE_END
-- and FM_BILL.MEDECINS1_ID in (360, 361) -- Врач талона
and FM_BILL.FM_DEP_ID in (15) -- Подразделение талона
GO
enable trigger all on FM_BILLDET
GO
В секции WHERE скрипта можно указать определенных врачей, отделения и даты талонов.
Далее соответствующие талоны отбираются с помощью фильтра в окне списка талонов и для них выполняется операция пересчета.