Skip to content

Methodology

This page documents how NFZ Terminy obtains, processes, and presents wait-time data for services funded by Poland's National Health Fund (NFZ). The goal is full transparency — any patient, journalist, or researcher should be able to verify where the numbers on this site come from.

Where the data comes from

All queue data is fetched from the public NFZ API (api.nfz.gov.pl, app-itl-api v1.3) — specifically from the queues endpoint that returns appointment-availability information. This is the same dataset that powers the official terminyleczenia.nfz.gov.pl portal. We do not use private sources, we do not purchase data, and we do not collect information directly from facilities.

Specialty mapping

The NFZ API exposes data as so-called "benefit types" — over 340 of them. To present meaningful categories to users (e.g. "Cardiologist", "Pediatric dentist"), we group these types into 234 mapped specialties. The mappings are maintained manually and are visible in the service's admin panel. For the 27 most frequently searched specialties we also maintain linguistic aliases (for example "eye doctor" as a synonym of "ophthalmology").

Which wait times we display

For each queue, NFZ reports two values: one for stable (planned) cases and one for urgent cases. NFZ Terminy displays the stable wait time by default — it is the most common case and is comparable across facilities. The number is expressed in days and is taken directly from the API response; we do not perform additional adjustments or time averaging. The "shortest wait" shown on a results page is simply the minimum value returned by the API for the relevant group of facilities.

Update cadence

Synchronization with the NFZ API runs once per day and loads fresh data into the service's local database. Visitor pages, however, are served from a Next.js Incremental Static Regeneration cache that refreshes on a 7-day cadence — a deliberate trade-off that keeps hosting affordable across 144,000+ pages. The date you actually see on a page reflects the moment of its last regeneration and is shown in the footer as "Data source: api.nfz.gov.pl (synced DD MMM YYYY)". A given page can therefore lag the live NFZ API by up to 7 days.

Facility deduplication

NFZ facilities are registered across multiple registries, so the same organization can appear in the API under different identifiers. We merge them by name, address, and geographic coordinates so that a city listing does not show the same clinic twice. Each facility is assigned a stable URL slug (for example "rusmed-11035") which serves as its canonical address on the site.

Language versions

The service is available in three locales: Polish (default, no prefix), Russian (/ru) and English (/en). The underlying data is identical across all versions — only interface labels and specialty descriptions differ. Hreflang tags and canonical URLs are configured in line with Google's guidelines for multilingual sites.

Data limitations

NFZ Terminy does not verify the data reported by facilities — we display it in the form received from NFZ. The displayed wait time may differ from reality if the facility is late updating its queue, if doctor staffing has changed, or if the patient qualifies for an urgent procedure. We do not show data on private or commercial queues — only services funded by NFZ. Always confirm an appointment by phone with the chosen facility.

Changes to this methodology

Any material change to how data is collected or processed will be documented on this page along with the implementation date. For questions about specific numbers or the source of a particular record, please email contact@nfzterminy.pl.