Анализы, производимые разными лабораториями, не имеют единого стандарта, в наборе и наименовании показателей, поэтому компьютерная обработка таких анализов часто очень затруднена.
Этот проект - встраиваемый веб сервис с архитектурой REST API и понятной и доступной документацией, который способен загрузить документы (анализы крови), отправленные пользователем, распознать информацию из справок, обработать ее и представить в едином табличном формате.
Решение поддерживает распознание общего анализа крови из пяти российских клиник (УГМК, Ситилаб, INVITRO, KDL, Гемотест).
Документация кода на OpenAPI (Swagger)
Telegram-канал, посвященный разработке
- Переход по /admin/
- Метод GET (Адрес: /) или переход по /: Форма с полем для отправки PDF
- Метод POST (Поля: {client_file: файл}; Адрес: /) или отправка формы: Результат парсинга отправленного PDF
- Метод GET (/blood-tests/) или переход по адресу вернет список PDF файлов, результат парсинга которых сохранен в базу данных
- Метод POST (Поля: {client_file: файл}, Адрес: /blood-tests/) вернет ID результатов парсинга отправленного PDF
- Метод GET (/blood-tests/id/) или переход по адресу вернет результат парсинга PDF файла (хранящийся по ID)
Код для вставки виджета на страницу:
<div id="unique-id"></div>
<script src="https://analysis-processing.herokuapp.com/static/widget.js" type="text/javascript"></script>
<script type="text/javascript">
widgetManager.init("unique-id");
</script>При желании, unique-id можно заменить на любой другой уникальный id (заменить необходимо в обоих местах).
Для взаимодействия с результатом работы API в объекте widgetManager предусмотрен метод actionWithResult(res), принимающий на вход десериализованный объект ответа. Достаточно переопределить этот метод объекта (по умолчанию метод выводит всплывающее окно alert с результатом парсинга).
Структура проекта:
- restapi - директория, содержащая весь основной код Django REST API
- api - раздел, содержащий интерфейсы взаимодействия пользователя с API
- parsers - раздел, содержащий код парсера документов и вспомогательные функции
- restapi - раздел, содержащий файлы, необходимые для работы Django
- client_site - директория, содержащая небольшой одностраничный сайт, необходимый для отладки и демонстрации работы виджетов
- Скачать установщик здесь
- Установить в папку
analysis-processing\restapi\parsers\tesseract
- Скачать архив по ссылке
- Распаковать в папку
analysis-processing\restapi\parsers
- Установить себе на ПК Java, скачанную по ссылке
- В PATH указать путь до папки bin (в директории с Java)
- Открыть проект
- Назначить или сгенерировать виртуальную область Python, установить зависимости из
requirements.txt. - В папку
analysis-processingположить файл с виртуальными переменными.env(скачать архив с файлом) .
cd restapi(переход в папку restapi)python manage.py migrate(создается база данных и внутри ее генерируются необходимые таблицы)python manage.py collectstatic(собирает все статические файлы в одну папку)python manage.py createsuperuser(запускается процесс регистрации пользователя, в следующих полях введите ник, почту и пароль)python manage.py runserver(запуск сервера)
python manage.py test (запуск тестов для моделей хранения данных и представления API)
- Установить Docker Desktop
- Ввести команду
docker-compose -f docker-compose.yml up -d
При упаковке контейнера Java, Python, Tesseract и Poppler загружаются автоматически, поэтому нужно удалить указания путей к Tesseract и Poppler в файле ./restapi/parsers/tesseract_parser.py Сами Tesseract и Poppler так же можно удалить, в контейнере они не понадобятся

