mzrepos

Форк
0
8 часов назад
Alexey Gaidukov
исправление ошибок
db6219
README.md

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"},

Установка

  1. Подключить модуль mod_wsgi из пакета libapache2-mod-wsgi-py3
  2. Скопировать файлы mzrepos.wsgi, prefs.py, init.py в папку /var/www/wsgi/mzrepos.
  3. Внести настройки экземпляра сервиса в prefs.py
  4. Запустить init.py
  5. Зарегистрировать приложение 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

Описание

Сервис просмотра содержимого репозиториев Минздрава РФ со спецификациями СЭМД

Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.