Skip to content

Service for digitizing and processing blood test certificates written using Django

License

Notifications You must be signed in to change notification settings

angst-storm/analysis-processing

Repository files navigation

Обработка результатов анализов


logo


Описание

Анализы, производимые разными лабораториями, не имеют единого стандарта, в наборе и наименовании показателей, поэтому компьютерная обработка таких анализов часто очень затруднена.

Этот проект - встраиваемый веб сервис с архитектурой REST API и понятной и доступной документацией, который способен загрузить документы (анализы крови), отправленные пользователем, распознать информацию из справок, обработать ее и представить в едином табличном формате.

Решение поддерживает распознание общего анализа крови из пяти российских клиник (УГМК, Ситилаб, INVITRO, KDL, Гемотест).

Документация кода на OpenAPI (Swagger)

Видеодемонстрация работы

Презентация проекта

Telegram-канал, посвященный разработке

Демонстрация

demonstration

О проекте

Взаимодействие с API:

Административная панель

Получение результатов парсинга в ответе (возможна задержка)

  • Метод GET (Адрес: /) или переход по /: Форма с полем для отправки PDF
  • Метод POST (Поля: {client_file: файл}; Адрес: /) или отправка формы: Результат парсинга отправленного PDF

Получение результатов парсинга по id

  • Метод 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 - директория, содержащая небольшой одностраничный сайт, необходимый для отладки и демонстрации работы виджетов

Запуск

Установка ПО, необходимого для работы парсера

Tesseract

  1. Скачать установщик здесь
  2. Установить в папку analysis-processing\restapi\parsers\tesseract

Poppler

  1. Скачать архив по ссылке
  2. Распаковать в папку analysis-processing\restapi\parsers

Java

  1. Установить себе на ПК Java, скачанную по ссылке
  2. В PATH указать путь до папки bin (в директории с Java)

Запуск API на локальном хосте

  1. Открыть проект
  2. Назначить или сгенерировать виртуальную область Python, установить зависимости из requirements.txt.
  3. В папку analysis-processing положить файл с виртуальными переменными .env (скачать архив с файлом) .

Команды для терминала Python:

  1. cd restapi (переход в папку restapi)
  2. python manage.py migrate (создается база данных и внутри ее генерируются необходимые таблицы)
  3. python manage.py collectstatic (собирает все статические файлы в одну папку)
  4. python manage.py createsuperuser (запускается процесс регистрации пользователя, в следующих полях введите ник, почту и пароль)
  5. python manage.py runserver (запуск сервера)

Тесты

python manage.py test (запуск тестов для моделей хранения данных и представления API)

Запуск контейнера Docker

  1. Установить Docker Desktop
  2. Ввести команду docker-compose -f docker-compose.yml up -d

При упаковке контейнера Java, Python, Tesseract и Poppler загружаются автоматически, поэтому нужно удалить указания путей к Tesseract и Poppler в файле ./restapi/parsers/tesseract_parser.py Сами Tesseract и Poppler так же можно удалить, в контейнере они не понадобятся

About

Service for digitizing and processing blood test certificates written using Django

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •