Программа считывает с карты ОМС данные и формирует из них пакет json.
Для запуска приложения потребуется:
- 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-DDcountry_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.