Dokumentacja API Statystyki NFZ - Leki w Programach Lekowych wersja 1.0

Informacje ogólne

Budowa API Statystyki NFZ - Programy Lekowe zrealizowana została w ramach projektu „Otwarte Dane – dostęp, standard, edukacja” w ramach programu Operacyjnego Polska Cyfrowa na lata 2014-2020.

Swagger i API Statystyki NFZ – Programy Lekowe

W celu ułatwienia korzystania z API Statystki NFZ - Programy Lekowe zdecydowaliśmy się dodać do dokumentacji Swagger UI. Jest to narzędzie umożliwiające w prosty sposób wizualizację i interakcję z zasobami API bez konieczności implementowania. Narzędzie dostępne jest w menu w sekcji Swagger

Standardowy mechanizm wyszukiwania danych

API Statystki NFZ - Programy Lekowe oferuje mechanizmy wyszukiwania z filtrowaniem pełnotekstowym po konkretnych polach oraz stronicowanie. Wszystkie parametry wyszukiwania podaje się w części query zaraz po przeszukiwanym zasobie porzedzając go znakiem pytajnika.(?)

Podaczas wyszukiwania w cześci query możemy używać standardowych pól:

page - numer strony wyników do zwrócenia. Strony numerowane są od 1. Domyślna ilość wyników na stronie opisana jest w dokumentacji Swagger UI.

limit - ilość wyników zróconych na stronie. Wartości domyślne i maksymalne zostały opisane szczegółowo w dokumentacji Swagger UI.

format - określa format zwracanych wyników. Domyślnie dane zwracane są w formacie json — JavaScript object notation.

Pozostałe pola filtrowania pełnetekstowego opisuje szczegółowo dokumentacja Swagger UI dla każdego przeszukiwanego zasobu.

Zasoby

Dane statystyczne zostały podzielone na trzy główne sekcje

Programy Lekowe

W tej sekcji znajduje się 8 zasobów zwracających dane statystyczne dotyczące wykonań refundacji aptecznych.

/drug-costs-by-drug-program

Zasób zwraca informacje o kosztach leków w podziale na programy lekowe określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-costs-by-drug-program-data (SwaggerUi).

Przykład:

/drug-costs-by-active-substance

Zasób zwraca informację o kosztach leków w podziale na substancje czynne określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-costs-by-active-substance-data (SwaggerUi).

Przykład:

/drug-costs-by-drug-program-and-active-substance

Zasób zwraca dane statystyczne dotyczące kosztów leków w podziale na programy lekowe i substancje czynną określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-costs-by-drug-program-and-active-substance-data (SwaggerUi).

Przykład:

/drug-costs-by-patient-gender

Zasób zwraca dane statystyczne dotyczące kosztów leków w podziale na płeć pacjenta określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-costs-by-patient-gender-data (SwaggerUi).

Przykład:

/drug-costs-by-patient-age

Zasób zwraca dane statystyczne dotyczące kosztów leków w podziale na wiek pacjenta określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-costs-by-patient-age-data (SwaggerUi).

Przykład:

/monthly-drug-costs

Zasób zwraca dane statystyczne dotyczące kwoty refundacji NFZ i liczbie pacjentów w podziale na miesiące określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt monthly-drug-costs-data (SwaggerUi).

Przykład:

/yearly-drug-costs

Zasób zwraca dane statystyczne dotyczące kwoty refundacji NFZ i liczbie pacjentów w podziale na lata określona parametrami wyszukiwania. Wynik żądania zgodnie ze strukturą zwraca obiekt yearly-drug-costs-data (SwaggerUi).

Przykład:

/available-periods

Zasób zwraca informacje o dostępnym zakresie dat dla których dostępne są dane statystyczne. Wynik żądania zgodnie ze strukturą zwraca obiekt available-periods-data (SwaggerUi).

Przykład:

Słowniki

W teje sekcji znajduje się 2 zasoby słownikowe.

/drug-programs

Zasób zwraca informacje o dostępnym zakresie dat dla których dostępne są dane statystyczne. Wynik żądania zgodnie ze strukturą zwraca obiekt drug-programs (SwaggerUi).

Przykład:

/active-substances

Zasób zwraca informacje o dostępnym zakresie dat dla których dostępne są dane statystyczne. Wynik żądania zgodnie ze strukturą zwraca obiekt active-substances (SwaggerUi).

Przykład:

Info

W sekcji "Info" znajduje się zasób zwracający aktualną wersję API.

Struktura danych

Dane z API zwracane są zgodnie ze standardem JSON API. W każdej odpowiedzi znajduje się co najmniej jedna z poniższych sekcji:

z zastrzeżeniem, że data i errors nie mogą wystąpić razem w jednej odpowiedzi.

Ponieważ zasoby zwracające listę wyników są stronicowane (25 wyników na stronę), dodatkowo w odpowiedziach dodawana jest sekcja links, ułatwiająca poruszanie się po API (HATEOAS).

Dostępnych w sekcji jest 5 linków:

  • first - do pierwszej strony wyników,
  • prev - do następnej strony wyników,
  • self - do aktualnej strony wyników,
  • next - do następnej strony wyników,
  • last - do ostaniej strony wyników,

