Skip to main content
The clinik.practitioners namespace manages FHIR Practitioner resources — clinicians, physicians, nurses, and other healthcare providers. You can attach qualifications such as board certifications and licenses at creation time, and filter the practitioner roster by specialty or NPI.

create

Create a new Practitioner. Only firstName and lastName are required.
const { data, meta } = await clinik.practitioners.create(request: PractitionerCreateRequest): Promise<ApiResponse<Practitioner>>
firstName
string
required
Practitioner’s first (given) name.
lastName
string
required
Practitioner’s family name.
prefix
string[]
Name prefixes, for example ["Dr.", "Prof."].
suffix
string[]
Name suffixes, for example ["MD", "PhD"].
email
string
Professional email address.
phone
string
Phone number.
gender
'male' | 'female' | 'other' | 'unknown'
Administrative gender.
birthDate
string
Date of birth in YYYY-MM-DD format.
npi
string
National Provider Identifier (US). Ten digits.
specialty
string
Primary clinical specialty, for example "Cardiology".
qualifications
Array
An array of qualification objects representing licenses, certifications, and board credentials. Each object accepts name, issuer, identifier, and a period with start and optional end dates.
languages
string[]
Spoken languages as BCP-47 language codes, for example ["en", "zh"].
address
object
Address object with line, city, state, postalCode, and country fields.

Example with qualifications

const { data } = await clinik.practitioners.create({
  firstName: 'Sarah',
  lastName: 'Chen',
  prefix: ['Dr.'],
  suffix: ['MD', 'FACC'],
  email: '[email protected]',
  npi: '1234567890',
  specialty: 'Cardiology',
  qualifications: [
    {
      name: 'Doctor of Medicine',
      issuer: 'Johns Hopkins University',
      period: { start: '2010-05-15' },
    },
    {
      name: 'Board Certified - Cardiovascular Disease',
      issuer: 'American Board of Internal Medicine',
      identifier: 'ABIM-12345',
      period: { start: '2015-06-01', end: '2025-06-01' },
    },
  ],
  languages: ['en', 'zh'],
});

read

Fetch a single practitioner by ID.
const { data, meta } = await clinik.practitioners.read(id: string): Promise<ApiResponse<Practitioner>>
id
string
required
The practitioner ID (e.g. prac_abc123).

update

Partially update a practitioner. Only the fields you include are changed.
const { data, meta } = await clinik.practitioners.update(id: string, request: PractitionerUpdateRequest): Promise<ApiResponse<Practitioner>>

Example

await clinik.practitioners.update('prac_abc123', {
  specialty: 'Interventional Cardiology',
  active: false, // deactivate the practitioner
});

delete

Permanently delete a practitioner record.
const { data, meta } = await clinik.practitioners.delete(id: string): Promise<ApiResponse<void>>
Search practitioners by name, specialty, NPI, or active status.
const { data, meta } = await clinik.practitioners.search(params?: PractitionerSearchParams): Promise<ApiResponse<PaginatedResponse<Practitioner>>>
name
string
Partial name match across first and last name.
specialty
string
Filter by clinical specialty.
npi
string
Exact NPI match.
active
boolean
Filter by active status.
count
number
Results per page. Maximum is 100.
cursor
string
Pagination cursor from a previous response.

Example

const { data } = await clinik.practitioners.search({
  specialty: 'Cardiology',
  active: true,
  count: 20,
});

console.log('Active cardiologists:', data.data.length);