Skip to content

lr131/OMSReader

Repository files navigation

Приложение для чтения данных с карт ОМС

Version от 25.03.2016

Описание

Программа считывает с карты ОМС данные и формирует из них пакет json.

Tech

Для запуска приложения потребуется:

  • Python версии 2.7 и выше (совместим с 3)
  • Linux

На OpenSuse для пакетов ACR 38 следует использовать не официальный репозиторий, а репозиторий security:chipcard. Разница в версиях и в файлах библиотеки PCSC.

  • PCSC-ACR38 - Драйвер для ACR 38 smart card reader фирмы ACS. Официальный релиз использует библиотеку PCSC-Lite .
  • PCSC-Lite-devel и Swig - для сборки библиотеки pyscard
  • [PCSC-CCID] - PCSC Driver for CCID Based Smart Card Readers and GemPC Twin Serial Reader. Эта библиотека позволяет принять данные с картридера.

Библиотеки pyscard и Werkzeug идут вместе с приложением и не требуют установки. Для Werkzeug используется версия 0.11.4, для pyscard - 1.9.

Установка и настройка:

Определите порт! По умолчанию установлен порт 5050. Если нужен другой, то после скачивания зайдите в папку run и добавьте в строку /usr/bin/omsserv.py -p 8080, где 8080 - нужный порт.

Для того, чтобы сервер запускался при старте компьютера, необходимо запустить скрипт install.sh с правами администратора. Скрипт находится в корневой папке приложения.

Старт ручками: python /usr/bin/omsserv.py

Принцип работы:

  • считывание данных происходит каждый раз, когда сервер получает запрос
  • запрос отправляется на http://localhost:8000/ методом GET.
  • Формат аргументов: param1,param2,param3
  • Пример: на запрос http://localhost:8000/?args=name,patr,sex сервер вернет словарь вида {"msg": "успешно", "data": {"patr": "Иванович", "name": "Иван", "sex": true}, "ok": 1}

Поля пакета:

  • pol_ser - Серия полиса. Поскольку у карт серии нет, поле всегда пустое.
  • pol_num: - Номер полиса
  • policy: - Номер полиса (поле в соответствии с ТФОМС)
  • family: - Фамилия
  • name: - Имя
  • patr: - Отчество
  • sex: - Пол. True - мужской, False - женский
  • bdate: - Дата рождения. Формат YYYY-MM-DD
  • country_code: - Код страны согласно ГОСТ 7.67-2003. Данные могут отсутствовать
  • country: - Кириллическое название страны. Данные могут отсутствовать
  • snils: - Снилс. Обычно отсутствует.
  • dataend: - Дата окончания действия полиса. Как правило, пустует, т.к. полис такого вида не ограничен. Формат YYYY-MM-DD.
  • bplace: - Место рождения.
  • data_make_oms: - Дата изготовления ЭП. Формат YYYY-MM-DD.
  • fimg: - Данные о формате фотографии. Предполагаются форматы JPEG И JPEG2000, но обычно поле пустует.
  • img: Данные изображения в соответствии с форматом. Чаще отсутствует.
  • ogrn: - ОГРН страховой медицинской организации.
  • okato: - ОКАТО субъекта РФ, на территории которого застрахован гражданин
  • data_start_insurance:- Дата начала страхования в текущей СМО
  • data_end_insurance: - Дата окончания страхования в текущей СМО. Поле пустое, заполнится, когда СМО сменится.
  • ecp: - Электронная цифровая подпись. Хранится в виде двоичных данных. В этой версии данное поле не записывается в пакет.

Функции:

  • bcd_to_int(bcd) - переводит число из формата BCD в формат INT. На вход принимает число в формате BCD.
  • find2elements(data, arg1, arg2) - функция ищет в списке data два идущих друг за другом элемента arg1 и arg2. Возвращает индекс arg2. Если такое сочетание не найдено,возвращает -1.
  • read_tag(data, *tags) - функция считывает из списка data данные (в нашем случае это поток байтов), обозначенные тэгами tags. На сегодняшний день функция корректно работает с двумя тэгами. Для карт ОМС этого хватает за глаза.
  • read_data(args = None) - функция принимает на вход список необходимых полей и возвращает данные, считанные с ОМС карты, которые соответствуют этим полям. Если список пуст, то по умолчанию вернет значения полей pol_ser, pol_num, policy, family, name, patr, sex, bdate.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages