# Lungify
## Envirenment variables
[Airflow env variables](https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#environment-variables-supported-by-docker-compose)
## Как запустить все локально
[Тот самый гайд для КФУ](https://docs.google.com/document/d/1tdyYlw8w6o7iQeg_hcoeVbqqc_dJdhzBk1F5acqoJE4/edit)
Из этого гайда мы возьмем вот что:
1. `docker pull harbor.stageogip.ru/lungify/airflow:pilot_kfu-latest`
2. `docker pull harbor.stageogip.ru/lungify/adapter:pilot_kfu-latest`
3. > Ae2Dag mappings
: {
"LungifyDefault": "default_kfu_lung"
}
4. `docker pull nvcr.io/nvidia/tritonserver:20.07-py3`
5. Скачать airflow-config из tfs для ветки `pilot_kfu` https://tfs.university.innopolis.ru/tfs/ai_lab/Medicine/_build?definitionId=123
6. Скачать dicom-adapter-config из tfs для ветки `pilot_kfu` https://tfs.university.innopolis.ru/tfs/ai_lab/Medicine/_build?definitionId=122
7. Скачать Publish dags, plugins, tests для ветки `pilot_kfu` https://tfs.university.innopolis.ru/tfs/ai_lab/Medicine/_build?definitionId=118
> Можно брать ветку `master`. В ней находится вся актуальная информация
7. Создать папку `/opt/Lungify`, если она не создана
8. Создать network `docker network create Lungify`
9. Создать `/opt/Lungify/dicom_adapter`
10. Перенести файлы из архива `config.zip` (который ранее скачивали см. пункт 5) в dicom_adapter
11. Создать `/opt/Lungify/workflow`
12. Создать `/opt/Lungify/fails`
13. Создать `/opt/Lungify/workflow/logs`
14. Скопировать из `drop.zip` (см. пункт 4) файлы в `/opt/Lungify/workflow/` (Должна остаться папка `drop`)достать содержимое drop
15. Переместить файлы из `dags.zip` `tests.zip` `plugins.zip` (из папки см. пункт 6) в `/opt/Lungify/workflow/dags`, `/opt/Lungify/workflow/tests`, `/opt/Lungify/workflow/plugins`
### Запуск адаптера
1. Перейти в dicom_adapter
2. export `IMAGE_TAG=<...>`. Посмотреть tag image `docker images`
3. `export WEB_PORT=8042`
4. Заходим на ip:8042 (где IP - ip адрес сервера, на котором поднят dicom_adapter)
> В моем случае localhost
5. `docker-compose up -d`
6. Вводим логин и пароль demo:demo
### Запуск workflow
1. Перейти в workflow
2. `export `IMAGE_TAG=<>``
3. export `CONFIG_NAME=<см. в папке configs>`. Если запускаешь локально, то в конфиге нужно убрать callback kafka и telegram
4. `export FAILS_PATH="/opt/Lungify/fails"`
5. `export PUBLIC_IP=`
6. `export WEB_PORT=8090`
7. `docker-compose up -d`
8. Перейти по ссылке http://SERVER_IP:8090/home и ввести логин и пароль airflow:airflow .
**Выдать права на папку `chmod -R 777 /opt/Lungify/`**
### Как тестить
Скачать файл https://drive.google.com/file/d/1OvQ5KdDv2PLbSl4ZVVSQc8MuBbtU5Q4w/view?usp=sharing
Удалить из конфига и файла, описывающий DAG (на данный момент это `lung.py`), всё, что связано с `kafka` и `telegram`
Запустить эту команду `storescu dicom_adapter 4242 IM_00685 -xs -aec LungifyDefault`
***Если storescu почему-то у вас не установлен***
> docker run --rm -it --name dcmtk --network Lungify -v path_to_file:/demo darthunix/dcmtk:latest /bin/sh
Переход внуть контейнера, надо ввести эту команду
> cd demo
> storescu dicom_adapter 4242 IM_00685 -xs -aec LungifyDefault
**NOTE** Проверить LungifyDefault (ae) и в конфиге файле в самом внизу при помощи **логов dicom adapter'a**
```
docker logs dicom adapter
```
Должна быть такая информация
```
Ae2Dag mappings
: {
"LungifyDefault": "default_kfu_lung"
}
```
**Отсюда и берем нужный AE**. Прописываем в storescu и в конфиг файл
**NOTE** Если study зафейлилось, то нужно его удалить из dicom adapter'а, а только потом загружать снова
Дождаться появления нового dag’a и включить: как показано на рисунке
