mzrepos
mzrepos - сервис просмотра содержимого репозиториев Минздрава РФ со спецификациями СЭМД
Сервис получает информацию с nsi.rosminzdrav.ru и git.minzdrav.gov.ru, после чего предоставляет доступ к ней в режиме просмотра. В репозиториях спецификаций СЭМД можно просматривать содержимое по установленным тегам, т.е. опубликованным на https://portal.egisz.rosminzdrav.ru/materials спецификациям и схематронам.
По умолчанию в каждом репозитории устанавливается версия, соответствующая последнему по времени тегу. Возможно просмотреть состояние репозитория по любому тегу.
Дополнительные возможности:
- скачать весь репозиторий спецификации СЭМД (необходима авторизация)
- скачать все спецификации СЭМД, но без pdf, doc и docx файлов. Все репозитории скачиваются на текущие состояния репозиториев. Если состояние какого-то из репозитория было установлен на тег, отличный от последнего по времени, то будут скачаны файлы в состоянии на время этого тега.
Описание структуры проекта
init.py - создание SQLite базы
База создается в папке, заданной в переменной DATA_PATH
файла prefs.py
. Для получения доступа из веб сервера к базе необходимо задать переменные APACHE_USER
и APACHE_GROUP
в файле prefs.py
значениями, которые использует веб сервер. Папке, указанной в DATA_PATH
необходимо установить владельца и группу теми же значениями, которые использует веб сервер.
prefs.py - настройки сервиса
См. пример файла. После внесения изменений в файл может потребоваться перезапуск веб сервера, чтобы настройки применились.
mzrepos.wsgi - основной скрипт
В скрипте реализованы следующие страницы веб интерфейса
index.html - просмотр списка репозиториев спецификаций СЭМД
На странице выводится список типов РЭМД, для которых имеются репозитории с руководствами по реализации. На сером фоне показываются те типы, которые уже не регистрируются РЭМД. В первой колонке выводится информация о поддержке типа СЭМД в 1С:Медицина:
- буква К означает, что СЭМД поддержан непосредственно в конфигурации
- буква Ш означает, что СЭМД поддержан через ШМД в сервисе распространения ШМД. Внизу страницы выводится сводная информация о регистрируемых типах СЭМД и их поддержке в 1С:Медицина.
repo/N - просмотр репозитория
Просмотр репозитория для СЭМД с типом РЭМД N.
file/N/name - открытие файла
Открытие файла с именем name из репозитория для СЭМД с типом РЭМД N. Файл открыватся в состоянии на активный тег
s/checkout/N/tag - чекаут
Перевод репозитория для СЭМД с типом РЭМД N в состояние на момент установки тега tag. Требуется авторизация.
s/clear_all - сброс тегов
Все репозитории переводятся в состояния, соответствующие последним по времени тегам. Требуется авторизация.
s/download_repo/N - скачивание репозитория
Скачивание репозитория для СЭМД с типом РЭМД N. Требуется авторизация.
s/download_all - скачивание всех спецификаций
Скачать все спецификации СЭМД, но без pdf, doc и docx файлов. Требуется авторизация.
s/check_validator_sch - проверка базы SCH файлов валидатора СЭМД
Открытие страницы с проверкой базы SCH файлов валидатора СЭМД (https://github.com/1CMedicine/semd_validator)
s/check_validator_xsd - проверка базы XSD файлов валидатора СЭМД
Открытие страницы с проверкой базы XSD файлов валидатора СЭМД (https://github.com/1CMedicine/semd_validator)
FNSIlist.json - настройки использования справочников ФНСИ
Массив объектов в формате JSON, где для справочников указываются следующие настройки:
- CODESYSTEM - oid справочника ФНСИ
- LOAD - если указано значение 0 (false), то справочник не загружается в сервис валидации СЭМД.
- VALIDATE_REFNAME - выполнять проверку атрибута codeSystemName в СЭМД.
- KEY - имя поля справочника ФНСИ, которое будет использоваться как ключ справочника. При проверке СЭМД это поле соотвествует атрибуту code. Если значение не указано, то берется поле, помеченное как PRIMARY в паспорте справочника.
- VALUE - имя поля справочника ФНСИ, которое будет использоваться как значение справочника. При проверке СЭМД это поле соотвествует атрибуту displayName. Если значение не указано, то берется поле, помеченное как VALUE в паспорте справочника.
- VALIDATE_VALUE - если указано значение 0 (false), то при проверке СЭМД не выполняется проверка displayName.
- REKV - список полей справочника, которые будут сохранены при загрузке справочника и будут выдаваться запросами data к сервису валидации
- COMMENT - комментарий к справочнику
Примеры записей файла:
{"CODESYSTEM":"1.2.643.5.1.13.13.99.2.604", "LOAD":0, "COMMENT":"ЛЛО"},
{"CODESYSTEM":"1.2.643.5.1.13.13.11.1039", "VALUE":"FULL_NAME"},
Установка
- Подключить модуль mod_wsgi из пакета libapache2-mod-wsgi-py3
- Скопировать файлы mzrepos.wsgi, prefs.py, init.py в папку /var/www/wsgi/mzrepos.
- Внести настройки экземпляра сервиса в prefs.py
- Запустить init.py
- Зарегистрировать приложение WSGI в apache2.conf
WSGIScriptAlias /wsgi/mzrepos /var/www/wsgi/mzrepos/mzrepos.wsgi
Ограничение доступа
Для некотрых разделов сервиса предусмотрена возможность ограничить доступ. Такие разделы начинаются с префикса s/
. Чтобы ограничения доступа заработали нужно скопировать файл auth.wsgi
в папку /var/www/wsgi/
, перечислить в нём пользователей и их пароли, а в настройки apache добавить следующий раздел.
<Location "/wsgi/mzrepos/s/">
AuthType Basic
AuthName "Restricted area"
AuthBasicProvider wsgi
WSGIAuthUserScript /var/www/wsgi/auth.wsgi
Require valid-user
</Location>
Пример содержимого файла auth.wsgi
USERS = {
"test" : "test"
}
def check_password(environ, user, password):
if user in USERS:
if password == USERS[user]:
return True
return False
return None
Описание
Сервис просмотра содержимого репозиториев Минздрава РФ со спецификациями СЭМД