Спецификации API
При помощи Data Warehouse API разработчики программного обеспечения могут получить программный доступ к содержимому баз данных Европейского регионального бюро ВОЗ. Этот API позволяет найти недавно добавленные наборы данных, производить поиск по данным, скачивать данные для анализа или искать показатели и наборы данных, объединенные общей темой.
Общая структура модели данных:
1. Показатель (measure) – это ряд данных, который служит наполнением конкретного индикатора или другой измеримой категории. Иными словами, показатель вмещает в себя совокупность значений данного индикатора для всех стран, для которых он определен, или совокупность ответов этих стран на отдельный вопрос анкеты. У показателя есть метаданные и свойства (единицы измерения, тип показателя и т. д.).
2. Каждый показатель сопровождается пояснениями, в которых дается его определение, а также примечаниями по странам, в которых приводится информация о специфике данных по той или иной стране.
3. Ряд показателей может быть объединен в набор данных. У каждого набора данных также есть метаданные и свойства (владелец данных и т. д.).
4. Показатели по смежным темам также могут быть объединены в тематические классификации. Классификации позволяют запрашивать показатели, относящиеся к разным наборам данных, но связанные тематически.
Настоящая спецификация относится к Data Warehouse API версии 3.8.4. В ней есть следующие разделы:
Термины
- Data Warehouse (DW) – центральное хранилище данных здравоохранения, полученных из разных источников.
- API (программный интерфейс) – система, определяющая порядок программного взаимодействия с данными, которые хранятся в Data Warehouse. Для передачи запроса используется протокол HTTP, для передачи объектов в ответ на запрос – формат JSON (CSV).
- JSON (JavaScript Object Notation) – удобный для восприятия человеком открытый формат обмена данными, в котором данные представляются в виде пар «ключ – значение».
- CSV (comma-separated values) – простой текстовый формат для представления табличных данных, в котором столбцы и ряды разделяются запятыми.
- Метаданные определяют структуру данных, хранимых в Data Warehouse, включая такие элементы, как показатели, свойства, коды свойств показателей, коды свойств фактов и пояснения. Можно скачать все метаданные одним файлом Excel (/api/v3/export_metadata) или запрашивать выгрузку метаданных в формате Excel по отдельным показателям.
- Показатель – набор фактов с уникальным кодом и названием на двух языках, который определяет содержимое показателя. Чаще всего показатель приравнивается к индикатору.
- Факт – набор кодов свойств, описывающих значение. Отдельные факты объединяются в показатель.
- Свойство описывает показатель или факт определенным образом.
- Свойства факта описывают его измерения (например, YEAR – год, SEX – пол, VACCINATIONSTATUS – статус вакцинации).
- Свойства показателя (EXTERNID, DATA_SOURCE, UNIT_TYPE) содержат информацию о нем. DATA_SOURCE – свойство, определяющее источник данных. EXTERNID – идентификатор показателя во внешнем источнике данных (если таковой использован). UNIT_TYPE – единицы измерения.
- COUNTRY_GROUP – свойство, обозначающее группу стран, по которой имеются усредненные значения. Состав групп стран определяется связями между странами и группами стран. Пример: в группу WHO_EURO входят 53 страны Европейского региона ВОЗ, а в группу CARINFONET – страны-члены Информационной сети по вопросам здравоохранения республик Центральной Азии.
- COUNTRY – свойство, обозначающее, что данные относятся к стране, в порядке исключения – к субнациональной единице.
- Набор данных – это совокупность показателей, образующая связное, поддающееся анализу множество. Чаще всего набор данных представляет собой подборку показателей из базы данных, результат мероприятий по сбору данных, данные, полученные в рамках системы мониторинга или приведенные в аналитической публикации. Один показатель может принадлежать к нескольким наборам данных, хранящимся в Data Warehouse.
- Пояснение – текстовое поле, содержащее описание набора данных (в случае пояснения к набору данных) или показателя (в случае пояснения к показателю, в котором приводится его определение). Кроме того, в пояснениях к страновым показателям можно найти информацию о специфике данных по конкретным странам. Эта информация помогает понять особенности источника данных, набора данных или показателя.
- Классификация в контексте Data Warehouse – это своеобразное «оглавление» для набора показателей. Все показатели, принадлежащие к определенной категории в классификации, имеют отношение к соответствующей теме. Классификационная иерархия может охватывать конкретный набор данных и описывать отношения между отдельными показателями. Мастер-классификация объединяет все показатели в единую унифицированную структуру.
Стандарт написания кода в Data Warehouse построен на мнемонических принципах, для того чтобы облегчить восприятие и сделать возможным просмотр наборов данных человеком (за основу взят английский язык).
Структура URL
URL для работы с интерфейсом формируется следующим образом:
http://HOST[:PORT]/api/v3/CONTROLLER[/CODE][?QUERY_PARAMETERS]
При отсутствии каких-либо дополнительных опций структура URL выглядит так:
http://HOST/api/v3/CONTROLLER
По такому запросу будет выдан перечень имеющихся вхождений по указанному контроллеру.
Чтобы получить подробную информацию о вхождении, нужно указать его код. Указав нужные параметры запроса, можно выбрать язык ответа, применить к данным фильтр (в списке вхождений или данных внутри вхождения) или выбрать части вхождения, которые необходимо получить.
- HOST: домен веб-сервиса. Для доступа к API нужно указать домен http://dw.euro.who.int.
- PORT: номер порта веб-сервиса. Можно не указывать или указать порт HTTP по умолчанию (80).
- CONTROLLER: код контроллера для получения данных. Возможные контроллеры:
- countries
- country_groups
- data_sets
- measures
- version
- export_metadata
- export_data_set
- classifications
- categories
Каждый контроллер выдает разные виды данных. - CODE: код нужного вхождения.
- QUERY_PARAMETERS: опциональные параметры запроса, которые могут быть применимы только к некоторым запросам. Возможные параметры:
- lang – язык ответа. EN – английский, RU – русский. По умолчанию выдается ответ на английском.
- filter – может использоваться для применения фильтра к показателям или к фактам внутри показателя. Значение фильтра – список токенов, разделенных точками с запятой, в формате ATTRIBUTE:CODES_LIST.
CODES_LIST – это:
- список разделенных запятыми кодов,
- " * " — любое установленное значение,
- " $blank " — неустановленное значение,
- диапазоны вида 1999-2004 (если значение поля ATTRIBUTE является числовым),
- " ~[year] " или " [year]~ " — фильтр по ближайшему доступному году, где знак " ~ "означает направление поиска данных, например ~2001 — при отсутствии данных за 2001 г. выводятся данные за ближайший предшествующий год.
К кодам в рамках одного свойства применяется логическое ИЛИ. К разным свойствам применяется логическое И.
Атрибут COUNTRY поддерживает коды COUNTRY_GRP, так как значения CODES_LIST означают страны, относящиеся к конкретным группам стран. - output – используется при контроллерах measures и categories, чтобы выбрать те части объекта, которые необходимо получить. Возможные значения для measures: data, metadata, attributes, notes и classifications; для categories: measures и subtree. Можно задать либо одно из этих значений, либо список значений, разделенный запятыми.
- updated_since – позволяет получить информацию о показателях и источниках данных, которые были изменены после той или иной даты.
- dataState – позволяет скачивать коды и метки показателей и классификаций, которые не опубликованы в Data Warehouse.
- format – задает формат экспортируемых файлов. Используется только при экспорте и может иметь значение xlsx либо csv.
Формат ответа
Ответ на запрос Data Warehouse API направляет в формате объекта JSON. JSON – это формат обмена данными, который пригоден для чтения как компьютером, так и человеком. Структура объекта будет различаться в зависимости от контроллера.
Если запросить список стран, находящихся в составе Европейского региона ВОЗ, при помощи URL /api/v3/country_groups/WHO_EURO, будет получен следующий ответ:
{
"code":"WHO_EURO",
"short_name":"WHO European Region",
"full_name":"WHO European Region",
"countries":[
{
"code":"ALB",
"iso2":"AL",
"iso3":"ALB",
"who_code":"ALB",
"short_name":"Albania",
"full_name":"Albania"
},
{
"code":"AND",
"iso2":"AD",
"iso3":"AND",
"who_code":"AND",
"short_name":"Andorra",
"full_name":"Andorra"
},
(...)
]
}
Первые три ключа – это идентификационный код (code), присвоенный Европейскому региону ВОЗ, короткое название (short_name) и полное название (full_name). В этом примере короткое название и полное одинаковы, но они могут различаться. Короткое название может использоваться при отображении списков. Указанные свойства всегда выдаются по запросу /api/v3/country_groups/WHO_EURO, но в целом состав ключей зависит от конкретного запроса.
Далее идет блок стран (countries), в котором содержится информация о входящих в группу странах. У каждой страны несколько свойств, в данном случае code, iso2, iso3, who_code, short_name и full_name. Эти свойства всегда выдаются при запросе /api/v3/country_groups/WHO_EURO.
Ниже приводятся примеры возможных запросов в Data Warehouse.
Примеры
- Пример 1. Узнать версию API
- Пример 2. Получить список вхождений
- Пример 3. Получить подробную информацию о вхождении
- Пример 4. Выбрать язык ответа
- Пример 5. Выбрать части объекта, содержащего показатель
- Пример 6. Применить к данным фильтр
- Пример 7. Фильтровать по стране
- Пример 8. Экспортировать данные
- Пример 9. Экспортировать метаданные
- Пример 10. Получить иерархическую структуру показателя
- Пример 11. Наборы данных
Пример 1. Узнать версию API
Для того чтобы узнать текущую версию API, используйте следующий URL: /api/v3/version.
Новые версии выпускаются при существенном изменении формата ответа или обновлении функционала API. Старые версии через некоторое время выводятся из эксплуатации. Рекомендуется следить за текущей версией API и по возможности использовать последнюю версию.
Пример 2. Получить список вхождений
Можно получить список вхождений по отдельным контроллерам. Это полезно, когда нужно знать, какие объекты есть в наличии, например получить перечень наборов данных, имеющихся в Data Warehouse, или запросить список стран, их названий и кодов. Язык по умолчанию – английский, при необходимости можно получить информацию на русском.
Для того чтобы получить список вхождений, используйте один из следующих URL:
- /api/v3/countries – получить список стран.
- /api/v3/country_groups – получить список групп стран.
- /api/v3/data_sets – получить список наборов данных.
- /api/v3/measures – получить список показателей.
Пример 3. Получить подробную информацию о вхождении
Для того чтобы получить подробную информацию о вхождении, укажите его код. Информацию можно получить разными способами, что позволяет не разрабатывать функционал специально для приложения, а использовать возможности API. API предоставляет информацию всегда в одном и том же формате.
- /api/v3/countries/UKR – выдает информацию об Украине.
- /api/v3/country_groups/EU_MEMBERS – выдает информацию о группе стран EU_MEMBERS (Европейский союз).
- /api/v3/measures/H2020_1 – выдает информацию о показателе H2020_1.
Указав код вхождения в URL, вы получите подробную информацию об этом вхождении. Например, подробная информация по стране будет включать список групп стран, к которой она принадлежит; подробная информация по показателю будет содержать список метаданных, свойств, пояснений и классификаций, относящихся к этому показателю.
Пример 4. Выбрать язык ответа
Для того чтобы выбрать язык ответа, используйте параметр запроса lang. Он может принимать значения EN (английский) или RU (русский). Благодаря наличию данных на двух языках можно разрабатывать двуязычные приложения. По умолчанию (если параметр не указан) ответ выдается на английском.
- /api/v3/countries?lang=EN – информация выдается на английском.
- /api/v3/country_groups/CIS?lang=RU – информация выдается на русском.
- /api/v3/measures/H2020_1?lang=ru – также корректно; параметр lang не чувствителен к регистру.
Пример 5. Выбрать части объекта, содержащего показатель
Для того чтобы выбрать, какие части объекта, содержащего данные по показателю, вы хотите получить, нужно задать параметру output одно из следующих значений: attributes, metadata, data, notes, classifications, data_sets или dimensions – либо указать их список, разделенный запятой. Таким образом можно запросить только ту информацию, которая нужна в данный момент, например для создания таблицы или графика с использованием данных того или иного показателя.
- /api/v3/measures/H2020_1?output=data – выдает только данные показателя.
- /api/v3/measures/H2020_1?output=metadata – выдает только метаданные показателя.
- /api/v3/measures/H2020_1?output=data,attributes – выдает свойства и данные показателя без метаданных.
Пример 6. Применить к данным фильтр
Фильтр можно применять только к двум видам вхождений: показатели и факты. Отфильтровав по источнику данных (DATA_SOURCE), вы получите список показателей, имеющихся в этом источнике данных. Можно также фильтровать по году или по временному диапазону, чтобы получить данные за интересующий период.
Показатели фильтруются по свойствам, содержащим метаданные:
- /api/v3/measures?filter=DATA_SOURCE:HFA – выдает показатели, у которых в качестве источника данных указана база данных HFA.
- /api/v3/measures?filter=UNIT_TYPE:NUM_BEDS,NUM_DAYS – выдает показатели, у которых в качестве единицы измерения указано либо количество коек (NUM_BEDS), либо количество суток (NUM_DAYS).
- /api/v3/measures?filter=DATA_SOURCE:HFA,ENHIS;UNIT_TYPE:KM2 – выдает показатели, у которых источник данных – либо H2020, либо ENHIS, а единица измерения – квадратные километры.
Факты фильтруются следующим образом:
- /api/v3/measures/HFA_1?filter=SEX:FEMALE,MALE – выдает факты в рамках показателя HFA_1, у которых выставлен женский (FEMALE) или мужской (MALE) пол.
- /api/v3/measures/H2020_1?filter=YEAR:2004-2007,2011 – выдает факты в рамках показателя H2020_1, у которых свойство «год» имеет значение 2004, 2005, 2006, 2007 или 2011.
- /api/v3/measures/H2020_1?filter=YEAR:~2050 выводит факты H2020_1 за 2050 г. или при отсутствии этого значения за ближайший год, предшествующий 2050 г.
- /api/v3/measures/H2020_1?filter=YEAR:2000~ выводит факты H2020_1 за 2000 г. или при отсутствии этого значения за ближайший год после 2000 г.
- /api/v3/measures/H2020_1?filter=COUNTRY:ALB;YEAR:2002,2003;MEASURE_TYPE:AGE_STD_RATE – выдает факты показателя H2020_1, у которых страна – Албания, год – 2002 или 2003, а тип показателя – коэффициент, стандартизированный по возрасту (AGE_STD_RATE).
- /api/v3/measures/HFAMDB_1?filter=SUBNATIONAL_MDB:* – выдает факты показателя HFAMDB_1, у которых определено свойство SUBNATIONAL_MDB (субнациональные коды стран в базе данных HFA-MDB).
- /api/v3/measures/HFAMDB_1?filter=SUBNATIONAL_MDB:$blank;SEX:ALL – выдает факты показателя HFAMDB_1, у которых свойство SUBNATIONAL_MDB не определено, а свойство пола – ALL (оба).
Показатели и наборы данных также можно фильтровать по дате последнего обновления:
- /api/v3/data_sets?updated_since=2015-12-27 – выдает список кодов наборов данных, которые были обновлены после 27 декабря 2015 г.
- /api/v3/measures?updated_since=2015-12-01 – выдает список кодов показателей, которые были обновлены после 1 декабря 2015 г.
- /api/v3/measures?updated_since=2015-12-18T19:00 – выдает список кодов показателей, которые были обновлены после 19:00 18 декабря 2015 г.
В ответ на запрос определенного набора данных или показателя с параметром запроса updated_since выдается значение true, если набор данных или показатель был обновлен после определенной даты, в противном случае выдается значение false:
- /api/v3/data_sets/HBSC?updated_since=2016-01-05 – выдает true, потому что набор данных HBSC обновлялся после 5 января 2016 г.
- – выдает false, потому что набор данных H2020 не обновлялся после 09:30 19 июля 2017 г.
- /api/v3/measures/H2020_10?updated_since=2017-01-01 – выдает false, потому что показатель H2020_10 не обновлялся после 1 января 2017 г.
Пример 7. Фильтровать по стране
Факты в составе показателя можно фильтровать по стране. Это полезно, когда нужно ограничить круг запрашиваемых данных и работать только с конкретными странами. Есть также два способа работать с группами стран: задав фильтр COUNTRY со значением $blank или фильтр COUNTRY_GRP со значением *. Примеры:
- /api/v3/measures/H2020_1?filter=COUNTRY:BGR,AUT,UKR – выдает факты в составе показателя H2020_1, у которых в качестве страны указана Болгария, Австрия или Украина.
- /api/v3/measures/H2020_1?filter=COUNTRY:* – выдает факты в составе показателя H2020_1, у которых указана страна.
- /api/v3/measures/H2020_1?filter=COUNTRY:$blank;YEAR:2003 – выдает факты в составе показателя H2020_1, у которых не указана страна и в качестве года указано 2003.
Пример 8. Экспортировать данные
Можно экспортировать данные в формате CSV или Excel, чтобы работать с ними в приложениях, не подключенных к API, например в Excel. При экспорте показателей по умолчанию используется формат Excel.
Ответ на каждый запрос на экспортирование (для показателя или набора данных) поступает в формате JSON.
- /api/v3/export/H2020_1 возвращает данные для показателя H2020_1.
{
"status": "InQueue",
"time_elapsed_seconds": 0,
"check_status_url":"/api/v3/export/status/c2df1c001eb64309b12f97a920bc3ecc"
}
|
Первое свойство – код состояния процесса экспортирования. Перечень возможных состояний:
- «InQueue» – файл в очереди на обработку;
- «Processing» – запущен процесс создания файла;
- «Generated» – файл создан и готов для скачивания;
- «Failed» – не удалось создать файл.
Второе свойство – «time_elapsed_seconds» – отражает время, прошедшее в секундах с момента запроса файла. Свойство присутствует лишь во время состояний «InQueue» и «Processing». Свойство «check_status_url» содержит URL для проверки хода процесса экспортирования во время состояний «InQueue» и «Processing».
Когда создание файла завершается и он становится доступным для скачивания, отображается следующий ответ:
{
"status": "Generated",
"generated_time": "2018-01-21T13:45:21.2249016",
"file_size_kb": 59,
"download_url":"/api/v3/export/download/6522933299f54d20b58dd013b506dd2"
}
|
Свойство «generated_time» представляет собой дату и время создания файла, представленные в формате ISO. Свойство «file_size_kb» показывает размер созданного файла в килобайтах. Свойство «download_url» содержит URL для прямого доступа к файлу.
Ниже представлены примеры URL для экспортирования с применением различных фильтров:
Экспорт одного показателя:
- /api/v3/export/H2020_1 – экспортировать Excel-файл с данными показателя H2020_1.
- /api/v3/export/H2020_1?format=xlsx – экспортировать Excel-файл с данными показателя H2020_1.
- /api/v3/export/H2020_1?format=csv&lang=ru – экспортировать CSV-файл с данными показателя H2020_1 на русском.
Можно экспортировать несколько показателей в одном файле:
- /api/v3/export?code=H2020_1,H2020_2 – экспортировать данные показателей H2020_1 и H2020_2 в одном файле Excel.
- /api/v3/export?code=HFA_1,ENHIS_12,ENHIS_32&format=csv&lang=ru – экспортировать файл ZIP, который содержит три файла CSV с данными показателей HFA_1, ENHIS_13 и ENHIS_32 на русском языке.
Возможно также экспортировать набор данных или некое подмножество содержащихся в нем показателей. Если нужно работать со всеми показателями в режиме оффлайн, можно экспортировать набор данных целиком:
- /api/v3/export_data_set/H2020 – экспортировать zip-файл который содержит метаданные и данные по показателям, которые принадлежат к набору данных H2020.
- /api/v3/export_data_set/H2020?measures=H2020_1,H2020_2,H2020_3 – экспортировать zip-файл который содержит метаданные и данные по показателям H2020_1, H2020_2 и H2020_3 из набора данных H2020.
Если нужна только какая-то конкретная часть показателя или набора данных, можно фильтровать экспортированные факты показателя по свойствам. Например, в базе данных HFAMDB имеются факты на национальном и субнациональном уровне, и можно выставить фильтр так, чтобы получить только те данные, которые необходимы. Таким образом, если вам не нужны факты по всем показателям, содержащимся в наборе данных, при экспорте следует использовать фильтр:
- /api/v3/export/HFAMDB_1?filter=SUBNATIONAL_MDB:$blank – экспортировать файл Excel с фактами показателя HFAMDB_1, у которых не определено свойство SUBNATIONAL_MDB.
- /api/v3/export/HFAMDB_1?filter=SUBNATIONAL_MDB:*&format=csv&lang=ru – экспортировать файл CSV на русском с фактами показателя HFAMDB_1, у которых определено свойство SUBNATIONAL_MDB.
- /api/v3/export_data_set/H2020?filter=COUNTRY_GRP:NORDIC – экспортировать zip-файл который содержит метаданные и данные по показателям, принадлежащими к набору данных H2020. В файл включаются только факты, относящиеся к группе стран NORDIC (страны Северной Европы).
- /api/v3/export_data_set/H2020?measures=H2020_1,H2020_2,H2020_3&filter=COUNTRY:UKR – экспортировать zip-файл который содержит метаданные и данные по показателям H2020_1, H2020_2 и H2020_3 из набора данных H2020. В файл включаются только факты, относящиеся к Украине.
Пример 9. Экспортировать метаданные
Можно экспортировать часть метаданных или все метаданные, содержащиеся в Data Warehouse. Это делается в тех случаях, когда необходимо работать с метаданными и данными в режиме оффлайн, не имея непрерывного доступа к API. Метаданные экспортируются только в формате Excel:
- /api/v3/export_metadata – экспортировать файл со всеми метаданными.
- /api/v3/export_metadata?dataState=unpublished – экспортировать файл с метаданными неопубликованных показателей и классификаций.
- /api/v3/export_metadata?dataState=all – экспортировать файл с метаданными всех показателей и классификаций, хранимых в Data Warehouse.
- /api/v3/export_metadata/measure – экспортировать файл с метаданными показателей.
- /api/v3/export_metadata/classification – экспортировать файл с метаданными классификаций.
Пример 10. Получить иерархическую структуру показателя
Запрос classifications позволяет получить список имеющихся классификаций показателей. Классификации – это средство организованного хранения показателей, поэтому их можно просматривать иерархически.
- /api/v3/classifications – выдает список классификаций показателей.
При помощи контроллера categories можно получить подробную информацию о классификациях, например о подкатегориях или показателях, которые содержатся в той или иной подкатегории:
- /api/v3/categories/D – выдает всё древо классификации D с категориями, подкатегориями, подкатегориями следующего уровня (если они существуют) и показателями, которые к ним отнесены.
- /api/v3/categories/D03_00 – выдает показатели, которые отнесены к категории D03_00 и ее подкатегориям (если таковые есть).
- /api/v3/categories/D03_00?output=measures – выдает показатели, отнесенные к категории D03_00, без учета ее подкатегорий.
- /api/v3/categories/D03_00?output=subtree – выдает список подкатегорий, имеющихся внутри категории D03_00, без отнесенных к ним показателей.
- /api/v3/categories – выдает всё древо классификации для всех классификаций с перечислением показателей, отнесенных к каждой категории.
- /api/v3/categories?output=subtree – выдает всё древо классификации для всех классификаций без учета отнесенных к ним показателей.
- /api/v3/measures/HFA_1?output=classifications – каждый показатель имеет свойство classifications, в котором содержится список категорий, к которым отнесен этот показатель в соответствии с каждой классификацией. При помощи этого запроса можно получить список категорий, к которым отнесен показатель, с тем чтобы запросить тематически связанные показатели.
Пример 11. Наборы данных
Можно запросить список наборов данных, имеющихся в Data Warehouse, или список показателей, представленных в том или ином наборе. Такие запросы позволяют получить общую информацию о том, какие данные имеются в Data Warehouse.
- /api/v3/data_sets – выдает список всех имеющихся наборов данных.
- /api/v3/data_sets/H2020 – выдает список всех показателей, содержащихся в указанном наборе данных.
Для того чтобы получить данные по показателю в контексте определенного набора данных:
- /api/v3/data_sets/H2020/H2020_1 – выдает данные по показателю H2020_1 в контексте набора данных H2020 – со списком стран, определенным для этого набора, пояснениями к набору и т. д.