import {z} from 'zod' export type States = 'alabama' | 'alaska' | 'arizona' | 'arkansas' | 'california' | 'colorado' | 'connecticut' | 'delaware' | 'florida' | 'georgia' | 'hawaii' | 'idaho' | 'illinois' | 'indiana' | 'iowa' | 'kansas' | 'kentucky' | 'louisiana' | 'maine' | 'maryland' | 'massachusetts' | 'michigan' | 'minnesota' | 'mississippi' | 'missouri' | 'montana' | 'nebraska' | 'nevada' | 'new_hampshire' | 'new_jersey' | 'new_mexico' | 'new_york' | 'north_carolina' | 'north_dakota' | 'ohio' | 'oklahoma' | 'oregon' | 'pennsylvania' | 'rhode_island' | 'south_carolina' | 'south_dakota' | 'tennessee' | 'texas' | 'utah' | 'vermont' | 'virginia' | 'washington' | 'west_virginia' | 'wisconsin' | 'wyoming' | 'district_of_columbia' | 'puerto_rico' | 'virgin_islands' | 'guam' | 'northern_mariana_islands' | 'american_samoa'; export type PatientCreatedFrom = 'form' | 'call' | 'api' | 'file' | 'sms' | 'fax' | 'chat_agent' | 'manual' | 'bulk_import' | 'eligibility' | 'prior_auth'; export type EligibilityStatus = 'active' | 'inactive' | 'pending' | 'failed'; export type EligibilityFilterMode = 'any' | 'primary' | 'secondary' | 'tertiary' | 'quaternary'; export type SyncStatus = 'pending' | 'completed'; export type InsurancePlanType = '01' | '02' | '03' | '12' | '13' | '14' | '15' | '16' | '17' | '18' | '19' | '41' | '42' | '43' | '47' | '48' | '49' | 'AP' | 'C1' | 'CO' | 'CP' | 'D' | 'DB' | 'EP' | 'FF' | 'GP' | 'HB' | 'HD' | 'HG' | 'HM' | 'HN' | 'HP' | 'HS' | 'IN' | 'IP' | 'LC' | 'LD' | 'LI' | 'LT' | 'M' | 'MA' | 'MB' | 'MC' | 'MD' | 'ME' | 'MH' | 'MI' | 'MJ' | 'MK' | 'ML' | 'MM' | 'MN' | 'MO' | 'MP' | 'MR' | 'MT' | 'OA' | 'OT' | 'PE' | 'PL' | 'PP' | 'PR' | 'PS' | 'QM' | 'RP' | 'SA' | 'SP' | 'TF' | 'WC' | 'WU'; export type PatientExpand = 'tags' | 'workflow_stage' | 'assigned_user' | 'referrals' | 'payors' | 'external_id_values'; export type PatientStatusFilter = 'active' | 'inactive' | 'all'; export type TagFilterMode = 'any' | 'all' | 'exclude_any' | 'exclude_all'; export type GetApiV1PatientsArgs = {'workflow_stage_ids[]'?: (Array | null) | undefined, include_unassigned?: boolean | undefined, 'tags[]'?: (Array | null) | undefined, 'insurance_ids[]'?: (Array | null) | undefined, 'states[]'?: (Array | null) | undefined, 'location_ids[]'?: (Array | null) | undefined, 'organization_ids[]'?: (Array | null) | undefined, 'created_from[]'?: (Array | null) | undefined, 'eligibility_status[]'?: (Array | null) | undefined, eligibility_filter_mode?: (EligibilityFilterMode | null) | undefined, 'sync_status[]'?: (Array | null) | undefined, plan_name?: (string | null) | undefined, 'plan_types[]'?: (Array | null) | undefined, group_description?: (string | null) | undefined, group_number?: (string | null) | undefined, 'expand[]'?: (Array | null) | undefined, page?: (number | null) | undefined, limit?: (number | null) | undefined, q?: (string | null) | undefined, id?: (string | null) | undefined, workflow_stage_id?: (string | null) | undefined, assigned_to?: (string | null) | undefined, status?: (PatientStatusFilter | null) | undefined, phone_number?: (string | null) | undefined, email?: (string | null) | undefined, external_id?: (string | null) | undefined, first_name?: (string | null) | undefined, last_name?: (string | null) | undefined, date_of_birth?: (string | null) | undefined, tag_filter_mode?: (TagFilterMode | null) | undefined, created_gte?: (string | null) | undefined, created_lte?: (string | null) | undefined, updated_gte?: (string | null) | undefined, updated_lte?: (string | null) | undefined}; export type GetApiV1PatientsOptions = {baseUrl: string, APIKeyHeader?: string | undefined, fetch?: typeof fetch | undefined}; export const gender = z.enum(["male", "female", "other"]); export const states = z.enum(["alabama", "alaska", "arizona", "arkansas", "california", "colorado", "connecticut", "delaware", "florida", "georgia", "hawaii", "idaho", "illinois", "indiana", "iowa", "kansas", "kentucky", "louisiana", "maine", "maryland", "massachusetts", "michigan", "minnesota", "mississippi", "missouri", "montana", "nebraska", "nevada", "new_hampshire", "new_jersey", "new_mexico", "new_york", "north_carolina", "north_dakota", "ohio", "oklahoma", "oregon", "pennsylvania", "rhode_island", "south_carolina", "south_dakota", "tennessee", "texas", "utah", "vermont", "virginia", "washington", "west_virginia", "wisconsin", "wyoming", "district_of_columbia", "puerto_rico", "virgin_islands", "guam", "northern_mariana_islands", "american_samoa"]); export const patientCreatedFrom = z.enum(["form", "call", "api", "file", "sms", "fax", "chat_agent", "manual", "bulk_import", "eligibility", "prior_auth"]); export const tag = z.object({id: z.string(), name: z.string()}); export const workflowStageAction = z.enum(["verify_insurance", "sync_external", "complete_verification"]); export const workflowStageSummary = z.object({id: z.string(), title: z.string().nullable().optional(), actions: z.array(workflowStageAction).nullable().optional(), order: z.number().int().nullable().optional(), description: z.string().nullable().optional()}); export const userSummary = z.object({id: z.string(), name: z.string().nullable().optional(), email: z.string().nullable().optional()}); export const serviceType = z.enum(["medical_care", "surgical", "consultation", "diagnostic_x_ray", "diagnostic_lab", "radiation_therapy", "anesthesia", "surgical_assistance", "other_medical", "blood_charges", "used_durable_medical_equipment", "durable_medical_equipment_purchase", "ambulatory_service_center_facility", "renal_supplies_in_home", "alternate_method_dialysis", "chronic_renal_disease_equipment", "pre_admission_testing", "durable_medical_equipment_rental", "pneumonia_vaccine", "second_surgical_opinion", "third_surgical_opinion", "social_work", "diagnostic_dental", "periodontics", "restorative", "endodontics", "maxillofacial_prosthetics", "adjunctive_dental_services", "health_benefit_plan_coverage", "plan_waiting_period", "chiropractic", "chiropractic_office_visits", "dental_care", "dental_crowns", "dental_accident", "orthodontics", "prosthodontics", "oral_surgery", "routine_preventive_dental", "home_health_care", "home_health_prescriptions", "home_health_visits", "hospice", "respite_care", "hospital", "hospital_inpatient", "hospital_room_and_board", "hospital_outpatient", "hospital_emergency_accident", "hospital_emergency_medical", "hospital_ambulatory_surgical", "long_term_care", "major_medical", "medically_related_transportation", "air_transportation", "cabulance", "licensed_ambulance", "general_benefits", "in_vitro_fertilization", "mri_cat_scan", "donor_procedures", "acupuncture", "newborn_care", "pathology", "smoking_cessation", "well_baby_care", "maternity", "transplants", "audiology_exam", "inhalation_therapy", "diagnostic_medical", "private_duty_nursing", "prosthetic_device", "dialysis", "otological_exam", "chemotherapy", "allergy_testing", "immunizations", "routine_physical", "family_planning", "infertility", "abortion", "aids", "emergency_services", "cancer", "pharmacy", "free_standing_prescription_drug", "mail_order_prescription_drug", "brand_name_prescription_drug", "generic_prescription_drug", "podiatry", "podiatry_office_visits", "podiatry_nursing_home_visits", "professional_physician", "anesthesiologist", "professional_visit_office", "professional_visit_inpatient", "professional_visit_outpatient", "professional_visit_nursing_home", "professional_visit_skilled_nursing_facility", "professional_visit_home", "psychiatric", "psychiatric_room_and_board", "psychotherapy", "psychiatric_inpatient", "psychiatric_outpatient", "rehabilitation", "rehabilitation_room_and_board", "rehabilitation_inpatient", "rehabilitation_outpatient", "occupational_therapy", "physical_medicine", "speech_therapy", "skilled_nursing_care", "skilled_nursing_care_room_and_board", "substance_abuse", "alcoholism", "drug_addiction", "vision_optometry", "frames", "routine_exam", "lenses", "nonmedically_necessary_physical", "experimental_drug_therapy", "burn_care", "brand_name_prescription_drug_formulary", "brand_name_prescription_drug_non_formulary", "independent_medical_evaluation", "partial_hospitalization_psychiatric", "day_care_psychiatric", "cognitive_therapy", "massage_therapy", "pulmonary_rehabilitation", "cardiac_rehabilitation", "pediatric", "nursery", "skin", "orthopedic", "cardiac", "lymphatic", "gastrointestinal", "endocrine", "neurology", "eye", "invasive_procedures", "gynecological", "obstetrical", "obstetrical_gynecological", "mail_order_prescription_drug_brand_name", "mail_order_prescription_drug_generic", "physician_visit_office_sick", "physician_visit_office_well", "coronary_care", "private_duty_nursing_inpatient", "private_duty_nursing_home", "surgical_benefits_professional", "surgical_benefits_facility", "mental_health_provider_inpatient", "mental_health_provider_outpatient", "mental_health_facility_inpatient", "mental_health_facility_outpatient", "substance_abuse_facility_inpatient", "substance_abuse_facility_outpatient", "screening_x_ray", "screening_laboratory", "mammogram_high_risk_patient", "mammogram_low_risk_patient", "flu_vaccination", "eyewear_and_accessories", "case_management", "dermatology", "durable_medical_equipment", "diabetic_supplies", "generic_prescription_drug_formulary", "generic_prescription_drug_non_formulary", "allergy", "intensive_care", "mental_health", "neonatal_intensive_care", "oncology", "physical_therapy", "pulmonary", "renal", "residential_psychiatric_treatment", "transitional_care", "transitional_nursery_care", "urgent_care"]); export const referralResponse = z.object({id: z.string(), physician_name: z.string().nullable().optional(), physician_email: z.string().nullable().optional(), physician_phone: z.string().nullable().optional(), physician_fax: z.string().nullable().optional(), physician_group: z.string().nullable().optional(), physician_npi: z.string().nullable().optional(), physician_address: z.string().nullable().optional(), physician_address_2: z.string().nullable().optional(), physician_city: z.string().nullable().optional(), physician_state: states.nullable().optional(), physician_zip: z.string().nullable().optional(), icd_codes: z.array(z.string()).nullable().optional(), service_types: z.array(serviceType).nullable().optional(), start_date: z.string().nullable().optional(), end_date: z.string().nullable().optional(), location_id: z.string().nullable().optional(), created_at: z.string().nullable().optional(), updated_at: z.string().nullable().optional()}); export const relationshipToSubscriber = z.enum(["spouse", "self", "child", "employee", "unknown", "organ_donor", "cadaver_donor", "life_partner", "other_relationship"]); export const insuranceTier = z.enum(["primary", "secondary", "tertiary", "quaternary"]); export const providerNetworkStatus = z.enum(["unknown", "in_network", "out_of_network"]); export const cbhStatus = z.enum(["active", "inactive"]); export const planFundingType = z.enum(["fully_funded", "self_funded", "unknown"]); export const insurancePlanType = z.enum(["01", "02", "03", "12", "13", "14", "15", "16", "17", "18", "19", "41", "42", "43", "47", "48", "49", "AP", "C1", "CO", "CP", "D", "DB", "EP", "FF", "GP", "HB", "HD", "HG", "HM", "HN", "HP", "HS", "IN", "IP", "LC", "LD", "LI", "LT", "M", "MA", "MB", "MC", "MD", "ME", "MH", "MI", "MJ", "MK", "ML", "MM", "MN", "MO", "MP", "MR", "MT", "OA", "OT", "PE", "PL", "PP", "PR", "PS", "QM", "RP", "SA", "SP", "TF", "WC", "WU"]); export const planRenewalDateType = z.enum(["calendar_year", "service_year", "contract"]); export const cobStatus = z.enum(["not_required", "pending", "complete"]); export const eligibilityStatus = z.enum(["active", "inactive", "pending", "failed"]); export const verificationBenefitsStatus = z.enum(["completed", "pending", "in_progress"]); export const oonReimbursementRateType = z.enum(["ucr", "medicare", "mnrp", "maa", "billed_charges", "fee_schedule", "mrc1", "mrc2", "local_allowable_rates"]); export const serviceLocation = z.enum(["standard", "home", "office", "school", "daycare", "community", "telehealth"]); export const periodicMaximumTimePeriod = z.enum(["daily", "monthly", "annually"]); export const limitType = z.enum(["soft", "hard"]); export const payorServiceLocation = z.object({service_location: serviceLocation, covered_in_network: z.boolean().nullable().optional(), covered_out_network: z.boolean().nullable().optional(), copay_in_network: z.number().nullable().optional(), copay_out_network: z.number().nullable().optional(), co_insurance_in_network: z.number().nullable().optional(), co_insurance_out_network: z.number().nullable().optional(), auth_required_in_network: z.boolean().nullable().optional(), auth_required_out_network: z.boolean().nullable().optional(), auth_required_at_visit_in_network: z.number().int().nullable().optional(), auth_required_at_visit_out_network: z.number().int().nullable().optional(), mnr_required_in_network: z.boolean().nullable().optional(), mnr_required_out_network: z.boolean().nullable().optional(), mnr_required_at_visit_in_network: z.number().int().nullable().optional(), mnr_required_at_visit_out_network: z.number().int().nullable().optional(), deductible_apply_in_network: z.boolean().nullable().optional(), deductible_apply_out_network: z.boolean().nullable().optional(), oop_apply_in_network: z.boolean().nullable().optional(), oop_apply_out_network: z.boolean().nullable().optional(), dollar_limit_in_network: z.number().nullable().optional(), dollar_limit_out_network: z.number().nullable().optional(), dollar_limit_remaining_in_network: z.number().nullable().optional(), dollar_limit_remaining_out_network: z.number().nullable().optional(), dollar_limit_time_period_in_network: periodicMaximumTimePeriod.nullable().optional(), dollar_limit_time_period_out_network: periodicMaximumTimePeriod.nullable().optional(), dollar_limit_type_in_network: limitType.nullable().optional(), dollar_limit_type_out_network: limitType.nullable().optional(), visit_limit_in_network: z.number().nullable().optional(), visit_limit_out_network: z.number().nullable().optional(), visit_limit_remaining_in_network: z.number().nullable().optional(), visit_limit_remaining_out_network: z.number().nullable().optional(), visit_limit_time_period_in_network: periodicMaximumTimePeriod.nullable().optional(), visit_limit_time_period_out_network: periodicMaximumTimePeriod.nullable().optional(), visit_limit_type_in_network: limitType.nullable().optional(), visit_limit_type_out_network: limitType.nullable().optional(), id: z.string(), payor_service_id: z.string(), created_at: z.string().nullable(), updated_at: z.string().nullable(), version: z.number().int().optional()}); export const payorService = z.object({id: z.string(), payor_id: z.string(), service_type: serviceType, created_at: z.string().nullable(), updated_at: z.string().nullable(), verification_benefits_status: verificationBenefitsStatus.optional(), verification_dates: z.array(z.string()).nullable().optional(), verification_user_ids: z.array(z.string().nullable()).nullable().optional(), verification_benefits_comment: z.string().nullable().optional(), pre_cert_name: z.string().nullable().optional(), pre_cert_phone_number: z.string().nullable().optional(), pre_cert_fax: z.string().nullable().optional(), pre_cert_url: z.string().nullable().optional(), pre_cert_penalty: z.string().nullable().optional(), pre_cert_email: z.string().nullable().optional(), sca_instructions: z.string().nullable().optional(), claim_address: z.string().nullable().optional(), oon_reimbursement_rate: z.number().nullable().optional(), oon_reimbursement_rate_type: oonReimbursementRateType.nullable().optional(), eligibility_check_id: z.string().nullable().optional(), carve_out_insurer_id: z.string().nullable().optional(), location_id: z.string().nullable().optional(), rep_name: z.string().nullable().optional(), call_reference_notes: z.string().nullable().optional(), covered_cpt_codes: z.array(z.string()).nullable().optional(), not_covered_cpt_codes: z.array(z.string()).nullable().optional(), covered_icd_codes: z.array(z.string()).nullable().optional(), not_covered_icd_codes: z.array(z.string()).nullable().optional(), version: z.number().int().optional(), location_rates: z.array(payorServiceLocation).nullable().optional(), payor: z.record(z.string(), z.unknown()).nullable().optional()}); export const payor = z.object({id: z.string(), created_at: z.string().nullable(), updated_at: z.string().nullable(), patient_id: z.string(), insurance_id: z.string(), insurance_display_name: z.string().nullable().optional(), subscriber_id: z.string().nullable().optional(), relationship_to_subscriber: relationshipToSubscriber.nullable().optional(), insured_member_id: z.string().nullable().optional(), group_number: z.string().nullable().optional(), group_description: z.string().nullable().optional(), medicaid_id: z.string().nullable().optional(), payor_responsibility: insuranceTier.nullable().optional(), coverage_from: z.string().nullable().optional(), coverage_to: z.string().nullable().optional(), provider_network_status: providerNetworkStatus.nullable().optional(), cbh_status: cbhStatus.nullable().optional(), plan_funding_type: planFundingType.nullable().optional(), plan_name: z.string().nullable().optional(), plan_type: insurancePlanType.nullable().optional(), plan_renewal_date_type: planRenewalDateType.nullable().optional(), cob_on_file: cobStatus.nullable().optional(), cob_notes: z.string().nullable().optional(), cob_last_verified_at: z.string().nullable().optional(), has_other_active_coverage: z.boolean().nullable().optional(), out_of_state_benefits: z.boolean().nullable().optional(), out_of_state_benefits_comments: z.string().nullable().optional(), in_grace_period: z.boolean().nullable().optional(), last_payment_date: z.string().nullable().optional(), is_cobra_coverage: z.boolean().nullable().optional(), deductible_apply_to_oop: z.boolean().nullable().optional(), copay_applies_to_oop_max: z.boolean().nullable().optional(), eligibility_check_status: eligibilityStatus.optional(), eligibility_check_comment: z.string().nullable().optional(), eligibility_check_date: z.string().nullable().optional(), eligibility_version: z.number().int().optional(), individual_deductible_policy_in_network: z.number().nullable().optional(), individual_deductible_policy_out_network: z.number().nullable().optional(), individual_deductible_remaining_in_network: z.number().nullable().optional(), individual_deductible_remaining_out_network: z.number().nullable().optional(), family_deductible_policy_in_network: z.number().nullable().optional(), family_deductible_policy_out_network: z.number().nullable().optional(), family_deductible_remaining_in_network: z.number().nullable().optional(), family_deductible_remaining_out_network: z.number().nullable().optional(), individual_oop_max_policy_in_network: z.number().nullable().optional(), individual_oop_max_policy_out_network: z.number().nullable().optional(), individual_oop_max_remaining_in_network: z.number().nullable().optional(), individual_oop_max_remaining_out_network: z.number().nullable().optional(), family_oop_max_policy_in_network: z.number().nullable().optional(), family_oop_max_policy_out_network: z.number().nullable().optional(), family_oop_max_remaining_in_network: z.number().nullable().optional(), family_oop_max_remaining_out_network: z.number().nullable().optional(), benefits_related_entities: z.array(z.record(z.string(), z.unknown())).nullable().optional(), ai_summary: z.string().nullable().optional(), ai_summary_generated_at: z.string().nullable().optional(), patient: z.record(z.string(), z.unknown()).nullable().optional(), insurance: z.record(z.string(), z.unknown()).nullable().optional(), subscriber: z.record(z.string(), z.unknown()).nullable().optional(), services: z.array(payorService).nullable().optional(), active: z.boolean().optional(), version: z.number().int().optional()}); export const externalIdTypeSummary = z.object({id: z.string(), name: z.string(), created_at: z.string().nullable().optional()}); export const externalIdValueResponse = z.object({id: z.string(), patient_id: z.string(), value: z.string(), external_id_type: externalIdTypeSummary, created_at: z.string(), updated_at: z.string()}); export const patient = z.object({id: z.string(), created_at: z.string().nullable(), updated_at: z.string().nullable(), first_name: z.string().nullable().optional(), last_name: z.string().nullable().optional(), middle_name: z.string().nullable().optional(), phone_number: z.string().nullable().optional(), additional_phone_number: z.string().nullable().optional(), email: z.string().nullable().optional(), date_of_birth: z.string().nullable().optional(), gender: gender.nullable().optional(), address: z.string().nullable().optional(), address2: z.string().nullable().optional(), city: z.string().nullable().optional(), state: states.nullable().optional(), zip: z.string().nullable().optional(), workflow_stage_id: z.string().nullable().optional(), assigned_user_id: z.string().nullable().optional(), location_id: z.string().nullable().optional(), organization_id: z.string().nullable().optional(), created_from: patientCreatedFrom.nullable().optional(), active: z.boolean().optional(), version: z.number().int().optional(), first_communication_at: z.string().nullable().optional(), custom_fields: z.record(z.string(), z.unknown()).nullable().optional(), comments: z.string().nullable().optional(), tags: z.array(tag).nullable().optional(), workflow_stage: workflowStageSummary.nullable().optional(), assigned_user: userSummary.nullable().optional(), referrals: z.array(referralResponse).nullable().optional(), payors: z.array(payor).nullable().optional(), external_id_values: z.array(externalIdValueResponse).nullable().optional()}); export const pagination = z.object({has_more: z.boolean(), total: z.number().int(), page: z.number().int(), limit: z.number().int()}); export const patientList = z.object({data: z.array(patient), pagination: pagination}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List Patients * * GET /v1/patients * * Also accepts auth: HTTPBearer */ export const getApiV1Patients = async (args: GetApiV1PatientsArgs, options: GetApiV1PatientsOptions) => { const {baseUrl, fetch: fetchFn = fetch, APIKeyHeader} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") for (const item of args['workflow_stage_ids[]'] ?? []) query.append("workflow_stage_ids[]", String(item)) if (args.include_unassigned != null) query.append("include_unassigned", String(args.include_unassigned)) for (const item of args['tags[]'] ?? []) query.append("tags[]", String(item)) for (const item of args['insurance_ids[]'] ?? []) query.append("insurance_ids[]", String(item)) for (const item of args['states[]'] ?? []) query.append("states[]", String(item)) for (const item of args['location_ids[]'] ?? []) query.append("location_ids[]", String(item)) for (const item of args['organization_ids[]'] ?? []) query.append("organization_ids[]", String(item)) for (const item of args['created_from[]'] ?? []) query.append("created_from[]", String(item)) for (const item of args['eligibility_status[]'] ?? []) query.append("eligibility_status[]", String(item)) if (args.eligibility_filter_mode != null) query.append("eligibility_filter_mode", String(args.eligibility_filter_mode)) for (const item of args['sync_status[]'] ?? []) query.append("sync_status[]", String(item)) if (args.plan_name != null) query.append("plan_name", String(args.plan_name)) for (const item of args['plan_types[]'] ?? []) query.append("plan_types[]", String(item)) if (args.group_description != null) query.append("group_description", String(args.group_description)) if (args.group_number != null) query.append("group_number", String(args.group_number)) for (const item of args['expand[]'] ?? []) query.append("expand[]", String(item)) if (args.page != null) query.append("page", String(args.page)) if (args.limit != null) query.append("limit", String(args.limit)) if (args.q != null) query.append("q", String(args.q)) if (args.id != null) query.append("id", String(args.id)) if (args.workflow_stage_id != null) query.append("workflow_stage_id", String(args.workflow_stage_id)) if (args.assigned_to != null) query.append("assigned_to", String(args.assigned_to)) if (args.status != null) query.append("status", String(args.status)) if (args.phone_number != null) query.append("phone_number", String(args.phone_number)) if (args.email != null) query.append("email", String(args.email)) if (args.external_id != null) query.append("external_id", String(args.external_id)) if (args.first_name != null) query.append("first_name", String(args.first_name)) if (args.last_name != null) query.append("last_name", String(args.last_name)) if (args.date_of_birth != null) query.append("date_of_birth", String(args.date_of_birth)) if (args.tag_filter_mode != null) query.append("tag_filter_mode", String(args.tag_filter_mode)) if (args.created_gte != null) query.append("created_gte", String(args.created_gte)) if (args.created_lte != null) query.append("created_lte", String(args.created_lte)) if (args.updated_gte != null) query.append("updated_gte", String(args.updated_gte)) if (args.updated_lte != null) query.append("updated_lte", String(args.updated_lte)) if (APIKeyHeader !== undefined) headers.set("X-API-Key", APIKeyHeader) const url = `${baseUrl.replace(/\/+$/, '')}/v1/patients${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(patientList, await res.json()) };