# Общие принципы

Портал госпитализации имеет единый интерфейс загрузки данных. Для обращения к интерфейсу отправляется запрос вида:

```
#!php

/udata/data/uploadInterface/{$type}/{$sync}
```


Параметры:

* $type - тип загружаемых данных [branch, beds, direction и т.д.]
* $sync - режим загрузки данных [1 - синхронный, 0 - асинхронный]

Портал госпитализации поддерживает 2 режима загрузки данных - синхронный и асинхронный. Синхронный метод возвращает результат сразу после выполнения запроса на загрузку данных, асинхронный - после обработки данных сервером очередей.

#### Асинхронная загрузка

При асинхронной загрузке данных, в формат запроса для корневой ноды root добавляются дополнительные атрибуты:

* key - уникальный идентификатор файла
* ip - IP адрес сервера, на который надо отправить результат загрузки
* port - порт

**Пример запроса для асинхронной загрузки**

```
#!xml

<?xml version="1.0" encoding="UTF-8"?>
<root key="3400" ip="127.0.0.1" port="30">
	...
</root>
```


**Пример ответа при асинхронной загрузке**


```
#!xml

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="data" method="uploadInterface" generation-time="0.098592">
    <response>
        <code>200</code>
        <data>
            <key>3400</key>
            <is_success>1</is_success>
            <id>...</id>
        </data>
    </response>
</udata>
```

#### Синхронная загрузка

При синхронной загрузке данных ответ возвращается сразу после обработки данных в ответ на запрос.

**Пример запроса для синхронной загрузки**

```
#!xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
	...
</root>
```


**Пример ответа при синхронной загрузке**


```
#!xml

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="data" method="uploadInterface" generation-time="0.098592">
    <response>
        <code>200</code>
        <data>
            <is_success>1</is_success>
            <id>...</id>
        </data>
    </response>
</udata>
```

#### Какой режим выбрать?
Общие рекомендации сводятся к следующим пунктам:

* Если загрузка данных критична и необходимо максимально быстрое получение ответа используйте синхронный режим.
* Если загрузка данных не критична по скорости получения ответа - используйте асинхронный режим.