---
# System prepended metadata

title: Lungify

---

# 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 и включить: как показано на рисунке

![](https://i.imgur.com/ha78i4o.png)

