Формат оповещений MQTT — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Новая страница: «== Формат файлов обновлений == Обновление представляет из себя архив 7z, со следующей струк…»)
 
(Ремарка)
 
(не показано 15 промежуточных версий этого же участника)
Строка 1: Строка 1:
== Формат файлов обновлений ==
+
== Госпитализация пациентов ==
Обновление представляет из себя архив 7z, со следующей структурой внутри архива
 
  
 +
Атрибут для подписки на топик: '''[Subscription('kis/lists/hospitalized')]'''
  
* папка '''DB''' - обновления базы данных
+
Списки подписанные на топик:
* папка '''FILES''' - обновления файлов
+
* '''TfmHospitalizedList''',
* папка '''TEHR''' - обновления ThinkEHR
+
* '''TfmHospitalizedDoctor''',
* readme.txt - текстовый файл в кодировке UTF-8 с кратким описанием обновления
+
* '''TfmHospListNurse'''
== Папка DB ==
 
  
Содержит файлы с раcширением sql
 
  
== Папка Files ==
+
=== Формат JSON ===
  
=== файл ver.ini внутри папки files ===
+
{
может содержать версии файлов в формате <относительный путь>\<имяфайла>=<версия>. Например:
+
  "mdoc_id": "b32ba1ac-327a-11e8-a4b6-0800274e4bfc",
 +
  "subject_id": "8334f4ef-7a21-42ef-8205-7fefb4fdaa17",
 +
  "depts": [{
 +
            "id": "04847bbf-d4fe-11e7-a081-0800278f9392",
 +
            "action": 1
 +
            },
 +
            {
 +
            "id": "e5e17e92-eeab-4adb-b768-d3fe327c8f3f",
 +
            "action": 2
 +
            }
 +
          ]
 +
}
  
<pre>
+
* uid медицинского документа
tst\1.txt=1.0.0.2
+
* uid пациента по базе (должен совпадать со значением идентифицирующего столбца грида)
Localization.lng=1.0.0.4
+
* набор затронуты текущим изменением отделений:
</pre>
+
** uid отделения
 +
** действие со списком:
 +
*** 1 - удалить запись
 +
*** 2 - добавить запись
 +
*** 3 - обновить данные существующей записи
  
  
 +
=== Код для вставки в хранимую процедуру ===
  
== Имя архива ==
+
perform pg_notify('mqtt',
 +
                  json_build_object('topic','kis/lists/hospitalized',
 +
                                    'payload',json_build_object('mdoc_id', <mdoc_id>,
 +
                                                                'subject_id', <subject_id>,
 +
                                                                'depts', json_build_array(json_build_object('id',<dept_id>,
 +
                                                                                                            'action',<action>))))::text);
  
<pre>
+
=== Ремарка ===
  yyyy-mm-dd-<#><Инициалы разработчика>-<Порядковый номер>-<критичность>
 
</pre>
 
  
Инициалы разработчика - из трех букв латиницей
+
Для списков не требующих пост-фильтрации на стороне клиента (общий список госпитализированных) массив отделение может быть пустым.
  
 
+
[[Категория:KIS]] [[Категория:KIS сервисы]]
Критичность
 
* ! - может потребоваться остановка
 
* w - длительные операции ()
 
* L - возможны блокировки, требуется выполнять в момент наименьшей нагрузки БД
 
 
 
Пример
 
 
 
<pre>
 
2018-03-01#zh-01.7z
 
2018-03-01#zh-04-!.7z
 
</pre>
 
 
 
=== Накопительное обновление ===
 
 
 
<pre>
 
yyyy-mm-dd-<+month>-<критичность>
 
yyyy-mm-dd-<+day>-<критичность>
 
</pre>
 
 
 
== Место ==
 
 
 
\\nas.oblteh\Public\Kis\Updates\2018
 
 
 
 
 
[[Категория:KIS]]
 

Текущая версия на 10:25, 3 октября 2018

Госпитализация пациентов

Атрибут для подписки на топик: [Subscription('kis/lists/hospitalized')]

Списки подписанные на топик:

  • TfmHospitalizedList,
  • TfmHospitalizedDoctor,
  • TfmHospListNurse


Формат JSON

{
 "mdoc_id": "b32ba1ac-327a-11e8-a4b6-0800274e4bfc",
 "subject_id": "8334f4ef-7a21-42ef-8205-7fefb4fdaa17",
 "depts": [{
            "id": "04847bbf-d4fe-11e7-a081-0800278f9392",
            "action": 1
           },
           {
            "id": "e5e17e92-eeab-4adb-b768-d3fe327c8f3f",
            "action": 2
           }
          ]
}
  • uid медицинского документа
  • uid пациента по базе (должен совпадать со значением идентифицирующего столбца грида)
  • набор затронуты текущим изменением отделений:
    • uid отделения
    • действие со списком:
      • 1 - удалить запись
      • 2 - добавить запись
      • 3 - обновить данные существующей записи


Код для вставки в хранимую процедуру

perform pg_notify('mqtt',
                  json_build_object('topic','kis/lists/hospitalized',
                                    'payload',json_build_object('mdoc_id', <mdoc_id>,
                                                                'subject_id', <subject_id>,
                                                                'depts', json_build_array(json_build_object('id',<dept_id>,
                                                                                                            'action',<action>))))::text);

Ремарка

Для списков не требующих пост-фильтрации на стороне клиента (общий список госпитализированных) массив отделение может быть пустым.