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 Latvia 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 | Ārstniecības personu un ārstniecības atbalsta personu reģistrs — DARBA VIETA un SERTIFICĒTĀ SPECIALITĀTE (Register of medical practitioners and medical support persons — workplace in a treatment institution, certified specialty and certificate validity), kept by Veselības inspekcija (State Health Inspectorate). Latvian specialist certificates are issued by Latvijas Ārstu biedrība / the specialty associations and are recorded in this state register, so this is the specialist board of record. (behind CAPTCHA, not scriptable) Latvian only; no EN version of the register UI. Diacritics matter in the surname box (Krūmiņš / Laucis / Zariņš were sent verbatim in UTF-8 via Node's URLSearchParams — curl --data-urlencode mangles them on Windows Git Bash). The full option tables for PersonSpeciality (≈200 specialties, incl. every aesthetic one listed above) and AdministrativeArea (42 territories with their ATVK codes) are in the plain HTML of the blank form and are scrapeable without any token. The register's own /skaidrojums page confirms the 'Sertifikāts/atļauja/adaptācijas periods specialitātē un termiņš' column carries every valid certificate, temporary-practice permission and adaptation period — exactly the specialist-board datum — and warns that for a person holding several professions that column is duplicated across all of them. WHAT WAS TRIED AND FAILED (all with a browser UA, session cookie carried): (a) urlencoded POST without a token → blank form, no table, no error; (b) the same POST with a fabricated cf-turnstile-response → byte-identical response, so the token really is checked with Cloudflare; (c) multipart/form-data instead of urlencoded → same; (d) POST to /node/4 (the Drupal node behind /apd) → same; (e) GET with the same fields as query parameters (?PersonSurname=…) → blank form; (f) hunting for a token-free read path: registri.vi.gov.lv has NO sitemap.xml (returns the 404 page), robots.txt is the Drupal stock file, and the page carries no custom JS at all (only gtag, the Turnstile api.js, jQuery and the Bootstrap bundle) — there is no XHR endpoint behind the UI to call. NO login is required anywhere; the sole blocker is the Cloudflare Turnstile, so this is 'captcha', not 'form'. NO open-data mirror exists: data.gov.lv package_search for 'ārstniecības personu' / 'Veselības inspekcija' returns only aid-notification and NVD statistics datasets, never the practitioner register; the professional associations that actually run certification (e.g. ldusa.lv/sertifikacija/registrs/) publish explanatory text and point back to this same VI register rather than a list of their own; arstubiedriba.lv (Latvijas Ārstu biedrība, the certifying body) publishes its Sertifikācijas padome pages and session schedules but no searchable roster of certified doctors. Note for the crawler: www.arstubiedriba.lv times out from here, the apex arstubiedriba.lv answers normally (Cloudflare). |
|---|---|
| Medical licence register | Ārstniecības personu un ārstniecības atbalsta personu reģistrs — PROFESIJA, REĢISTRĀCIJAS TERMIŅŠ, IDENTIFIKATORS, SERTIFIKĀTS (Register of medical practitioners and medical support persons — profession the person may practise in, registration term, identifier, certificate), kept by Veselības inspekcija. Entry in this register is the legal precondition for practising medicine in Latvia (Ārstniecības likums; MK noteikumi on the register). (behind CAPTCHA, not scriptable) Same host, same Drupal 11 site and the same Turnstile sitekey as specialist_board; the two registers are two views of one state register (VI publishes them as separate search pages, /rap for profession+term+identifier and /apd for workplace+certified specialty). Latvian only, diacritics-sensitive. The identifier ('identifikators') is the practitioner's public registration number and is the field a clinic would publish, so a scripted number lookup would have been the ideal M3=5 route — it is closed. What was tried is identical to the /apd list above (token-less POST, fabricated-token POST, multipart, /node/3, GET with query parameters, sitemap and API hunt) with identical outcomes; the response length never changed at all here, and there is no JS in the page that builds a hidden query token, so the Turnstile is the only blocker. No login wall. Because the register is not scriptable, M3 must stay null for every clinic unless a clinic publishes a licence number that the collector can NOT verify — in which case the rubric's 'register not machine-accessible; the clinic publishes the number' = 3 is the ceiling. |
| Facility register | Ārstniecības iestāžu reģistrs (AIR) — the State Health Inspectorate's register of licensed healthcare facilities; read through its own official bulk export 'Ārstniecības iestādes, kuras ir paziņojušas par atbilstību Ministru kabineta 2009. gada 20. janvāra noteikumos Nr. 60 minētajām prasībām' (facilities and the structural units — consulting rooms, operating theatres, day hospitals — whose conformity with the mandatory-requirements regulation they have notified to AIR) (open, machine-readable) The interactive AIR search at https://registri.vi.gov.lv/air is CAPTCHA-gated exactly like /rap and /apd (same Cloudflare Turnstile sitekey 0x4AAAAAABmMCt_B5DmF4aA6). Proof gathered this session: a urlencoded POST with InstitutionName=Capital Clinic (and separately InstitutionCode=010001518&AdministrativeArea=001000) is genuinely parsed server-side — the response comes back with <option value="001000" selected>Rīga</option>, i.e. the submitted territory is echoed as the selected option — yet 0 <table> elements are emitted; multipart, POST to /node/5, adding a click field, a fabricated cf-turnstile-response and GET-with-query-parameters all behave the same. So the register is reached NOT through its search box but through the register's own official exports, which are plain files served with no token, cookie or login. RECIPE: GET https://registri.vi.gov.lv/atbilstiba (a page of the AIR register, 'Publicējam ārstniecības iestāžu sarakstu, kuras Ārstniecības iestāžu reģistram ir paziņojušas par …atbilstību…'; it states 'Informācija mājas lapā tiek aktualizēta katru nedēļu' and carried 'Pēdējais aktualizācijas datums: 28.08.2026' when checked), scrape the single /sites/default/files/inline-files/Atbilstiba_majaslapai_<DD.MM.YYYY>.xlsx link — THE FILENAME CARRIES THE EXPORT DATE AND ROTATES WEEKLY, so re-locate it with the regex /inline-files\/Atbilstiba_majaslapai_[0-9.]+\.xlsx/ rather than hard-coding the URL above — download it, unzip (it is a plain OOXML zip; sharedStrings.xml + worksheets/sheet1.xml parse fine with ~40 lines of Node, no library needed) and filter locally. Row 1 is the column header; there is no title row in this file. Column G is an Excel 1900 serial: date = new Date(Date.UTC(1899,11,30) + serial*86400000); a few rows carry a non-numeric or empty serial. Facility codes and 'Reģistrācijas Nr.' occasionally carry stray leading/trailing spaces (' 001000131 ', '15071 ') — trim before matching. Names are inconsistent across rows for the same operator (' Krumins Dr, SIA ' vs 'Krumins Dr, SIA'), so key on the facility code, which is AIR's own stable identifier and the right thing to cite. Latvian diacritics are exact in the file: normalise (NFD + strip combining marks + lowercase) before fuzzy matching. CAVEAT — SCOPE: this export is not the whole AIR. It lists facilities that have NOTIFIED AIR of the conformity of specific structural units under MK noteikumi Nr.60; a facility registered in AIR with no notified unit will not appear, so a miss is NOT evidence that a clinic is unregistered (M4 = 3 'register exists; no record found', never 1). Two further open AIR exports were also downloaded and are usable as secondary cross-checks: (a) https://registri.vi.gov.lv/sites/default/files/inline-files/Arstniecibas_iestades-skaistumkopsanas_specialisti_un_kosmetiki_03.10.2025.xlsx — 15,185 bytes, 95 data rows, 'Ārstniecības iestādes, kurās strādā skaistumkopšanas speciālisti (kosmetoloģijā) un kosmētiķi', linked from https://registri.vi.gov.lv/ais, first row after the header: code 010064114, 'VESELĪBAS CENTRS 4, Sabiedrība ar ierobežotu atbildību', 'Rīga, Skanstes iela, 50, LV1013', 'Kosmētiķa kabinets'; (b) the non-medical beauty and tattoo providers notified under MK noteikumi Nr.693, https://www.vi.gov.lv/files/vi-s3/s3fs-public/media_file/copy_of_speka_no_07.03.2026_skaistumkopsana_pak_sniedz_saraksts_mk693_20.08.2026_100.xls (legacy .xls, updated twice a month), linked from https://www.vi.gov.lv/lv/skaistumkopsanas-un-tetovesanas-pakalpojumu-sniedzeju-saraksts — that list covers salons that are NOT ārstniecības iestādes, so a clinic appearing only there is a beauty-services provider, not a licensed healthcare facility. |
| Company register | Latvijas Republikas Uzņēmumu reģistrs (UR) — the state commercial register; two open routes: the daily 'Uzņēmumu reģistra atvērtie dati' CSV published on data.gov.lv, and the official UR information portal info.ur.gov.lv with its unauthenticated JSON endpoints (open, machine-readable) Two independent open routes, both used this session. ROUTE A (bulk, rock-solid): plain GET of register.csv (no headers, no cookies; ~128 MB, semicolon-delimited, RFC4180 quoting with doubled inner quotes, UTF-8, refreshed daily per the data.gov.lv package description). Download once to scratch and filter locally. Useful columns: regcode (the 11-digit registration number — the identifier to cite and the join key to nothing else in Latvia, since AIR uses its own facility code), name / name_in_quotes (the quoted trading name; matching on name_in_quotes avoids the 'Sabiedrība ar ierobežotu atbildību' prefix noise), regtype_text (Komercreģistrs vs Biedrību un nodibinājumu reģistrs — a clinic operator must be in the former), registered / terminated / closed (closed='L' marks a liquidated entity; the historical 'Latvijas plastiskās, rokas un mikroķirurģijas centrs' row is a live example), address. The dataset landing page is https://data.gov.lv/dati/lv/dataset/uz and the resource can be re-located through the CKAN API (https://data.gov.lv/dati/lv/api/3/action/package_show?id=uz) if the download URL ever changes. ROUTE B (per-clinic, official portal): info.ur.gov.lv is a React SPA whose backend is reachable unauthenticated under the /api prefix. Free-text search: GET https://info.ur.gov.lv/api/legalentity/search?q=<urlencoded query> with Accept: application/json (the parameter is q — 'query' returns INVALID_DATA_PROVIDED; the response is a raw Solr envelope, response.numFound + response.docs). Entity detail: GET https://info.ur.gov.lv/api/legalentity/api/<code>?lang=lv, where <code> is the portal's own 9-digit key, derivable from the registration number as regnumber.slice(1,10) (40103662038 → 010366203, 50003077391 → 000307739 — both verified). The human-readable page to cite for a clinic is https://info.ur.gov.lv/#/legal-entity/<regnumber>. CAVEAT: the free-text /search endpoint is FLAKY — during this session it answered correctly at first and then returned HTTP 500 {"errorCode":"UNEXPECTED_ERROR","errorMsg":"Failed to connect to solr/10.101.168.35:8983"} / "timeout" for a solid ten minutes while the detail endpoint kept working. Treat the CSV as the primary lookup and the API as the confirmation/citation step, and retry the search endpoint rather than concluding 'not found'. Latvian diacritics matter in name matching in both routes (Ā/Ī/Ķ/Ļ/Ņ/Š/Ū/Ž); the numeric regcode sidesteps that. Also on data.gov.lv from the same publisher and useful for secondary checks: 'patiesie-labuma-guveji' (beneficial owners), 'maksatnespejas-procesi' (insolvency) and 'gada-parskatu-finansu-dati' (annual-report financials). Lursoft is a commercial reseller of this data and must not be cited in place of UR. |
| Sanctions / discipline register | Veselības inspekcija — 'Informācija par ārstniecības iestāžu darbības/pakalpojumu apturēšanu' (official list of healthcare facilities and services whose operation the State Health Inspectorate has SUSPENDED under Ārstniecības likums 75.panta astotā daļa), published as a downloadable spreadsheet on the Inspectorate's Registers and Databases page (open, machine-readable) This is the disciplinary/suspension list of record for Latvian healthcare providers and it is genuinely open — no cookie, no token, no login, and the /lv/media/<id>/download?attachment URL is STABLE across refreshes (only the content-disposition filename carries the date, so the same URL keeps working after the next update). Parse: it is a plain OOXML zip; unzip and read xl/worksheets/sheet1.xml with xl/sharedStrings.xml. Rows 0–3 are a title row, a blank row and a two-line column header; data starts at row 4, and some records span several sheet rows (continuation rows have an empty column A), so key on the presence of column B. Dates in D are text in DD.MM.YYYY. form, not serials. IMPORTANT for scoring: this list is about SUSPENSIONS of facilities/services, and most entries are unregistered operators rather than sanctioned licensed clinics — absence from it is normal and must never be read as 'clean'; presence is a hard, citable adverse finding tied to a name and street address. Matching is by name+address string, so normalise diacritics and expect the Inspectorate's own inconsistent quoting (curly quotes around salon names). A SECOND, complementary open list covers the non-medical beauty sector: https://www.vi.gov.lv/lv/media/12363/download?attachment ('Apturēto skaistumkopšanas pakalpojumu sniedzēju saraksts', 51,200 bytes, legacy BIFF8 .xls named 'Apturēto skaistumkopšanas pakalpojumu sniedzēju saraksts 27.03.2026.xls'); it was downloaded and its records read out of the workbook's UTF-16 string table — e.g. 'SIA L.D. & Co Salonā Republikas laukumā 3, Rīgā' | 'Sniedz ārstniecības pakalpojumu (filleru injekcijas. Uzņēmuma darbiniecei Natali Moroz … nav iegūta ārsta izglītība, Salons nav reģistrēts Ārstniecības iestāžu reģistrā.' — but the old .xls format needs a real BIFF reader (or the SST string-scrape used here) rather than the OOXML parser, so treat it as the secondary source. Both lists are linked from https://www.vi.gov.lv/lv/registri-un-datubazes. What does NOT exist: a name-searchable register of sanctioned individual DOCTORS. Latvijas Ārstu biedrība runs an Ētikas komisija and an Aroda tiesa (professional court) and publishes 'Pieņemtie lēmumi' as news items, not as a structured or searchable database, and the UR dataset called 'sanctions' on data.gov.lv is about international financial-sanctions risk on companies, not medical discipline — do not substitute either for this list. |
| Foreign-patient register | Veselības inspekcija — 'Ārstniecības iestādes, kas sniedz veselības aprūpes eksporta (veselības tūrisma) pakalpojumus' / 'Medical Institutions registred for medical tourism services': the official list of AIR-registered healthcare facilities that have notified the Inspectorate they provide healthcare-export (medical tourism) services to foreign patients (open, machine-readable) A genuine foreign-patient / medical-tourism register class for Latvia — rare, and it is state-run rather than an association badge. Linked as a 'Datubāzes' download from https://www.vi.gov.lv/lv/registri-un-datubazes, where the Inspectorate labels it 'Atjaunināts: 10.02.2026'; the served file, however, is still named 2_ai-saraksts_veselibas-turisms_23.03.2022.pdf and its table is dated 23.03.2022 — CITE THE PDF AND ITS OWN 23.03.2022 DATE, not the page's refresh date, and treat the list as possibly stale. The /lv/media/6536/download?attachment URL is stable. PARSING PITFALL (this is why the recipe matters): the PDF's subsetted fonts use a custom encoding in which each glyph code equals the real character code minus 29, so a naive text extract yields 'ƖUVWQLHFƯEDV' for 'Ārstniecības'; add 29 to every code point of the strings drawn with that font to recover the text (strings drawn with the second, non-subset font — e-mail addresses, 'Ambulatorie', 'Diagnostiskie', all-caps names such as 'LATVIJAS AMERIKAS ACU CENTRS' — come out already readable, so decode per-run, not globally). There is no CSV/XLSX alternative. USE: presence here is an official, citable statement that the clinic has notified the state it serves foreign patients; absence means nothing (many clinics that in fact treat foreigners never filed), so it can support a positive datum but never a negative one. Cross-check the facility code against the AIR export above — the codes are the same identifiers in both files. |
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.
Register class: Company register — Latvijas Republikas Uzņēmumu reģistrs (UR) — the state commercial register; two open routes: the daily 'Uzņēmumu reģistra atvērtie dati' CSV published on data.gov.lv, and the official UR information portal info.ur.gov.lv with its unauthenticated JSON endpoints.
| 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: Veselības inspekcija — 'Informācija par ārstniecības iestāžu darbības/pakalpojumu apturēšanu' (official list of healthcare facilities and services whose operation the State Health Inspectorate has SUSPENDED under Ārstniecības likums 75.panta astotā daļa), published as a downloadable spreadsheet on the Inspectorate's Registers and Databases page. 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. | verified in Veselības inspekcija — 'Ārstniecības iestādes, kas sniedz veselības aprūpes eksporta (veselības tūrisma) pakalpojumus' / 'Medical Institutions registred for medical tourism services': the official list of AIR-registered healthcare facilities that have notified the Inspectorate they provide healthcare-export (medical tourism) services to foreign patients |
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. |