import type { ClinicalDocument as RawClinicalDocument, ClinicalClientGoal as RawClinicalClientGoal, ClinicalClientMedication as RawClinicalClientMedication, ClinicalClientResourceAssignment as RawClinicalClientResourceAssignment, ClinicalClientSupplement as RawClinicalClientSupplement, ClinicalDelivery as RawClinicalDelivery, ClinicalGoalTemplate as RawClinicalGoalTemplate, ClinicalGoalTemplateCategory as RawClinicalGoalTemplateCategory, ClinicalGoalTemplateCollection as RawClinicalGoalTemplateCollection, ClinicalGoalTemplateCollectionMembership as RawClinicalGoalTemplateCollectionMembership, ClinicalHealthMetric as RawClinicalHealthMetric, ClinicalIntakeTarget as RawClinicalIntakeTarget, ClinicalMealPlan as RawClinicalMealPlan, ClinicalNote as RawClinicalNote, ClinicalNoteTemplate as RawClinicalNoteTemplate, ClinicalNoteVersion as RawClinicalNoteVersion, ClinicalPatient as RawClinicalPatient, ClinicalInsuranceAuthorization as RawClinicalInsuranceAuthorization, ClinicalPatientInsurance as RawClinicalPatientInsurance, ClinicalPracticeResource as RawClinicalPracticeResource, ClinicalPracticeResourceCategory as RawClinicalPracticeResourceCategory, ClinicalPracticeTool as RawClinicalPracticeTool, ClinicalPracticeToolCategory as RawClinicalPracticeToolCategory, ClinicalSession as RawClinicalSession, ClinicalSupplementRecCache as RawClinicalSupplementRecCache, ClinicalSupplementTemplate as RawClinicalSupplementTemplate, ClinicalSupplementTemplateCollection as RawClinicalSupplementTemplateCollection, ClinicalSupplementTemplateCollectionMembership as RawClinicalSupplementTemplateCollectionMembership } from "../_internal/types.gen"; import type { FlatResource } from "../json-api"; import { RequestBuilder } from "../request-builder"; import type { RequestOptions } from "../base-client"; export type ClinicalDocument = FlatResource; export type ClinicalClientGoal = FlatResource; export type ClinicalClientResourceAssignment = FlatResource; export type ClinicalClientMedication = FlatResource; export type ClinicalClientSupplement = FlatResource & { /** Consecutive adherent check-in periods (taken or partial). Nil for supplements without frequency. Loaded on demand. */ current_streak?: number | null; /** All-time longest adherent streak. Nil for supplements without frequency. Loaded on demand. */ longest_streak?: number | null; /** Adherence rate for current calendar month (0-1 decimal). Nil for supplements without frequency. Loaded on demand. */ adherence_rate?: number | null; /** Most recent check-in date (YYYY-MM-DD). Nil if no check-ins. Loaded on demand. */ last_check_in_date?: string | null; }; export type ClinicalDelivery = FlatResource; export type ClinicalGoalTemplate = FlatResource; export type ClinicalGoalTemplateCategory = FlatResource; /** Flattened goal template collection. */ export type ClinicalGoalTemplateCollection = FlatResource; /** Flattened goal template collection membership. */ export type ClinicalGoalTemplateCollectionMembership = FlatResource; export type ClinicalHealthMetric = FlatResource; export type ClinicalIntakeTarget = FlatResource; export type ClinicalMealPlan = FlatResource; export type ClinicalNote = FlatResource; export type ClinicalNoteTemplate = FlatResource; export type ClinicalNoteVersion = FlatResource; export type ClinicalPatient = FlatResource; export type ClinicalInsuranceAuthorization = FlatResource; export type ClinicalPatientInsurance = FlatResource; export type ClinicalPracticeResource = FlatResource; export type ClinicalPracticeResourceCategory = FlatResource; export type ClinicalPracticeTool = FlatResource; export type ClinicalPracticeToolCategory = FlatResource; export type ClinicalSession = FlatResource; export type ClinicalSupplementRecCache = FlatResource; /** Flattened supplement template. */ export type ClinicalSupplementTemplate = FlatResource; /** Flattened supplement template collection. */ export type ClinicalSupplementTemplateCollection = FlatResource; /** Flattened supplement template collection membership. */ export type ClinicalSupplementTemplateCollectionMembership = FlatResource; /** Standard JSON:API list parameters for clinical resources. */ export interface ClinicalListParams { /** Filter results. */ filter?: Record; /** Sort by field(s). Prefix with '-' for descending. */ sort?: string; /** Pagination parameters. */ page?: { count?: boolean; limit?: number; offset?: number; }; /** Include related resources (comma-separated). */ include?: string; } /** List parameters for workspace-scoped clinical resources. */ export interface ClinicalWorkspaceListParams extends ClinicalListParams { workspace_id: string; } export interface ClinicalAnalyticsOverview { total_patients: number; total_sessions: number; active_patients_last_30d: number; } export interface ClinicalPipelineAnalytics { pipeline_runs_last_30d: number; completion_rate: number; awaiting_approval_count: number; } export interface CreateClinicalPatientAttributes { workspace_id: string; contact_id?: string; assigned_user_id?: string; status?: string; timezone?: string; state?: string; tags?: string[]; date_of_birth?: string; sex?: string; height_inches?: string; weight_lbs?: string; goal_weight_lbs?: string; activity_level?: string; eating_style?: string[]; meals_per_day?: number; snacks_per_day?: number; conditions?: string[]; food_aversions?: string[]; food_allergies?: string[]; food_preferences?: string[]; target_calories_override?: number; protein_pct?: string; carbs_pct?: string; fat_pct?: string; protein_unit?: string; protein_per_weight?: string; followup_interval_value?: number; followup_interval_unit?: string; primary_insurance?: string; diagnosis_codes?: string[]; referring_physician_name?: string; referring_physician_phone?: string; referring_physician_fax?: string; chief_concern?: string; referral_source?: "self" | "physician" | "insurance" | "employer_wellness" | "other"; surgical_history?: string; preferred_name?: string; enrollment_type?: "initial_consultation" | "transfer" | "group_enrollment" | "readmission"; profile_data?: Record; external_ids?: Record; metadata?: Record; } export interface UpdateClinicalPatientAttributes { contact_id?: string; assigned_user_id?: string; status?: string; timezone?: string; state?: string; tags?: string[]; date_of_birth?: string; sex?: string; height_inches?: string; weight_lbs?: string; goal_weight_lbs?: string; activity_level?: string; eating_style?: string[]; meals_per_day?: number; snacks_per_day?: number; conditions?: string[]; food_aversions?: string[]; food_allergies?: string[]; food_preferences?: string[]; target_calories_override?: number; protein_pct?: string; carbs_pct?: string; fat_pct?: string; protein_unit?: string; protein_per_weight?: string; followup_interval_value?: number; followup_interval_unit?: string; primary_insurance?: string; diagnosis_codes?: string[]; referring_physician_name?: string; referring_physician_phone?: string; referring_physician_fax?: string; chief_concern?: string; referral_source?: "self" | "physician" | "insurance" | "employer_wellness" | "other"; surgical_history?: string; preferred_name?: string; enrollment_type?: "initial_consultation" | "transfer" | "group_enrollment" | "readmission"; profile_data?: Record; external_ids?: Record; metadata?: Record; } export interface CreateClientMedicationAttributes { workspace_id: string; patient_id: string; status?: "active" | "discontinued" | "on_hold" | "pending_review"; name: string; generic_name?: string; ndc_code?: string; dosage?: string; frequency?: string; instructions?: string; route?: string; prescriber_name?: string; prescriber_npi?: string; pharmacy_name?: string; pharmacy_phone?: string; prescribed_at?: string; start_date?: string; end_date?: string; refill_date?: string; refills_remaining?: number; indication?: string; clinical_notes?: string; source?: string; interaction_flags?: string[]; external_ids?: Record; metadata?: Record; } export interface UpdateClientMedicationAttributes { status?: "active" | "discontinued" | "on_hold" | "pending_review"; name?: string; generic_name?: string; ndc_code?: string; dosage?: string; frequency?: string; instructions?: string; route?: string; prescriber_name?: string; prescriber_npi?: string; pharmacy_name?: string; pharmacy_phone?: string; prescribed_at?: string; start_date?: string; end_date?: string; refill_date?: string; refills_remaining?: number; indication?: string; clinical_notes?: string; source?: string; interaction_flags?: string[]; external_ids?: Record; metadata?: Record; } export interface CreateGoalTemplateAttributes { workspace_id: string; goal_type: string; frequency?: "daily" | "weekly"; title: string; description?: string; action_steps?: string[]; priority?: "high" | "medium" | "low"; category?: string; timeframe?: string; tool_ids?: string[]; metadata?: Record; tags?: string[]; target_value?: string; unit?: string; linked_metric_type?: string; difficulty?: "beginner" | "intermediate" | "advanced"; evidence_base?: string; instructions?: string; suggested_duration_days?: number; applicable_conditions?: string[]; age_groups?: string[]; source_reference?: string; } export interface UpdateGoalTemplateAttributes { goal_type?: string; frequency?: "daily" | "weekly"; title?: string; description?: string; action_steps?: string[]; priority?: "high" | "medium" | "low"; category?: string; timeframe?: string; tool_ids?: string[]; metadata?: Record; is_active?: boolean; tags?: string[]; target_value?: string; unit?: string; linked_metric_type?: string; difficulty?: "beginner" | "intermediate" | "advanced"; evidence_base?: string; instructions?: string; suggested_duration_days?: number; applicable_conditions?: string[]; age_groups?: string[]; source_reference?: string; } export interface CreateFromExistingAttributes { workspace_id: string; source_template_id: string; } /** Attributes accepted when creating a goal template collection. */ export interface CreateGoalTemplateCollectionAttributes { workspace_id: string; name: string; description?: string; metadata?: Record; } /** Attributes accepted when updating a goal template collection. */ export interface UpdateGoalTemplateCollectionAttributes { name?: string; description?: string; metadata?: Record; } /** Attributes accepted when adding a template to a collection. */ export interface CreateCollectionMembershipAttributes { collection_id: string; template_id: string; sort_order?: number; } /** Attributes accepted when updating a collection membership. */ export interface UpdateCollectionMembershipAttributes { sort_order?: number; } export interface CreatePracticeToolAttributes { workspace_id: string; name: string; description?: string; tool_type?: string; url?: string; platform?: string; is_active?: boolean; category?: string; pricing_model?: "free" | "freemium" | "paid" | "prescription"; supported_platforms?: string[]; integrations?: string[]; website_url?: string; app_store_url?: string; play_store_url?: string; icon_url?: string; logo_url?: string; rating?: string; privacy_rating?: "hipaa_compliant" | "hipaa_partial" | "standard" | "unknown"; tags?: string[]; metadata?: Record; } export interface UpdatePracticeToolAttributes { name?: string; description?: string; tool_type?: string; url?: string; platform?: string; is_active?: boolean; category?: string; pricing_model?: "free" | "freemium" | "paid" | "prescription"; supported_platforms?: string[]; integrations?: string[]; website_url?: string; app_store_url?: string; play_store_url?: string; icon_url?: string; logo_url?: string; rating?: string; privacy_rating?: "hipaa_compliant" | "hipaa_partial" | "standard" | "unknown"; tags?: string[]; metadata?: Record; } export interface CreatePracticeResourceAttributes { workspace_id: string; title: string; description?: string; resource_type?: "article" | "video" | "handout" | "worksheet" | "tool_link" | "infographic" | "audio" | "recipe" | "checklist" | "protocol" | "assessment" | "exercise" | "template" | "presentation" | "ebook" | "other"; url?: string; tags?: string[]; is_active?: boolean; content_format?: "pdf" | "html" | "video_embed" | "external_link" | "interactive"; preview_url?: string; language?: string; reading_level?: "basic" | "intermediate" | "advanced" | "clinical"; audience?: "patient" | "practitioner" | "both"; author?: string; license?: string; estimated_duration_minutes?: number; applicable_conditions?: string[]; related_goal_types?: string[]; icon_url?: string; category?: string; condition_tags?: string[]; metadata?: Record; } export interface CreateCatalogGoalTemplateAttributes { goal_type: string; frequency?: "daily" | "weekly"; title: string; description?: string; action_steps?: string[]; priority?: "high" | "medium" | "low"; category?: string; timeframe?: string; tool_ids?: string[]; metadata?: Record; tags?: string[]; target_value?: string; unit?: string; linked_metric_type?: string; difficulty?: "beginner" | "intermediate" | "advanced"; evidence_base?: string; instructions?: string; suggested_duration_days?: number; applicable_conditions?: string[]; age_groups?: string[]; source_reference?: string; } export interface UpdateCatalogGoalTemplateAttributes extends UpdateGoalTemplateAttributes { } export interface CreateCatalogPracticeToolAttributes { name: string; description?: string; tool_type?: string; url?: string; platform?: string; is_active?: boolean; category?: string; pricing_model?: "free" | "freemium" | "paid" | "prescription"; supported_platforms?: string[]; integrations?: string[]; website_url?: string; app_store_url?: string; play_store_url?: string; icon_url?: string; logo_url?: string; rating?: string; privacy_rating?: "hipaa_compliant" | "hipaa_partial" | "standard" | "unknown"; tags?: string[]; metadata?: Record; } export interface UpdateCatalogPracticeToolAttributes extends UpdatePracticeToolAttributes { } export interface CreateCatalogPracticeResourceAttributes { title: string; description?: string; resource_type?: "article" | "video" | "handout" | "worksheet" | "tool_link" | "infographic" | "audio" | "recipe" | "checklist" | "protocol" | "assessment" | "exercise" | "template" | "presentation" | "ebook" | "other"; url?: string; tags?: string[]; is_active?: boolean; content_format?: "pdf" | "html" | "video_embed" | "external_link" | "interactive"; preview_url?: string; language?: string; reading_level?: "basic" | "intermediate" | "advanced" | "clinical"; audience?: "patient" | "practitioner" | "both"; author?: string; license?: string; estimated_duration_minutes?: number; applicable_conditions?: string[]; related_goal_types?: string[]; icon_url?: string; category?: string; condition_tags?: string[]; metadata?: Record; } export interface UpdatePracticeResourceAttributes { title?: string; description?: string; resource_type?: "article" | "video" | "handout" | "worksheet" | "tool_link" | "infographic" | "audio" | "recipe" | "checklist" | "protocol" | "assessment" | "exercise" | "template" | "presentation" | "ebook" | "other"; url?: string; tags?: string[]; is_active?: boolean; content_format?: "pdf" | "html" | "video_embed" | "external_link" | "interactive"; preview_url?: string; language?: string; reading_level?: "basic" | "intermediate" | "advanced" | "clinical"; audience?: "patient" | "practitioner" | "both"; author?: string; license?: string; estimated_duration_minutes?: number; applicable_conditions?: string[]; related_goal_types?: string[]; icon_url?: string; category?: string; condition_tags?: string[]; metadata?: Record; } export interface UpdateCatalogPracticeResourceAttributes extends UpdatePracticeResourceAttributes { } /** A practice resource category with usage count. */ export interface PracticeResourceCategory { category: string; resource_count: number; } export interface CreateInsuranceAuthorizationAttributes { insurance_record_id: string; authorized_units: number; unit_type: "visits" | "hours"; used_units?: number; cpt_codes_authorized?: string[]; authorization_start?: string; authorization_end?: string; reauthorization_reminder?: string; status?: "active" | "exhausted" | "expired" | "cancelled"; notes?: string; metadata?: Record; } export interface UpdateInsuranceAuthorizationAttributes { authorized_units?: number; used_units?: number; unit_type?: "visits" | "hours"; cpt_codes_authorized?: string[]; authorization_start?: string; authorization_end?: string; reauthorization_reminder?: string; status?: "active" | "exhausted" | "expired" | "cancelled"; notes?: string; metadata?: Record; } export interface CreatePatientInsuranceAttributes { patient_id: string; rank: "primary" | "secondary" | "tertiary"; carrier_name?: string; plan_name?: string; plan_type?: "ppo" | "hmo" | "epo" | "pos" | "hdhp" | "medicaid" | "medicare" | "tricare" | "other"; member_id?: string; group_number?: string; subscriber_name?: string; subscriber_relationship?: "self" | "spouse" | "child" | "other"; coverage_start?: string; coverage_end?: string; copay_amount?: string; authorization_number?: string; payer_id?: string; status?: "active" | "inactive" | "pending_verification"; metadata?: Record; } export interface UpdatePatientInsuranceAttributes { rank?: "primary" | "secondary" | "tertiary"; carrier_name?: string; plan_name?: string; plan_type?: "ppo" | "hmo" | "epo" | "pos" | "hdhp" | "medicaid" | "medicare" | "tricare" | "other"; member_id?: string; group_number?: string; subscriber_name?: string; subscriber_relationship?: "self" | "spouse" | "child" | "other"; coverage_start?: string; coverage_end?: string; copay_amount?: string; authorization_number?: string; payer_id?: string; status?: "active" | "inactive" | "pending_verification"; metadata?: Record; } /** Attributes for creating a clinical session. */ export interface CreateClinicalSessionAttributes { workspace_id: string; patient_id: string; owner_id?: string; external_owner_id?: string; event_id?: string; session_type?: string; session_status?: string; session_format?: string; session_date?: string; duration_minutes?: number; transcript_storage_key?: string; transcript?: string; session_summary?: string; notes?: string; external_ids?: Record; prep_execution_id?: string; metadata?: Record; } /** Attributes for updating a clinical session (PATCH semantics). */ export interface UpdateClinicalSessionAttributes { owner_id?: string; external_owner_id?: string; event_id?: string; pipeline_execution_id?: string; session_type?: string; session_status?: string; session_format?: string; session_date?: string; duration_minutes?: number; transcript_storage_key?: string; transcript?: string; session_summary?: string; notes?: string; external_ids?: Record; prep_execution_id?: string; metadata?: Record; } /** Attributes for creating a clinical note. */ export interface CreateClinicalNoteAttributes { workspace_id: string; session_id: string; pipeline_execution_id?: string; note_type?: string; note_content?: string; amends_note_id?: string; metadata?: Record; } /** Attributes for updating a clinical note (PATCH semantics). */ export interface UpdateClinicalNoteAttributes { pipeline_execution_id?: string; note_type?: string; note_content?: string; metadata?: Record; } /** Attributes for creating a health metric. */ export interface CreateHealthMetricAttributes { workspace_id: string; patient_id: string; session_id?: string; pipeline_execution_id?: string; metric_type: string; metric_category?: string; /** Decimal value as string (JSON:API convention — avoids floating-point precision loss). */ value_numeric?: string; value_text?: string; unit?: string; measured_at?: string; source?: string; extracted_from?: string; /** Decimal value as string (JSON:API convention — avoids floating-point precision loss). */ confidence?: string; raw_extract?: string; metadata?: Record; context_tags?: string[]; } /** Attributes for updating a health metric (PATCH semantics). */ export interface UpdateHealthMetricAttributes { metric_type?: string; metric_category?: string; /** Decimal value as string (JSON:API convention — avoids floating-point precision loss). */ value_numeric?: string; value_text?: string; unit?: string; measured_at?: string; source?: string; /** Decimal value as string (JSON:API convention — avoids floating-point precision loss). */ confidence?: string; metadata?: Record; context_tags?: string[]; } export interface HealthMetricSummaryParams { patient_id: string; metric_type?: string; from_date?: string; to_date?: string; group_by?: "day" | "week" | "month"; } export interface HealthMetricSummaryPeriod { period: string; metric_type?: string; count: number; avg: string | null; min: string | null; max: string | null; tag_counts: Record; } /** Attributes for creating a meal plan. */ export interface CreateMealPlanAttributes { workspace_id: string; patient_id?: string; session_id?: string; pipeline_execution_id?: string; status?: string; plan_type?: string; goal_calories?: number; parent_plan_id?: string; metadata?: Record; clinical_rationale?: string; hydration_guidelines?: string; intro_paragraph?: string; remember_message?: string; nutrition_targets?: Record; hand_portions?: Record; additional_tips?: string[]; food_group_targets?: Record[]; next_steps?: string[]; meal_schedule_id?: string; } /** Attributes for updating a meal plan (PATCH semantics). */ export interface UpdateMealPlanAttributes { status?: string; plan_type?: string; goal_calories?: number; metadata?: Record; clinical_rationale?: string; hydration_guidelines?: string; intro_paragraph?: string; remember_message?: string; nutrition_targets?: Record; hand_portions?: Record; additional_tips?: string[]; food_group_targets?: Record[]; next_steps?: string[]; meal_schedule_id?: string; } /** Attributes for creating a client goal. */ export interface CreateClientGoalAttributes { workspace_id: string; patient_id: string; status?: "active" | "completed" | "abandoned" | "paused" | "achieved" | "discontinued"; goal_type: string; frequency?: "daily" | "weekly"; title: string; description?: string; /** Decimal value as string (JSON:API convention). */ target_value?: string; /** Decimal value as string (JSON:API convention). */ current_value?: string; unit?: string; target_date?: string; linked_metric_type?: string; tool_ids?: string[]; action_steps?: string[]; priority?: "high" | "medium" | "low"; category?: string; timeframe?: string; position?: number; source?: "manual" | "session" | "template"; session_id?: string; template_id?: string; email_sent_at?: string; metadata?: Record; progress_notes?: string; achieved_at?: string; } /** Attributes for creating a client goal from a template. */ export interface CreateGoalFromTemplateAttributes { workspace_id: string; template_id: string; patient_id: string; } /** Attributes for updating a client goal (PATCH semantics). */ export interface UpdateClientGoalAttributes { status?: "active" | "completed" | "abandoned" | "paused" | "achieved" | "discontinued"; goal_type?: string; frequency?: "daily" | "weekly"; title?: string; description?: string; /** Decimal value as string (JSON:API convention). */ target_value?: string; /** Decimal value as string (JSON:API convention). */ current_value?: string; unit?: string; target_date?: string; linked_metric_type?: string; tool_ids?: string[]; action_steps?: string[]; priority?: "high" | "medium" | "low"; category?: string; timeframe?: string; position?: number; source?: "manual" | "session" | "template"; session_id?: string; template_id?: string; email_sent_at?: string; metadata?: Record; progress_notes?: string; achieved_at?: string; } /** Item in a batch update request. */ export interface BatchUpdateGoalItem { id: string; attributes: UpdateClientGoalAttributes; } /** Server response from a batch update operation. */ export interface BatchUpdateGoalResponse { updated: number; } /** Per-goal failure record returned from batch approve/reject operations. */ export interface BatchReviewGoalFailure { id: string; reason: string; } /** Minimal goal projection returned from batch approve/reject operations. */ export interface BatchReviewedGoal { id: string; patient_id: string; review_status: "none" | "draft" | "approved" | "rejected"; status: ClinicalClientGoal["status"]; reviewed_by_id: string | null; reviewed_at: string | null; title: string; } /** Server response from `clientGoals.batchApprove`. */ export interface BatchApproveGoalsResponse { approved: BatchReviewedGoal[]; failed: BatchReviewGoalFailure[]; } /** Server response from `clientGoals.batchReject`. */ export interface BatchRejectGoalsResponse { rejected: BatchReviewedGoal[]; failed: BatchReviewGoalFailure[]; } /** Server response from a goal history request. */ export interface GoalHistoryEvent { action: "goal_created" | "goal_updated" | "goal_archived" | "goal_restored"; changes?: { field: string; old: string | null; new: string | null; }[]; actor_id?: string; created_at: string; } export interface GoalHistoryResponse { events: GoalHistoryEvent[]; } /** Attributes for creating a goal association. */ export interface CreateGoalAssociationAttributes { entity_type: "meal_plan" | "session" | "health_metric" | "recipe" | "supplement"; entity_id: string; notes?: string; } /** A goal-entity association record. */ export interface GoalAssociation { id: string; client_goal_id: string; entity_type: "meal_plan" | "session" | "health_metric" | "recipe" | "supplement"; entity_id: string; notes?: string; inserted_at: string; } /** Attributes for creating a client supplement. */ export interface CreateClientSupplementAttributes { workspace_id: string; patient_id: string; status?: string; name: string; dosage?: string; frequency?: string; instructions?: string; rationale_client?: string; rationale_clinical?: string; fullscript_product_id?: string; fullscript_variant_id?: string; prescribed_at?: string; discontinued_at?: string; metadata?: Record; route?: string; source?: string; fullscript_treatment_plan_id?: string; interaction_flags?: string[]; protocol_template_id?: string; } /** Attributes for updating a client supplement (PATCH semantics). */ export interface UpdateClientSupplementAttributes { status?: string; name?: string; dosage?: string; frequency?: string; instructions?: string; rationale_client?: string; rationale_clinical?: string; fullscript_product_id?: string; fullscript_variant_id?: string; prescribed_at?: string; discontinued_at?: string; metadata?: Record; route?: string; source?: string; fullscript_treatment_plan_id?: string; interaction_flags?: string[]; protocol_template_id?: string; } /** A single item in a supplement batch update request. */ export interface BatchUpdateSupplementItem { /** ClientSupplement UUID to update. */ id: string; /** Fields to update (PATCH semantics). */ attributes: UpdateClientSupplementAttributes; } /** Response from a supplement batch update. */ export interface BatchUpdateSupplementResponse { /** Number of successfully updated supplements. */ updated: number; /** Updated supplement records. */ results: ClinicalClientSupplement[]; } /** A supplement check-in record. */ export interface SupplementCheckIn { id: string; supplement_id: string; /** ISO 8601 date (YYYY-MM-DD). */ check_in_date: string; /** Whether the supplement was taken, skipped, or partially taken. */ status: "taken" | "skipped" | "partial"; notes?: string | null; metadata?: Record; created_at?: string; updated_at?: string; } /** Attributes for creating a supplement check-in. */ export interface CreateSupplementCheckInAttributes { /** ISO 8601 date (YYYY-MM-DD). No future dates allowed. */ check_in_date: string; /** Whether the supplement was taken, skipped, or partially taken. */ status: "taken" | "skipped" | "partial"; notes?: string; metadata?: Record; } /** Attributes for updating a supplement check-in. */ export interface UpdateSupplementCheckInAttributes { status?: "taken" | "skipped" | "partial"; notes?: string; metadata?: Record; } /** Parameters for listing supplement check-ins. */ export interface ListSupplementCheckInsParams { /** Filter: only check-ins on or after this date (YYYY-MM-DD). */ start_date?: string; /** Filter: only check-ins on or before this date (YYYY-MM-DD). */ end_date?: string; } /** A single item in a supplement check-in batch upsert. */ export interface BatchSupplementCheckInItem { /** ISO 8601 date (YYYY-MM-DD). No future dates. */ check_in_date: string; status: "taken" | "skipped" | "partial"; notes?: string; metadata?: Record; } /** Response from a supplement check-in batch upsert. */ export interface BatchSupplementCheckInResponse { created: number; updated: number; failed: number; results: SupplementCheckIn[]; } /** Attributes for creating a supplement template. */ export interface CreateSupplementTemplateAttributes { workspace_id: string; name: string; description?: string; category?: string; applicable_conditions?: string[]; supplements: SupplementTemplateItemDefinition[]; metadata?: Record; tags?: string[]; source_catalog_id?: string; } /** Attributes for updating a supplement template (PATCH semantics). */ export interface UpdateSupplementTemplateAttributes { name?: string; description?: string; category?: string; applicable_conditions?: string[]; supplements?: SupplementTemplateItemDefinition[]; metadata?: Record; tags?: string[]; is_active?: boolean; } /** Catalog supplement template creation attributes. Same as workspace but without workspace_id. */ export interface CreateCatalogSupplementTemplateAttributes { name: string; description?: string; category?: string; applicable_conditions?: string[]; supplements: SupplementTemplateItemDefinition[]; metadata?: Record; tags?: string[]; } /** Catalog supplement template update attributes. */ export interface UpdateCatalogSupplementTemplateAttributes { name?: string; description?: string; category?: string; applicable_conditions?: string[]; supplements?: SupplementTemplateItemDefinition[]; metadata?: Record; tags?: string[]; is_active?: boolean; } /** A supplement definition within a template. */ export interface SupplementTemplateItemDefinition { name: string; dosage?: string; frequency?: string; route?: string; instructions?: string; rationale_client?: string; rationale_clinical?: string; } /** Attributes for creating a template from an existing one. */ export interface CreateFromExistingSupplementTemplateAttributes { workspace_id: string; source_template_id: string; } /** Response from applying a supplement template to a patient. */ export interface ApplySupplementTemplateResponse { template_id: string; results: Array<{ id?: string; status: string; error?: string; }>; } /** Attributes for creating a supplement template collection. */ export interface CreateSupplementTemplateCollectionAttributes { workspace_id: string; name: string; description?: string; metadata?: Record; } /** Attributes for updating a supplement template collection. */ export interface UpdateSupplementTemplateCollectionAttributes { name?: string; description?: string; metadata?: Record; } /** Attributes for creating a supplement template collection membership. */ export interface CreateSupplementCollectionMembershipAttributes { collection_id: string; template_id: string; sort_order?: number; } /** Attributes for updating a supplement template collection membership. */ export interface UpdateSupplementCollectionMembershipAttributes { sort_order?: number; } /** Attributes for creating a clinical delivery. */ export interface CreateClinicalDeliveryAttributes { workspace_id: string; patient_id: string; session_id?: string; delivery_type?: string; status?: string; email_message_id?: string; included_goal_ids?: string[]; included_supplement_ids?: string[]; included_resource_ids?: string[]; delivered_at?: string; metadata?: Record; } /** Attributes for updating a clinical delivery (PATCH semantics). */ export interface UpdateClinicalDeliveryAttributes { status?: string; delivered_at?: string; email_message_id?: string; metadata?: Record; } /** Attributes for creating a client resource assignment. */ export interface CreateClientResourceAssignmentAttributes { workspace_id: string; patient_id: string; resource_id: string; assigned_by_id?: string; status?: string; assigned_at?: string; notes?: string; metadata?: Record; } /** Attributes for updating a client resource assignment (PATCH semantics). */ export interface UpdateClientResourceAssignmentAttributes { status?: string; completed_at?: string; notes?: string; metadata?: Record; } /** Attributes for updating a supplement recommendation cache entry. */ export interface UpdateSupplementRecCacheAttributes { status?: string; recommendations?: Record; generated_at?: string; expires_at?: string; } /** Result of a tag rename operation. */ export interface TagRenameResult { updated_count: number; } /** Result of a tag delete operation. */ export interface TagDeleteResult { updated_count: number; } /** Result of a tag merge operation. */ export interface TagMergeResult { updated_count: number; } /** Parameters for importing resources from a URL. */ export interface ImportFromUrlParams { url: string; workspace_id: string; } /** Duplicate detection statistics for a resource type in a workspace. */ export interface DuplicateStats { total_resources: number; duplicate_groups: number; affected_resources: number; } /** A group of duplicate resources identified by similarity. */ export interface DuplicateGroup { group_id: string; resource_ids: string[]; match_type: string; confidence: number; sample_title: string; count: number; } /** Result of resolving a duplicate group. */ export interface DuplicateResolveResult { kept: string; archived: string[]; } /** * Creates the admin clinical namespace. * * @param rb - The request builder instance * @returns Analytics, goalTemplates, practiceTools, and practiceResources sub-namespaces */ /** Attributes for creating a clinical intake target. */ export interface CreateIntakeTargetAttributes { workspace_id: string; patient_id: string; is_active?: boolean; weight_kg: number; height_cm: number; age: number; sex: "male" | "female"; activity_level: "sedentary" | "lightly_active" | "moderately_active" | "very_active" | "extremely_active"; weight_method: "actual" | "ideal" | "adjusted"; weight_used_kg: number; bmr: number; tdee: number; goal_direction: "lose" | "maintain" | "gain"; rate_lbs_per_week?: number | null; calorie_adjustment: number; target_calories: number; macro_mode: "percentage" | "body_weight_protein" | "hybrid"; protein_pct: number; carbs_pct: number; fat_pct: number; protein_g_per_kg?: number | null; protein_grams: number; carbs_grams: number; fat_grams: number; simple_carbs_pct?: number | null; fruit_pct?: number | null; vegetables_pct?: number | null; meals_per_day: number; snacks_per_day: number; hydration_ml: number; condition_rules?: string[]; notes?: string | null; metadata?: Record; } /** Attributes for updating a clinical intake target. */ export interface UpdateIntakeTargetAttributes { weight_kg?: number; height_cm?: number; age?: number; sex?: "male" | "female"; activity_level?: "sedentary" | "lightly_active" | "moderately_active" | "very_active" | "extremely_active"; weight_method?: "actual" | "ideal" | "adjusted"; weight_used_kg?: number; bmr?: number; tdee?: number; goal_direction?: "lose" | "maintain" | "gain"; rate_lbs_per_week?: number | null; calorie_adjustment?: number; target_calories?: number; macro_mode?: "percentage" | "body_weight_protein" | "hybrid"; protein_pct?: number; carbs_pct?: number; fat_pct?: number; protein_g_per_kg?: number | null; protein_grams?: number; carbs_grams?: number; fat_grams?: number; simple_carbs_pct?: number | null; fruit_pct?: number | null; vegetables_pct?: number | null; meals_per_day?: number; snacks_per_day?: number; hydration_ml?: number; condition_rules?: string[]; notes?: string | null; metadata?: Record; } export type DocumentType = string; export type ExtractionStatus = "pending" | "processing" | "completed" | "failed" | "skipped"; export interface CreateDocumentAttributes { workspace_id: string; patient_id: string; storage_file_id: string; title: string; document_type: DocumentType; source_platform: string; source_date?: string; contact_id?: string; import_id?: string; expires_at?: string; } export interface UpdateDocumentAttributes { title?: string; document_type?: DocumentType; source_platform?: string; source_date?: string; contact_id?: string; expires_at?: string; } export interface ListDocumentsOptions { filter?: Record; page?: { offset?: number; limit?: number; }; sort?: string; } export interface ListDocumentsByPatientOptions { page?: { offset?: number; limit?: number; }; } export declare function createClinicalNamespace(rb: RequestBuilder): { /** * ISV clinical analytics — overview and pipeline metrics. */ analytics: { overview(workspaceId: string, params?: Record, options?: RequestOptions): Promise; pipeline(workspaceId: string, params?: Record, options?: RequestOptions): Promise; }; /** * Manage reusable clinical goal templates. */ goalTemplates: { /** * List goal templates in a workspace. * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of {@link ClinicalGoalTemplate} records */ list: (params: { workspace_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List practitioner's personal templates. * * @param params - Must include `created_by_id` * @param options - Request options * @returns Array of {@link ClinicalGoalTemplate} records */ listMine: (params: { created_by_id: string; }, options?: RequestOptions) => Promise; /** * List distinct goal template categories with counts. * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of {@link ClinicalGoalTemplateCategory} records */ listCategories: (params: { workspace_id: string; }, options?: RequestOptions) => Promise; /** * Get a single goal template by ID. * * @param id - GoalTemplate UUID * @param options - Request options * @returns {@link ClinicalGoalTemplate} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a new goal template. * * @param attributes - Must include `workspace_id`, `goal_type`, and `title` * @param options - Request options * @returns Created {@link ClinicalGoalTemplate} record * * @example * ```typescript * await admin.clinical.goalTemplates.create({ workspace_id: "..." }); * ``` */ create: (attributes: CreateGoalTemplateAttributes, options?: RequestOptions) => Promise; /** * Create a personalized template from an existing one. * * @param attributes - Must include `workspace_id` and `source_template_id` * @param options - Request options * @returns Created {@link ClinicalGoalTemplate} record * * @example * ```typescript * await admin.clinical.goalTemplates.createFromExisting({ workspace_id: "...", source_template_id: "..." }); * ``` */ createFromExisting: (attributes: CreateFromExistingAttributes, options?: RequestOptions) => Promise; /** * Update a goal template. * * @param id - GoalTemplate UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalGoalTemplate} record * * @example * ```typescript * await admin.clinical.goalTemplates.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateGoalTemplateAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a goal template. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - GoalTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalGoalTemplate} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a goal template. * * @param id - GoalTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalGoalTemplate} record * * @example * ```typescript * await admin.clinical.goalTemplates.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived goal template. * * @param id - GoalTemplate UUID * @param options - Request options * @returns Restored {@link ClinicalGoalTemplate} record * * @example * ```typescript * await admin.clinical.goalTemplates.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a goal template. This action is irreversible. * * @param id - GoalTemplate UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.goalTemplates.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived goal templates in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalGoalTemplate} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * List application-level catalog goal templates. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of {@link ClinicalGoalTemplate} catalog records */ listCatalog: (params: { application_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a catalog goal template by ID. * * @param id - GoalTemplate UUID * @param options - Request options * @returns {@link ClinicalGoalTemplate} catalog record */ getCatalog: (id: string, options?: RequestOptions) => Promise; /** * Create an application-level catalog goal template. * * @param attributes - Must include `goal_type` and `title` * @param options - Request options * @returns Created {@link ClinicalGoalTemplate} catalog record * * @example * ```typescript * await admin.clinical.goalTemplates.createCatalog({ title: "New" }); * ``` */ createCatalog: (attributes: CreateCatalogGoalTemplateAttributes, options?: RequestOptions) => Promise; /** * Update a catalog goal template. * * @param id - GoalTemplate UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalGoalTemplate} catalog record * * @example * ```typescript * await admin.clinical.goalTemplates.updateCatalog("uuid", { status: "active" }); * ``` */ updateCatalog: (id: string, attributes: UpdateCatalogGoalTemplateAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog goal template. * * @deprecated Use `archiveCatalog()` instead. Now performs soft-delete, not permanent deletion. * @param id - GoalTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalGoalTemplate} catalog record */ deleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog goal template. * * @param id - GoalTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalGoalTemplate} catalog record * * @example * ```typescript * await admin.clinical.goalTemplates.archiveCatalog("uuid"); * ``` */ archiveCatalog: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived catalog goal template. * * @param id - GoalTemplate UUID * @param options - Request options * @returns Restored {@link ClinicalGoalTemplate} catalog record * * @example * ```typescript * await admin.clinical.goalTemplates.restoreCatalog("uuid"); * ``` */ restoreCatalog: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a catalog goal template. This action is irreversible. * * @param id - GoalTemplate UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.goalTemplates.permanentDeleteCatalog("uuid"); * ``` */ permanentDeleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * List archived catalog goal templates. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalGoalTemplate} catalog records */ listArchivedCatalog: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * List distinct catalog goal template categories with counts. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of {@link ClinicalGoalTemplateCategory} records */ listCatalogCategories: (params: { application_id: string; }, options?: RequestOptions) => Promise; tags: { rename: (workspaceId: string, oldTag: string, newTag: string, options?: RequestOptions) => Promise; delete: (workspaceId: string, tag: string, options?: RequestOptions) => Promise; merge: (workspaceId: string, sourceTags: string[], targetTag: string, options?: RequestOptions) => Promise; }; imports: { fromFile: (workspaceId: string, file: File | Blob, options?: RequestOptions) => Promise>; fromUrl: (workspaceId: string, url: string, options?: RequestOptions) => Promise>; }; duplicates: { getStats: (workspaceId: string, options?: RequestOptions) => Promise; listGroups: (workspaceId: string, opts?: { threshold?: number; limit?: number; }, options?: RequestOptions) => Promise; resolve: (workspaceId: string, groupId: string, keepId: string, options?: RequestOptions) => Promise; }; collections: { /** Get a goal template collection by ID. */ get(id: string, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** List goal template collections for a workspace. */ list(params: { workspace_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions): Promise<(Omit & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; })[]>; /** Create a goal template collection. */ create(attrs: CreateGoalTemplateCollectionAttributes, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** Update a goal template collection. */ update(id: string, attrs: UpdateGoalTemplateCollectionAttributes, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** Delete a goal template collection. */ delete(id: string, options?: RequestOptions): Promise; templates: { /** Get a collection membership by ID. */ get(id: string, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** List templates in a collection. */ list(collectionId: string, options?: RequestOptions & { page?: { offset?: number; limit?: number; }; }): Promise<(Omit & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; })[]>; /** Add a template to a collection. Upserts on (collection_id, template_id). */ create(attrs: CreateCollectionMembershipAttributes, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** Update a collection membership (e.g., sort order). */ update(id: string, attrs: UpdateCollectionMembershipAttributes, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** Remove a template from a collection. */ delete(id: string, options?: RequestOptions): Promise; }; }; }; /** * Manage clinical note templates — reusable SOAP/ADIME/progress note scaffolds. * * Templates carry placeholder strings substituted at apply time. Dual-scoped: * workspace OR application catalog. Template `sections` are NOT PHI — they * hold scaffolds only. */ noteTemplates: { list: (params: { workspace_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; listMine: (params: { created_by_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; get: (id: string, options?: RequestOptions) => Promise; create: (attributes: { workspace_id: string; note_type: "soap" | "adime" | "progress" | "discharge" | "addendum"; title: string; description?: string; sections: Record; category?: string; tags?: string[]; metadata?: Record; source_catalog_id?: string; }, options?: RequestOptions) => Promise; createFromExisting: (attributes: { workspace_id: string; source_template_id: string; }, options?: RequestOptions) => Promise; update: (id: string, attributes: { note_type?: "soap" | "adime" | "progress" | "discharge" | "addendum"; title?: string; description?: string; sections?: Record; category?: string; tags?: string[]; metadata?: Record; is_active?: boolean; }, options?: RequestOptions) => Promise; archive: (id: string, options?: RequestOptions) => Promise; restore: (id: string, options?: RequestOptions) => Promise; permanentDelete: (id: string, options?: RequestOptions) => Promise; listArchived: (params: { workspace_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; getCatalog: (id: string, options?: RequestOptions) => Promise; createCatalog: (attributes: { note_type: "soap" | "adime" | "progress" | "discharge" | "addendum"; title: string; description?: string; sections: Record; category?: string; tags?: string[]; metadata?: Record; }, options?: RequestOptions) => Promise; updateCatalog: (id: string, attributes: { note_type?: "soap" | "adime" | "progress" | "discharge" | "addendum"; title?: string; description?: string; sections?: Record; category?: string; tags?: string[]; metadata?: Record; is_active?: boolean; }, options?: RequestOptions) => Promise; listCatalog: (params?: { filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; archiveCatalog: (id: string, options?: RequestOptions) => Promise; restoreCatalog: (id: string, options?: RequestOptions) => Promise; permanentDeleteCatalog: (id: string, options?: RequestOptions) => Promise; listArchivedCatalog: (params?: { filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; }; /** * Manage reusable clinical supplement templates. */ supplementTemplates: { /** * List supplement templates in a workspace. * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of {@link ClinicalSupplementTemplate} records */ list: (params: { workspace_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List practitioner's personal supplement templates. * * @param params - Must include `created_by_id` * @param options - Request options * @returns Array of {@link ClinicalSupplementTemplate} records */ listMine: (params: { created_by_id: string; }, options?: RequestOptions) => Promise; /** * Get a single supplement template by ID. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns {@link ClinicalSupplementTemplate} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a new supplement template. * * @param attributes - Must include `workspace_id`, `name`, and `supplements` * @param options - Request options * @returns Created {@link ClinicalSupplementTemplate} record * * @example * ```typescript * await admin.clinical.supplementTemplates.create({ workspace_id: "..." }); * ``` */ create: (attributes: CreateSupplementTemplateAttributes, options?: RequestOptions) => Promise; /** * Create a personalized template from an existing one. * * @param attributes - Must include `workspace_id` and `source_template_id` * @param options - Request options * @returns Created {@link ClinicalSupplementTemplate} record * * @example * ```typescript * await admin.clinical.supplementTemplates.createFromExisting({ workspace_id: "...", source_template_id: "..." }); * ``` */ createFromExisting: (attributes: CreateFromExistingSupplementTemplateAttributes, options?: RequestOptions) => Promise; /** * Update a supplement template. * * @param id - SupplementTemplate UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalSupplementTemplate} record * * @example * ```typescript * await admin.clinical.supplementTemplates.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateSupplementTemplateAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a supplement template. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - SupplementTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalSupplementTemplate} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a supplement template. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalSupplementTemplate} record * * @example * ```typescript * await admin.clinical.supplementTemplates.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived supplement template. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns Restored {@link ClinicalSupplementTemplate} record * * @example * ```typescript * await admin.clinical.supplementTemplates.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a supplement template. This action is irreversible. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.supplementTemplates.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived supplement templates in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalSupplementTemplate} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * List application-level catalog supplement templates. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of {@link ClinicalSupplementTemplate} catalog records */ listCatalog: (params: { application_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a catalog supplement template by ID. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns {@link ClinicalSupplementTemplate} catalog record */ getCatalog: (id: string, options?: RequestOptions) => Promise; /** * Create an application-level catalog supplement template. * * @param attributes - Must include `name` and `supplements` * @param options - Request options * @returns Created {@link ClinicalSupplementTemplate} catalog record * * @example * ```typescript * await admin.clinical.supplementTemplates.createCatalog({ title: "New" }); * ``` */ createCatalog: (attributes: CreateCatalogSupplementTemplateAttributes, options?: RequestOptions) => Promise; /** * Update a catalog supplement template. * * @param id - SupplementTemplate UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalSupplementTemplate} catalog record * * @example * ```typescript * await admin.clinical.supplementTemplates.updateCatalog("uuid", { status: "active" }); * ``` */ updateCatalog: (id: string, attributes: UpdateCatalogSupplementTemplateAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog supplement template. * * @deprecated Use `archiveCatalog()` instead. Now performs soft-delete, not permanent deletion. * @param id - SupplementTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalSupplementTemplate} catalog record */ deleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog supplement template. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns Archived {@link ClinicalSupplementTemplate} catalog record * * @example * ```typescript * await admin.clinical.supplementTemplates.archiveCatalog("uuid"); * ``` */ archiveCatalog: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived catalog supplement template. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns Restored {@link ClinicalSupplementTemplate} catalog record * * @example * ```typescript * await admin.clinical.supplementTemplates.restoreCatalog("uuid"); * ``` */ restoreCatalog: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a catalog supplement template. This action is irreversible. * * @param id - SupplementTemplate UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.supplementTemplates.permanentDeleteCatalog("uuid"); * ``` */ permanentDeleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * List archived catalog supplement templates. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalSupplementTemplate} catalog records */ listArchivedCatalog: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * Apply a supplement template to a patient, creating client supplements. * * @param templateId - SupplementTemplate UUID * @param patientId - Patient UUID or CRM Contact UUID * @param workspaceId - Workspace UUID * @param options - Request options * @returns {@link ApplySupplementTemplateResponse} with per-supplement results * * @example * ```typescript * await admin.clinical.supplementTemplates.applyToPatient({ template_id: "...", patient_id: "..." }); * ``` */ applyToPatient: (templateId: string, patientId: string, workspaceId: string, options?: RequestOptions) => Promise; collections: { /** Get a supplement template collection by ID. */ get(id: string, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** List supplement template collections for a workspace. */ list(params: { workspace_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions): Promise<(Omit & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; })[]>; /** Create a supplement template collection. */ create(attrs: CreateSupplementTemplateCollectionAttributes, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** Update a supplement template collection. */ update(id: string, attrs: UpdateSupplementTemplateCollectionAttributes, options?: RequestOptions): Promise & { description?: string | null; metadata?: { [key: string]: unknown; } | null; name: string; template_count?: number | null; } & { [key: string]: never; }>; /** Delete a supplement template collection. */ delete(id: string, options?: RequestOptions): Promise; templates: { /** Get a collection membership by ID. */ get(id: string, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** List templates in a collection. */ list(collectionId: string, options?: RequestOptions & { page?: { offset?: number; limit?: number; }; }): Promise<(Omit & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; })[]>; /** Add a template to a collection. Upserts on (collection_id, template_id). */ create(attrs: CreateSupplementCollectionMembershipAttributes, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** Update a collection membership (e.g., sort order). */ update(id: string, attrs: UpdateSupplementCollectionMembershipAttributes, options?: RequestOptions): Promise & { added_at?: unknown; collection_id: string; sort_order?: number | null; template_id: string; } & { [key: string]: never; }>; /** Remove a template from a collection. */ delete(id: string, options?: RequestOptions): Promise; }; }; }; /** * Manage practice-level tools (apps, wearables, platforms). */ practiceTools: { /** * List practice tools in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalPracticeTool} records */ list: (params: { workspace_id: string; /** Server-side filters. Common: `tool_type`, `category`, `is_active`. */ filter?: { tool_type?: string; category?: string; is_active?: boolean; [key: string]: unknown; }; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a single practice tool by ID. * * @param id - PracticeTool UUID * @param options - Request options * @returns {@link ClinicalPracticeTool} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a new practice tool. * * @param attributes - Must include `workspace_id` and `name` * @param options - Request options * @returns Created {@link ClinicalPracticeTool} record * * @example * ```typescript * await admin.clinical.practiceTools.create({ workspace_id: "..." }); * ``` */ create: (attributes: CreatePracticeToolAttributes, options?: RequestOptions) => Promise; /** * Update a practice tool. * * @param id - PracticeTool UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalPracticeTool} record * * @example * ```typescript * await admin.clinical.practiceTools.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdatePracticeToolAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a practice tool. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - PracticeTool UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeTool} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a practice tool. * * @param id - PracticeTool UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeTool} record * * @example * ```typescript * await admin.clinical.practiceTools.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived practice tool. * * @param id - PracticeTool UUID * @param options - Request options * @returns Restored {@link ClinicalPracticeTool} record * * @example * ```typescript * await admin.clinical.practiceTools.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a practice tool. This action is irreversible. * * @param id - PracticeTool UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.practiceTools.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived practice tools in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalPracticeTool} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * List application-level catalog practice tools. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of {@link ClinicalPracticeTool} catalog records */ listCatalog: (params: { application_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a catalog practice tool by ID. * * @param id - PracticeTool UUID * @param options - Request options * @returns {@link ClinicalPracticeTool} catalog record */ getCatalog: (id: string, options?: RequestOptions) => Promise; /** * Create an application-level catalog practice tool. * * @param attributes - Must include `name` * @param options - Request options * @returns Created {@link ClinicalPracticeTool} catalog record * * @example * ```typescript * await admin.clinical.practiceTools.createCatalog({ title: "New" }); * ``` */ createCatalog: (attributes: CreateCatalogPracticeToolAttributes, options?: RequestOptions) => Promise; /** * Update a catalog practice tool. * * @param id - PracticeTool UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalPracticeTool} catalog record * * @example * ```typescript * await admin.clinical.practiceTools.updateCatalog("uuid", { status: "active" }); * ``` */ updateCatalog: (id: string, attributes: UpdateCatalogPracticeToolAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog practice tool. * * @deprecated Use `archiveCatalog()` instead. Now performs soft-delete, not permanent deletion. * @param id - PracticeTool UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeTool} catalog record */ deleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog practice tool. * * @param id - PracticeTool UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeTool} catalog record * * @example * ```typescript * await admin.clinical.practiceTools.archiveCatalog("uuid"); * ``` */ archiveCatalog: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived catalog practice tool. * * @param id - PracticeTool UUID * @param options - Request options * @returns Restored {@link ClinicalPracticeTool} catalog record * * @example * ```typescript * await admin.clinical.practiceTools.restoreCatalog("uuid"); * ``` */ restoreCatalog: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a catalog practice tool. This action is irreversible. * * @param id - PracticeTool UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.practiceTools.permanentDeleteCatalog("uuid"); * ``` */ permanentDeleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * List archived catalog practice tools. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalPracticeTool} catalog records */ listArchivedCatalog: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * List distinct catalog practice tool categories with counts. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of category records */ listCatalogCategories: (params: { application_id: string; }, options?: RequestOptions) => Promise; tags: { rename: (workspaceId: string, oldTag: string, newTag: string, options?: RequestOptions) => Promise; delete: (workspaceId: string, tag: string, options?: RequestOptions) => Promise; merge: (workspaceId: string, sourceTags: string[], targetTag: string, options?: RequestOptions) => Promise; }; imports: { fromFile: (workspaceId: string, file: File | Blob, options?: RequestOptions) => Promise>; fromUrl: (workspaceId: string, url: string, options?: RequestOptions) => Promise>; }; duplicates: { getStats: (workspaceId: string, options?: RequestOptions) => Promise; listGroups: (workspaceId: string, opts?: { threshold?: number; limit?: number; }, options?: RequestOptions) => Promise; resolve: (workspaceId: string, groupId: string, keepId: string, options?: RequestOptions) => Promise; }; }; /** * Manage practice-level educational resources. */ practiceResources: { /** * List practice resources in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalPracticeResource} records */ list: (params: { workspace_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a single practice resource by ID. * * @param id - PracticeResource UUID * @param options - Request options * @returns {@link ClinicalPracticeResource} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a new practice resource. * * @param attributes - Must include `workspace_id` and `title` * @param options - Request options * @returns Created {@link ClinicalPracticeResource} record * * @example * ```typescript * await admin.clinical.practiceResources.create({ workspace_id: "..." }); * ``` */ create: (attributes: CreatePracticeResourceAttributes, options?: RequestOptions) => Promise; /** * Update a practice resource. * * @param id - PracticeResource UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalPracticeResource} record * * @example * ```typescript * await admin.clinical.practiceResources.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdatePracticeResourceAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a practice resource. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - PracticeResource UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeResource} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a practice resource. * * @param id - PracticeResource UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeResource} record * * @example * ```typescript * await admin.clinical.practiceResources.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived practice resource. * * @param id - PracticeResource UUID * @param options - Request options * @returns Restored {@link ClinicalPracticeResource} record * * @example * ```typescript * await admin.clinical.practiceResources.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a practice resource. This action is irreversible. * * @param id - PracticeResource UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.practiceResources.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived practice resources in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalPracticeResource} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * List application-level catalog practice resources. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of {@link ClinicalPracticeResource} catalog records */ listCatalog: (params: { application_id: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a catalog practice resource by ID. * * @param id - PracticeResource UUID * @param options - Request options * @returns {@link ClinicalPracticeResource} catalog record */ getCatalog: (id: string, options?: RequestOptions) => Promise; /** * Create an application-level catalog practice resource. * * @param attributes - Must include `title` * @param options - Request options * @returns Created {@link ClinicalPracticeResource} catalog record * * @example * ```typescript * await admin.clinical.practiceResources.createCatalog({ title: "New" }); * ``` */ createCatalog: (attributes: CreateCatalogPracticeResourceAttributes, options?: RequestOptions) => Promise; /** * Update a catalog practice resource. * * @param id - PracticeResource UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalPracticeResource} catalog record * * @example * ```typescript * await admin.clinical.practiceResources.updateCatalog("uuid", { status: "active" }); * ``` */ updateCatalog: (id: string, attributes: UpdateCatalogPracticeResourceAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog practice resource. * * @deprecated Use `archiveCatalog()` instead. Now performs soft-delete, not permanent deletion. * @param id - PracticeResource UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeResource} catalog record */ deleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a catalog practice resource. * * @param id - PracticeResource UUID * @param options - Request options * @returns Archived {@link ClinicalPracticeResource} catalog record * * @example * ```typescript * await admin.clinical.practiceResources.archiveCatalog("uuid"); * ``` */ archiveCatalog: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived catalog practice resource. * * @param id - PracticeResource UUID * @param options - Request options * @returns Restored {@link ClinicalPracticeResource} catalog record * * @example * ```typescript * await admin.clinical.practiceResources.restoreCatalog("uuid"); * ``` */ restoreCatalog: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a catalog practice resource. This action is irreversible. * * @param id - PracticeResource UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.practiceResources.permanentDeleteCatalog("uuid"); * ``` */ permanentDeleteCatalog: (id: string, options?: RequestOptions) => Promise; /** * List archived catalog practice resources. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalPracticeResource} catalog records */ listArchivedCatalog: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * List distinct practice resource categories in a workspace. * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of category records * * @example * ```typescript * const cats = await admin.clinical.practiceResources.listCategories({ * workspace_id: "..." * }); * ``` */ listCategories: (params: { workspace_id: string; }, options?: RequestOptions) => Promise; /** * List distinct catalog practice resource categories. * * @param params - Must include `application_id` * @param options - Request options * @returns Array of category records * * @example * ```typescript * const cats = await admin.clinical.practiceResources.listCatalogCategories({ * application_id: "..." * }); * ``` */ listCatalogCategories: (params: { application_id: string; }, options?: RequestOptions) => Promise; tags: { rename: (workspaceId: string, oldTag: string, newTag: string, options?: RequestOptions) => Promise; delete: (workspaceId: string, tag: string, options?: RequestOptions) => Promise; merge: (workspaceId: string, sourceTags: string[], targetTag: string, options?: RequestOptions) => Promise; }; imports: { fromFile: (workspaceId: string, file: File | Blob, options?: RequestOptions) => Promise>; fromUrl: (workspaceId: string, url: string, options?: RequestOptions) => Promise>; }; duplicates: { getStats: (workspaceId: string, options?: RequestOptions) => Promise; listGroups: (workspaceId: string, opts?: { threshold?: number; limit?: number; }, options?: RequestOptions) => Promise; resolve: (workspaceId: string, groupId: string, keepId: string, options?: RequestOptions) => Promise; }; }; /** Manage clinical patient records. */ patients: { /** * List patients, optionally filtered by workspace. * * @param params - Filter/sort parameters (optionally include `workspace_id`) * @param options - Request options * @returns Array of {@link ClinicalPatient} records */ list: (params: { workspace_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a patient by ID. * * @param id - Patient UUID * @param options - Request options * @returns {@link ClinicalPatient} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a patient. * * @param attributes - Patient attributes (must include `workspace_id`) * @param options - Request options * @returns Created {@link ClinicalPatient} record * @example * ```typescript * await admin.clinical.patients.create({ workspace_id: "...", preferred_name: "Alex" }); * ``` */ create: (attributes: CreateClinicalPatientAttributes, options?: RequestOptions) => Promise; /** * Update a patient. * * @param id - Patient UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalPatient} record * @example * ```typescript * await admin.clinical.patients.update("uuid", { preferred_name: "Alex" }); * ``` */ update: (id: string, attributes: UpdateClinicalPatientAttributes, options?: RequestOptions) => Promise; /** * Delete a patient. * * @param id - Patient UUID * @param options - Request options * @returns `true` on success */ delete: (id: string, options?: RequestOptions) => Promise; /** * List goals for a patient. * * @param id - Patient UUID * @param options - Request options * @returns Array of {@link ClinicalClientGoal} records */ goals: (id: string, options?: RequestOptions) => Promise; /** * List health metrics for a patient. * * @param id - Patient UUID * @param options - Request options * @returns Array of {@link ClinicalHealthMetric} records */ healthMetrics: (id: string, options?: RequestOptions) => Promise; /** * List supplements for a patient. * * @param id - Patient UUID * @param options - Request options * @returns Array of {@link ClinicalClientSupplement} records */ supplements: (id: string, options?: RequestOptions) => Promise; /** * List medications for a patient. * * @param id - Patient UUID * @param options - Request options * @returns Array of {@link ClinicalClientMedication} records */ medications: (id: string, options?: RequestOptions) => Promise; /** * List resource assignments for a patient. * * @param id - Patient UUID * @param options - Request options * @returns Array of {@link ClinicalClientResourceAssignment} records */ resourceAssignments: (id: string, options?: RequestOptions) => Promise; /** * List insurance records for a patient (related resource). * * @param id - Patient UUID or CRM contact ID * @param options - Request options * @returns Array of {@link ClinicalPatientInsurance} records */ insuranceRecords: (id: string, options?: RequestOptions) => Promise; }; /** Manage clinical sessions. */ sessions: { /** * List clinical sessions. * * @param params - Filter/sort parameters (optionally include `workspace_id`) * @param options - Request options * @returns Array of {@link ClinicalSession} records */ list: (params: { workspace_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List sessions for a given patient. * * @param params - Must include `patient_id` * @param options - Request options * @returns Array of {@link ClinicalSession} records */ listByPatient: (params: { patient_id: string; filter?: Record; }, options?: RequestOptions) => Promise; /** * Get a session by ID. * * @param id - Session UUID * @param options - Request options * @returns {@link ClinicalSession} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a clinical session. * * @param attributes - Session attributes * @param options - Request options * @returns Created {@link ClinicalSession} record * @example * ```typescript * await admin.clinical.sessions.create({ workspace_id: "...", patient_id: "..." }); * ``` */ create: (attributes: CreateClinicalSessionAttributes, options?: RequestOptions) => Promise; /** * Update a session. * * @param id - Session UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalSession} record * @example * ```typescript * await admin.clinical.sessions.update("uuid", { status: "completed" }); * ``` */ update: (id: string, attributes: UpdateClinicalSessionAttributes, options?: RequestOptions) => Promise; /** * Delete a session. * * @param id - Session UUID * @param options - Request options * @returns `true` on success */ delete: (id: string, options?: RequestOptions) => Promise; /** * List notes attached to a session. * * @param id - Session UUID * @param options - Request options * @returns Array of {@link ClinicalNote} records */ notes: (id: string, options?: RequestOptions) => Promise; /** * List meal plans attached to a session. * * @param id - Session UUID * @param options - Request options * @returns Array of {@link ClinicalMealPlan} records */ mealPlans: (id: string, options?: RequestOptions) => Promise; }; /** Manage clinical notes with approve/reject workflow. */ notes: { /** * List clinical notes, optionally filtered by session. * * @param params - Filter/sort parameters (optionally include `session_id`) * @param options - Request options * @returns Array of {@link ClinicalNote} records */ list: (params: { session_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List all notes for a patient across all sessions. * * @param patientId - Patient UUID * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalNote} records */ listByPatient: (patientId: string, params?: { filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List all notes in a workspace. * * @param workspaceId - Workspace UUID * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalNote} records */ listByWorkspace: (workspaceId: string, params?: { filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a note by ID. * * @param id - Note UUID * @param options - Request options * @returns {@link ClinicalNote} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a clinical note. * * @param attributes - Note attributes * @param options - Request options * @returns Created {@link ClinicalNote} record * @example * ```typescript * await admin.clinical.notes.create({ workspace_id: "...", session_id: "..." }); * ``` */ create: (attributes: CreateClinicalNoteAttributes, options?: RequestOptions) => Promise; /** * Update a note. * * @param id - Note UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalNote} record * @example * ```typescript * await admin.clinical.notes.update("uuid", { content: "..." }); * ``` */ update: (id: string, attributes: UpdateClinicalNoteAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a note. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - Note UUID * @param options - Request options * @returns Archived {@link ClinicalNote} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a note. * * @param id - Note UUID * @param options - Request options * @returns Archived {@link ClinicalNote} record * * @example * ```typescript * await admin.clinical.notes.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived note. * * @param id - Note UUID * @param options - Request options * @returns Restored {@link ClinicalNote} record * * @example * ```typescript * await admin.clinical.notes.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a note. This action is irreversible. * * @param id - Note UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.notes.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived notes in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalNote} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Approve a clinical note (HITL workflow). * * Marks the note as clinician-reviewed and approved, transitioning it * to `status: "approved"`. Only notes in `draft` status can be approved. * Creates an immutable NoteVersion snapshot. * * @param id - Note UUID * @param reviewedById - UUID of the reviewer (required) * @param options - Request options * @returns Updated {@link ClinicalNote} record * * @example * ```typescript * await admin.clinical.notes.approve("uuid", "reviewer_uuid"); * ``` */ approve: (id: string, reviewedById: string, options?: RequestOptions) => Promise; /** * Reject a clinical note (HITL workflow). * * Marks the note as rejected, transitioning it to `status: "rejected"`. * Only notes in `draft` status can be rejected. * * @param id - Note UUID * @param reviewedById - UUID of the reviewer (required) * @param options - Request options * @returns Updated {@link ClinicalNote} record * * @example * ```typescript * await admin.clinical.notes.reject("uuid", "reviewer_uuid"); * ``` */ reject: (id: string, reviewedById: string, options?: RequestOptions) => Promise; /** * Co-sign an approved clinical note (two-clinician sign-off). * * Requires `clinical:note:cosign` workspace permission AND the note must * have been approved with `requires_cosign: true`. The cosigner must * differ from the original reviewer. * * @param id - Note UUID * @param cosignedById - UUID of the second clinician * @param options - Request options * @returns Sparse note shape: only the cosign-relevant attrs are populated. * * @example * ```typescript * const cosigned = await admin.clinical.notes.cosign('note_abc', 'user_xyz'); * console.log(cosigned.cosigned_at); * ``` */ cosign: (id: string, cosignedById: string, options?: RequestOptions) => Promise<{ type: "clinical-note"; id: string; status: string; requires_cosign: boolean; cosigned_by_id: string | null; cosigned_at: string | null; }>; /** * Replace the tag list on a note. Allowed at any status — never snapshots * a new version. * * @param id - Note UUID * @param tags - Replacement tag array (max 32 non-empty strings) * @param options - Request options * @returns Sparse note shape with the new tag array. * * @example * ```typescript * const tagged = await admin.clinical.notes.tag('note_abc', ['urgent']); * ``` */ tag: (id: string, tags: string[], options?: RequestOptions) => Promise<{ type: "clinical-note"; id: string; tags: string[]; }>; /** * Apply a note template to a clinical session. Renders placeholders * server-side and creates a draft ClinicalNote. * * The response has `Cache-Control: no-store, private` because it contains * PHI snippets. * * @param attributes - `template_id`, `session_id`, optional `placeholders` * @param options - Request options * @returns Sparse {@link ClinicalNote} shape for the new draft note * @example * ```typescript * const note = await admin.clinical.notes.fromTemplate({ * template_id: "tmpl_abc", * session_id: "sess_123", * }); * console.log(note.id, note.status); * ``` */ fromTemplate: (attributes: { template_id: string; session_id: string; placeholders?: Record; }, options?: RequestOptions) => Promise<{ type: "clinical-note"; id: string; status: string; note_type: string; session_id: string; source_template_id: string; }>; /** * Diff two versions of a clinical note. Section-mode when both versions * carry `sections`; text-mode (Myers) otherwise. Response carries * `Cache-Control: no-store, private`. * * @param noteId - Note UUID * @param fromVersion - Version number to diff from * @param toVersion - Version number to diff to * @param options - Request options * @returns Diff result with `mode`, `ops`, `identical`, and version numbers * @example * ```typescript * const diff = await admin.clinical.notes.diffVersions('note_abc', 1, 2); * if (!diff.identical) console.log(diff.mode, diff.ops); * ``` */ diffVersions: (noteId: string, fromVersion: number, toVersion: number, options?: RequestOptions) => Promise<{ mode: "section" | "text"; ops: unknown[]; identical: boolean; from_version: number; to_version: number; }>; /** * Semantic search over approved clinical notes. Returns IDs + similarity * + redacted snippet. Response carries `Cache-Control: no-store, private`. * * @param attributes - `query` plus optional `patient_id`, `session_id`, `limit`, `min_similarity` * @param options - Request options * @returns Array of search results with `similarity` and `snippet` * @example * ```typescript * const results = await admin.clinical.notes.search({ * query: "elevated glucose", * limit: 5, * }); * for (const r of results) console.log(r.similarity, r.snippet); * ``` */ search: (attributes: { query: string; patient_id?: string; session_id?: string; limit?: number; min_similarity?: number; }, options?: RequestOptions) => Promise>; /** * List immutable version snapshots for a clinical note. * * @param noteId - Note UUID * @param options - Request options * @returns Array of {@link ClinicalNoteVersion} records */ versions: (noteId: string, options?: RequestOptions) => Promise; /** * Get a specific note version snapshot. * * @param noteId - Note UUID * @param id - NoteVersion UUID * @param options - Request options * @returns {@link ClinicalNoteVersion} record */ getVersion: (noteId: string, id: string, options?: RequestOptions) => Promise; }; /** Manage clinical health metrics. */ healthMetrics: { /** * List health metrics, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalHealthMetric} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List health metrics captured during a session. * * @param params - Must include `session_id` * @param options - Request options * @returns Array of {@link ClinicalHealthMetric} records */ listBySession: (params: { session_id: string; filter?: Record; }, options?: RequestOptions) => Promise; /** * Get a health metric by ID. * * @param id - HealthMetric UUID * @param options - Request options * @returns {@link ClinicalHealthMetric} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a health metric. * * @param attributes - Health metric attributes * @param options - Request options * @returns Created {@link ClinicalHealthMetric} record * @example * ```typescript * await admin.clinical.healthMetrics.create({ * workspace_id: "...", * patient_id: "...", * metric_type: "weight", * value: "180.5", * }); * ``` */ create: (attributes: CreateHealthMetricAttributes, options?: RequestOptions) => Promise; /** * Update a health metric. * * @param id - HealthMetric UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalHealthMetric} record * @example * ```typescript * await admin.clinical.healthMetrics.update("uuid", { value: "181.0" }); * ``` */ update: (id: string, attributes: UpdateHealthMetricAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a health metric. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - HealthMetric UUID * @param options - Request options * @returns Archived {@link ClinicalHealthMetric} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a health metric. * * @param id - HealthMetric UUID * @param options - Request options * @returns Archived {@link ClinicalHealthMetric} record * * @example * ```typescript * await admin.clinical.healthMetrics.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived health metric. * * @param id - HealthMetric UUID * @param options - Request options * @returns Restored {@link ClinicalHealthMetric} record * * @example * ```typescript * await admin.clinical.healthMetrics.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a health metric. This action is irreversible. * * @param id - HealthMetric UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.healthMetrics.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived health metrics in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalHealthMetric} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Get aggregated health metric statistics grouped by time period. * * Returns per-period count, avg, min, max, and context tag frequency counts. * Useful for trend dashboards, adherence heatmaps, and barrier analysis. * * @param params - Summary parameters * @param params.patient_id - Patient UUID (required) * @param params.metric_type - Filter to specific metric type (optional — omit for all types) * @param params.from_date - ISO 8601 datetime start (optional) * @param params.to_date - ISO 8601 datetime end (optional) * @param params.group_by - Grouping period: "day" | "week" | "month" (default: "day") * @param options - Request options * @returns Array of {@link HealthMetricSummaryPeriod} records * * @example * ```typescript * const summary = await admin.clinical.healthMetrics.summary({ * patient_id: 'pat_abc', * metric_type: 'weight', * from_date: '2026-03-01T00:00:00Z', * to_date: '2026-03-31T23:59:59Z', * group_by: 'day', * }); * ``` */ summary: (params: HealthMetricSummaryParams, options?: RequestOptions) => Promise; /** * List health metrics filtered by patient and metric type with optional date range. * * @param params - Filter parameters * @param params.patient_id - Patient UUID (required) * @param params.metric_type - Metric type string (required) * @param params.from_date - ISO 8601 datetime start (optional) * @param params.to_date - ISO 8601 datetime end (optional) * @param options - Request options * @returns Array of {@link ClinicalHealthMetric} records */ listByType: (params: { patient_id: string; metric_type: string; from_date?: string; to_date?: string; filter?: Record; }, options?: RequestOptions) => Promise; }; /** * Manage per-patient nutrition intake targets. * * Each target is a point-in-time snapshot of the calculation inputs and outputs * an RD used to derive daily calorie and macronutrient goals. */ intakeTargets: { /** * Create a new intake target for a patient. * * When `is_active` is `true` (default), any previously active target * for the same patient is automatically deactivated. * * @param attributes - Intake target attributes including workspace_id and patient_id * @param options - Request options * @returns Created {@link ClinicalIntakeTarget} record * * @example * ```typescript * const target = await admin.clinical.intakeTargets.create({ * workspace_id: 'ws_123', * patient_id: 'pat_456', * weight_kg: 70, * height_cm: 170, * age: 35, * sex: 'female', * activity_level: 'moderately_active', * weight_method: 'actual', * weight_used_kg: 70, * bmr: 1400, * tdee: 2170, * goal_direction: 'lose', * rate_lbs_per_week: 1, * calorie_adjustment: -500, * target_calories: 1670, * macro_mode: 'percentage', * protein_pct: 30, * carbs_pct: 40, * fat_pct: 30, * protein_grams: 125.3, * carbs_grams: 167, * fat_grams: 55.7, * meals_per_day: 3, * snacks_per_day: 2, * hydration_ml: 2500, * }); * ``` */ create: (attributes: CreateIntakeTargetAttributes, options?: RequestOptions) => Promise; /** * Get a single intake target by ID. * * @param id - IntakeTarget UUID * @param options - Request options * @returns {@link ClinicalIntakeTarget} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Update an intake target. * * Note: `is_active` cannot be changed via update. Create a new active * target to supersede the current one. * * @param id - IntakeTarget UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalIntakeTarget} record * * @example * ```typescript * await admin.clinical.intakeTargets.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateIntakeTargetAttributes, options?: RequestOptions) => Promise; /** * List intake targets for a patient. * * @param patientId - Patient UUID or CRM Contact UUID * @param opts - Pagination options * @param options - Request options * @returns Array of {@link ClinicalIntakeTarget} records (newest first) */ listByPatient: (patientId: string, opts?: { page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; /** * Get the currently active intake target for a patient. * * @param patientId - Patient UUID or CRM Contact UUID * @param options - Request options * @returns Array with single {@link ClinicalIntakeTarget} or empty array */ getActive: (patientId: string, options?: RequestOptions) => Promise; /** * List all intake targets in a workspace (admin view). * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of {@link ClinicalIntakeTarget} records */ listByWorkspace: (params: { workspace_id: string; page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; /** * Archive (soft-delete) an intake target. * * @param id - IntakeTarget UUID * @param options - Request options * @returns Archived {@link ClinicalIntakeTarget} record * * @example * ```typescript * await admin.clinical.intakeTargets.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived intake target. * * @param id - IntakeTarget UUID * @param options - Request options * @returns Restored {@link ClinicalIntakeTarget} record * * @example * ```typescript * await admin.clinical.intakeTargets.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete an intake target. * * @param id - IntakeTarget UUID * @param options - Request options * @returns `true` on successful deletion * * @example * ```typescript * await admin.clinical.intakeTargets.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived intake targets in a workspace. * * @param workspaceId - Workspace UUID * @param opts - Pagination options * @param options - Request options * @returns Array of archived {@link ClinicalIntakeTarget} records */ listArchived: (workspaceId: string, opts?: { page?: { offset?: number; limit?: number; }; }, options?: RequestOptions) => Promise; }; /** Manage clinical meal plans. */ mealPlans: { /** * List meal plans, optionally filtered by session. * * @param params - Filter/sort parameters (optionally include `session_id`) * @param options - Request options * @returns Array of {@link ClinicalMealPlan} records */ list: (params: { session_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List meal plans in a workspace. * * @param params - Must include `workspace_id` * @param options - Request options * @returns Array of {@link ClinicalMealPlan} records */ listByWorkspace: (params: { workspace_id: string; filter?: Record; }, options?: RequestOptions) => Promise; /** * List all meal plans for a patient across all sessions. * * @param patientId - Patient UUID * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalMealPlan} records */ listByPatient: (patientId: string, params?: { filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a meal plan by ID. * * @param id - MealPlan UUID * @param options - Request options * @returns {@link ClinicalMealPlan} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a meal plan. * * @param attributes - Meal plan attributes * @param options - Request options * @returns Created {@link ClinicalMealPlan} record * @example * ```typescript * await admin.clinical.mealPlans.create({ workspace_id: "...", session_id: "..." }); * ``` */ create: (attributes: CreateMealPlanAttributes, options?: RequestOptions) => Promise; /** * Update a meal plan. * * @param id - MealPlan UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalMealPlan} record * @example * ```typescript * await admin.clinical.mealPlans.update("uuid", { name: "Phase 2" }); * ``` */ update: (id: string, attributes: UpdateMealPlanAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a meal plan. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - MealPlan UUID * @param options - Request options * @returns Archived {@link ClinicalMealPlan} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a meal plan. * * @param id - MealPlan UUID * @param options - Request options * @returns Archived {@link ClinicalMealPlan} record * * @example * ```typescript * await admin.clinical.mealPlans.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived meal plan. * * @param id - MealPlan UUID * @param options - Request options * @returns Restored {@link ClinicalMealPlan} record * * @example * ```typescript * await admin.clinical.mealPlans.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a meal plan. This action is irreversible. * * @param id - MealPlan UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.mealPlans.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived meal plans in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalMealPlan} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Approve a meal plan. Validates required clinical fields. * * @param id - MealPlan UUID * @param options - Request options * @returns Approved {@link ClinicalMealPlan} record * * @example * ```typescript * await admin.clinical.mealPlans.approve("uuid", "reviewer_uuid"); * ``` */ approve: (id: string, options?: RequestOptions) => Promise; /** * List meal plans linked to a specific meal schedule. * * @param mealScheduleId - MealSchedule UUID * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalMealPlan} records */ listByMealSchedule: (mealScheduleId: string, params?: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; }; /** Manage patient clinical goals. */ clientGoals: { /** * List client goals, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalClientGoal} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a client goal by ID. * * @param id - ClientGoal UUID * @param options - Request options * @returns {@link ClinicalClientGoal} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a client goal. * * @param attributes - Goal attributes * @param options - Request options * @returns Created {@link ClinicalClientGoal} record * @example * ```typescript * await admin.clinical.clientGoals.create({ workspace_id: "...", patient_id: "...", title: "Drink 64oz water/day" }); * ``` */ create: (attributes: CreateClientGoalAttributes, options?: RequestOptions) => Promise; /** * Create a client goal from a goal template. * * @param attributes - Must include `workspace_id`, `patient_id`, and `template_id` * @param options - Request options * @returns Created {@link ClinicalClientGoal} record * @example * ```typescript * await admin.clinical.clientGoals.createFromTemplate({ * workspace_id: "...", * patient_id: "...", * template_id: "...", * }); * ``` */ createFromTemplate: (attributes: CreateGoalFromTemplateAttributes, options?: RequestOptions) => Promise; /** * Update a client goal. * * @param id - ClientGoal UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalClientGoal} record * @example * ```typescript * await admin.clinical.clientGoals.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateClientGoalAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a client goal. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - ClientGoal UUID * @param options - Request options * @returns Archived {@link ClinicalClientGoal} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a client goal. * * @param id - ClientGoal UUID * @param options - Request options * @returns Archived {@link ClinicalClientGoal} record * * @example * ```typescript * await admin.clinical.clientGoals.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived client goal. * * @param id - ClientGoal UUID * @param options - Request options * @returns Restored {@link ClinicalClientGoal} record * * @example * ```typescript * await admin.clinical.clientGoals.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a client goal. This action is irreversible. * * @param id - ClientGoal UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.clientGoals.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived client goals in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalClientGoal} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Batch update multiple client goals atomically. * * @param updates - Array of `{ id, attributes }` pairs (max 25) * @param options - Request options * @returns `{ updated: number }` — count of updated goals * * @example * ```typescript * await admin.clinical.clientGoals.batchUpdate([ * { id: "goal-1", attributes: { status: "achieved" } }, * ]); * ``` */ batchUpdate: (updates: BatchUpdateGoalItem[], options?: RequestOptions) => Promise; /** * Approve a client goal (HITL workflow). * * Marks the goal clinician-reviewed and approved. Lifecycle `status` * is unchanged. Only goals with `review_status` of `"none"` or * `"draft"` can be approved. * * @param id - ClientGoal UUID * @param reviewedById - UUID of the reviewer * @param options - Request options * @returns Approved {@link ClinicalClientGoal} record * @example * ```typescript * await admin.clinical.clientGoals.approve("goal_abc", "user_xyz"); * ``` */ approve: (id: string, reviewedById: string, options?: RequestOptions) => Promise; /** * Reject a client goal (HITL workflow). * * Marks the goal clinician-rejected, transitioning lifecycle `status` * to `"discontinued"`. Only goals with `review_status` of `"none"` * or `"draft"` can be rejected. * * @param id - ClientGoal UUID * @param reviewedById - UUID of the reviewer * @param options - Request options * @returns Rejected {@link ClinicalClientGoal} record * @example * ```typescript * await admin.clinical.clientGoals.reject("goal_abc", "user_xyz"); * ``` */ reject: (id: string, reviewedById: string, options?: RequestOptions) => Promise; /** * Atomically approve up to 50 client goals in the active workspace. * * Returns `{ approved, failed }` — per-goal validation failures end * up in `failed` with a per-id reason. * * @param opts - `goalIds` (max 50) and `reviewedById` for the reviewer * @param options - Request options * @returns {@link BatchApproveGoalsResponse} with approved + failed lists * @example * ```typescript * const res = await admin.clinical.clientGoals.batchApprove({ * goalIds: ["g1", "g2"], * reviewedById: "user_xyz", * }); * ``` */ batchApprove: (opts: { goalIds: string[]; reviewedById: string; }, options?: RequestOptions) => Promise; /** * Atomically reject up to 50 client goals in the active workspace. * * Rejected goals also transition lifecycle `status` to * `"discontinued"`. * * @param opts - `goalIds` (max 50) and `reviewedById` for the reviewer * @param options - Request options * @returns {@link BatchRejectGoalsResponse} with rejected + failed lists * @example * ```typescript * const res = await admin.clinical.clientGoals.batchReject({ * goalIds: ["g1", "g2"], * reviewedById: "user_xyz", * }); * ``` */ batchReject: (opts: { goalIds: string[]; reviewedById: string; }, options?: RequestOptions) => Promise; /** * Get change history for a client goal. * * @param goalId - ClientGoal UUID * @param options - Request options * @returns Chronological list of goal change events * * @example * ```typescript * const events = await admin.clinical.clientGoals.history("uuid"); * ``` */ history: (goalId: string, options?: RequestOptions) => Promise; /** * Associate a goal with a clinical entity. * * @param goalId - ClientGoal UUID * @param attributes - Association attributes * @param options - Request options * @returns Created {@link GoalAssociation} record * * @example * ```typescript * await admin.clinical.clientGoals.associate("uuid", { entity_id: "..." }); * ``` */ associate: (goalId: string, attributes: CreateGoalAssociationAttributes, options?: RequestOptions) => Promise; /** * Remove a goal-entity association. * * @param _goalId - ClientGoal UUID (for SDK consistency) * @param associationId - GoalAssociation UUID * @param options - Request options * @returns `true` on successful deletion * * @example * ```typescript * await admin.clinical.clientGoals.dissociate("uuid", "assoc_uuid"); * ``` */ dissociate: (_goalId: string, associationId: string, options?: RequestOptions) => Promise; /** * Get a single goal association by ID. * * @param associationId - GoalAssociation UUID * @param options - Request options * @returns {@link GoalAssociation} record */ getAssociation: (associationId: string, options?: RequestOptions) => Promise; /** * List all associations for a goal. * * @param goalId - ClientGoal UUID * @param options - Request options * @returns Array of {@link GoalAssociation} records */ associations: (goalId: string, options?: RequestOptions) => Promise; /** * Find all goals associated with a specific entity (reverse lookup). * * @param params - Entity type and ID to search by * @param options - Request options * @returns Array of {@link GoalAssociation} records */ associatedGoals: (params: { entity_type: string; entity_id: string; }, options?: RequestOptions) => Promise; }; /** Manage patient supplement prescriptions. */ clientSupplements: { /** * List client supplements, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalClientSupplement} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a client supplement by ID. * * @param id - ClientSupplement UUID * @param options - Request options * @returns {@link ClinicalClientSupplement} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a client supplement prescription. * * @param attributes - Supplement attributes * @param options - Request options * @returns Created {@link ClinicalClientSupplement} record * @example * ```typescript * await admin.clinical.clientSupplements.create({ * workspace_id: "...", * patient_id: "...", * name: "Vitamin D3", * }); * ``` */ create: (attributes: CreateClientSupplementAttributes, options?: RequestOptions) => Promise; /** * Update a client supplement. * * @param id - ClientSupplement UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalClientSupplement} record * @example * ```typescript * await admin.clinical.clientSupplements.update("uuid", { dosage: "2000 IU" }); * ``` */ update: (id: string, attributes: UpdateClientSupplementAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a client supplement. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - ClientSupplement UUID * @param options - Request options * @returns Archived {@link ClinicalClientSupplement} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a client supplement. * * @param id - ClientSupplement UUID * @param options - Request options * @returns Archived {@link ClinicalClientSupplement} record * * @example * ```typescript * await admin.clinical.clientSupplements.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived client supplement. * * @param id - ClientSupplement UUID * @param options - Request options * @returns Restored {@link ClinicalClientSupplement} record * * @example * ```typescript * await admin.clinical.clientSupplements.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a client supplement. This action is irreversible. * * @param id - ClientSupplement UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.clientSupplements.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived client supplements in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalClientSupplement} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Create multiple client supplements in a single request. * * @param attrs - Bulk creation attributes with workspace_id and supplements array * @param options - Request options * @returns Array of creation results with id and status per supplement * * @example * ```typescript * const results = await admin.clinical.clientSupplements.bulkCreate({ * workspace_id: 'ws_123', * supplements: [ * { patient_id: 'pat_1', name: 'Vitamin D3', source: 'fullscript' }, * { patient_id: 'pat_1', name: 'Omega-3', source: 'fullscript' }, * ], * }); * ``` */ bulkCreate: (attrs: { workspace_id: string; supplements: Array>; }, options?: RequestOptions) => Promise>; /** * Batch update multiple client supplements atomically. * * @param updates - Array of `{ id, attributes }` pairs (max 25) * @param options - Request options * @returns `{ updated: number, results: ClinicalClientSupplement[] }` * * @example * ```typescript * await admin.clinical.clientSupplements.batchUpdate([ * { id: "supp-1", attributes: { dosage: "2000 IU" } }, * { id: "supp-2", attributes: { status: "discontinued" } }, * ]); * ``` */ batchUpdate: (updates: BatchUpdateSupplementItem[], options?: RequestOptions) => Promise; /** * Supplement adherence check-ins. * * Track daily supplement compliance with status-based check-ins. * `taken` and `partial` count as adherent (contribute to streaks and adherence rate). * `skipped` breaks streaks and does not count toward adherence. */ checkIns: { /** * Record a supplement check-in. * * @param supplementId - ClientSupplement UUID * @param attributes - Check-in attributes (date, status, optional notes) * @param options - Request options * @returns Created {@link SupplementCheckIn} * * @example * ```typescript * const checkIn = await admin.clinical.clientSupplements.checkIns.create( * "supp-uuid", * { check_in_date: "2026-04-04", status: "taken" }, * ); * ``` */ create: (supplementId: string, attributes: CreateSupplementCheckInAttributes, options?: RequestOptions) => Promise<{ data: SupplementCheckIn; }>; /** * List check-ins for a supplement, optionally filtered by date range. * * @param supplementId - ClientSupplement UUID * @param params - Optional date range filter * @param options - Request options * @returns Array of {@link SupplementCheckIn} * * @example * ```typescript * const checkIns = await admin.clinical.clientSupplements.checkIns.list( * "supp-uuid", * { start_date: "2026-03-01", end_date: "2026-03-31" }, * ); * ``` */ list: (supplementId: string, params?: ListSupplementCheckInsParams, options?: RequestOptions) => Promise<{ data: SupplementCheckIn[]; }>; /** * Update a supplement check-in. * * @param supplementId - ClientSupplement UUID * @param checkInId - SupplementCheckIn UUID * @param attributes - Fields to update * @param options - Request options * @returns Updated {@link SupplementCheckIn} * * @example * ```typescript * await admin.clinical.clientSupplements.checkIns.update("uuid", { status: "active" }); * ``` */ update: (supplementId: string, checkInId: string, attributes: UpdateSupplementCheckInAttributes, options?: RequestOptions) => Promise<{ data: SupplementCheckIn; }>; /** * Delete a supplement check-in. * * @param supplementId - ClientSupplement UUID * @param checkInId - SupplementCheckIn UUID * @param options - Request options * @returns Resolves when the check-in has been deleted */ delete: (supplementId: string, checkInId: string, options?: RequestOptions) => Promise; /** * Batch upsert supplement check-ins (max 31 items). * * Creates new check-ins or updates existing ones for the same (supplement, date) pair. * * @param supplementId - ClientSupplement UUID * @param items - Array of check-in items (max 31) * @param options - Request options * @returns `{ created, updated, failed, results }` counts * * @example * ```typescript * const result = await admin.clinical.clientSupplements.checkIns.batchUpsert( * "supp-uuid", * [ * { check_in_date: "2026-04-01", status: "taken" }, * { check_in_date: "2026-04-02", status: "partial", notes: "Half dose" }, * { check_in_date: "2026-04-03", status: "skipped", notes: "Upset stomach" }, * ], * ); * ``` */ batchUpsert: (supplementId: string, items: BatchSupplementCheckInItem[], options?: RequestOptions) => Promise<{ data: BatchSupplementCheckInResponse; }>; }; }; /** * Manage insurance authorization lifecycle tracking (authorized units, used units, expiry). */ insuranceAuthorizations: { /** * List insurance authorizations, filtered by insurance record. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalInsuranceAuthorization} records */ list: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * Get a single insurance authorization by ID. * * @param id - InsuranceAuthorization UUID * @param options - Request options * @returns {@link ClinicalInsuranceAuthorization} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create an insurance authorization. * * @param attributes - Authorization creation attributes * @param options - Request options * @returns Created {@link ClinicalInsuranceAuthorization} record * * @example * ```typescript * await admin.clinical.insuranceAuthorizations.create({ workspace_id: "..." }); * ``` */ create: (attributes: CreateInsuranceAuthorizationAttributes, options?: RequestOptions) => Promise; /** * Update an insurance authorization. * * @param id - InsuranceAuthorization UUID * @param attributes - Fields to update * @param options - Request options * @returns Updated {@link ClinicalInsuranceAuthorization} record * * @example * ```typescript * await admin.clinical.insuranceAuthorizations.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateInsuranceAuthorizationAttributes, options?: RequestOptions) => Promise; /** * Increment used units on an authorization. * * @param id - InsuranceAuthorization UUID * @param units - Number of units to increment (default: 1) * @param options - Request options * @returns Updated {@link ClinicalInsuranceAuthorization} record * * @example * ```typescript * await admin.clinical.insuranceAuthorizations.increment("uuid"); * ``` */ increment: (id: string, units?: number, options?: RequestOptions) => Promise; /** * List expiring authorizations (low remaining units). * * @param params - Filter parameters * @param options - Request options * @returns Array of {@link ClinicalInsuranceAuthorization} records */ listExpiring: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * Delete an insurance authorization (hard delete). * * @param id - InsuranceAuthorization UUID * @param options - Request options * @returns Resolves when the authorization has been deleted */ delete: (id: string, options?: RequestOptions) => Promise; /** * List all authorizations in a workspace. * * @param params - Must include workspace_id, supports pagination * @param options - Request options * @returns Array of {@link ClinicalInsuranceAuthorization} records */ listByWorkspace: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; }; patientInsurance: { /** * List insurance records, filtered by patient or workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalPatientInsurance} records */ list: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * Get a single insurance record by ID. * * @param id - PatientInsurance UUID * @param options - Request options * @returns {@link ClinicalPatientInsurance} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create an insurance record for a patient. * * @param attributes - Insurance creation attributes * @param options - Request options * @returns Created {@link ClinicalPatientInsurance} record * @example * ```typescript * const insurance = await admin.clinical.patientInsurance.create({ * patient_id: patientId, * rank: "primary", * carrier_name: "Aetna", * member_id: "MEM123456", * plan_type: "ppo", * }); * ``` */ create: (attributes: CreatePatientInsuranceAttributes, options?: RequestOptions) => Promise; /** * Update an insurance record. * * @param id - PatientInsurance UUID * @param attributes - Fields to update * @param options - Request options * @returns Updated {@link ClinicalPatientInsurance} record * * @example * ```typescript * await admin.clinical.patientInsurance.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdatePatientInsuranceAttributes, options?: RequestOptions) => Promise; /** * Delete an insurance record (hard delete). * * @param id - PatientInsurance UUID * @param options - Request options * @returns Resolves when the insurance record has been deleted */ delete: (id: string, options?: RequestOptions) => Promise; /** * List all insurance records in a workspace (admin only). * * @param params - Must include workspace_id, supports pagination * @param options - Request options * @returns Array of {@link ClinicalPatientInsurance} records */ listByWorkspace: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; }; /** * Manage medication prescriptions for clinical patients. */ clientMedications: { /** * List medication prescriptions. * * @param params - Optional filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalClientMedication} records */ list: (params?: ClinicalListParams, options?: RequestOptions) => Promise; /** * Get a medication prescription by ID. * * @param id - ClientMedication UUID * @param options - Request options * @returns {@link ClinicalClientMedication} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a new medication prescription. * * @param attributes - Medication attributes * @param options - Request options * @returns Created {@link ClinicalClientMedication} record * @example * ```typescript * await admin.clinical.clientMedications.create({ * workspace_id: "...", * patient_id: "...", * name: "Metformin", * }); * ``` */ create: (attributes: CreateClientMedicationAttributes, options?: RequestOptions) => Promise; /** * Update a medication prescription. * * @param id - ClientMedication UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalClientMedication} record * @example * ```typescript * await admin.clinical.clientMedications.update("uuid", { dosage: "500 mg" }); * ``` */ update: (id: string, attributes: UpdateClientMedicationAttributes, options?: RequestOptions) => Promise; /** * Delete (archive) a medication prescription. * * @deprecated Use {@link archive} instead. * @param id - ClientMedication UUID * @param options - Request options * @returns Archived {@link ClinicalClientMedication} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a medication prescription. * * @param id - ClientMedication UUID * @param options - Request options * @returns Archived {@link ClinicalClientMedication} record * @example * ```typescript * await admin.clinical.clientMedications.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived medication prescription. * * @param id - ClientMedication UUID * @param options - Request options * @returns Restored {@link ClinicalClientMedication} record * @example * ```typescript * await admin.clinical.clientMedications.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a medication prescription. This action is irreversible. * * @param id - ClientMedication UUID * @param options - Request options * @returns `true` on success * @example * ```typescript * await admin.clinical.clientMedications.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived (soft-deleted) medication prescriptions. * * @param params - Optional workspace-scoped filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalClientMedication} records */ listArchived: (params?: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; /** * Create multiple medication prescriptions in a single request. * * @param attrs - `workspace_id` plus a `medications` array * @param options - Request options * @returns Per-medication result records with status and optional error * @example * ```typescript * await admin.clinical.clientMedications.bulkCreate({ * workspace_id: "...", * medications: [{ patient_id: "...", name: "Metformin" }], * }); * ``` */ bulkCreate: (attrs: { workspace_id: string; medications: Array>; }, options?: RequestOptions) => Promise>; }; /** View and update clinical delivery audit records. */ deliveries: { /** * List delivery records, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalDelivery} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * List delivery records for a session. * * @param params - Must include `session_id` * @param options - Request options * @returns Array of {@link ClinicalDelivery} records */ listBySession: (params: { session_id: string; filter?: Record; }, options?: RequestOptions) => Promise; /** * Get a delivery record by ID. * * @param id - Delivery UUID * @param options - Request options * @returns {@link ClinicalDelivery} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a delivery audit record. * * @param attributes - Delivery attributes * @param options - Request options * @returns Created {@link ClinicalDelivery} record * @example * ```typescript * await admin.clinical.deliveries.create({ workspace_id: "...", session_id: "..." }); * ``` */ create: (attributes: CreateClinicalDeliveryAttributes, options?: RequestOptions) => Promise; /** * Update a delivery record. * * @param id - Delivery UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalDelivery} record * @example * ```typescript * await admin.clinical.deliveries.update("uuid", { status: "delivered" }); * ``` */ update: (id: string, attributes: UpdateClinicalDeliveryAttributes, options?: RequestOptions) => Promise; }; /** Manage practice resource assignments to patients. */ clientResourceAssignments: { /** * List resource assignments, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalClientResourceAssignment} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a resource assignment by ID. * * @param id - ClientResourceAssignment UUID * @param options - Request options * @returns {@link ClinicalClientResourceAssignment} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Create a resource assignment. * * @param attributes - Assignment attributes * @param options - Request options * @returns Created {@link ClinicalClientResourceAssignment} record * @example * ```typescript * await admin.clinical.clientResourceAssignments.create({ * workspace_id: "...", * patient_id: "...", * resource_id: "...", * }); * ``` */ create: (attributes: CreateClientResourceAssignmentAttributes, options?: RequestOptions) => Promise; /** * Update a resource assignment. * * @param id - ClientResourceAssignment UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalClientResourceAssignment} record * @example * ```typescript * await admin.clinical.clientResourceAssignments.update("uuid", { status: "active" }); * ``` */ update: (id: string, attributes: UpdateClientResourceAssignmentAttributes, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a resource assignment. * * @deprecated Use `archive()` instead. Now performs soft-delete, not permanent deletion. * @param id - ClientResourceAssignment UUID * @param options - Request options * @returns Archived {@link ClinicalClientResourceAssignment} record */ delete: (id: string, options?: RequestOptions) => Promise; /** * Archive (soft-delete) a resource assignment. * * @param id - ClientResourceAssignment UUID * @param options - Request options * @returns Archived {@link ClinicalClientResourceAssignment} record * * @example * ```typescript * await admin.clinical.clientResourceAssignments.archive("uuid"); * ``` */ archive: (id: string, options?: RequestOptions) => Promise; /** * Restore an archived resource assignment. * * @param id - ClientResourceAssignment UUID * @param options - Request options * @returns Restored {@link ClinicalClientResourceAssignment} record * * @example * ```typescript * await admin.clinical.clientResourceAssignments.restore("uuid"); * ``` */ restore: (id: string, options?: RequestOptions) => Promise; /** * Permanently delete a resource assignment. This action is irreversible. * * @param id - ClientResourceAssignment UUID * @param options - Request options * @returns `true` on success * * @example * ```typescript * await admin.clinical.clientResourceAssignments.permanentDelete("uuid"); * ``` */ permanentDelete: (id: string, options?: RequestOptions) => Promise; /** * List archived resource assignments in a workspace. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of archived {@link ClinicalClientResourceAssignment} records */ listArchived: (params: ClinicalWorkspaceListParams, options?: RequestOptions) => Promise; }; /** View AI supplement recommendation cache entries. */ supplementRecCache: { /** * List supplement recommendation cache entries, optionally filtered by patient. * * @param params - Filter/sort parameters (optionally include `patient_id`) * @param options - Request options * @returns Array of {@link ClinicalSupplementRecCache} records */ list: (params: { patient_id?: string; filter?: Record; sort?: string; }, options?: RequestOptions) => Promise; /** * Get a supplement recommendation cache entry by ID. * * @param id - SupplementRecCache UUID * @param options - Request options * @returns {@link ClinicalSupplementRecCache} record */ get: (id: string, options?: RequestOptions) => Promise; /** * Update a supplement recommendation cache entry. * * @param id - SupplementRecCache UUID * @param attributes - Fields to update (PATCH semantics) * @param options - Request options * @returns Updated {@link ClinicalSupplementRecCache} record * @example * ```typescript * await admin.clinical.supplementRecCache.update("uuid", { status: "applied" }); * ``` */ update: (id: string, attributes: UpdateSupplementRecCacheAttributes, options?: RequestOptions) => Promise; }; /** * Manage clinical documents (lab results, imaging, referrals, etc.) for ISV administration. */ documents: { /** * List all clinical documents with optional filtering. * * @param params - Filter/pagination parameters * @param options - Request options * @returns Array of {@link ClinicalDocument} records * * @example * ```typescript * const docs = await admin.clinical.documents.list({ * filter: { workspace_id: 'ws_123', extraction_status: 'pending' }, * }); * ``` */ list: (params?: ListDocumentsOptions, options?: RequestOptions) => Promise; /** * Create a new clinical document record linked to a patient. * * @param attributes - Document attributes including `patient_id`, `storage_file_id`, and `document_type` (any ISV-defined string, e.g. "chart_note", "lab_report", "treatment_plan") * @param options - Request options * @returns The created {@link ClinicalDocument} * * @example * ```typescript * const doc = await admin.clinical.documents.create({ * workspace_id: 'ws_789', * patient_id: 'pat_123', * storage_file_id: 'sf_456', * title: 'Annual Lab Results', * document_type: 'lab_report', * source_platform: 'labcorp', * }); * ``` */ create: (attributes: CreateDocumentAttributes, options?: RequestOptions) => Promise; /** * Retrieve a clinical document by ID. * * @param id - Document ID * @param options - Request options * @returns The {@link ClinicalDocument} * * @example * ```typescript * const doc = await admin.clinical.documents.get('doc_123'); * ``` */ get: (id: string, options?: RequestOptions) => Promise; /** * Update a clinical document. * * @param id - Document ID * @param attributes - Fields to update (`title`, `document_type`, `source_platform`, `source_date`, `contact_id`, `expires_at`) * @param options - Request options * @returns The updated {@link ClinicalDocument} * * @example * ```typescript * const doc = await admin.clinical.documents.update('doc_123', { * title: 'Updated Lab Results', * }); * ``` */ update: (id: string, attributes: UpdateDocumentAttributes, options?: RequestOptions) => Promise; /** * Delete a clinical document permanently. * * @param id - Document ID * @param options - Request options * @returns void * * @example * ```typescript * await admin.clinical.documents.delete('doc_123'); * ``` */ delete: (id: string, options?: RequestOptions) => Promise; /** * List clinical documents for a specific patient. * * @param patientId - Patient ID (or CRM contact ID — resolved automatically) * @param params - Optional pagination parameters * @param options - Request options * @returns Array of {@link ClinicalDocument} records * * @example * ```typescript * const docs = await admin.clinical.documents.listByPatient('pat_123', { * page: { offset: 0, limit: 20 }, * }); * ``` */ listByPatient: (patientId: string, params?: ListDocumentsByPatientOptions, options?: RequestOptions) => Promise; /** * Transition the extraction status of a clinical document. * * @param id - Document ID * @param status - New extraction status * @param options - Request options * @returns The updated {@link ClinicalDocument} * * @example * ```typescript * const doc = await admin.clinical.documents.transitionStatus( * 'doc_123', * 'completed', * ); * ``` */ transitionStatus: (id: string, status: ExtractionStatus, options?: RequestOptions) => Promise; }; }; //# sourceMappingURL=clinical.d.ts.map