# ADHD Private: clinic-level dataset

Version 21 September 2026. Data collected 18 September 2026 by ADHD Private (adhdprivate.co.uk), a UK directory of private ADHD clinics operated by Sellframe Ltd (SC472357). Published in full, free to download, at adhdprivate.co.uk/data/uk-private-adhd-clinics-2026-09/ alongside the report it supports, adhdprivate.co.uk/research/uk-private-adhd-assessments-2026.

Six CSV files, UTF-8, comma-separated, one header row. `clinic_id` joins all of them.

| File | Rows | One row per | Answers |
|---|---|---|---|
| `clinics.csv` | 342 | clinic listed on ADHD Private | who is in the dataset, where, and what they charge |
| `companies_house.csv` | 272 | clinic and company pair | date of incorporation, status, corporate owners |
| `cqc_register.csv` | 201 | clinic and CQC location pair | registration, ratings, inspection reports (England) |
| `scotland_his_register.csv` | 12 | clinic on the Healthcare Improvement Scotland register | registration and conditions (Scotland) |
| `assessment_procedures.csv` | 342 | clinic | what each clinic publishes about how it assesses ADHD |
| `corrections.csv` | 464 | correction we made | every value we changed after extraction, plus 15 caveats we recorded, with what it was and why |

Every figure we took from someone else carries a link a reader can open without an account: a Companies House page, a CQC or HIS register page, or the page of the clinic's own website the statement was taken from. Our own directory fields in `clinics.csv` have no link, because there is nowhere to point but back at us; the dictionary marks them.

To spot-check any value in the procedures file, open its `<field>_source_url` and search the page for the text in `<field>_quote`.

Two spreadsheet notes, both about Excel guessing. The files are UTF-8 with no byte-order mark, which is what pandas, R and Numbers expect, but Excel on Windows assumes the local codepage on a plain double-click and renders the 41 pound signs and the curly apostrophes as mojibake. And 70 of the company numbers in `companies_house.csv` begin with a zero, which Excel strips, turning them into seven-digit numbers that do not resolve on Companies House. Opening the files through Excel's text import, choosing UTF-8 and setting the columns to text, avoids both.

## Licence and citation

**Our contribution** — the selection, the matching, the derived columns and the compilation — is released under the Creative Commons Attribution 4.0 International Licence (CC BY 4.0). You may publish, adapt and redistribute it, including commercially, with attribution:

> ADHD Private, clinic-level dataset, 21 September 2026. adhdprivate.co.uk

Three parts of the package are **not ours to license**, and the CC BY grant does not extend to them.

