How we measure
Version 1.0.0, updated 29 August 2026. Public name of the score: Structural Verification Index. Every number on this site can be recomputed from the published data and the rules on this page: the engine reads the same file this page is rendered from.
What we check — and what we do not
We check structural trust facts against official public registers: who the responsible physician is, what certification and licence the registers confirm, whether the facility and the legal entity can be traced, whether the clinic discloses its own identifiers, whether its advertising is honest, whether its language fronts agree, and whether patient documents are published.
We do not assess outcomes, skill or complications. A high score means the clinic is well verified, not that treatment there is right for you. This is not medical advice.
The unit
One record = one clinic in this country: brand + address + responsible physician. The named physician is the load-bearing field — every register check is by name. Procedure segment and city are facets, not units.
Inclusion policy
Four mechanical conditions. The first three decide whether a clinic is listed; the fourth whether it can be scored.
- Identifiable: a live public surface and a working in-country contact on the check date.
- Provides the service itself: not an aggregator, booking site, affiliate or tour packager.
- In scope: the intervention is performed by a physician — plastic or aesthetic surgery, hair transplant, physician-led injectables or device treatments, medical weight loss. Out: salons, barbers, nails/brows/lashes, spas, med-spas without a named physician.
- Names a responsible physician. Otherwise the record is published as verification unavailable: listed, not scored, no rank. Unknown is not fault — a missing name is a statement about coverage, not an accusation.
Country register map
The map for Estonia was compiled 29 August 2026, before any clinic research. A class marked as absent makes its axis not applicable; a register that cannot be scripted leaves its axis cells as 'could not verify', without penalty. We never simulate a register.
| Specialist board register | Tervishoiutöötajate riiklik register (state register of health-care professionals, colloquially MEDRE) — held by Terviseamet (Health Board, registrikood 70008799), operated by TEHIK; it records for every registered doctor the certified specialities (erialad) with the date each was entered, e.g. E310 'plastika- ja rekonstruktiivkirurgia' (plastic & reconstructive surgery) and E110 'dermatoveneroloogia'. In Estonia there is no separate specialty board: entry of the eriala into this state register IS the official specialist certification. (open, machine-readable) REPLAYABLE RECIPE (no cookies, no session, no token; a browser User-Agent is enough — plain curl also works). (1) Classifiers first, both plain GET, both JSON: https://medre.tehik.ee/api-common/public/persons/specialities (81 erialad; the ones that matter here are E310 'plastika- ja rekonstruktiivkirurgia', E110 'dermatoveneroloogia', E420 'üldkirurgia', E440 'suu-, näo- ja lõualuukirurgia') and https://medre.tehik.ee/api-common/public/persons/occupations (6 kutsed: E600 Arst / prefix D, E430 Hambaarst / prefix D, N500 Õde / prefix N, N600 Ämmaemand / prefix M, F100 Farmatseut / prefix F, P100 Proviisor / prefix P; each carries its allowed speciality list). (2) Search: POST https://medre.tehik.ee/api-common/public/persons/filter with Content-Type: application/json and the body {occupationCode, firstName, lastName, occupation, speciality, page, size}. `speciality` is the CODE (E310), `occupation` is the NAME string ('Arst'), `occupationCode` is the doctor's own THT number ('D05220'). Response is a Spring page: {content:[…], page, size, totalElements, totalPages}. (3) Detail: GET /api-common/public/persons/{id} with the uuid from the list. UI equivalents for citation: search page https://medre.tehik.ee/search/publicHealthcareEmployees, person page https://medre.tehik.ee/employees/{id}. PITFALLS, all observed live: (a) `size` is capped at 50 rows per page server-side even if you ask for more — paginate with `page`. (b) A `sort` value must be a JSON ARRAY; passing the string 'lastName,asc' returns HTTP 500 with the literal Jackson message 'JSON parse error: Cannot construct instance of `java.util.ArrayList` … from String value (\'lastName,asc\')'. Sending it as an array is accepted but the ordering is not actually applied, so just omit `sort`. (c) Name matching is case-INSENSITIVE ('simmo' = 'Simmo') but DIACRITIC-SENSITIVE: lastName='Grünthal' returns 3 rows, lastName='Grunthal' returns 0. Always query the Estonian spelling (ä ö ü õ š ž), and note the register itself stores some names in ALL CAPS (KERSALU, VALDMANN, TUULIK, HIETANEN) — that does not affect matching, but it does affect how you print the citation. (d) Foreign surnames are kept in their own orthography (Kęstutis Maslauskas, Penttilä, Rönnblad). (e) The register does NOT expose the isikukood of health-care professionals through this endpoint, and there is no bulk open-data export of PERSONS — the only person exports on /open-data are pharmacists, plus the speciality and occupation classifiers. The persons API is the route. WHAT ELSE WAS TRIED: the historical hosts named in older documentation are all dead from here — mveeb.sm.ee, kasutaja.terviseamet.ee, iseteenindus.terviseamet.ee and medre.ee all fail DNS (NXDOMAIN); the live register is medre.tehik.ee, linked from https://www.terviseamet.ee/tervishoiukorraldus/tervishoiutootajale/tervishoiutootajate-registreerimine. The /official/* half of the same API (applications, decisions, employments) answers HTTP 401 without an Estonian ID-card session — that is where per-doctor DECISIONS live, and it is the reason the sanctions class below uses the published-precepts route instead. |
|---|---|
| Medical licence register | Tervishoiutöötajate riiklik register (Terviseamet / TEHIK) — the occupation-code half of the same state register: registration under the Health Services Organisation Act (tervishoiuteenuste korraldamise seadus) is what makes a person legally entitled to practise in Estonia, and the register issues the THT code (kutsekood) — prefix D for Arst/Hambaarst (e.g. D05220), N for Õde, M for Ämmaemand, F/P for pharmacy professions — together with the date of entry. (open, machine-readable) Same endpoint, same open access and the same pitfalls as specialist_board (size capped at 50, `sort` must be an array and is ignored anyway, diacritic-sensitive names) — see that entry for the full recipe; do not re-derive it. What is specific to the licence axis: (a) The presence of a row IS the licence. The public projection has no separate status/valid-until field, so the register answers 'registered' vs 'not found'; a doctor struck off simply stops being returned. Therefore 'not found' must be cited carefully — spell-check the surname in Estonian orthography and try the THT code before concluding anything, and never write 'unlicensed' from an empty result alone. (b) `occupationCodes[].createdAt` is the date of entry into the register, the closest thing to a licence issue date; `specialities[].createdAt` is the date the specialty was entered and is usually later. (c) The public record deliberately omits the isikukood and any address or employer; employer linkage comes from the facility export (facility_registry), not from here — the persons detail endpoint's "employments" array came back empty for every public lookup tried. (d) There is NO Estonian medical chamber whose membership doubles as the licence: Eesti Arstide Liit (arstideliit.ee) is a voluntary professional union whose member data sits behind a 'Minu andmed' login, so it is not a licence register and must not be cited as one. (e) The register covers doctors registered in Estonia including EU/EEA doctors who registered here (Finnish, Lithuanian, Greek, Latvian names appear in the E310 list), so a foreign-trained surgeon operating legally in Estonia will be found under the Estonian spelling of their name. |
| Facility register | Tervishoiuteenuse osutamise tegevuslubade register (register of activity licences to provide health services) — Terviseamet, served from the same medre.tehik.ee API and mirrored in full by the official open-data export 'Asutused' (od_asutused.xml). Each provider carries its registrikood, address, one or more licences (number Lxxxxx, type, start date), each licence's activity locations, each location's licensed SERVICE codes (T0130 ambulatoorsed plastika-ja rekonstruktiivkirurgiateenused, T0200 plastika-ja rekonstruktiivkirurgia päevakirurgiateenused, T0260 ambulatoorne eriarstiabi (mittekirurgiline esteetilise meditsiini teenus), T0038 ambulatoorsed üldkirurgiateenused, T0266 anestesioloogia päevakirurgiateenusena …) and — uniquely useful here — the named health-care professionals employed at the provider with their THT codes and erialad. (open, machine-readable) TWO OPEN ROUTES, both proved. ROUTE A (preferred for bulk work, and the one to cite for scope): plain GET https://medre.tehik.ee/api-common/public/companies/open-data → od_asutused.xml, ~14.4 MB, UTF-8, no auth. Structure: <asutused hetk=…> / <asutus> / <registrikood>, <nimi>, <aadress>, <tegevusload>/<tegevusluba> (<tegevusloa_number>, <alates>, <kuni>, <loaliik_kood>, <loaliik_nimi>, <haiglaliik_*>) / <tegevuskohad>/<tegevuskoht> (<aadress>, <teenused>/<teenus> with <kood>+<nimi>) and <tootajad>/<tootaja> (<kood> THT code, <eesnimi>, <perenimi>, <kutse_kood>, <kutse_nimi>, <erialad>/<eriala> with <kood>+<nimi>). Download once to scratch and filter locally; key on <registrikood> because provider names are spelled inconsistently across sources ('Aktsiaselts Fertilitas' vs 'Fertilitas AS'), and normalise (NFD + strip combining marks + lowercase) before name matching because of õ ä ö ü. The <kuni> element is the licence end date and is empty for a live licence — a filled <kuni> means the licence has ended. Sibling open-data exports on the same host, all plain GETs: /api-common/public/general-practitioner-lists/open-data (GP lists), /api-common/public/persons/pharmacists/open-data, /api-common/public/activity-licenses/services/open-data (service classifier), /api-common/public/persons/specialities/open-data and /api-common/public/persons/occupations/open-data (classifiers); the human index is https://medre.tehik.ee/open-data and Estonian-language PDF column dictionaries sit at /api-common/public/open-data/{data,companies,lists,pharmacists}/description. ROUTE B (per-clinic, live, and the one to cite for a single card): POST https://medre.tehik.ee/api-common/public/activity-licenses/filter with body {code, companyName, insuranceContractStatuses, page, size} → then GET /public/activity-licenses/{id} for the detail (this is the ONLY place registrikood, e-mail, phone and the legal representatives appear — the list projection returns company.registryCode as null) → then GET /public/activity-licenses/location/{locationId} for the licensed services at that address (the licence detail's locations[].services array comes back EMPTY; you must call the location endpoint). GET /public/activity-licenses/{id}/download gives the signed licence PDF. UI equivalents for citation: https://medre.tehik.ee/search/publicActivityLicense and https://medre.tehik.ee/activity-licenses/{id}. PITFALLS, all observed live: (a) THE `sort` FIELD IS A TRAP on this endpoint — an unrecognised sort property does not error, it silently returns {"content":null,"totalElements":0}. Sending sort:['name,asc'] made every search, including the empty one, look like 'no such clinic'. OMIT `sort` entirely. (b) `size` is capped at 50 rows per page; paginate with `page`. (c) `insuranceContractStatuses` filters on the provider's mandatory patient-liability insurance (compulsory since 2024-11-01 under the Tervishoiuteenuse osutaja kohustusliku vastutuskindlustuse seadus), NOT on the licence: [] or all four values returns everything (6,929), ['VALID'] returns only insured providers (3,014), [null] returns 3,884, ['EXPIRED'] returns 31. The LICENCE's own state is the per-row `status` field (VALID / PAUSED / INVALID) — read it, do not infer it from the insurance filter. (d) companyName is a case-insensitive substring match on the provider name, so 'Kliinik' matches 206 licences; one provider commonly holds several licences (Fertilitas 15, Confido 22, Medicum 31), so deduplicate on registrikood. (e) An 'Eriarstiabi teenus' licence alone says nothing about aesthetics — always descend to the SERVICE codes; T0130/T0200 are the plastic-surgery ones and T0260 is the only code that means non-surgical aesthetic medicine. A clinic advertising injectables but holding no T0260 (or no licence at all) is exactly the fact pattern the sanctions register below acts on. |
| Company register | e-Äriregister / Ettevõtjate register (Estonian Business Register), Registrite ja Infosüsteemide Keskus (RIK), Ministry of Justice — the authoritative register of legal persons: registrikood, legal form, status, share capital, first-entry date, registered address, management board members with their isikukood, shareholders, and the filed annual reports (open, machine-readable) THREE OPEN ROUTES, all proved, none needing a cookie or login. (1) JSON autocomplete — GET https://ariregister.rik.ee/est/api/autocomplete?q=<name or code>, returns {status, data:[{company_id, reg_code, name, historical_names, status, legal_address, zip_code, legal_form, url}]}; the fastest way to resolve a clinic's trading name to a registrikood, and `historical_names` catches clinics that rebranded. 'status':'R' = Registrisse kantud (entered in the register). (2) Company page — GET https://ariregister.rik.ee/est/company/<registrikood> (English mirror at /eng/company/<registrikood>, same data, 'In English' toggle); plain HTML, everything above rendered server-side including the Juhatus (management board) and Osanikud (shareholders) blocks, so a regex/DOM parse is enough — no JS execution. The canonical URL adds a slug ('/11555735/Ilukirurgia-OÜ') but the bare-code form resolves fine and is the stabler thing to cite. (3) Bulk open data — the index page https://avaandmed.ariregister.rik.ee/et/avaandmete-allalaadimine lists daily-refreshed files; the one used here is /sites/default/files/avaandmed/ettevotja_rekvisiidid__lihtandmed.csv.zip (18 MB zipped, 97 MB CSV, all 376,887 legal persons, delimiter ';', UTF-8 with BOM — strip \uFEFF before parsing). Companions in the same directory, .json.zip and .xml.zip: __yldandmed (general data), __kaardile_kantud_isikud (persons on the registry card, i.e. board members), __kandevalised_isikud, __osanikud (shareholders), __kasusaajad (beneficial owners), __registrikaardid, __maarused, __kommertspandid. Use the CSV for existence/status/first-entry-date at scale and the company page for the board and the annual reports. PITFALLS: (a) Estonian legal forms sit on either side of the name — 'Osaühing X', 'X OÜ', 'Aktsiaselts Y', 'AS Y', 'sihtasutus Z', 'SA Z' — and the register's own spelling is inconsistent in case ('sihtasutus Tartu Ülikooli Kliinikum', 'ÜLEMISTE KIRURGIAKLIINIK AS'); always resolve to registrikood and key on it. (b) The clinic's public brand is frequently NOT the registered name (Ilukirurgia OÜ trades from 'Ravi tee 4' while its registered seat is 'Heldri tee 6'), so join to the Health Board data through registrikood, never through the address or the trading name. (c) ettevotja_esmakande_kpv (first entry date, dd.mm.yyyy) is a real, official age datum — but it is the age of the LEGAL PERSON, not of the clinic brand, and several Estonian clinics operate under a company incorporated for something else earlier. (d) Do not cite third-party mirrors (inforegister.ee, teatmik.ee, e-krediidiinfo.ee); they are commercial resellers, not the register. |
| Sanctions / discipline register | Terviseameti ettekirjutused — the enforcement precepts issued by the Health Board in the course of state supervision (riiklik järelevalve) and published by it on its own website, each as a named, dated, signed PDF naming the addressee (a company with its registrikood, or a named natural person), the obligation imposed, the deadline, and the penalty payment (sunniraha) threatened (open, machine-readable) RECIPE (plain GET, no cookie, no login, no CAPTCHA): fetch https://www.terviseamet.ee/ettekirjutused, take every <a href> matching ^/sites/default/files/documents/.+\.pdf$ (30 links at the time of this pass), and read the date + addressee from the anchor text of the surrounding table row; the URL path itself also encodes the addressee and date, e.g. '/sites/default/files/documents/2025-01/Ettekirjutus%20%28Pro-Age%20O%C3%9C_24.01.2025%29.pdf'. The PDFs are text-layer PDFs (pdftotext -enc UTF-8 works; no OCR needed). Match a roster clinic by its REGISTRIKOOD, which the precept prints next to the addressee name (Pro-Age OÜ 16157867, Uus Laine Kliinik OÜ 16548444) — the file names alone are not reliable because the register's spelling of the company differs from the trading brand. WHY THIS IS THE RIGHT SOURCE FOR THIS GRID: Estonia has no medical-chamber discipline register, and the per-doctor DECISIONS held inside the register system are login-gated — POST https://medre.tehik.ee/api-common/official/decisions/filter/THT (the endpoint the register's own UI uses for decisionTHT / decisionLicense searches) answers HTTP 401 without an Estonian ID-card session, and there is no public projection of it. What IS public is the supervision output, and for aesthetic medicine it is unusually on-point: the published precepts include orders to named clinics and named individuals to STOP giving fillers, botulinum toxin and biorevitalisation, and to stop offering dermatovenereology without the right licence — exactly the trust signal this grid needs. CAVEATS AND LIMITS, state them when citing: (a) It is a published LIST, not a searchable database — there is no query parameter; you fetch the page and match locally. (b) Coverage on the live page is 2024-2026 only; the page itself says 'Varasemate aastate ettekirjutused leiab veebiarhiivist' and links https://veebiarhiiv.digar.ee/a/20241113162718/https://www.terviseamet.ee/et/terviseametist/oluline-teave/ettekirjutused#2023 for earlier years — treat the archive as secondary and date-stamp anything taken from it. (c) The absence of a clinic from this list is NOT evidence of a clean record: Terviseamet publishes precepts, not every supervision proceeding, and it explicitly frames publication as a discretionary practice. Never render 'no precept found' as 'no sanctions'; that cell is null, per the methodology. (d) A SECOND, machine-readable and complementary signal from the facility register: every activity licence row carries status VALID / PAUSED / INVALID (of 6,929 licence rows, 3,884 are not currently insured and the historic INVALID ones are returned by the same public search), and the licence detail exposes suspensionApplicationIds / invalidationApplicationId — a suspended or invalidated licence for a clinic that is still advertising treatments is a state-sourced negative fact, and it is open. Cite it as facility-register provenance, not as a disciplinary decision about a doctor. (e) A precept is an administrative order to fix something, not a finding of malpractice against a named physician; quote the RESOLUTSIOON verbatim and let it say what it says. |
| Foreign-patient register | no public register of this class in this country |
The nine axes
Every axis is a fact or a quote from a public source, scored 1–5 against a fixed rubric. There are no editorial axes. Each cell carries its sources, its source class (official register / secondary) and its check date.
Fame, review volume, domain age and social-media following are scored nowhere.
M1 · Specialist certification of the responsible physician — weight 26
Whether the physician named as responsible for this clinic is found in the country's specialist board register with a current specialisation matching the advertised segment (plastic surgery or dermatology, by segment).
| Value | Anchor |
|---|---|
| 5 | Found by name or number; specialty matches what is advertised; status current. |
| 4 | Found; specialty adjacent to what is advertised (noted on the profile). |
| 3 | Found in the register; the register does not disclose specialty. |
| 2 | Only a secondary source (association, aggregator) supports the certification. |
| 1 | Certification is claimed and found in no source. |
M2 · Identifiability of the responsible physician — weight 16
Whether a patient can name the specific physician and their role before making contact, and whether that physician is tied to this location.
| Value | Anchor |
|---|---|
| 5 | Physician(s) named with role and tied to this address. |
| 4 | Named; role unclear. |
| 3 | A name appears in only one place on the site. |
| 2 | Surname or initials without a full name. |
| 1 | 'Our team' only — this is the gate state 'verification unavailable'. |
M3 · Basic medical licence — weight 8
Whether the responsible physician's registration is found in the country's medical licence register.
| Value | Anchor |
|---|---|
| 5 | Matched by licence number. |
| 4 | Matched by name. |
| 3 | Register not machine-accessible; the clinic publishes the number. |
| 2 | Licence claimed without a number. |
| 1 | Public data contradicts the claim. |
M4 · Facility registration — weight 10
Whether the operating location is found in the facility register (where the country has one; otherwise this axis is not applicable).
| Value | Anchor |
|---|---|
| 5 | Record found: name, address and status match. |
| 4 | Record found with a spelling discrepancy. |
| 3 | Register exists; no record found (we do not claim 'unlicensed'). |
| 2 | Only the clinic's own statement. |
| 1 | A published registration number is contradicted by the register (verified false → flag). |
M5 · Legal-entity traceability — weight 8
Who is legally responsible: a legal entity in the company register, tied to the brand and the address.
| Value | Anchor |
|---|---|
| 5 | Legal entity and registration number published and matched in the register. |
| 4 | Matched by name. |
| 3 | Legal entity named; register not accessible. |
| 2 | Brand only. |
| 1 | No legal entity found after a full pass (verified conflict → hold H2). |
M6 · Self-disclosure of identifiers — weight 10
Whether the clinic itself publishes the numbers needed to re-check it (licences, certificates with issuer). Disclosure is rewarded; a missing number is not a missing licence.
| Value | Anchor |
|---|---|
| 5 | All load-bearing numbers published with issuers. |
| 4 | Physician numbers published; facility or legal-entity numbers not. |
| 3 | Partial, without issuers. |
| 2 | Logos without numbers. |
| 1 | No identifiers at all. |
M7 · Advertising honesty — weight 12
A machine profile of the clinic’s own claims: outcome guarantees, ‘100% safe’, ‘No. 1’ or ‘best’ without an issuer, ‘unlimited grafts’, before/after presented as a promise, foreign boards presented as the national specialist board. Every deduction cites an exact quote with URL, locale and date.
| Value | Anchor |
|---|---|
| 5 | No pattern from the lexicon found. |
| 4 | One or two soft superlatives. |
| 3 | Systematic superlatives without guarantees. |
| 2 | Guarantee or ‘100%’-class statement (bright line; cap candidate). |
| 1 | Verified fake credential (flag + cap). |
M8 · Cross-locale consistency — weight 5
Whether facts agree across the language fronts of the clinic's own site (physician, numbers, accreditations) — a mechanical comparison of extracted fields.
| Value | Anchor |
|---|---|
| 5 | All load-bearing fields agree. |
| 4 | Spelling discrepancies. |
| 3 | Some facts appear on only one front. |
| 2 | A load-bearing fact (physician or number) differs. |
| 1 | Fronts contradict each other on credentials (H2 candidate). |
M9 · Patient documents — weight 5
Presence check for five document classes: informed consent, risks/contraindications, aftercare, revision policy, complaint route. Presence only — the quality of the documents is not assessed.
| Value | Anchor |
|---|---|
| 5 | All five classes published. |
| 4 | Four. |
| 3 | Two or three. |
| 2 | One. |
| 1 | None. |
The formula
Each axis value 1–5 is mapped to 0–1. The composite is the weighted average over the axes that hold a value: axes that are not applicable in this country and axes we could not verify drop out of the normalisation.
composite = 100 × Σ(weight × (value − 1) / 4) / Σ(weight of axes with a value) score = min(composite + focus adjustment, lowest active ceiling), clamped to 0…100
Coverage threshold: a score is published only when at least 75% of the applicable axis weight holds a sourced value. Below that the record shows 'verification pending' and carries no rank.
Focus adjustment
A mechanical classification from the clinic's own menu.
| Focus | Adjustment |
|---|---|
| specialist | 0 |
| aesthetic in general clinic | -2 |
| spa or salon addon | -5 |
Score ceilings
A ceiling is applied only from a verified-false finding — never from 'not found'. Each ceiling is rendered from a fixed template with the exact quote or register entry and its URL; no free text is written about a named clinic.
| Ceiling | Max score | What triggers it | Fixed wording |
|---|---|---|---|
| Verified false accreditation or licence claim | 45 | A claimed accreditation, board certification or licence is contradicted by the official register. Never applied on 'not found' alone. | The register {registry} (record dated {date}) does not confirm the credential claimed at {url}: “{quote}”. Under this methodology the score is capped at {cap}. The clinic has been offered a right of reply. |
| Outcome guarantee or ‘100% safe’-class statement | 65 | The clinic's own published text guarantees a result or absolute safety. Applied only with the exact quote. | The clinic's own page {url} ({locale}, {date}) states: “{quote}”. Under this methodology an outcome guarantee caps the score at {cap}. |
| Active sanction in a machine-readable official register | 45 | Exists only in countries whose registry map declares a sanctions register. Absence of a sanction is never a finding. | Entry in the {registry} register dated {date}: {url}. The score is capped at {cap} and the profile is held pending the clinic's right of reply. |
The sanctions ceiling exists only in countries with a machine-readable official sanctions register. In this country: Terviseameti ettekirjutused — the enforcement precepts issued by the Health Board in the course of state supervision (riiklik järelevalve) and published by it on its own website, each as a named, dated, signed PDF naming the addressee (a company with its registrikood, or a named natural person), the obligation imposed, the deadline, and the penalty payment (sunniraha) threatened. Absence of a sanction is never a finding.
Holds
Positive verification by default; the hold ladder handles the cases where public records conflict or the physician cannot be identified.
| ID | Hold | Effect | Fixed wording |
|---|---|---|---|
| H1 | Clarification requested | profile provisional, no crown | A clarification has been requested from the clinic. The profile is provisional and carries no crown until it is resolved. |
| H2 | Material structural conflict | ceiling after the right-of-reply window (69), 14-day right-of-reply window | Public records show a material structural conflict ({detail}). After the right-of-reply window the score is capped at {cap}. |
| H3 | Responsible physician not identifiable | composite withheld, unranked | The responsible physician could not be identified from public sources. The composite score is withheld and the clinic is listed without a rank. |
Crowns and procedure slices
A crown is a boolean gate from register-verified axes — never from a clinic's claim. Within a crown, the order is the composite.
| Crown | Meaning | Gate |
|---|---|---|
| Specialist-led | The responsible physician holds a current, matching specialist certification in the official register (M1 = 5, official source) and is clearly identifiable (M2 ≥ 4). | M1 ≥ 5 (official register) · M2 ≥ 4 |
| Foreign-patient ready | The clinic is verified in the country's official foreign-patient register. Exists only where such a register exists. | no such register in this country — this crown does not exist here |
Procedure slices list the clinics whose own menu names the procedure (a sourced boolean), ranked by the composite:
Outcome quality
There is no independent measurement of treatment outcomes in this field, and we do not imitate one. The register facts already in the axes are the only quality-adjacent evidence we publish.
How the data is produced (unattended run)
- No score without a source — in two passes. A collector records the value, the quote and the URL; a separate verifier reloads the URL and looks for the quote by string match. If the quote is not found, the cell degrades to 'could not verify'.
- All negative wording is templated. Ceilings and holds are rendered from fixed strings plus the cited quote or register entry. Nothing free-form is written against a named clinic.
- The validator is the build gate. Every axis key must be present (null allowed, absence not), every citation must resolve, ceilings only from verified-false findings with a quote, weights must sum to 100, and superlatives in our own text fail the build.
- A checklist per record: at least two independent sources, the register map opened and cited, every axis either a sourced value or an explicit 'could not verify'.
- Right of reply without a human in the loop: messages to the contact form or corrections@ are processed as ordinary data input. A correction with a source is applied and logged; a statement without one is published next to the data and the score does not change.
Freshness
Each record shows the real date of its last check. Register axes (M1, M3, M4) are rechecked within 90 days; the advertising axis (M7) within 180 days. Every change is logged in the changelog and in the record's own history.
What this register does not do
- We do not measure treatment outcomes, surgical skill or complication rates.
- We do not see clinics without a public web presence.
- Register classes this country does not publish are named as unavailable; we never simulate a register.
- We take no money from clinics, we do not book, and we do not refer.
- Fame, review volume, domain age and social-media following are not scored anywhere.
Independence: we take no money from clinics, we do not book, we do not refer, and no position can be bought. Data changes only through sourced facts, for every clinic under the same rules.
This site is an independent research project provided 'as is'. Clinic names and public information are used for identification. Nothing here creates a doctor–patient or advisory relationship.
Methodology versions
| Date | Version | Change |
|---|---|---|
| 29 August 2026 | v1.0.0 | Initial public methodology: nine mechanical axes (M1–M9, weights summing to 100), 1–5 rubric per axis, weighted composite normalised over axes that hold a value, 75% coverage threshold, hold ladder H1–H3, score caps only from verified-false findings, focus penalty, registry-gated crowns. |