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