- **Companies House and Care Quality Commission fields.** Contains public sector information licensed under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).
- **`scotland_his_register.csv`.** The register wording in these rows, including the whole of `conditions_of_registration`, is © Healthcare Improvement Scotland, which [does not permit redistribution of its material](https://www.healthcareimprovementscotland.scot/copyright/). We reproduce these short extracts so that each value can be traced, and every row carries `register_url` pointing at the authoritative text. Anyone wanting to republish that wording should ask HIS.
- **The `*_quote` columns** in `assessment_procedures.csv`. Each is a short extract from the named clinic's own website, reproduced under the quotation exception in [section 30(1ZA) of the Copyright, Designs and Patents Act 1988](https://www.legislation.gov.uk/ukpga/1988/48/section/30), with the source page as the acknowledgement. Copyright stays with each clinic.

## Read this before using the data

1. **We list clinics. We do not rate clinical quality.** Nothing here is our judgement of any clinic's quality. Every value in `companies_house.csv`, `cqc_register.csv` and `scotland_his_register.csv` is a public register entry. Every coded value in `assessment_procedures.csv` reduces the clinic's own published wording to a category, and ships with the sentence it came from and the page it was on. What is ours is the directory data in `clinics.csv` (which clinics are listed, where, their prices as we re-read them, which pay for Featured placement); the coding of the clinics' words into the categories this file uses; and the judgement columns, each documented below. They fall into three groups. How confident we are in a link we made: `cqc_match_status` and `cqc_claim_corroborated_by_our_match` in `clinics.csv`, `link_basis` in `companies_house.csv`, `match_method`, `match_confidence` and `provider_number_matches_listing_company` in `cqc_register.csv`. What we could read of a clinic's site: `fetch_status`, `has_adhd_assessment_content`, `pathway_scope` and `fields_stated_for_child_pathway_only`. And two computed from the register data itself: `number_shared_with_other_listed_clinics` and `rating_framework`. Four more are ours and are derived rather than read: `is_online_only`, `listed_as_right_to_choose_unsourced`, `his_register_match` and `cqc_any_location_currently_registered` in `clinics.csv`, plus `pathway_covers_autism_too` in `assessment_procedures.csv`. And `extraction_notes` is our commentary, documented in the dictionary below. Everything else is a register entry or a clinic's own words.

2. **`not_stated` means the clinic's website does not say it. It never means the clinic does not do it.** A clinic that does not name its interview tool online may well use one. The procedures file measures what is published, not what is practised, and we have not verified practice.

3. **Absence from the CQC register is usually lawful.** CQC's own guidance says a provider that only diagnoses ADHD or autism, with no treatment, does not need to register: *"If you only provide diagnosis of ADHD and/or autism (without any form of treatment) you will not need to register for this regulated activity"* ([Treatment of disease, disorder or injury](https://www.cqc.org.uk/guidance-regulation/providers/registration/scope-registration/regulated-activities/treatment-disease-disorder-or-injury), page last updated 27 August 2026 when we checked). The parallel page for [diagnostic and screening procedures](https://www.cqc.org.uk/guidance-regulation/providers/registration/scope-registration/regulated-activities/diagnostic-and-screening-procedures) says the same and is flagged there as guidance updated 26 March 2026. A provider that **treats**, which includes prescribing and titration, does need to register. Clinics in Scotland, Wales and Northern Ireland are outside the CQC's remit; their regulators are HIS, HIW and RQIA.

4. **`not_matched` means we could not match the clinic to a register entry. It does not mean the clinic is unregistered.** Our matching is deliberately conservative, because shared consulting addresses are common. Our directory's location table, which is not part of this package because it holds clinics' correspondence addresses, records 24 postcodes with more than one listed clinic, covering 52 clinics. The busiest is W1G 9PF, with 12 listed clinics; the CQC locations we matched at that postcode belong to 8 distinct CQC providers. Within `cqc_register.csv` alone you can see the smaller version of the same thing: 4 postcodes carry more than one listed clinic, covering 16. Matched counts are floors.

5. **This is a directory census, not a register of every UK provider.** It covers the 342 clinics live on ADHD Private on 18 September 2026. Nine of them pay us for a labelled "Featured" placement, flagged in `is_featured_paid_placement`. They were included and extracted on the same terms as every other clinic. The rows most likely to be cited in reporting — the Featured nine, every same-day-diagnosis claim of `yes`, every `required` informant row and every `offered` shared-care row — were re-read against the full page as an accuracy check. That re-read removed or weakened values. It never strengthened one, and the build refuses to run if a correction would. Paid placement is always labelled and never changes a clinic's position in organic listings or matching results: on the directory the Featured rows sit in a labelled band above the list, and the list below them stays in merit order. We take no commission on bookings or referrals.

6. **Our published July report is frozen at 332 clinics (24 July 2026).** This extract was computed on 18 September, so counts differ.

7. **Quotes are public professional text from clinics' own websites and may name a clinician**, because some sole practitioners write in the first person. We preferred quotes that name a role. No patient testimonials are quoted, from clinics' sites or from CQC reports. No quote carries an **individual's** registration number, an email address or a phone number; the build refuses to write one that does. An **organisation's** public registration number is allowed and appears in one quote, where a clinic publishes its own CQC certificate number: that number identifies a service on a public register, not a person, and it is checkable.

8. **A CQC inspection covers a whole registered location.** Some locations provide other services besides ADHD assessment, and some reports predate a clinic's ADHD service.

## What we did not include, and why

- **Review ratings and review counts.** Platform terms do not let us redistribute them.
- **Waiting times.** Our data is too incomplete to stand behind.
- **Prices other than the three verified assessment types.** Follow-up and treatment prices in our database have not been re-verified.
- **Contact details, and named lead clinicians as a column.** No email address or phone number appears anywhere, and there is no column naming a clinic's clinicians. Names do survive inside quotes, because the quote is the evidence and we did not want to edit it silently: 18 clinics have a titled name in one. Some are sole practitioners writing in the first person; others are third-person sentences naming the clinician who will see you. We removed a name only where it appeared in a coded **value** rather than in a quote, and `corrections.csv` records each of those.
- **Wales and Northern Ireland registers.** We found no ADHD assessment services on the HIW or RQIA registers when we checked on 24 July 2026. Neither register can be searched by condition, so this is a negative result from name searches, not proof of absence. There is no HIW or RQIA file to compare against, so where `regulator_claim_on_site` holds `HIW` — one clinic, `igp-wales` — nothing in this package either corroborates or contradicts it. Read that cell as the clinic's own claim and check the register yourself.

## Method

**Clinic list and prices.** Exported from the live directory on 18 September 2026. A price appears only if a person read it on the clinic's own page, recorded that page, and the page still opened on 18 September. Each price carries the date it was read in `*_price_verified_on`; most were read in our July price survey, and 18 September was a check that the page still opens, not a fresh reading of every figure. 175 clinics carry at least one price: 162 adult assessment, 52 child assessment, 49 combined ADHD and autism. Three figures from two clinics were excluded: two because the stored figure is a two-stage total that appears on no single page, and one because the source domain no longer resolves. Two price sources (insightdiagnostics.co.uk and enlightenedminds.co.uk) answer an automated request with HTTP 403 but open normally in a browser; both pages were opened in a browser on 18 September, both still showed the figure we hold, and both prices are kept. The second of those now redirects `/fees/` to `/appointments/`, where the figure still appears. Prices exclude any extra fees the clinic may charge.

**Companies House.** Each company number was fetched from the Companies House API on 18 September 2026: 272 companies covering 265 of the 342 clinics. All 272 were active on that date, and none carried a cessation date. `link_basis` says why we attach that company to that clinic, and a row can carry several reasons joined with `+`:

| `link_basis` | Meaning |
|---|---|
| `site_states_number` | the clinic's own website states this company number |
| `site_names_company` | the clinic's own website names this company |
| `cqc_provider_record` | the clinic's CQC provider record gives this company number |
| `listing_name_equals_company_name` | the clinic's listed name is the company's registered name |
| `stored_number_only` | the number is in our directory and none of the checks above corroborated it on 18 September. 14 rows. Treat these with care and check before naming a company |

Where a clinic's website or CQC record shows a different legal entity from the one we held, both are listed. 77 clinics have no company number; many are sole practitioners who have none. `corporate_psc_names` lists persons with significant control that are themselves companies, on 40 rows. Individual people with significant control are never listed: their names and months of birth are personal data we have no reason to redistribute, and the public record is one click away.

**CQC (England).** Fetched from the CQC public API on 18 September 2026: 201 locations across 132 clinics, 142 currently registered and 59 deregistered. Match methods, in order of use:

| `match_method` | Meaning | Confidence | Rows |
|---|---|---|---|
| `stored_url` | the clinic's own CQC link, checked by us | high | 108 |
| `provider_sibling` | another location of the same registered provider | high | 60 |
| `companies_house_number` | CQC provider's company number equals the clinic's | high | 18 |
| `postcode_name` | same postcode and a distinctive name token | medium | 15 |

Deregistered locations are kept, with dates, because a clinic's history on the register is part of the picture. Care homes and social care locations of large providers were dropped, under every match method.

CQC is mid-way through replacing its old inspection framework with the Single Assessment Framework, and the two live side by side in the API. This file reads both: `rating_framework` says which one a row's rating comes from (`legacy` 50 rows, `single_assessment` 9, `single_assessment_service` 6), and `rating_published_date` is the date that assessment was published. A location-level rating is preferred over a service-level one from the same assessment; otherwise the most recently published wins. The two frameworks spell the same judgement differently ("Requires Improvement" against "Requires improvement"), so ratings are normalised to CQC's published wording, and the build stops if a rating value it has not seen before appears.

The `inspection_summary_excerpt` columns are verbatim sentences from the summary on the CQC location's public reports page, or from CQC's published assessment commentary for a Single Assessment Framework row. They are picked mechanically: the first three sentences containing one of `assess`, `diagnos`, `prescri`, `medic`, `titrat`, `controlled drug`, `NICE`, `shared care`, `monitor`, `physical health`, `consent`, `safeguard` or `record`, in report order, skipping CQC's standard "we have not found evidence that we need to carry out an inspection" boilerplate, rating-scale furniture, and any sentence reporting what patients or families said. They are excerpts, not a summary of the report. The rule selects on topic and never on sentiment: it takes the first matching sentences in report order, whether they praise, criticise or merely describe. But inspectors write about these topics most often when something is wrong, so a row's excerpts can read more negative than the report they came from. Open `reports_url` for the whole text before quoting one. Two rows show what that warning means in practice. `focused-clinic`'s first excerpt recites a breach found at a *previous* inspection, on a row whose own rating is `Good`. `developing-minds`' second excerpt says the service "has never been inspected", which was true when that background paragraph was written and is not true of the row it now sits in, which carries a 2023 inspection date and a `Good` rating. The rule reads sentences, not their tense or their scope. 53 rows carry an excerpt, 19 of them for locations that are now deregistered. Excerpts are blank where the reports describe inpatient wards rather than an outpatient service, and on a handful of rows where no sentence matched the keyword list.

**HIS (Scotland).** Scotland-based clinics were matched by name against the HIS services register, and each of the 12 register pages was read on 18 September 2026. Dates are converted to ISO format; where HIS gives a two-day inspection ("10/11 January 2024") the first day is kept.

**Assessment procedures.** For each clinic we fetched up to six pages of its own website on 18 September 2026 (home, assessment, process, FAQ, team, pricing), identifying ourselves in the user agent and obeying a one-second delay per host. 1,759 pages were read in total. Directory listings were never treated as a clinic's own site. Then, per clinic:

1. **Extraction.** Done by an AI language model (Anthropic's Claude), not by hand. Each of 20 fields was filled only where the clinic's own text states it, with a verbatim quote of 300 characters or fewer and the page URL. General education about ADHD, statements about autism or therapy, and patient testimonials were excluded. 2,561 values were extracted.

2. **Mechanical check.** Every quote was confirmed by script to appear word for word on the cited page. All 2,561 passed. The 11 quotes later replaced by hand were put through the same check before the file was rebuilt, and the build refuses a replacement that is not a verbatim span of the page it cites.

3. **Second pass.** A separate run of the model, which had not seen the extraction, judged every value against its quote alone, with instructions to be strict. About one value in seven was flagged. A flagged value was blanked to `not_stated`, or downgraded to the weaker claim the quote still supports (for example `required` to `requested_optional`). It was never upgraded.

4. **Targeted re-read** against the full page, by the model and then by hand, of the Featured clinics, every same-day-diagnosis row, every `required` informant row, every `offered` shared-care row, every stated duration and session count, and a random sample. Every session count was then read a second time against the definition in the dictionary below, which is how the ones that were counting a screening or a feedback appointment came out. Finally all three of the highest-risk value sets were re-read in full against the clinics' live pages: every `same_day_diagnosis_claim` of `yes`, every `required` informant, and every `offered` shared care. Shared care is where this mattered. Fourteen of the 26 clinics still coded `offered` at that point hedge the offer elsewhere on the same site, almost always because the GP can decline. Thirteen were moved to `not_guaranteed` and one was blanked. Reading the survivors side by side then showed that `offered` was not being applied consistently with its own definition, so all of them were judged again against one written rule: `offered` only where the clinic itself is the actor and states that it does the thing, and `not_guaranteed` where the GP is the actor, where the verb is an aim ("work towards", "work with", "like to", "support"), or where the evidence is a bare service-list bullet. Six more moved, leaving 6. The lesson we would pass on: an unhedged sentence on a page that hedges in another paragraph was the failure mode we hit most often.

Steps 3 and 4 produced 464 corrections in all: 302 values blanked, 136 changed to a weaker value, 11 left as they were but re-quoted, and 15 notes added. 129 of those corrections were made by hand across 91 clinics. Every one of the 446 is listed in `corrections.csv`, with the value it replaced, the reason, and a `pass` column saying which step made it. **A correction may only blank a value, re-quote it, weaken it, drop a role from a list, replace the catch-all role `other_clinician` with the specific role the quote names, or shorten a quote to remove a person's name. The build exits non-zero if a correction falls outside that list**, which is what turns "nothing was upgraded" from a promise into a property of the file. The `other_clinician` case is the only one that makes a value more specific rather than less, and it happened once: `isc-care` became `assistant_psychologist` because its page names that role. It is in the list because a named junior role tells a reader more than "a clinician" does, not less. Two further rows were labelled by hand as describing a child pathway, which changes no value. 2,259 values remain.

`fetch_status` records what happened: `ok` (337), `no_website`, `no_own_site` (the listed site is a directory profile), `fetch_failed`, `site_under_maintenance`, `site_unreadable`. For the five clinics that are not `ok`, every field reads `not_collected`. Two sites render their content with JavaScript, so a person opened them in a browser and read them there; they carry `fetch_status` = `ok` like any other read site, and nothing in the file distinguishes them.

No human has read all 2,259 values. The safeguard is that every value ships with its quote and link, so any one of them can be checked in seconds, and we ask that you check any value before naming a clinic on it.

Because step 3 is strict, the file under-reports what clinics publish. Treat every count from it as a floor.

## Data dictionary

### clinics.csv

| Column | Meaning |
|---|---|
| `clinic_id` | our stable identifier; joins all files |
| `name`, `website_url` | as listed. One address is stored without a scheme and is given here with `https://` so it opens |
| `adhdprivate_url` | the clinic's page on ADHD Private |
| `nations` | nations where the clinic has a listed location, `;`-separated. Blank for the 8 clinics with no listed location (online services with no registered address in our data) |
| `primary_region`, `primary_city` | of the clinic's primary location |
| `location_count` | listed locations |
| `is_online_only` | our listing flag for a clinic we record as delivering remotely (46 clinics), not a claim by the clinic. It does not mean no address: 38 of the 46 still carry a `location_count` of 1 and a `primary_city`, which may be a registered or correspondence address rather than a consulting room. Only 8 have no location at all. **Unsourced** |
| `age_groups` | `;`-separated from `adult`, `child`, `teen`, `later_life` |
| `is_featured_paid_placement` | true for the nine clinics that pay for a labelled Featured placement |
| `listed_as_right_to_choose_unsourced` | our directory's flag. **Unsourced.** The sourced version is `right_to_choose_stated` in the procedures file. Right to Choose applies in England only |
| `company_numbers` | `;`-separated; details in `companies_house.csv` |
| `cqc_match_status` | `matched_high` (117), `matched_medium` (15), `not_matched` (172), or `not_applicable_devolved` (38: the clinic has listed locations but none in England) |
| `cqc_any_location_currently_registered` | for matched clinics only: whether any matched location is registered today. Blank where we matched nothing |
| `cqc_claim_corroborated_by_our_match` | `true` (46) where the clinic's site claims CQC regulation and we matched it to a currently registered location; `false` (7) where it claims CQC regulation and we did not match it to a currently registered location, which includes two clinics whose only matched locations are deregistered; `not_applicable` (289) where the site makes no CQC claim, or the clinic has no location in England so we never searched the CQC register for it. **`false` is a statement about our matching, not a finding that the claim is untrue** — see note 4 |
| `his_register_match` | `true` (12) where we found the clinic on the Healthcare Improvement Scotland services register, `false` (15) where we searched and did not. Two of the 12 are on the register with `registration_status` = `Registration in progress`, so `true` means "on the register", not "registration complete" — read `scotland_his_register.csv` for the status. Blank (315) for clinics with no Scottish location |
| `site_resolved_to` | the domain that actually answered, where it differs from `website_url` (6 clinics). The quotes cite the domain that answered |
| `*_price_gbp`, `*_price_source_url`, `*_price_verified_on` | adult ADHD assessment, child ADHD assessment, combined ADHD and autism assessment. **`*_price_verified_on` is the date a person last read that figure on that page, and for most rows it is 24 July 2026, when our price survey ran** — 148 of the 162 adult prices, 46 of the 52 child, 47 of the 49 combined. On 18 September we re-opened every cited page and dropped the prices whose page no longer opened; we did not re-read every figure. Treat a price as correct as at its own `*_price_verified_on`, not as at 18 September. Only these three price columns are verified; a price that appears inside a quote elsewhere in the package is not |

### companies_house.csv

`clinic_id`, `clinic_name`, `company_number`, `company_name`, `company_status`, `company_type`, `date_of_creation` (incorporation), `date_of_cessation`, `sic_codes`, `registered_jurisdiction`, `previous_company_names`, `corporate_psc_names`, `corporate_psc_company_numbers`, `has_insolvency_history` (`false` on all 272; Companies House flags none of them), `number_shared_with_other_listed_clinics` (a boolean, not a count: `false` on all 272, so no two listed clinics share a company number), `link_basis`, `checked_at`, `url`.

`registered_jurisdiction` is the Companies House `jurisdiction` field: `england-wales` (254), `scotland` (13), `northern-ireland` (5). It is where the company is registered, not where the clinic operates.

An incorporation date is the age of the legal entity, not of the ADHD service. Some long-established practices incorporated recently, and some companies predate their ADHD work. 146 of the 272 companies were incorporated in 2020 or later, 52 of them in 2024 or later.

### cqc_register.csv

`clinic_id`, `clinic_name`, `location_id`, `location_name`, `postcode`, `location_type`, `service_types`, `provider_id`, `provider_name`, `provider_ownership_type`, `provider_companies_house_number`, `provider_number_matches_listing_company`, `registration_status`, `registration_date`, `deregistration_date`, `regulated_activities` (blank on all 59 deregistered rows, because the CQC API stops returning activities once a registration ends), `overall_rating` (populated on 65 of the 201 rows), `rating_framework`, `rating_published_date`, the five key-question ratings (`safe`, `effective`, `caring`, `responsive`, `well_led`, each on the same 65), `last_inspection_date`, `latest_report_date`, `reports_listed`, `report_link_id`, three `inspection_summary_excerpt` columns, `location_url`, `reports_url`, `match_method`, `match_confidence`, `checked_at`.

`provider_name` is the provider's registered name and may be an individual's legal name where the provider is a sole trader.

`provider_number_matches_listing_company` has four states: `true` (147) the CQC provider's company number is one we hold for that clinic and something other than the CQC record evidences it; `same_source` (44) the number matches but the CQC record is the only reason we hold it, so it corroborates nothing; `false` (0) the numbers differ; blank (10) one side has no number.

`overall_rating` takes CQC's own values: `Good` (47), `Requires improvement` (7), `Outstanding` (3), `Inadequate` (0), plus the non-judgements CQC also publishes — `Inspected but not rated` (3), `No published rating` (5), `Insufficient evidence to rate` (0). The counts of nought are CQC's vocabulary, listed so that a zero reads as a zero rather than as a value we left out. They count `overall_rating` only, so do not read them as a statement about the file as a whole. One currently registered location is rated `Inadequate` on a key question: I Straker Consultants Ltd, the CQC location matched to `isc-care`, is `Inadequate` on `well_led` and `Requires improvement` on `safe`, with no overall rating published and its excerpts recording two warning notices. Read the key-question columns alongside this one. **A blank means the CQC API returns no rating field for that location at all**, which is the case for 136 of the 201 rows, 100 of them currently registered. `No published rating` is different: it is a value CQC itself publishes, on a location it holds a rating record for. Among currently registered locations: 34 Good, 4 Requires improvement, 2 Outstanding.

`reports_listed` is how many reports the CQC API returns for the location, not how many CQC has ever published. `latest_report_date` falls back to the publication date CQC gives for the location's last report where the report list is empty; 55 rows carry a report date.

### scotland_his_register.csv

`clinic_id`, `service_type`, `registration_status`, `service_provider`, `conditions_of_registration` (verbatim from the register), `latest_report_published`, `latest_inspection_date`, `register_url`, `checked_at`.

10 of the 12 are `Registered` and 2 are `Registration in progress`. Those two carry no conditions text and no report or inspection dates, because HIS has published none for them yet; the blanks are the register's state, not a gap in our reading.

The register pages also carry a named main point of contact and a postal address. Neither is in this file, and the build refuses to write a row that contains a name-and-contact block, an email address or a phone number. See the licence section: this wording is HIS's, not ours.

### assessment_procedures.csv

Each field has three columns: the value, `<field>_quote` and `<field>_source_url`. A cell holds one quote and one URL, never two.

| Field | Values (counts are clinics) |
|---|---|
| `assessing_clinician_types` | roles the clinic says conduct ADHD assessments, `;`-separated: `other_clinician` (65, role not specified, such as "specialist clinician"), `consultant_psychiatrist` (52), `clinical_psychologist` (34), `psychiatrist` (33), `psychologist` (29), `specialist_nurse` (14), `paediatrician` (11), `nurse_prescriber` (7), `assistant_psychologist` (1), `pharmacist_prescriber` (1), `gp` (0) |
| `diagnosis_signed_off_by` | free text, only where the site says who makes or confirms the diagnosis. Where the site names the clinician, the value gives the role and the name is removed |
| `assessment_format` | `online_or_in_person` (120), `online_only` (39), `in_person_only` (22) |
| `stated_duration_mins` | the **main diagnostic appointment** as the clinic states it; a number or a range, or `not_stated`. Three rows hold a bound rather than a number, in the clinic's own words: `up to 180` (`leicester-psychology-clinic`, `wales-psychiatry-centre`) and `180+` (`sussex-psychological-therapy-centre`). Parse the column as text. A figure that is a total across several appointments is not recorded here: it is blanked and the total is written into `extraction_notes` |
| `sessions_count` | **diagnostic appointments** the clinic states, excluding free screening or triage calls, feedback-only sessions, and medication review or titration appointments. A number, a range, or `not_stated`. One row holds `1 or more` (`ciconia-recovery`), which is the clinic's own wording for a floor with no ceiling; parse the column as text |
| `pre_assessment_questionnaires` | `yes` (158) |
| `instruments_named` | interview schedules and rating scales the clinic says it uses: DIVA-5 (37), DIVA (25), Conners (23), ACE+ (9), ACE (5), Young DIVA (3), ASRS (2), CAARS (2), and two others. Named because the column covers both interviews and scales |
| `objective_test` | `qbcheck_routine` (34), `qbcheck_optional` (18), `qbtest_optional` (10), `other_computerised_test` (7), `qbtest_routine` (6). `qbtest_frequency_not_stated`, `qbcheck_frequency_not_stated` and `explicitly_not_used` are also valid and appear on no clinic in this version |
| `informant_input` | `requested_optional` (131), `required` (11), `not_required` (0). `required` needs obligation wording ("must", "we need", "essential") or a pathway that cannot proceed without it; a clinic that asks, or that offers an alternative where no informant exists, is `requested_optional` |
| `developmental_history_stated` | `yes` (155) |
| `comorbidity_screening_stated` | `yes` (79) |
| `nice_ng87_claim` | `yes` (161) where the clinic says its ADHD assessment follows NICE guidance. Most clinics say "NICE guidelines" without the number, and that counts. It is the clinic's claim, not a finding |
| `written_report_stated` | `yes` (234) |
| `same_day_diagnosis_claim` | `yes` (7) the diagnostic outcome is communicated at the end of the assessment appointment; `yes_qualified` (21) the clinic hedges, with "usually", "often", "where possible" or "if appropriate"; `no` (5) the outcome comes later |
| `post_diagnosis_prescribing_stated` | `yes` (145), `no` (42). `no` only for an explicit statement. Prescribing by a partner organisation is not recorded as `yes` |
| `titration_stated` | `yes` (113), `no` (9) |
| `shared_care_stated` | `offered` (6) the clinic itself is the actor and states that it does it; `not_guaranteed` (101) the GP is the actor, or the wording is an aim ("work towards", "work with", "like to", "support"), or the evidence is a bare service-list bullet; `not_offered` (2) the clinic states that it does not enter shared care — note that one of the two, `harrow-health-adhd`, says so because it keeps prescribing and annual reviews itself, which is the more, not less, committed arrangement. Shared care always needs the GP to agree, so that condition alone is not what separates the two main values; the actor and the verb are. Read the quote in a `not_guaranteed` row as the offer the clinic makes, not as the condition. Across all the review passes, 31 of the 101 were first coded `offered`; 27 of those were downgraded only once we had read the rest of the site or compared the wording against the rule, so the quote on its own can still read unconditionally. `corrections.csv` gives the wording we found and where, for every row we downgraded. |
| `right_to_choose_stated` | `yes` (33), `no` (11), where the clinic says so itself. `no` means the clinic states it is not a Right to Choose provider, not that we could not find a claim; a clinic that says it is applying for it is left blank |
| `regulator_claim_on_site` | `;`-separated, because one clinic claims two. Token counts: `CQC` (54), `HIS` (3), `HIW` (1), `RQIA` (0), across 57 populated cells, as claimed by the clinic about itself. Compare with the register files and with `cqc_claim_corroborated_by_our_match` |
| `gmc_registration_claim` | `yes` (47) |

Other columns:

| Column | Meaning |
|---|---|
| `name`, `website_url` | repeated from `clinics.csv` so this file can be read on its own |
| `fetch_status`, `fetched_at`, `pages_read` | what happened when we read the site, and when |
| `has_adhd_assessment_content` | whether the site has content describing ADHD assessment. **It does not mean any field below is populated**: 11 clinics have such a page and state none of the 20 facts on it |
| `pathway_scope` | whose pathway the row describes, from the age groups the clinic is listed for: `both` (200), `adult` (97), `child` (40, the clinic is listed for children only, so no value here describes an adult pathway), blank for the 5 clinics we could not read |
| `pathway_covers_autism_too` | `true` (3) where the quoted duration or session count describes one combined ADHD-and-autism assessment, so it is not comparable with an ADHD-only figure |
| `fields_stated_for_child_pathway_only` | `;`-separated field names whose value describes a child pathway: every populated field of a `child`-scope clinic, plus fields the second pass or the sample found were stated only for children at a clinic that sees both. 52 rows, 280 values |
| `extraction_notes` | **the one free-text column that is our commentary rather than a register entry or a quote.** 336 rows carry one. It holds caveats recorded while reading the site, figures moved out of a blanked column, and, where the pages disagreed, a note saying so. Unlike every other column it carries no quote and no source URL, and it was not part of the check that judged each value against its quote alone. Some notes mention a price or a report turnaround that the verified columns deliberately exclude, and some say a clinic's pages are inconsistent or that a claim is unsourced. Those are our reading of the site on 18 September, not findings about the clinic, and they are not evidence. Treat the column as a research note and go to the clinic's page before repeating anything in it. |

Where a clinic publishes different adult and child pathways and we took the adult one, `pathway_scope` is `both` and any child-sourced field is named in `fields_stated_for_child_pathway_only`.

### corrections.csv

One row per correction, so a reader can audit the editing as well as the data.

| column | what it holds |
|---|---|
| `clinic_id` | the clinic the correction applies to |
| `field` | the column in `assessment_procedures.csv` it applies to |
| `action` | `blanked` the value was removed, `changed` it was replaced with a weaker value, `re-quoted` the value stands and the quote behind it was replaced, `note added` a caveat was recorded and no value changed |
| `pass` | which pass of the method made it. `second_pass` (335) step 3, a model re-reading each value against its own quote. The other four are step 4. `hand`, `definition_reread` and `sample` were made by a person; `targeted_reread` was a model re-reading the full page, with every change it proposed checked by hand before it was applied: `hand` (86), `targeted_reread` (28) the full-page re-read of the highest-risk values, `definition_reread` (12) the session counts read again against the published definition, `sample` (3) the random sample. Filtering out `second_pass` gives the 129 corrections made by hand, across 91 clinics |
| `extracted_value` | what the first extraction pass had produced. Blank for a note |
| `corrected_value` | what the file now says. Blank for a blanked value |
| `reason` | why, in the reviewer's own words |

Corrections run in one direction. 302 of the 464 corrections removed a value outright. Where a second-pass reviewer proposed a replacement that was not a weaker reading of the same quote, the value was removed instead of changed, and the reason says so.

## Known limits

- Websites change. Each quote was on the cited page on 18 September 2026.
- Every cited URL was opened again on 19 September, after the files were final: 1,813 distinct links, cited 3,550 times across the six files. 1,797 answered with HTTP 200. The other 16 refuse an automated request with HTTP 403, and all 16 are on six clinic sites that block bots rather than people: `adhdcertify.co.uk` (4), `enlightenedminds.co.uk` (4), `insightdiagnostics.co.uk` (3), `manchesterpsychiatryclinic.co.uk` (3), `drmusasami.co.uk` (1) and `everlief.co.uk` (1). Each of the 16 was then opened in a real browser: every one returned 200, and all 50 quotes citing them were still on the page. If you script the link check, expect those 16 and open them in a browser. Note that several of those quotes sit inside collapsed accordions, so a check that reads only the visible text will report them missing when they are there.
- Six pages per clinic is a sample of a site. A clinic may state something on a page we did not read.
- The second pass removed some true statements whose quote could not stand alone.
- A quote may contain a price, a wait-time phrase or a marketing claim in passing. 26 quotes carry a superlative of some kind, from "gold standard" to "No. 1 Rated". Only the three price columns in `clinics.csv` are verified figures; nothing else inside a quote is checked, including anything a clinic says about itself.
- Where a clinic sells its assessment in tiers, `*_price_gbp` holds the figure for the standard assessment route and `extraction_notes` records that a cheaper or dearer route exists. There is no column for the tier, so an average across the price columns is an average of one route per clinic, not of what patients pay.
- The HIS register text is reproduced as the register serves it, and two rows carry a scrape artefact from the register's own page: `edinburgh-mind-psychiatry` repeats one condition twice, and `diverse-diagnostics` is missing the leading "1." while keeping "2." onward. Open `register_url` for the authoritative wording.
- One correction reason quotes wording that is not in the shipped quote. `dr-cassie-associates`' shared-care row was downgraded on the strength of "most GPs are happy to agree", which is elsewhere on the clinic's site and not in the sentence the row ships.
- Medicine names are deliberately absent from values and notes, in both directions: the build refuses to write one.
- Every quote is a verbatim span of the page. Whitespace is normalised, and nothing inside a span is cut or altered. What a span does not always do is start where the sentence starts. 132 of the 2,259 quotes begin part-way through a sentence, usually because the sentence opens with a heading run-on or a booking step. In 31 of those the dropped words are a condition, so the span can read more absolutely than the sentence it sits in. We re-quoted the ones where the condition changed what the value means and left the rest; `corrections.csv` marks them `re-quoted`. One span cannot be widened at all: `regent-street-clinic`'s shared-care sentence begins with a condition naming a prescription-only medicine, which this dataset does not carry, so its `extraction_notes` says so. A span is also chosen so that no individual's registration number appears. Open the source URL before quoting any of them.

## Corrections

Email press@adhdprivate.co.uk. We will correct the file and say what changed. If a clinic disputes a value, the quote and the link show exactly what we read.
