Resolving the clinician
A registration number without its regulator fails the same way a patient identifier without its document type fails. Neither one resolves, and both come back as a false "not found".
Everything below elaborates this sentence.
This page continues 01 · Identify, which resolves the patient. Here you ask the same question about whoever is treating them, and the answer is what keeps a billed line defensible months later.
Every billed line carries the clinician who performed it, their licence, and the body that regulates them. Resolve all three here and the line holds up later. This is also the cheapest point at which you can find out that a licence has lapsed.
The clinician gets asked the same question as the patient: who are you, and does your paperwork hold up? You answer it the same way, by picking the regulator, entering the registration number and resolving one practitioner.
Populate the regulator picker the way you populated the document-type picker, from the terminology service rather than a constant.
HEALTHCARE-WORKER-REGULATORSThe bodies that register practitioners: KMPDC for medical practitioners and dentists, the Clinical Officers Council, the Nursing Council of Kenya and the rest. Each issues its own numbering, so the regulator is half of the identifier.
curl -sS "https://ilm-dev.dha.go.ke/dev/ts/api/v2/concepts/?system=HEALTHCARE-WORKER-REGULATORS&version=serving&page_size=50" \
-H "authorization: Bearer $TS_TOKEN"code, show display, cache on the returned version. version=serving pins the latest approved release.Fetching and exports →Two inputs again: the regulating body, and the number it issued.
regulatorSearched, with a result to select:
regulatorregistration_numberregistration_numbernamesuspensionThe same screen when the licence does not hold up:
regulatorregistration_numberregistration_numbernamesuspensionFour things the registry buys you, in order of how much they save.
- 01Refuse a lapsed licence earlyLicence validity is checked again at preauthorisation and at billing. Checking it when the clinician is selected turns a claim rejected days later into a conversation you can still have. It is the most valuable check the registry gives you, and the one integrations most often skip.
- 02Reach a practitioner when you have toSome interventions need a named clinician's sign-off before they can go ahead. The registry holds the contact details for reaching that person, where an internal directory may be stale. The request itself is made at 06 · Preauthorize; what matters here is that you resolved a real person instead of a typed name.
- 03Confirm speciality where the benefit demands itSome procedures require a credentialed practitioner of a named speciality, sometimes an anaesthetist alongside a surgeon. Checking at scheduling is cheaper than discovering it at adjudication.
- 04Populate the picker from the registryBuild the clinician dropdown from the registry instead of from a table someone typed. Taking the licence and regulator from the registry removes a whole class of rejection.
Cadre and speciality are coded lists too. You need them when a benefit requires a named
speciality, and when a practitioner picker groups by discipline. PRACTITIONER-CADRES is
unconfirmed in the same way as the regulator list above, so search the catalogue for cadre
before you depend on the name.
PRACTITIONER-CADRESThe discipline a practitioner is registered under, and the specialities within it. Needed where a benefit requires an approved practitioner of a named speciality, and for grouping a clinician picker by something other than surname.
curl -sS "https://ilm-dev.dha.go.ke/dev/ts/api/v2/concepts/?system=PRACTITIONER-CADRES&version=serving&page_size=50" \
-H "authorization: Bearer $TS_TOKEN"code, show display, cache on the returned version. version=serving pins the latest approved release.Fetching and exports →What you keep
| Call | What it does | What you keep |
|---|---|---|
Registration number + regulator | Together they are the clinician's identifier. Neither one is enough on its own. | both, on the encounter |
The licence verdict | Read live at selection, then re-checked at preauthorisation and billing. Store when you read it as well as what it said. | status + when |
Cadre and speciality | Needed where a benefit requires a named speciality, and for grouping a clinician picker. | the codes |
What breaks here
| Where it surfaces | What the desk sees | What actually went wrong |
|---|---|---|
| Clinician selection | "That registration number does not exist" | The wrong regulator. The same digits can be valid under two councils, so the number means nothing without the body that issued it. |
| Billing | "Line rejected: practitioner not eligible" | A lapsed or suspended licence, or the wrong speciality for the intervention. Licence status is checked live at billing; checking it at selection turns this into a fixable conversation. |
| Billing | "We cannot say who performed this" | The clinician was picked from a typed internal list rather than the registry, so the line carries a name with nothing behind it. |
| Preauth | "The surgical request was refused on the practitioner" | A surgical request needs a credentialed surgeon, not just a licensed doctor. Where an anaesthetist is required, that is a second named practitioner. |
What carries forward
The registration number and its regulator travel onto every billed line, and the licence is re-checked at 06 · Preauthorize and 07 · Bill. Where an intervention needs clinical sign-off, the request is routed to this practitioner, and that workflow lives at Preauth rather than here.
Back to01 · IdentifyThe patient's identity: the identifier pair, the four moves of a lookup, and what resolving it hands to every step after.
A complete brief for this step — the calls to make, what to persist, and every failure path to handle. Nothing on this page is assumed.