Przykład:
{
  "meta": {
    ...
  },
  "links": {
    "first": "/active-substances?page=1&limit=10&format=json",
    "prev": null,
    "self": "/active-substances?page=1&limit=10&format=json",
    "next": "/active-substances?page=2&limit=10&format=json",
    "last": "/active-substances?page=14&limit=10&format=json",
    "related": null
  },
  "data": [
    "ABIRATERONI ACETAS - O - DOUSTNIE (ORAL, PER MOUTH) - 1 MG",
    "ADALIMUMABUM - P - POZAJELITOWO (PARENTERAL) - 1 MG",
    "ADEFOVIRI DIPIVOXILUM - O - DOUSTNIE (ORAL, PER MOUTH) - 1 MG",
    "AFATYNIBUM - O - DOUSTNIE (ORAL, PER MOUTH) - 1 MG",
    "AFLIBERCEPTUM - P - POZAJELITOWO (PARENTERAL) - 1 MG",
    "ALEMTUZUMABUM - PI - POZAJELITOWO DOŻYLNIE (PARENTERA-INTRAVESICULAR) - 1 MG",
    "ALGLUCOSIDASUM ALFA - P - POZAJELITOWO (PARENTERAL) - 1 MG",
    "AMBRISENTANUM - O - DOUSTNIE (ORAL, PER MOUTH) - 1 MG",
    "ANAKINRA - P - POZAJELITOWO (PARENTERAL) - 1 MG",
    "APOMORPHINI HYDROCHLORIDUM HEMIHYDRICUM - P - POZAJELITOWO (PARENTERAL) - 1 MG"
  ]
}
    

Należy zwrócić uwagę na link prev, który nie zawiera żadnej wartości (null). Spowodowane jest to użyciem domyślnych wartości paramterów (ponieważ ich nie przekazano). Domyślnie parametr page = 1, dlatego opdowiedź z API zawiera pierwszą stronę wyników dla której poprzednia nie istnieje.

data

Sekcja data zawiera dane pasujące do kryteriów wyszukiwania. W tej sekcji możemy odnaleźć różnego rodzaju struktury w zależności od przeszukiwanego zasobu.

Przykład opowiedzi na zapytanie wyszukujące dane statystyczne dot. kosztów leczenia w programie lekowym zawierającym słowo czerniak



{
  "meta": {
    "@context": null,
    "count": 3,
    "title": null,
    "page": 1,
    "url": null,
    "limit": 10,
    "provider": "Narodowy Fundusz Zdrowia",
    "date-published": "2019-07-30T15:26:00+01:00",
    "date-modified": "2019-07-31T18:46:13+02:00",
    "description": null,
    "keywords": null,
    "language": "PL",
    "content-type": "application/json; charset=utf-8",
    "is-part-of": null
  },
  "links": {
    "first": "/app-stat-api-pl/drug-costs-by-drug-program?page=1&limit=10&format=json&drugProgram=czerniak",
    "prev": null,
    "self": "/app-stat-api-pl/drug-costs-by-drug-program?page=1&limit=10&format=json&drugProgram=czerniak",
    "next": null,
    "last": "/app-stat-api-pl/drug-costs-by-drug-program?page=1&limit=10&format=json&drugProgram=czerniak",
    "related": null
  },
  "data": {
    "sums": {
      "refund": 399608888.29
    },
    "data": [
      {
        "drug-program-code": "03.0001.359.02",
        "drug-program-mz-code": "B.59",
        "drug-program-name": "LEKI W PROGRAMIE LEKOWYM - LECZENIE CZERNIAKA SKÓRY LUB BŁON ŚLUZOWYCH",
        "number-of-patients": 1410,
        "refund": 212791910.8
      },
      {
        "drug-program-code": "03.0001.372.02",
        "drug-program-mz-code": "B.72",
        "drug-program-name": "LEKI W PROGRAMIE LEKOWYM - LECZENIE CZERNIAKA SKOJARZONĄ TERAPIĄ DABRAFENIBEM I TRAMETYNIBEM",
        "number-of-patients": 532,
        "refund": 123241554.4
      },
      {
        "drug-program-code": "03.0001.348.02",
        "drug-program-mz-code": "B.48",
        "drug-program-name": "LEKI W PROGRAMIE LEKOWYM - LECZENIE CZERNIAKA SKÓRY",
        "number-of-patients": 310,
        "refund": 63575423.09
      }
    ]
  }
}

    

Lista wszystkich możliwych schematów zwracanych w sekcji data została opisana w osobnej sekcji dokumentacji - Schematy.

errors

Podczas pracy z API można natrafić na błędy, które w sposób zgodny ze standardem zawierają możliwie jak najwięcej informacji, ułatwiających rozwiązanie problemu.

Przykładowy błąd zwracany w przypadku gdy zostanie przekazany zbyt długi paramter (drugProgram):

{
  "errors": [
    {
      "id": "bf99b2fa-8b84-4488-9e6f-85e324dea9ff",
      "errorr-result": "Cannot return results",
      "errorr-reason": "Invalid length for {drugProgram} parameter",
      "errorr-solution": "Provide proper value for attribute",
      "error-help": "/errors/#6201001",
      "error-code": 6201001
    }
  ]
}
    

Struktura odpowiedzi została opisana w osobnej sekcji dokumentacji - Schematy.
Lista możliwych błędów została opisana w osobnej sekcji dokumentacji - Opis błędów

meta

Szczegóły dotyczące metadanych zostały opisanę w osobnej sekcji dokumentacji - Metadane