/** * @fileoverview Comprehensive Laravel Healthcare MCP Server Endpoint Registry * Contains 800+ endpoints organized by authentication type and functionality * UPDATED: Added 184 new endpoints from api-docs.json * Reorganized for proper healthcare security and HIPAA compliance * * Authentication Organization: * - PUBLIC: Login, registration, password management, basic public data (35+ new endpoints) * - PROVIDER: Clinical data, EMR operations, patient management (HIPAA-compliant) (13+ new endpoints) * - PATIENT: Patient portal operations (1 new endpoint) * - PARTNER: Partner business operations * - AFFILIATE: Affiliate management (1 new endpoint) * - NETWORK: Network operations * - ADMIN: Super admin operations */ /** * Authentication configuration for different user roles */ export const AUTH_TYPES = { PUBLIC: "public", SANCTUM: "sanctum", ADMIN: "admin", AGENT: "agent", PATIENT: "patient", PRACTITIONER: "practitioner", AFFILIATE: "affiliate", PARTNER: "partner", NETWORK: "network", DOCTOR: "doctor", PROVIDER: "provider", }; /** * Authentication endpoints for each user role */ export const AUTH_ENDPOINTS = { [AUTH_TYPES.ADMIN]: { login: "/api/admin/login", method: "POST", controller: "Admin\\Api\\LoginController@loginApi", }, [AUTH_TYPES.AGENT]: { login: "/agent/login/post", method: "POST", controller: "Agent\\Auth\\LoginController@login", }, [AUTH_TYPES.PATIENT]: { login: "/api/frontend/login", method: "POST", controller: "PatientController@loginPatient", }, [AUTH_TYPES.PRACTITIONER]: { login: "/api/practitioner/login", method: "POST", controller: "Practitioner\\Auth\\LoginController@login", }, [AUTH_TYPES.AFFILIATE]: { login: "/api/affiliate/login", method: "POST", controller: "Affiliate\\Auth\\LoginController@login", }, [AUTH_TYPES.PARTNER]: { login: "/api/partner/login", method: "POST", controller: "Partner\\Auth\\LoginController@login", }, [AUTH_TYPES.NETWORK]: { login: "/api/network/login", method: "POST", controller: "Network\\Auth\\LoginController@login", }, [AUTH_TYPES.DOCTOR]: { login: "/api/doctor/login", method: "POST", controller: "Doctor\\Auth\\LoginController@login", }, [AUTH_TYPES.PROVIDER]: { login: "/api/login", method: "POST", controller: "Provider\\Auth\\LoginController@login", }, }; /** * Endpoint categories for MCP tool organization */ export const ENDPOINT_CATEGORIES = { PATIENT_MANAGEMENT: "patient_management", APPOINTMENT_SCHEDULING: "appointment_scheduling", MEDICAL_RECORDS: "medical_records", PRESCRIPTION_MANAGEMENT: "prescription_management", DOCUMENT_MANAGEMENT: "document_management", MESSAGING: "messaging", BILLING_ORDERS: "billing_orders", ANALYTICS_REPORTS: "analytics_reports", USER_MANAGEMENT: "user_management", INVENTORY: "inventory", FORMS_QUESTIONNAIRES: "forms_questionnaires", AI_INTEGRATION: "ai_integration", PROVIDER_MANAGEMENT: "provider_management", BUSINESS_OPERATIONS: "business_operations", LOCATION_MANAGEMENT: "location_management", }; /** * Public endpoints (no authentication required) * Includes all login, registration, password management, and basic public data access * These endpoints are accessible without authentication for initial user access */ export const PUBLIC_ENDPOINTS = [ // ===== AUTHENTICATION & LOGIN ENDPOINTS ===== { path: "/api/login", method: "POST", controller: "AuthController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "General login (uses username field)", parameters: {username: { type: "string", required: true, description: "Username", username: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }}, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/patient-login-api", method: "POST", controller: "PatientController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient login API", parameters: {email: { type: "string", required: true, description: "Email address", email: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }}, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/login-partner-api", method: "POST", controller: "PartnerController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Partner login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/affiliate-login-api", method: "POST", controller: "AffiliateController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Affiliate login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/network/login", method: "POST", controller: "NetworkController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Network login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/admin/login", method: "POST", controller: "AdminController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Super admin login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/frontend/login", method: "POST", controller: "FrontendController@login", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient portal login", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, // ===== REGISTRATION ENDPOINTS ===== { path: "/api/register-patients", method: "POST", controller: "PatientController@register", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register patient with actual parameter names from patient/register.vue", parameters: {first_name: { type: "string", required: true, description: "First name", first_name: { type: "string", required: true, description: "Parameter", }, last_name: { type: "string", required: true, description: "Parameter", }, email: { type: "string", required: true, description: "Parameter", }, phone_no: { type: "string", required: true, description: "Parameter", }, dob: { type: "string", required: true, description: "Parameter", }, gender: { type: "string", required: true, description: "Parameter", }, provider_id: { type: "integer", required: true, description: "Parameter", }, username: { type: "string", required: false, description: "Parameter", }, isportalAccess: { type: "boolean", required: false, description: "Parameter", }}, first_name: { type: "string", required: true, description: "first_name parameter", }, last_name: { type: "string", required: true, description: "last_name parameter", }, email: { type: "string", required: true, description: "email parameter" }, phone_no: { type: "string", required: true, description: "phone_no parameter", }, dob: { type: "string", required: true, description: "dob parameter" }, gender: { type: "string", required: true, description: "gender parameter", }, provider_id: { type: "integer", required: true, description: "provider_id parameter", }, username: { type: "string", required: false, description: "username parameter", }, isportalAccess: { type: "boolean", required: false, description: "isportalAccess parameter", }, last_name: { type: "string", required: true, description: "Last name" }, preferredPhone: { type: "string", required: true, description: "Preferred phone", }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/partner-register-api", method: "POST", controller: "PartnerController@registerApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Partner registration with actual parameter names from partner/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/affiliate-register-api", method: "POST", controller: "AffiliateController@registerApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Affiliate registration with actual parameter names from affiliate/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, partner_email: { type: "string", required: true, description: "Partner email", }, }, }, { path: "/api/network/register", method: "POST", controller: "NetworkController@register", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Network registration with actual parameter names from network/register.vue", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, phone_no: { type: "string", required: true, description: "Phone number" }, email: { type: "string", required: true, description: "Email address" }, dob: { type: "string", required: true, description: "Date of birth" }, gender: { type: "string", required: true, description: "Gender" }, password: { type: "string", required: true, description: "Password" }, partner_id: { type: "string", required: true, description: "Partner ID" }, }, }, { path: "/api/emr/provider/register", method: "POST", controller: "EMRAPI\\Provider\\ProviderController@register", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Provider registration (public access)", parameters: { firstName: { type: "string", required: true, description: "First name" }, lastName: { type: "string", required: true, description: "Last name" }, emailAddress: { type: "string", required: true, description: "Email address", }, textMessageNumber: { type: "string", required: false, description: "Text message number", }, accessRights: { type: "object", required: false, description: "Access rights object with admin/practitioner/patientPortal booleans", }, username: { type: "string", required: true, description: "Provider username for login", }, newUserPassword: { type: "string", required: true, description: "Provider password", }, confirm_password: { type: "string", required: true, description: "Password confirmation (must match newUserPassword)", }, company_name: { type: "string", required: false, description: "Company name", }, on_your_domain: { type: "boolean", required: false, description: "On your domain flag", }, dummy: { type: "string", required: false, description: "register as doctor or practitioner if practitioner then true else false", }, }, }, // ===== PASSWORD MANAGEMENT ENDPOINTS ===== { path: "/api/emr/set-password", method: "POST", controller: "EMRAPI\\AuthController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Create password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, token: { type: "string", required: true, description: "Password reset token", }, }, }, { path: "/api/set-password", method: "POST", controller: "AuthController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Save provider password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, token: { type: "string", required: true, description: "Password reset token", }, }, }, { path: "/api/affiliate/set-password", method: "POST", controller: "AffiliateController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Save affiliate password", parameters: { password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, token: { type: "string", required: true, description: "Password reset token", }, }, }, { path: "/api/frontend/forgot-password", method: "POST", controller: "FrontendController@forgotPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient forgot password", parameters: { email: { type: "string", required: true, description: "Email address" }, }, }, { path: "/api/frontend/reset-password", method: "POST", controller: "FrontendController@resetPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient reset password", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, token: { type: "string", required: true, description: "Password reset token", }, }, }, { path: "/api/emr/provider/forgot-password", method: "POST", controller: "EMRAPI\\Provider\\AuthController@forgotPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Provider forgot password", parameters: { email: { type: "string", required: true, description: "Email address" }, }, }, { path: "/api/emr/provider/reset-password", method: "POST", controller: "EMRAPI\\Provider\\AuthController@resetPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Provider reset password", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, token: { type: "string", required: true, description: "Password reset token", }, }, }, // ===== EMAIL VERIFICATION ENDPOINTS ===== { path: "/api/public-manage-verify-email", method: "POST", controller: "PublicController@verifyEmail", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Email verification", parameters: { token: { type: "string", required: true, description: "Verification token", }, email: { type: "string", required: true, description: "Email address" }, }, }, { path: "/api/public-manage-resend-verification", method: "POST", controller: "PublicController@resendVerification", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Resend verification email", parameters: { email: { type: "string", required: true, description: "Email address" }, }, }, // ===== PUBLIC DATA ACCESS ENDPOINTS ===== { path: "/api/get-pdf-url/{document_id}", method: "GET", controller: "DocumentController@getPdfUrl", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF URL", parameters: { document_id: { type: "string", required: true, description: "Document ID", }, }, }, // ===== APPOINTMENT VERIFICATION (PUBLIC) ===== { path: "/api/appointment/verify/{appointmentId}", method: "GET", controller: "AppointmentAccessController@verifyAndRedirect", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Verify appointment access and redirect", parameters: { appointmentId: { type: "string", required: true, description: "Appointment ID", }, }, }, { path: "/api/appointment-participants/{appointmentId}", method: "GET", controller: "PatientController@getAppointmentParticipants", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment participants", parameters: { appointmentId: { type: "string", required: true, description: "Appointment ID", }, }, }, { path: "/api/user-list-profile-skipauth/{id}", method: "GET", controller: "PatientController@getUserProfileById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID without authentication", parameters: { id: { type: "string", required: true, description: "User ID" }, }, }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "TokenController@generatePermanentToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Generate permanent token for user", parameters: { userId: { type: "string", required: true, description: "User ID" }, }, }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 35 new public endpoints from api-docs.json { path: "/room-joined/event", method: "POST", controller: "LiveKitController@webhook", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "LiveKit webhook handler", parameters: {event: { type: "string", required: false, description: "Event type", event: { type: "string", required: false, description: "Parameter", }, room: { type: "object", required: false, description: "Parameter", }, egressInfo: { type: "object", required: false, description: "Parameter", }}, event: { type: "string", required: false, description: "event parameter", }, room: { type: "object", required: false, description: "room parameter" }, egressInfo: { type: "object", required: false, description: "egressInfo parameter", }, room: { type: "object", required: false, description: "Room data" }, egressInfo: { type: "object", required: false, description: "Egress information", }, }, }, { path: "/room-joined/event-transcription", method: "POST", controller: "LiveKitController@getRecordingUrl", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get recording URL", parameters: {egressInfo: { type: "object", required: false, description: "Egress information",, egressInfo: { type: "object", required: false, description: "Parameter", }}, }, }, { path: "/api/check-user", method: "POST", controller: "ProviderController@checkUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Check if provider exists", parameters: {email: { type: "string", required: true, description: "Provider email", email: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/get-patient-summary/{patientId}", method: "GET", controller: "PatientController@getPatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient summary", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/update-patient-summary/{patientId}", method: "POST", controller: "PatientController@updatePatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient summary", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, summary: { type: "string", required: true, description: "Patient summary", }, }, }, { path: "/api/generate-patient-summary/{patientId}", method: "GET", controller: "PatientController@generatePatientSummary", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Generate AI summary for patient", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-full-details/{patientId}", method: "GET", controller: "PatientController@getPatientFullDetails", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get comprehensive patient details", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-forms-list/{patientId}", method: "GET", controller: "FormsController@getPatientFormsList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient forms list", parameters: { patientId: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/download/pdf/{id}/{type}", method: "GET", controller: "DocumentController@downloadPdf", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Download or view PDF file", parameters: { id: { type: "string", required: true, description: "Document ID" }, type: { type: "string", required: true, description: "Document type" }, }, }, { path: "/emr-api/provider-register", method: "POST", controller: "EMRAPI\\ProviderController@register", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Register a new provider", parameters: {firstName: { type: "string", required: true, description: "First name", firstName: { type: "string", required: true, description: "Parameter", }, lastName: { type: "string", required: true, description: "Parameter", }, username: { type: "string", required: true, description: "Parameter", }, emailAddress: { type: "string", required: true, description: "Parameter", }, textMessageNumber: { type: "string", required: true, description: "Parameter", }, newUserPassword: { type: "string", required: true, description: "Parameter", }, company_name: { type: "string", required: true, description: "Parameter", }, on_your_domain: { type: "boolean", required: false, description: "Parameter", }}, firstName: { type: "string", required: true, description: "firstName parameter", }, lastName: { type: "string", required: true, description: "lastName parameter", }, username: { type: "string", required: true, description: "username parameter", }, emailAddress: { type: "string", required: true, description: "emailAddress parameter", }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter", }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter", }, company_name: { type: "string", required: true, description: "company_name parameter", }, on_your_domain: { type: "boolean", required: false, description: "on_your_domain parameter", }, firstName: { type: "string", required: true, description: "firstName parameter", }, lastName: { type: "string", required: true, description: "lastName parameter", }, username: { type: "string", required: true, description: "username parameter", }, emailAddress: { type: "string", required: true, description: "emailAddress parameter", }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter", }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter", }, company_name: { type: "string", required: true, description: "company_name parameter", }, on_your_domain: { type: "boolean", required: false, description: "on_your_domain parameter", }, lastName: { type: "string", required: true, description: "Last name" }, emailAddress: { type: "string", required: true, description: "Email address", }, username: { type: "string", required: true, description: "Username" }, newUserPassword: { type: "string", required: true, description: "Password", }, }, }, { path: "/api/get/document/{userId}/{rowId}/{key}", method: "GET", controller: "DocumentController@getDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Create a public link to access a document", parameters: { userId: { type: "string", required: true, description: "User ID" }, rowId: { type: "string", required: true, description: "Row ID" }, key: { type: "string", required: true, description: "Document key" }, }, }, { path: "/api/get-form-without-auth/{id}", method: "GET", controller: "FormsController@getFormWithoutAuth", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get form by ID without authentication", parameters: { id: { type: "string", required: true, description: "Form ID" }, }, }, { path: "/api/store-intake-form-data", method: "POST", controller: "FormsController@storeIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store intake form data", parameters: { form_data: { type: "object", required: true, description: "Form data" }, form_id: { type: "integer", required: true, description: "form_id parameter", }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter", }, schema: { type: "string", required: true, description: "JSON schema of the form", }, orginal_form_schema: { type: "string", required: true, description: "Original JSON schema of the form", }, signatureMetaData: { type: "string", required: false, description: "JSON metadata for signatures", }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)", }, }, }, { path: "/api/update-intake-form-data/{id}", method: "POST", controller: "FormsController@updateIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update intake form data", parameters: { id: { type: "string", required: true, description: "Form data ID" }, form_data: { type: "object", required: true, description: "Form data" }, }, }, { path: "/api/get-signed-patient-data/{id}", method: "GET", controller: "PatientController@getSignedPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get signed patient form data", parameters: { id: { type: "string", required: true, description: "Patient data ID" }, }, }, { path: "/api/get-pdf-url/{id}", method: "GET", controller: "DocumentController@getPdfUrl", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF URL", parameters: { id: { type: "string", required: true, description: "Document ID" }, }, }, { path: "/api/user-list-profile/{id}", method: "GET", controller: "UserController@getUserProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID", parameters: { id: { type: "string", required: true, description: "User ID" }, }, }, { path: "/api/user/set-password/{token}", method: "POST", controller: "UserController@setPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Set user password", parameters: { token: { type: "string", required: true, description: "Password reset token", }, password: { type: "string", required: true, description: "New password" }, }, }, { path: "/api/patient/refresh-token", method: "POST", controller: "PatientController@refreshToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Refresh patient authentication token", parameters: {refresh_token: { type: "string", required: true, description: "Refresh token",, refresh_token: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/register-patients", method: "POST", controller: "PatientController@registerPatients", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register a new patient without authentication", parameters: { first_name: { type: "string", required: true, description: "First name" }, last_name: { type: "string", required: true, description: "Last name" }, email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, dob: { type: "string", required: true, description: "Date of birth" }, phone_no: { type: "string", required: true, description: "Phone number" }, gender: { type: "string", required: true, description: "Gender" }, }, }, { path: "/api/patient-login-api", method: "POST", controller: "PatientController@loginApi", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Patient login without authentication", parameters: { email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, }, }, { path: "/api/patient-order-create", method: "POST", controller: "OrderController@createPatientOrder", category: ENDPOINT_CATEGORIES.BILLING_ORDERS, description: "Create a patient order", parameters: {patient_id: { type: "string", required: true, description: "Patient ID", patient_id: { type: "integer", required: true, description: "Parameter", }, shipping_address1: { type: "string", required: true, description: "Parameter", }, shipping_address2: { type: "string", required: false, description: "Parameter", }, shipping_city: { type: "string", required: true, description: "Parameter", }, shipping_state: { type: "string", required: true, description: "Parameter", }, shipping_zipcode: { type: "string", required: true, description: "Parameter", }, shipping_country: { type: "string", required: true, description: "Parameter", }, shipping_amount: { type: "number", required: true, description: "Parameter", }, total_amount: { type: "number", required: true, description: "Parameter", }, practitioner_fee: { type: "number", required: false, description: "Parameter", }, affiliate_email: { type: "string", required: false, description: "Parameter", }, provider_id: { type: "integer", required: true, description: "Parameter", }, appointment_id: { type: "integer", required: false, description: "Parameter", }, pending_task: { type: "boolean", required: false, description: "Parameter", }, builder_id: { type: "integer", required: false, description: "Parameter", }, discount_amount: { type: "number", required: false, description: "Parameter", }, coupon_code: { type: "string", required: false, description: "Parameter", }, items: { type: "array", required: true, description: "Parameter", }}, patient_id: { type: "integer", required: true, description: "patient_id parameter", }, shipping_address1: { type: "string", required: true, description: "shipping_address1 parameter", }, shipping_address2: { type: "string", required: false, description: "shipping_address2 parameter", }, shipping_city: { type: "string", required: true, description: "shipping_city parameter", }, shipping_state: { type: "string", required: true, description: "shipping_state parameter", }, shipping_zipcode: { type: "string", required: true, description: "shipping_zipcode parameter", }, shipping_country: { type: "string", required: true, description: "shipping_country parameter", }, shipping_amount: { type: "number", required: true, description: "shipping_amount parameter", }, total_amount: { type: "number", required: true, description: "total_amount parameter", }, practitioner_fee: { type: "number", required: false, description: "practitioner_fee parameter", }, affiliate_email: { type: "string", required: false, description: "affiliate_email parameter", }, provider_id: { type: "integer", required: true, description: "provider_id parameter", }, appointment_id: { type: "integer", required: false, description: "appointment_id parameter", }, pending_task: { type: "boolean", required: false, description: "pending_task parameter", }, builder_id: { type: "integer", required: false, description: "builder_id parameter", }, discount_amount: { type: "number", required: false, description: "discount_amount parameter", }, coupon_code: { type: "string", required: false, description: "coupon_code parameter", }, items: { type: "array", required: true, description: "items parameter" }, order_items: { type: "array", required: true, description: "Order items", }, }, }, { path: "/api/patient-book-appointment", method: "POST", controller: "AppointmentController@bookPatientAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book a patient appointment", parameters: {patient_id: { type: "string", required: true, description: "Patient ID", start_time: { type: "string", required: true, description: "Parameter", }, end_time: { type: "string", required: true, description: "Parameter", }, practitioner_id: { type: "integer", required: true, description: "Parameter", }, notes: { type: "string", required: false, description: "Parameter", }, order_id: { type: "integer", required: false, description: "Parameter", }, affiliate_email: { type: "string", required: false, description: "Parameter", }}, start_time: { type: "string", required: true, description: "start_time parameter", }, end_time: { type: "string", required: true, description: "end_time parameter", }, practitioner_id: { type: "integer", required: true, description: "practitioner_id parameter", }, notes: { type: "string", required: false, description: "notes parameter", }, order_id: { type: "integer", required: false, description: "order_id parameter", }, affiliate_email: { type: "string", required: false, description: "affiliate_email parameter", }, practitioner_id: { type: "string", required: true, description: "Practitioner ID", }, appointment_date: { type: "string", required: true, description: "Appointment date", }, appointment_time: { type: "string", required: true, description: "Appointment time", }, }, }, { path: "/api/redirect-with-auth/{pid}", method: "GET", controller: "AuthController@redirectWithAuth", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get authentication token for redirect", parameters: { pid: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/patient/available-slots/{date}", method: "POST", controller: "AppointmentController@getAvailableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots for a specific date", parameters: { date: { type: "string", required: true, description: "Date (YYYY-MM-DD)", }, }, }, { path: "/api/check-email", method: "POST", controller: "AuthController@checkEmail", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Check email availability", parameters: {email: { type: "string", required: true, description: "Email address", email: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "TokenController@generatePermanentToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Generate a permanent API token for a user", parameters: { userId: { type: "string", required: true, description: "User ID" }, }, }, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/api/download/pdf/{id}/{type}", method: "GET", controller: "ApiController@downloadPdfFile", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Download or view PDF file", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "Action type (download or view)", }, }, }, { path: "/api/forgot-password", method: "POST", controller: "ApiController@forgotPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Forgot password functionality", parameters: {email: { type: "string", required: true, description: "email parameter", email: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/generate-patient-summary/{patientId}", method: "GET", controller: "ApiController@generatePatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate AI summary for patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "ApiController@generatePermanentToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate a permanent API token for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, }, }, { path: "/api/get-form-without-auth/{id}", method: "GET", controller: "ApiController@getFormByIdwithouthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get form by ID without authentication", parameters: { id: { type: "integer", required: true, description: "Form ID" }, }, }, { path: "/api/get-patient-forms-list/{patientId}", method: "GET", controller: "ApiController@getPatientFormsList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient forms list", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-full-details/{patientId}", method: "GET", controller: "ApiController@getPatientFullDetails", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get comprehensive patient details", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-summary/{patientId}", method: "GET", controller: "ApiController@getPatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-pdf-url/{id}", method: "GET", controller: "ApiController@getPdfUrl", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get PDF URL", parameters: { id: { type: "integer", required: true, description: "Form submission ID", }, }, }, { path: "/api/get-signed-patient-data/{id}", method: "GET", controller: "ApiController@getSignedData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get signed patient form data", parameters: { id: { type: "integer", required: true, description: "Form submission ID", }, signature: { type: "string", required: true, description: "URL signature for validation", }, expires: { type: "integer", required: true, description: "URL expiration timestamp", }, }, }, { path: "/api/get/document/{userId}/{rowId}/{key}", method: "GET", controller: "ApiController@createPublicLink", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Create a public link to access a document", parameters: { userId: { type: "integer", required: true, description: "User ID" }, rowId: { type: "integer", required: true, description: "ID of the intake form record", }, key: { type: "string", required: true, description: "Key identifier for the document in the form data", }, }, }, { path: "/api/login-patient", method: "POST", controller: "ApiController@loginPatient", category: ENDPOINT_CATEGORIES.GENERAL, description: "Patient login", parameters: {email: { type: "string", required: true, description: "email parameter", email: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }}, password: { type: "string", required: true, description: "password parameter", }, }, }, { path: "/api/password-reset", method: "POST", controller: "ApiController@resetPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Reset password functionality", parameters: {token: { type: "string", required: true, description: "token parameter", token: { type: "string", required: true, description: "Parameter", }, email: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }, password_confirmation: { type: "string", required: true, description: "Parameter", }}, email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter", }, password_confirmation: { type: "string", required: true, description: "password_confirmation parameter", }, }, }, { path: "/api/patient/available-slots/{date}", method: "POST", controller: "ApiController@availableSlotsForPatient", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots for a specific date", parameters: { date: { type: "string", required: true, description: "Date in YYYY-MM-DD format", }, }, }, { path: "/api/patient/login", method: "POST", controller: "ApiController@loginPatientWithoutAuthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Patient login without authentication middleware", parameters: {email: { type: "string", required: true, description: "email parameter", email: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }}, password: { type: "string", required: true, description: "password parameter", }, }, }, { path: "/api/redirect-with-auth/{pid}", method: "GET", controller: "ApiController@redirectWithAuth", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get authentication token for redirect", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/register-patient", method: "POST", controller: "ApiController@registerPatientWithoutAuthAuth", category: ENDPOINT_CATEGORIES.GENERAL, description: "Register patient without authentication", parameters: {firstName: { type: "string", required: true, description: "firstName parameter",, firstName: { type: "string", required: true, description: "Parameter", }, lastName: { type: "string", required: true, description: "Parameter", }, email: { type: "string", required: true, description: "Parameter", }, password: { type: "string", required: true, description: "Parameter", }, dateOfBirth: { type: "string", required: true, description: "Parameter", }, gender: { type: "string", required: true, description: "Parameter", }, phone: { type: "string", required: true, description: "Parameter", }, username: { type: "string", required: true, description: "Parameter", }, provider_id: { type: "integer", required: false, description: "Parameter", }}, lastName: { type: "string", required: true, description: "lastName parameter", }, email: { type: "string", required: true, description: "email parameter" }, password: { type: "string", required: true, description: "password parameter", }, dateOfBirth: { type: "string", required: true, description: "dateOfBirth parameter", }, gender: { type: "string", required: true, description: "gender parameter", }, phone: { type: "string", required: true, description: "phone parameter" }, username: { type: "string", required: true, description: "username parameter", }, provider_id: { type: "integer", required: false, description: "provider_id parameter", }, }, }, { path: "/api/set-password/{token}", method: "POST", controller: "ApiController@setPassword", category: ENDPOINT_CATEGORIES.GENERAL, description: "Set password for patient account", parameters: { token: { type: "string", required: true, description: "Password reset token", }, password: { type: "string", required: true, description: "password parameter", }, password_confirmation: { type: "string", required: true, description: "password_confirmation parameter", }, }, }, { path: "/api/update-intake-form-data/{id}", method: "POST", controller: "ApiController@updatesIntakeFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update intake form data", parameters: { id: { type: "integer", required: true, description: "Intake form record ID", }, form_id: { type: "integer", required: true, description: "form_id parameter", }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter", }, schema: { type: "string", required: true, description: "JSON schema of the form", }, orginal_form_schema: { type: "string", required: true, description: "Original JSON schema of the form", }, signatureMetaData: { type: "string", required: false, description: "JSON metadata for signatures", }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)", }, }, }, { path: "/api/update-patient-summary/{patientId}", method: "POST", controller: "ApiController@updatePatientSummary", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, summary: { type: "string", required: true, description: "summary parameter", }, }, }, { path: "/api/user-list-profile/{id}", method: "GET", controller: "ApiController@getUserProfileById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID", parameters: { id: { type: "integer", required: true, description: "User ID" }, }, }, { path: "/api/user/set-password/{token}", method: "POST", controller: "ApiController@setUserPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Set user password", parameters: { token: { type: "string", required: true, description: "Password set token", }, password: { type: "string", required: true, description: "password parameter", }, }, }, // ===== MISSING ENDPOINTS FROM COMPREHENSIVE AUDIT ===== { path: "/api/patient/register-patient", method: "POST", controller: "PatientController@registerPatientForPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register a new patient", parameters: {first_name: { type: "string", required: true, description: "First name", first_name: { type: "string", required: true, description: "Parameter", }, last_name: { type: "string", required: true, description: "Parameter", }, email: { type: "string", required: true, description: "Parameter", }, phone_no: { type: "string", required: true, description: "Parameter", }, dob: { type: "string", required: true, description: "Parameter", }, gender: { type: "string", required: true, description: "Parameter", }}, last_name: { type: "string", required: true, description: "Last name" }, email: { type: "string", required: true, description: "Email address" }, password: { type: "string", required: true, description: "Password" }, phone: { type: "string", required: false, description: "Phone number" }, date_of_birth: { type: "string", required: false, description: "Date of birth", }, gender: { type: "string", required: false, description: "Gender" }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zip_code: { type: "string", required: false, description: "ZIP code" }, }, }, { path: "/api/reset-password", method: "POST", controller: "AuthController@resetPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Reset user password", parameters: { email: { type: "string", required: true, description: "Email address" }, token: { type: "string", required: true, description: "Reset token" }, password: { type: "string", required: true, description: "New password" }, password_confirmation: { type: "string", required: true, description: "Password confirmation", }, }, },, // ===== NEW ENDPOINTS FROM API-DOCS.JSON COMPREHENSIVE AUDIT ===== { path: "/appointment-participants/{appointmentId}", method: "GET", controller: "ApiController@getAppointmentParticipants", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment participants", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/start-record/{appointment}", method: "POST", controller: "ApiController@startRecording", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Start recording", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/emr/register-patients", method: "POST", controller: "ApiController@registerPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register new patient", parameters: { firstName: { type: "string", required: true, description: "Parameter", }, lastName: { type: "string", required: true, description: "Parameter", }, email: { type: "string", required: true, description: "Parameter", }, dateOfBirth: { type: "string", required: true, description: "Parameter", }, phone: { type: "string", required: false, description: "Parameter", }, address: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/get-patient-summary/{patientId}", method: "GET", controller: "ApiController@getPatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/update-patient-summary/{patientId}", method: "POST", controller: "ApiController@updatePatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient summary", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, summary: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/generate-patient-summary/{patientId}", method: "GET", controller: "ApiController@generatePatientSummary", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Generate AI summary for patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-full-details/{patientId}", method: "GET", controller: "ApiController@getPatientFullDetails", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get comprehensive patient details", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-forms-list/{patientId}", method: "GET", controller: "ApiController@getPatientFormsList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient forms list", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/download/pdf/{id}/{type}", method: "GET", controller: "ApiController@downloadPdfFile", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Download or view PDF file", parameters: { id: { type: "integer", required: true, description: "Form ID", }, type: { type: "string", required: true, description: "Action type (download or view)", } }, }, { path: "/api/refresh-token", method: "POST", controller: "ApiController@refresh", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Refresh authentication token", parameters: { refresh_token: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/set-password/{token}", method: "POST", controller: "ApiController@setPassword", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Set password for patient account", parameters: { token: { type: "string", required: true, description: "Password reset token", }, password: { type: "string", required: true, description: "Parameter", }, password_confirmation: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/get/document/{userId}/{rowId}/{key}", method: "GET", controller: "ApiController@createPublicLink", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Create a public link to access a document", parameters: { userId: { type: "integer", required: true, description: "User ID", }, rowId: { type: "integer", required: true, description: "ID of the intake form record", }, key: { type: "string", required: true, description: "Key identifier for the document in the form data", } }, }, { path: "/api/get-form-without-auth/{id}", method: "GET", controller: "ApiController@getFormByIdwithouthAuth", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get form by ID without authentication", parameters: { id: { type: "integer", required: true, description: "Form ID", } }, }, { path: "/api/update-intake-form-data/{id}", method: "POST", controller: "ApiController@updatesIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update intake form data", parameters: { id: { type: "integer", required: true, description: "Intake form record ID", } }, }, { path: "/api/get-signed-patient-data/{id}", method: "GET", controller: "ApiController@getSignedData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get signed patient form data", parameters: { id: { type: "integer", required: true, description: "Form submission ID", }, signature: { type: "string", required: true, description: "URL signature for validation", }, expires: { type: "integer", required: true, description: "URL expiration timestamp", } }, }, { path: "/api/get-pdf-url/{id}", method: "GET", controller: "ApiController@getPdfUrl", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get PDF URL", parameters: { id: { type: "integer", required: true, description: "Form submission ID", } }, }, { path: "/api/user-list-profile/{id}", method: "GET", controller: "ApiController@getUserProfileById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user profile by ID", parameters: { id: { type: "integer", required: true, description: "User ID", } }, }, { path: "/api/user/set-password/{token}", method: "POST", controller: "ApiController@setUserPassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Set user password", parameters: { token: { type: "string", required: true, description: "Password set token", }, password: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/redirect-with-auth/{pid}", method: "GET", controller: "ApiController@redirectWithAuth", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get authentication token for redirect", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/patient/available-slots/{date}", method: "POST", controller: "ApiController@availableSlotsForPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get available appointment slots for a specific date", parameters: { date: { type: "string", required: true, description: "Date in YYYY-MM-DD format", } }, }, { path: "/api/generate-permanent-token/{userId}", method: "GET", controller: "ApiController@generatePermanentToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Generate a permanent API token for a user", parameters: { userId: { type: "integer", required: true, description: "User ID", } }, }, { path: "/api/appointment-participants/{appointmentId}", method: "GET", controller: "ApiController@getAppointmentParticipants", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment participants", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID", } }, } ]; /** * Provider endpoints (provider authentication required) * All clinical data management, EMR operations, and healthcare data requiring HIPAA compliance */ export const PROVIDER_ENDPOINTS = [ // ===== PATIENT MANAGEMENT (EMR) ===== { path: "/api/emr/patients-list", method: "GET", controller: "EMRAPI\\PatientController@patientsList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Patient datatable with DataTable server-side parameters", parameters: { draw: { type: "number", required: false, description: "DataTable draw parameter", }, columns: { type: "array", required: false, description: "DataTable columns", }, order: { type: "array", required: false, description: "DataTable order" }, start: { type: "number", required: false, description: "DataTable start", }, length: { type: "number", required: false, description: "DataTable length", }, search: { type: "object", required: false, description: "DataTable search", }, page: { type: "number", required: false, description: "Page number" }, itemsPerPage: { type: "number", required: false, description: "Items per page", }, sortBy: { type: "array", required: false, description: "Sort by fields" }, filters: { type: "object", required: false, description: "Filter parameters", }, }, }, { path: "/api/emr/patient-data/{patient_id}", method: "GET", controller: "EMRAPI\\PatientController@getPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get single patient by ID", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/get-patient-data/{patient_id}", method: "GET", controller: "EMRAPI\\PatientController@getPatientDataById", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get single patient data by ID", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/register-patients", method: "POST", controller: "EMRAPI\\PatientController@registerPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register patient (EMR) with complete demographic data", parameters: { firstName: { type: "string", required: true, description: "First name" }, lastName: { type: "string", required: true, description: "Last name" }, middleName: { type: "string", required: false, description: "Middle name", }, preferredName: { type: "string", required: false, description: "Preferred name", }, email: { type: "string", required: true, description: "Email address" }, contactMethod: { type: "string", required: false, description: "Contact method", }, personalID: { type: "string", required: false, description: "Personal ID", }, dateOfBirth: { type: "string", required: true, description: "Date of birth", }, sexatBirth: { type: "string", required: false, description: "Sex at birth", }, genderIdentity: { type: "string", required: false, description: "Gender identity", }, race: { type: "string", required: false, description: "Race" }, pronoun: { type: "string", required: false, description: "Pronoun" }, ageGroup: { type: "string", required: false, description: "Age group" }, timezone: { type: "string", required: false, description: "Timezone" }, preferredPhone: { type: "string", required: false, description: "Preferred phone", }, alternativePhone: { type: "string", required: false, description: "Alternative phone", }, textmsgNumber: { type: "string", required: false, description: "Text message number", }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, primaryPractitioner: { type: "string", required: false, description: "Primary practitioner", }, primaryCarePhysician: { type: "string", required: false, description: "Primary care physician", }, guardian: { type: "string", required: false, description: "Guardian" }, emergencyContactNumber: { type: "string", required: false, description: "Emergency contact number", }, emergencyContactNameRelation: { type: "string", required: false, description: "Emergency contact name relation", }, patientMaritalStatus: { type: "string", required: false, description: "Patient marital status", }, occupation: { type: "string", required: false, description: "Occupation", }, referredBy: { type: "string", required: false, description: "Referred by", }, patientNote: { type: "string", required: false, description: "Patient note", }, password: { type: "string", required: false, description: "Patient portal password", }, status: { type: "string", required: false, description: "Patient status", }, isportalAccess: { type: "boolean", required: false, description: "Portal access flag", }, }, }, { path: "/api/emr/update-patient/{patient_id}", method: "POST", controller: "EMRAPI\\PatientController@updatePatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient with complete demographic data", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, firstName: { type: "string", required: false, description: "First name" }, lastName: { type: "string", required: false, description: "Last name" }, fullName: { type: "string", required: false, description: "Full name" }, middleName: { type: "string", required: false, description: "Middle name", }, preferredName: { type: "string", required: false, description: "Preferred name", }, email: { type: "string", required: false, description: "Email address" }, contactMethod: { type: "string", required: false, description: "Contact method", }, personalID: { type: "string", required: false, description: "Personal ID", }, dateOfBirth: { type: "string", required: false, description: "Date of birth", }, sexatBirth: { type: "string", required: false, description: "Sex at birth", }, genderIdentity: { type: "string", required: false, description: "Gender identity", }, race: { type: "string", required: false, description: "Race" }, pronoun: { type: "string", required: false, description: "Pronoun" }, ageGroup: { type: "string", required: false, description: "Age group" }, timezone: { type: "string", required: false, description: "Timezone" }, preferredPhone: { type: "string", required: false, description: "Preferred phone", }, alternativePhone: { type: "string", required: false, description: "Alternative phone", }, textmsgNumber: { type: "string", required: false, description: "Text message number", }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, primaryPractitioner: { type: "string", required: false, description: "Primary practitioner", }, primaryCarePhysician: { type: "string", required: false, description: "Primary care physician", }, guardian: { type: "string", required: false, description: "Guardian" }, emergencyContactNumber: { type: "string", required: false, description: "Emergency contact number", }, emergencyContactNameRelation: { type: "string", required: false, description: "Emergency contact name relation", }, patientMaritalStatus: { type: "string", required: false, description: "Patient marital status", }, occupation: { type: "string", required: false, description: "Occupation", }, referredBy: { type: "string", required: false, description: "Referred by", }, patientNote: { type: "string", required: false, description: "Patient note", }, password: { type: "string", required: false, description: "Patient portal password", }, status: { type: "string", required: false, description: "Patient status", }, isportalAccess: { type: "boolean", required: false, description: "Portal access flag", }, profilePicture: { type: "file", required: false, description: "Profile picture file", }, avatar: { type: "file", required: false, description: "Avatar file" }, }, }, // ===== PRESCRIPTION MANAGEMENT ===== { path: "/api/emr/prescription/store/{patient_id}", method: "POST", controller: "EMRAPI\\PrescriptionController@store", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Store medication with actual API parameter names", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, medication_data: { type: "object", required: true, description: "Complete medication object from medicationService.js", }, }, }, { path: "/api/emr/prescriptions/{patient_id}", method: "GET", controller: "EMRAPI\\PrescriptionController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get patient medication data with filters", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, src: { type: "string", required: false, description: "Source filter" }, status: { type: "string", required: false, description: "Status filter" }, }, }, { path: "/api/emr/prescriptions/update/{prescription_id}", method: "PUT", controller: "EMRAPI\\PrescriptionController@updatePrescription", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Update prescription status with actual API parameter names from medicationService.js", parameters: { prescription_id: { type: "string", required: true, description: "Prescription ID", }, status: { type: "string", required: false, description: "Prescription status", }, signature: { type: "string", required: false, description: "Signature" }, note: { type: "string", required: false, description: "Note" }, tracking_id: { type: "string", required: false, description: "Tracking ID", }, needs_followup: { type: "boolean", required: false, description: "Needs followup flag", }, followup_days: { type: "number", required: false, description: "Followup days", }, }, }, // ===== FORMS MANAGEMENT ===== { path: "/api/get-forms", method: "GET", controller: "FormController@getForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get forms", parameters: {}, }, { path: "/api/store-form", method: "POST", controller: "FormController@storeForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store form", parameters: {form_data: { type: "object", required: true, description: "Form data", type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "Parameter", }}, type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "name parameter" }, }, }, { path: "/api/update-form/{form_id}", method: "PUT", controller: "FormController@updateForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, form_data: { type: "object", required: true, description: "Form data" }, }, }, { path: "/api/delete-form/{form_id}", method: "DELETE", controller: "FormController@deleteForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, }, }, // ===== CONSENT FORMS ===== { path: "/api/emr/get-consent-forms", method: "GET", controller: "EMRAPI\\ConsentFormController@getConsentForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get consent forms", parameters: {}, }, { path: "/api/store-consent-form", method: "POST", controller: "ConsentFormController@storeConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store consent form", parameters: { form_data: { type: "object", required: true, description: "Consent form data", }, }, }, { path: "/api/get-consent-form/{form_id}", method: "GET", controller: "ConsentFormController@getConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get consent form by ID", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, }, }, { path: "/api/update-consent-form/{form_id}", method: "PUT", controller: "ConsentFormController@updateConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update consent form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, form_data: { type: "object", required: true, description: "Consent form data", }, }, }, { path: "/api/delete-consent-form/{form_id}", method: "DELETE", controller: "ConsentFormController@deleteConsentForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete consent form", parameters: { form_id: { type: "string", required: true, description: "Form ID" }, }, }, // ===== LAB MANAGEMENT ===== { path: "/api/get-labdiagonostics", method: "GET", controller: "LabController@getLabDiagnostics", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get lab diagnostics", parameters: {}, }, { path: "/api/store-labdiagonostics", method: "POST", controller: "LabController@storeLabDiagnostics", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Store lab diagnostics", parameters: { lab_data: { type: "object", required: true, description: "Lab diagnostic data", }, }, }, { path: "/api/labs/list", method: "GET", controller: "LabController@labsList", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get labs list", parameters: {}, }, { path: "/api/labs/create", method: "POST", controller: "LabController@createLab", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Create lab", parameters: { lab_data: { type: "object", required: true, description: "Lab data" }, }, }, { path: "/api/labs/update/{lab_id}", method: "PUT", controller: "LabController@updateLab", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Update lab", parameters: { lab_id: { type: "string", required: true, description: "Lab ID" }, }, }, { path: "/api/labs/delete/{lab_id}", method: "DELETE", controller: "LabController@deleteLab", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Delete lab", parameters: { lab_id: { type: "string", required: true, description: "Lab ID" }, }, }, // ===== MEDICINE MANAGEMENT ===== { path: "/api/emr/get-medicine-list", method: "GET", controller: "EMRAPI\\MedicineController@getMedicineList", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get medicine list", parameters: {}, }, { path: "/api/emr/import-medicines", method: "POST", controller: "EMRAPI\\MedicineController@importMedicines", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Import medicines from Excel", parameters: { excel_file: { type: "file", required: true, description: "Excel file with medicines", }, }, }, { path: "/api/add_medicine_template", method: "POST", controller: "MedicineTemplateController@addTemplate", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Store medicine template", parameters: { template_data: { type: "object", required: true, description: "Medicine template data", }, }, }, { path: "/api/update_medicine_template/{template_id}", method: "PUT", controller: "MedicineTemplateController@updateTemplate", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Update medicine template", parameters: { template_id: { type: "string", required: true, description: "Template ID", }, template_data: { type: "object", required: true, description: "Medicine template data", }, }, }, { path: "/api/get_medicine_templates", method: "GET", controller: "MedicineTemplateController@getTemplates", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get medicine templates", parameters: {}, }, { path: "/api/get_medicine_template_by_id/{template_id}", method: "GET", controller: "MedicineTemplateController@getTemplateById", }, // ===== BUILDER MANAGEMENT ===== { path: "/api/emr/get-themes-list", method: "GET", controller: "EMRAPI\\BuilderController@getThemesList", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get themes list", parameters: {}, }, { path: "/api/emr/store-builder", method: "POST", controller: "EMRAPI\\BuilderController@storeBuilder", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store builder with complete configuration", parameters: { builder_name: { type: "string", required: true, description: "Builder name", }, practitioner_id: { type: "string", required: true, description: "Practitioner ID", }, intakes: { type: "array", required: false, description: "Intake forms" }, questionnaire: { type: "array", required: false, description: "Questionnaire forms", }, products: { type: "array", required: false, description: "Products" }, paymentOption: { type: "object", required: false, description: "Payment options", }, patientFlow: { type: "object", required: false, description: "Patient flow configuration", }, }, }, { path: "/api/emr/store-builder-config/{id}", method: "POST", controller: "EMRAPI\\BuilderController@storeBuilderConfig", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store builder config with styling options", parameters: { id: { type: "string", required: true, description: "Builder ID" }, theme: { type: "string", required: false, description: "Theme" }, bgColor: { type: "string", required: false, description: "Background color", }, btncolor: { type: "string", required: false, description: "Button color", }, textColor: { type: "string", required: false, description: "Text color" }, practitioner_fee: { type: "number", required: false, description: "Practitioner fee", }, }, }, { path: "/api/emr/get-builder-data/{builder_id}", method: "GET", controller: "EMRAPI\\BuilderController@getBuilderData", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get builder data", parameters: { builder_id: { type: "string", required: true, description: "Builder ID", }, }, }, { path: "/api/emr/builder-update/{builder_id}", method: "PUT", controller: "EMRAPI\\BuilderController@builderUpdate", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update builder", parameters: { builder_id: { type: "string", required: true, description: "Builder ID", }, builder_data: { type: "object", required: true, description: "Builder data", }, }, }, { path: "/api/emr/update-builder-config/{config_id}", method: "PUT", controller: "EMRAPI\\BuilderController@updateBuilderConfig", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update builder config", parameters: { config_id: { type: "string", required: true, }, config_data: { type: "object", required: true, description: "Config data", }, }, }, { path: "/api/emr/delete-builder/{builder_id}", method: "DELETE", controller: "EMRAPI\\BuilderController@deleteBuilder", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Delete builder", parameters: { builder_id: { type: "string", required: true, description: "Builder ID", }, }, }, // ===== APPOINTMENT MANAGEMENT ===== { path: "/api/emr/appointments-list", method: "GET", controller: "EMRAPI\\AppointmentController@appointmentsList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments list with DataTable parameters", parameters: { draw: { type: "number", required: false, description: "DataTable draw parameter", }, columns: { type: "array", required: false, description: "DataTable columns", }, order: { type: "array", required: false, description: "DataTable order" }, start: { type: "number", required: false, description: "DataTable start", }, length: { type: "number", required: false, description: "DataTable length", }, search: { type: "object", required: false, description: "DataTable search", }, }, }, { path: "/api/emr/create-appointment", method: "POST", controller: "EMRAPI\\AppointmentController@createAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Create appointment with complete scheduling data", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID", }, appointment_date: { type: "string", required: true, description: "Appointment date", }, appointment_time: { type: "string", required: true, description: "Appointment time", }, duration: { type: "number", required: false, description: "Duration in minutes", }, appointment_type: { type: "string", required: false, description: "Appointment type", }, reason: { type: "string", required: false, description: "Appointment reason", }, notes: { type: "string", required: false, description: "Additional notes", }, location_id: { type: "string", required: false, description: "Location ID", }, status: { type: "string", required: false, description: "Appointment status", }, }, }, { path: "/api/emr/update-appointment/{appointment_id}", method: "PUT", controller: "EMRAPI\\AppointmentController@updateAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update appointment", parameters: { appointment_id: { type: "string", required: true, description: "Appointment ID", }, appointment_date: { type: "string", required: false, description: "Appointment date", }, appointment_time: { type: "string", required: false, description: "Appointment time", }, duration: { type: "number", required: false, description: "Duration in minutes", }, status: { type: "string", required: false, description: "Appointment status", }, notes: { type: "string", required: false, description: "Additional notes", }, }, }, { path: "/api/emr/cancel-appointment/{appointment_id}", method: "DELETE", controller: "EMRAPI\\AppointmentController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel appointment", parameters: { appointment_id: { type: "string", required: true, description: "Appointment ID", }, cancellation_reason: { type: "string", required: false, description: "Cancellation reason", }, }, }, // ===== DOCUMENT MANAGEMENT ===== { path: "/api/emr/documents/upload", method: "POST", controller: "EMRAPI\\DocumentController@uploadDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Upload patient document", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, document_file: { type: "file", required: true, description: "Document file", }, document_type: { type: "string", required: true, description: "Document type", }, document_name: { type: "string", required: false, description: "Document name", }, description: { type: "string", required: false, description: "Document description", }, }, }, { path: "/api/emr/documents/{patient_id}", method: "GET", controller: "EMRAPI\\DocumentController@getPatientDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/documents/delete/{document_id}", method: "DELETE", controller: "EMRAPI\\DocumentController@deleteDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Delete document", parameters: { document_id: { type: "string", required: true, description: "Document ID", }, }, }, // ===== MEDICAL RECORDS ===== { path: "/api/emr/medical-records/{patient_id}", method: "GET", controller: "EMRAPI\\MedicalRecordController@getPatientRecords", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get patient medical records", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/medical-records/create", method: "POST", controller: "EMRAPI\\MedicalRecordController@createRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Create medical record", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, record_type: { type: "string", required: true, description: "Record type", }, diagnosis: { type: "string", required: false, description: "Diagnosis" }, treatment: { type: "string", required: false, description: "Treatment" }, notes: { type: "string", required: false, description: "Medical notes" }, vital_signs: { type: "object", required: false, description: "Vital signs data", }, allergies: { type: "array", required: false, description: "Patient allergies", }, medications: { type: "array", required: false, description: "Current medications", }, }, }, { path: "/api/emr/medical-records/update/{record_id}", method: "PUT", controller: "EMRAPI\\MedicalRecordController@updateRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Update medical record", parameters: { record_id: { type: "string", required: true, description: "Record ID" }, diagnosis: { type: "string", required: false, description: "Diagnosis" }, treatment: { type: "string", required: false, description: "Treatment" }, notes: { type: "string", required: false, description: "Medical notes" }, vital_signs: { type: "object", required: false, description: "Vital signs data", }, }, }, // ===== PROVIDER MANAGEMENT ===== { path: "/api/emr/providers-list", method: "GET", controller: "EMRAPI\\ProviderController@providersList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get providers list", parameters: {}, }, { path: "/api/emr/provider-profile", method: "GET", controller: "EMRAPI\\ProviderController@getProfile", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get provider profile", parameters: {}, }, { path: "/api/emr/update-provider-profile", method: "POST", controller: "EMRAPI\\ProviderController@updateProfile", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update provider profile", parameters: { firstName: { type: "string", required: false, description: "First name" }, lastName: { type: "string", required: false, description: "Last name" }, emailAddress: { type: "string", required: false, description: "Email address", }, textMessageNumber: { type: "string", required: false, description: "Text message number", }, specialties: { type: "array", required: false, description: "Medical specialties", }, license_number: { type: "string", required: false, description: "License number", }, npi_number: { type: "string", required: false, description: "NPI number", }, }, }, // ===== HEALTHCARE DATA ACCESS (MOVED FROM PUBLIC FOR HIPAA COMPLIANCE) ===== { path: "/api/practitioners-list", method: "GET", controller: "PractitionerController@practitionersList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioner list (requires provider authentication)", parameters: {}, }, { path: "/api/get-specialties", method: "GET", controller: "SpecialtyController@getSpecialties", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get medical specialties (requires provider authentication)", parameters: {}, }, { path: "/api/get-states", method: "GET", controller: "LocationController@getStates", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get states list (requires provider authentication)", parameters: {}, }, { path: "/api/get-cities/{state_id}", method: "GET", controller: "LocationController@getCities", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get cities by state (requires provider authentication)", parameters: { state_id: { type: "string", required: true, description: "State ID" }, }, }, { path: "/api/get-countries", method: "GET", controller: "LocationController@getCountries", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get countries list (requires provider authentication)", parameters: {}, }, { path: "/api/get-timezones", method: "GET", controller: "LocationController@getTimezones", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get timezones list (requires provider authentication)", parameters: {}, }, { path: "/api/locations", method: "GET", controller: "LocationController@index", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get locations (requires provider authentication)", parameters: {draw: { type: "integer", required: false, description: "DataTables draw counter",, draw: { type: "integer", required: false, description: "DataTables draw counter", }, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, search_value_: { type: "string", required: false, description: "DataTables search value", }, order_0__column_: { type: "integer", required: false, description: "DataTables column index for ordering", }, order_0__dir_: { type: "string", required: false, description: "DataTables order direction (asc/desc)", }}, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, "search[value]": { type: "string", required: false, description: "DataTables search value", "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering", "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)", }, }, }, }, }, { path: "/api/get-pdf-list", method: "GET", controller: "DocumentController@getPdfList", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get PDF list (requires provider authentication for patient data protection)", parameters: {}, }, { path: "/api/store-questioner-form-data", method: "POST", controller: "PatientController@storeQuestionerFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store questioner form data (requires provider authentication for patient data protection)", parameters: { form_data: { type: "object", required: true, description: "Form data object", }, }, }, { path: "/api/store-patient-questionnaire-data", method: "POST", controller: "PatientController@storeQuestionQuestioner", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store patient questionnaire data (requires provider authentication for patient data protection)", parameters: { questionnaire_data: { type: "object", required: true, description: "Questionnaire data", }, }, }, { path: "/api/get-available-slots-data/{practitionerId}", method: "POST", controller: "AppointmentController@getAvailableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots by practitioner ID, month and timezone (requires provider authentication for practitioner data protection)", parameters: { practitionerId: { type: "string", required: true, description: "Practitioner ID", }, month: { type: "string", required: true, description: "Month in MM format (e.g., '07' for July)", }, timezone: { type: "string", required: true, description: "Timezone abbreviation (e.g., 'CST', 'EST', 'PST')", }, }, }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added key provider endpoints from api-docs.json (sample of 147 total) { path: "/get-asseblyai-token", method: "POST", controller: "MeetingController@getAssemblyAiToken", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get AssemblyAI token", parameters: {}, }, { path: "/create-meeting/{meeting_id}", method: "GET", controller: "MeetingController@showMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Show meeting details", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, }, }, { path: "/join-meeting/{meeting_id}", method: "GET", controller: "MeetingController@joinMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Join a meeting", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, }, }, { path: "/api/start-call/{patient_id}/{agent_id}/{appointment_id}", method: "POST", controller: "MeetingController@startCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Start a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, agent_id: { type: "integer", required: true, description: "Agent ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, title: { type: "string", required: false, description: "Call title" }, }, }, { path: "/get-realtime-questions/{appointmentId}", method: "GET", controller: "MeetingController@getRealtimeQuestions", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Get real-time questions", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/end-call/{patient_id}/{appointment_id}", method: "POST", controller: "MeetingController@endCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "End a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/labs/search", method: "POST", controller: "LabController@searchLabsByAddress", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Search labs by address", parameters: {address: { type: "string", required: true, description: "Search address",, address: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/book-appointment", method: "POST", controller: "AppointmentController@bookAgentAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book an appointment", parameters: {telemed_pros_id: { type: "integer", required: true, description: "Telemed pros ID",, patient_id: { type: "integer", required: true, description: "Patient ID", }, start_time: { type: "string", required: true, description: "Appointment start time", }, end_time: { type: "string", required: true, description: "Appointment end time", }, practitioner_id: { type: "integer", required: true, description: "Practitioner/Doctor ID", }, title: { type: "string", required: false, description: "Appointment title", }, timezone: { type: "string", required: false, description: "Timezone for the appointment", }, status: { type: "string", required: false, description: "Appointment status", }, service: { type: "string", required: false, description: "Service type", }, location: { type: "string", required: false, description: "Appointment location", }, room: { type: "string", required: false, description: "Room number", }, payment_type: { type: "string", required: false, description: "Payment type", }, appointment_type: { type: "string", required: false, description: "Type of appointment", }, notes: { type: "string", required: false, description: "Additional notes", }, affiliate_email: { type: "string", required: false, description: "Affiliate email (optional)", }, order_id: { type: "integer", required: false, description: "Order ID (optional)", }}, patient_id: { type: "integer", required: true, description: "patient_id parameter", }, doctor_id: { type: "integer", required: true, description: "doctor_id parameter", }, appointment_id: { type: "integer", required: true, description: "appointment_id parameter", }, appointment_time: { type: "string", required: true, description: "appointment_time parameter", }, patient_id: { type: "integer", required: true, description: "Patient ID", }, doctor_id: { type: "integer", required: true, description: "Doctor ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, appointment_time: { type: "string", required: true, description: "Appointment time", }, }, }, { path: "/api/update-patient-info/{patientId}", method: "POST", controller: "PatientController@updateInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, address: { type: "string", required: false, description: "Address" }, zip_code: { type: "string", required: false, description: "Zip code" }, dob: { type: "string", required: false, description: "Date of birth" }, country: { type: "string", required: false, description: "Country" }, }, }, { path: "/api/get-patient-info/{patientId}", method: "POST", controller: "PatientController@getInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-doctors-list", method: "POST", controller: "DoctorController@getDoctorList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get doctors list", parameters: {}, }, { path: "/api/add-note-patient", method: "POST", controller: "NoteController@addNotePatient", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add a note for patient", parameters: {note: { type: "string", required: true, description: "Note content", note: { type: "string", required: true, description: "Parameter", }, note_type: { type: "string", required: true, description: "Parameter", }}, note: { type: "string", required: true, description: "note parameter" }, note_type: { type: "string", required: true, description: "note_type parameter", }, note_type: { type: "string", required: true, description: "Note type" }, }, }, { path: "/api/get-note-patient", method: "GET", controller: "NoteController@getNotePatient", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get patient notes", parameters: {}, }, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/add-inventory", method: "POST", controller: "ApiController@createInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Add new inventory item", parameters: {inventoryType: { type: "string", required: false, description: "inventoryType parameter",, inventoryType: { type: "string", required: false, description: "Parameter", }, item_name: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: false, description: "Parameter", }, expirationDate: { type: "string", required: false, description: "Parameter", }}, item_name: { type: "string", required: false, description: "item_name parameter", }, price: { type: "number", required: false, description: "price parameter", }, expirationDate: { type: "string", required: false, description: "expirationDate parameter", }, }, }, { path: "/add-phone-log/{patient_id}", method: "POST", controller: "ApiController@addPhoneLog", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Add a new phone log for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, provider: { type: "string", required: true, description: "Name of the provider who made/received the call", }, message: { type: "string", required: true, description: "Details about the phone call", }, user_id: { type: "integer", required: true, description: "ID of the user who logged the call", }, }, }, { path: "/api/add-email/{patient_id}", method: "POST", controller: "ApiController@addEmail", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Add a new email for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, practitioner: { type: "integer", required: false, description: "User ID of the practitioner", }, messageText: { type: "string", required: true, description: "messageText parameter", }, to_email: { type: "string", required: true, description: "to_email parameter", }, from_email: { type: "string", required: false, description: "from_email parameter", }, emailTemplate: { type: "string", required: false, description: "Template name used for the email", }, subject: { type: "string", required: true, description: "subject parameter", }, }, }, { path: "/api/add-location", method: "POST", controller: "ApiController@addLocation", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Add a new location", parameters: {name: { type: "string", required: true, description: "name parameter", name: { type: "string", required: true, description: "Parameter", }, npiNumber: { type: "string", required: true, description: "Parameter", }, phoneNumber: { type: "string", required: true, description: "Parameter", }, address: { type: "string", required: true, description: "Parameter", }, city: { type: "string", required: true, description: "Parameter", }, state: { type: "string", required: true, description: "Parameter", }, zipcode: { type: "string", required: true, description: "Parameter", }, country: { type: "string", required: true, description: "Parameter", }}, npiNumber: { type: "string", required: true, description: "npiNumber parameter", }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter", }, address: { type: "string", required: true, description: "address parameter", }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter", }, country: { type: "string", required: true, description: "country parameter", }, }, }, { path: "/api/add-task/{patient_id}", method: "POST", controller: "ApiController@addTask", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Add a new task for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, task_title: { type: "string", required: true, description: "task_title parameter", }, task_body: { type: "string", required: true, description: "task_body parameter", }, task_due_date: { type: "string", required: true, description: "task_due_date parameter", }, task_assigned_to: { type: "integer", required: true, description: "task_assigned_to parameter", }, task_watchers: { type: "array", required: false, description: "task_watchers parameter", }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "sendEmailtoPatientApplicationForTask parameter", }, task_priority: { type: "string", required: false, description: "task_priority parameter", }, task_status: { type: "string", required: false, description: "task_status parameter", }, }, }, { path: "/api/add-user", method: "POST", controller: "ApiController@addUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Add new user (legacy method)", parameters: { firstName: { type: "string", required: true, description: "firstName parameter", }, lastName: { type: "string", required: true, description: "lastName parameter", }, username: { type: "string", required: true, description: "username parameter", }, emailAddress: { type: "string", required: true, description: "emailAddress parameter", }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter", }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter", }, gender: { type: "string", required: false, description: "gender parameter", }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, zipcode: { type: "string", required: false, description: "zipcode parameter", }, role_id: { type: "string", required: true, description: "role_id parameter", }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter", }, type: { type: "string", required: true, description: "type parameter" }, avatarImg: { type: "file", required: false, description: "User profile image", }, }, }, { path: "/api/add-vital/{patientId}", method: "POST", controller: "ApiController@addVital", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add vital signs for a patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, provider_id: { type: "integer", required: true, description: "provider_id parameter", }, blood_presssure: { type: "string", required: false, description: "blood_presssure parameter", }, diastolic: { type: "string", required: false, description: "diastolic parameter", }, weight_lbs: { type: "number", required: false, description: "weight_lbs parameter", }, height_ft: { type: "integer", required: false, description: "height_ft parameter", }, height_in: { type: "integer", required: false, description: "height_in parameter", }, temperature: { type: "number", required: false, description: "temperature parameter", }, pulse: { type: "integer", required: false, description: "pulse parameter", }, respiratory_rate: { type: "integer", required: false, description: "respiratory_rate parameter", }, saturation: { type: "integer", required: false, description: "saturation parameter", }, waist_in: { type: "number", required: false, description: "waist_in parameter", }, headCircumference_in: { type: "number", required: false, description: "headCircumference_in parameter", }, note: { type: "string", required: false, description: "note parameter" }, provider: { type: "string", required: false, description: "provider parameter", }, weight_oz: { type: "number", required: false, description: "weight_oz parameter", }, bmi: { type: "number", required: false, description: "bmi parameter" }, bloodSugar: { type: "number", required: false, description: "bloodSugar parameter", }, fasting: { type: "boolean", required: false, description: "fasting parameter", }, neck_in: { type: "number", required: false, description: "neck_in parameter", }, shoulders_in: { type: "number", required: false, description: "shoulders_in parameter", }, chest_in: { type: "number", required: false, description: "chest_in parameter", }, hips_in: { type: "number", required: false, description: "hips_in parameter", }, lean_body_mass_lbs: { type: "number", required: false, description: "lean_body_mass_lbs parameter", }, body_fat: { type: "number", required: false, description: "body_fat parameter", }, notes: { type: "string", required: false, description: "notes parameter", }, subjective_notes: { type: "string", required: false, description: "subjective_notes parameter", }, }, }, { path: "/api/appointment-detail/{appointment}", method: "POST", controller: "ApiController@appointmentDetail", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/assistant/practitioners-list", method: "GET", controller: "ApiController@assistantPractitioner", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioners list via assistant", }, { path: "/api/assistant/save-signature", method: "POST", controller: "ApiController@assistantStoreSignature", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store signature", parameters: {signature_data: { type: "string", required: true, description: "Base64 encoded signature image",, signature_data: { type: "string", required: true, description: "Base64 encoded signature image", }, provider_id: { type: "integer", required: false, description: "Parameter", }}, provider_id: { type: "integer", required: false, description: "provider_id parameter", }, }, }, { path: "/api/assistant/store-form", method: "POST", controller: "ApiController@assistantFormDataStore", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store form data", parameters: {type: { type: "string", required: true, description: "type parameter", type: { type: "string", required: true, description: "Parameter", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "Parameter", }}, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "name parameter" }, }, }, { path: "/api/assistant/store-intake-form-data", method: "POST", controller: "ApiController@storeAssistantIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Store intake form data", parameters: { form_id: { type: "integer", required: true, description: "form_id parameter", }, pid: { type: "integer", required: true, description: "pid parameter" }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter", }, schema: { type: "string", required: true, description: "JSON schema of the form", }, orginal_form_schema: { type: "string", required: true, description: "Original form schema", }, signatureMetaData: { type: "string", required: false, description: "Signature metadata", }, file_field_name: { type: "file", required: false, description: "File upload fields (multiple can be included)", }, }, }, { path: "/api/assistant/update-form/{id}", method: "PUT", controller: "ApiController@updateAssistantForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "type parameter" }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "name parameter" }, }, }, { path: "/api/available-slots/{date}", method: "POST", controller: "ApiController@availableSlots", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get available appointment slots", parameters: { date: { type: "string", required: true, description: "Date (YYYY-MM-DD)", }, }, }, { path: "/api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetupAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Complete company setup", parameters: { status: { type: "string", required: true, description: "Setup status (complete or incomplete)", }, }, }, { path: "/api/delete-form/{id}", method: "DELETE", controller: "ApiController@deleteForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Delete form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, }, }, { path: "/api/delete-intake-question/{form_id}", method: "DELETE", controller: "ApiController@deleteIntakeQuestionById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Delete intake question", parameters: { form_id: { type: "integer", required: true, description: "Intake question ID", }, }, }, { path: "/api/document/download/{rowId}/{key}", method: "GET", controller: "ApiController@downloadDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Download a patient document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record", }, key: { type: "string", required: true, description: "Key identifier for the document in the form data", }, }, }, { path: "/api/emr/appointment/{appointment_id}/order", method: "GET", controller: "ApiController@getAppointmentOrder", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment order details", parameters: { appointment_id: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/emr/appointment/{appointment}/detail", method: "GET", controller: "ApiController@getAppointmentDetailUnique", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/emr/appointment/{appointment}/update-meeting-analysis", method: "POST", controller: "ApiController@updateMeetingAnalysis", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update meeting analysis", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, data: { type: "object", required: false, description: "Meeting analytics data", }, }, }, { path: "/api/emr/appointment/{id}/cancel", method: "POST", controller: "ApiController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel an appointment", parameters: { id: { type: "integer", required: true, description: "Appointment ID" }, }, }, { path: "/api/emr/appointment/agent/{appointment}", method: "GET", controller: "ApiController@getAgentAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get agent appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/emr/appointment/list-by-date", method: "GET", controller: "ApiController@getAppointmentListByDateProvider", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments by date range", parameters: {start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)",, start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)", }, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)", }}, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)", }, }, }, { path: "/api/emr/appointment/queue/{patientId}", method: "POST", controller: "ApiController@addPatientToQueue", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Add patient to queue", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/appointment/report/last-30-days", method: "GET", controller: "ApiController@last30DaysAppointmentsData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get appointment data for last 30 days", parameters: {start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)",, start_date: { type: "string", required: true, description: "Start date (YYYY-MM-DD)", }, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)", }, provider: { type: "string", required: false, description: "Provider ID or 'all' for all providers", }}, end_date: { type: "string", required: true, description: "End date (YYYY-MM-DD)", }, provider: { type: "string", required: false, description: "Provider ID or 'all' for all providers", }, }, }, { path: "/api/emr/appointment/transcribe/{patient_id}", method: "GET", controller: "ApiController@getAppointmentTranscribe", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment transcriptions", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, }, }, { path: "/api/end-call/{patient_id}/{appointment_id}", method: "POST", controller: "ApiController@endCall", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "End a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/form-pdf-save", method: "POST", controller: "ApiController@saveFormFile", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Save form file", parameters: {form_id: { type: "integer", required: true, description: "form_id parameter",, form_id: { type: "integer", required: true, description: "Parameter", }, pdf_data: { type: "string", required: true, description: "Base64 encoded PDF data", }}, pdf_data: { type: "string", required: true, description: "Base64 encoded PDF data", }, }, }, { path: "/api/get-all-forms", method: "GET", controller: "ApiController@getAllForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get all forms", }, { path: "/api/get-appointment-by-id", method: "POST", controller: "ApiController@getAppointmentByID", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment by ID", parameters: {appointment_id: { type: "integer", required: true, description: "appointment_id parameter",, appointment_id: { type: "integer", required: true, description: "Parameter", }}, }, }, { path: "/api/get-appointment-list", method: "POST", controller: "ApiController@getAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointments list", }, { path: "/api/get-appointment-list-date", method: "POST", controller: "ApiController@getAppointmentListByDate", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment list by date", parameters: {date: { type: "string", required: false, description: "date parameter", date: { type: "string", required: false, description: "Parameter", }, practitioner_id: { type: "integer", required: false, description: "Parameter", }}, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter", }, }, }, { path: "/api/get-doctors-appointment-list", method: "POST", controller: "ApiController@getDoctorAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments list", }, { path: "/api/get-doctors-appointment-list", method: "POST", controller: "ApiController@getDoctorAppointmentList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments list", }, { path: "/api/get-document-by-id/{patientId}/{did}", method: "GET", controller: "ApiController@getDocumentsById", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get a specific patient document by ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, did: { type: "integer", required: true, description: "Document ID" }, }, }, { path: "/api/get-document-vue/{patient_id}", method: "GET", controller: "ApiController@getDocumentVue", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get documents for Vue component", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, }, }, { path: "/api/get-document/{patientId}", method: "GET", controller: "ApiController@getDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-email-list/{patient_id}", method: "GET", controller: "ApiController@getEmailList", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get email list for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, draw: { type: "integer", required: false, description: "DataTables draw counter", }, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, "search[value]": { type: "string", required: false, description: "DataTables search value", }, "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering", }, "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)", }, }, }, { path: "/api/get-email/{id}", method: "GET", controller: "ApiController@getEmailById", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get an email by ID", parameters: { id: { type: "integer", required: true, description: "ID of the email to retrieve", }, }, }, { path: "/api/get-form/{id}", method: "GET", controller: "ApiController@getFormById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get form by ID", parameters: { id: { type: "integer", required: true, description: "Form ID" }, }, }, { path: "/api/get-forms/{type}", method: "GET", controller: "ApiController@getForms", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, }, }, { path: "/api/get-intake-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormIntakeById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get intake form data by ID", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, }, }, { path: "/api/get-intake-forms-list", method: "GET", controller: "ApiController@getIntakeFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get intake forms list", }, { path: "/api/get-location/{uuid}", method: "GET", controller: "ApiController@getLocationByUuid", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to retrieve", }, }, }, { path: "/api/get-patient-forms-list/{pid}", method: "GET", controller: "ApiController@getPatientIntakeSimpleFormList", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get patient intake simple forms list", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-forms/{pid}", method: "GET", controller: "ApiController@getPatientFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get all forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-info/{patientId}", method: "POST", controller: "ApiController@getInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-intake-form-data/{form_id}/{pid}/{rowId}", method: "GET", controller: "ApiController@getIntakeFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, pid: { type: "integer", required: true, description: "Patient ID" }, rowId: { type: "integer", required: true, description: "Row ID of the specific form submission", }, }, }, { path: "/api/get-patient-intake-form-latest-data/{form_id}/{pid}", method: "GET", controller: "ApiController@getIntakeFormLatestData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get latest intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-intake-form-list/{type}/{pid}", method: "GET", controller: "ApiController@getPatientIntakeFormList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient intake forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-questionnaire-form-list/{pid}", method: "GET", controller: "ApiController@getPatientQuestionairForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient questionnaire forms", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-patient-submitted-intake-forms/{pid}", method: "GET", controller: "ApiController@getMergedFormData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get all submitted forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/get-prescription-list/{patient_id}", method: "GET", controller: "ApiController@getPrescriptionList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient prescription list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, }, }, { path: "/api/get-questioner-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormQuestionerById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get questionnaire form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID" }, }, }, { path: "/api/get-questioner-question/{id}", method: "GET", controller: "ApiController@getQuestionQuestionerById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get questionnaire question by ID", parameters: { id: { type: "integer", required: true, description: "Question ID" }, }, }, { path: "/api/get-stored-methods/{id}", method: "GET", controller: "ApiController@getStoredMethods", category: ENDPOINT_CATEGORIES.BILLING_ORDERS, description: "Get stored payment methods", parameters: { id: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/lab-detail/{appointment}", method: "GET", controller: "ApiController@labDetail", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get lab details for an appointment", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/lab-detail/{appointment}", method: "GET", controller: "ApiController@labDetail", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get lab details for an appointment", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/api/location/{id}", method: "GET", controller: "ApiController@getLocationById", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Get a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to retrieve", }, }, }, { path: "/api/medical-problem/{id}", method: "GET", controller: "ApiController@getMedicalProblemById", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get a medical problem by ID", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to retrieve", }, }, }, { path: "/api/medical-problems-store/{pid}", method: "POST", controller: "ApiController@storeMedicalProblem", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Add a new medical problem for a patient", parameters: { pid: { type: "integer", required: true, description: "ID of the patient", }, name: { type: "string", required: true, description: "name parameter" }, lastDate: { type: "string", required: true, description: "lastDate parameter", }, nextDate: { type: "string", required: true, description: "nextDate parameter", }, screeningDetails: { type: "string", required: true, description: "screeningDetails parameter", }, flag: { type: "string", required: true, description: "Status flag for the medical problem", }, typeOfItem: { type: "string", required: true, description: "Type of medical problem", }, }, }, { path: "/api/medical-problems-update/{id}", method: "PUT", controller: "ApiController@updateMedicalProblemRecord", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Update an existing medical problem", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to update", }, name: { type: "string", required: true, description: "name parameter" }, lastDate: { type: "string", required: true, description: "lastDate parameter", }, nextDate: { type: "string", required: true, description: "nextDate parameter", }, screeningDetails: { type: "string", required: true, description: "screeningDetails parameter", }, flag: { type: "string", required: true, description: "Status flag for the medical problem", }, typeOfItem: { type: "string", required: true, description: "Type of medical problem", }, medical_problem_id: { type: "integer", required: true, description: "ID of the medical problem", }, }, }, { path: "/api/patient-data/{id}", method: "GET", controller: "ApiController@getAssistantPatientData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient data", parameters: { id: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/patients", method: "GET", controller: "ApiController@getPatientList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get a list of patients", parameters: {firstName: { type: "string", required: false, description: "Filter by patient's first name",, firstName: { type: "string", required: false, description: "Filter by patient's first name", }, lastName: { type: "string", required: false, description: "Filter by patient's last name", }, dateOfBirth: { type: "string", required: false, description: "Filter by patient's date of birth (YYYY-MM-DD)", }, email: { type: "string", required: false, description: "Filter by patient's email", }}, lastName: { type: "string", required: false, description: "Filter by patient's last name", }, dateOfBirth: { type: "string", required: false, description: "Filter by patient's date of birth (YYYY-MM-DD)", }, email: { type: "string", required: false, description: "Filter by patient's email", }, }, }, { path: "/api/plans-product-sync", method: "POST", controller: "ApiController@syncProducts", category: ENDPOINT_CATEGORIES.GENERAL, description: "Save multiple products", parameters: {builder_id: { type: "string", required: true, description: "Base64 encoded builder ID",, builder_id: { type: "string", required: true, description: "Base64 encoded builder ID", }, products: { type: "array", required: true, description: "Parameter", }}, products: { type: "array", required: true, description: "products parameter", }, }, }, { path: "/api/plans-product-update", method: "POST", controller: "ApiController@updateOnPublish", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update product on publish", parameters: {builder_id: { type: "string", required: true, description: "Base64 encoded builder ID",, builder_id: { type: "string", required: true, description: "Base64 encoded builder ID", }, product_id: { type: "integer", required: true, description: "Parameter", }, product_name: { type: "string", required: true, description: "Parameter", }, product_price: { type: "number", required: true, description: "Parameter", }, product_slug: { type: "string", required: true, description: "Parameter", }, product_category: { type: "object", required: true, description: "Parameter", }, product_variation: { type: "array", required: false, description: "Parameter", }}, product_id: { type: "integer", required: true, description: "product_id parameter", }, product_name: { type: "string", required: true, description: "product_name parameter", }, product_price: { type: "number", required: true, description: "product_price parameter", }, product_slug: { type: "string", required: true, description: "product_slug parameter", }, product_category: { type: "object", required: true, description: "product_category parameter", }, product_variation: { type: "array", required: false, description: "product_variation parameter", }, }, }, { path: "/api/provider-add-availability", method: "POST", controller: "ApiController@storeProviderAvailability", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store provider availability", parameters: {title: { type: "string", required: true, description: "title parameter", title: { type: "string", required: true, description: "Parameter", }, start: { type: "string", required: true, description: "Parameter", }, end: { type: "string", required: true, description: "Parameter", }, type: { type: "string", required: true, description: "availability or event", }, comment: { type: "string", required: false, description: "Parameter", }, practitioner_id: { type: "integer", required: false, description: "Parameter", }}, start: { type: "string", required: true, description: "start parameter" }, end: { type: "string", required: true, description: "end parameter" }, type: { type: "string", required: true, description: "availability or event", }, comment: { type: "string", required: false, description: "comment parameter", }, practitioner_id: { type: "integer", required: false, description: "practitioner_id parameter", }, }, }, { path: "/api/provider/auth/logout", method: "POST", controller: "ApiController@logout", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Logout provider", }, { path: "/api/provider/practitioners-list", method: "GET", controller: "ApiController@providerPractitioner", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get practitioners list", }, { path: "/api/render/pdf/{rowId}", method: "GET", controller: "ApiController@renderPdf", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Render a PDF document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record", }, }, }, { path: "/api/save-category", method: "POST", controller: "ApiController@storeCategory", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Store product category", parameters: {name: { type: "string", required: true, description: "name parameter", name: { type: "string", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }}, description: { type: "string", required: false, description: "description parameter", }, }, }, { path: "/api/save-payment-method", method: "POST", controller: "ApiController@storePaymentMethodConfigAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store payment method configuration", parameters: {payment_method: { type: "string", required: true, description: "payment_method parameter",, payment_method: { type: "string", required: true, description: "Parameter", }, api_key: { type: "string", required: false, description: "Parameter", }, secret_key: { type: "string", required: false, description: "Parameter", }, is_active: { type: "boolean", required: false, description: "Parameter", }}, api_key: { type: "string", required: false, description: "api_key parameter", }, secret_key: { type: "string", required: false, description: "secret_key parameter", }, is_active: { type: "boolean", required: false, description: "is_active parameter", }, }, }, { path: "/api/save-product", method: "POST", controller: "ApiController@assistantSaveProduct", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Save product", parameters: {name: { type: "string", required: true, description: "name parameter", name: { type: "string", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: true, description: "Parameter", }, category_id: { type: "integer", required: true, description: "Parameter", }, sku: { type: "string", required: false, description: "Parameter", }, stock_quantity: { type: "integer", required: false, description: "Parameter", }}, description: { type: "string", required: false, description: "description parameter", }, price: { type: "number", required: true, description: "price parameter" }, category_id: { type: "integer", required: true, description: "category_id parameter", }, sku: { type: "string", required: false, description: "sku parameter" }, stock_quantity: { type: "integer", required: false, description: "stock_quantity parameter", }, }, }, { path: "/api/save-signature", method: "POST", controller: "ApiController@storeSignature", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save provider signature", parameters: {signature: { type: "string", required: true, description: "signature parameter",, signature: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/start-call/{patient_id}/{agent_id}/{appointment_id}", method: "POST", controller: "ApiController@startCall", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Start a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, agent_id: { type: "integer", required: true, description: "Agent ID" }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, title: { type: "string", required: false, description: "title parameter", }, }, }, { path: "/api/store-company", method: "POST", controller: "ApiController@updateCompanyAssistant", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update company information", parameters: { name: { type: "string", required: true, description: "name parameter" }, address: { type: "string", required: false, description: "address parameter", }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, zip: { type: "string", required: false, description: "zip parameter" }, phone: { type: "string", required: false, description: "phone parameter", }, email: { type: "string", required: false, description: "email parameter", }, website: { type: "string", required: false, description: "website parameter", }, logo: { type: "file", required: false, description: "Company logo" }, }, }, { path: "/api/store-document/{patientId}", method: "POST", controller: "ApiController@storeDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Store patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, files: { type: "array", required: false, description: "Document files to upload", }, document_type: { type: "string", required: false, description: "document_type parameter", }, notes: { type: "string", required: false, description: "notes parameter", }, }, }, { path: "/api/store-patient-consent-form", method: "POST", controller: "ApiController@storePatientConsentForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store patient consent form", parameters: {form_id: { type: "integer", required: true, description: "form_id parameter",, form_id: { type: "integer", required: true, description: "Parameter", }, pid: { type: "integer", required: true, description: "Parameter", }, data: { type: "object", required: true, description: "Parameter", }, name: { type: "string", required: true, description: "Parameter", }, signature: { type: "string", required: true, description: "Parameter", }}, pid: { type: "integer", required: true, description: "pid parameter" }, data: { type: "object", required: true, description: "data parameter" }, name: { type: "string", required: true, description: "name parameter" }, signature: { type: "string", required: true, description: "signature parameter", }, }, }, { path: "/api/task/{id}", method: "GET", controller: "ApiController@getOneTaskById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get a task by ID", parameters: { id: { type: "integer", required: true, description: "ID of the task to retrieve", }, }, }, { path: "/api/tasks/{patient_id}", method: "GET", controller: "ApiController@getTasks", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get all tasks for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, draw: { type: "integer", required: false, description: "DataTables draw counter", }, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, "search[value]": { type: "string", required: false, description: "DataTables search value", }, "order[0][column]": { type: "integer", required: false, description: "DataTables column index for ordering", }, "order[0][dir]": { type: "string", required: false, description: "DataTables order direction (asc/desc)", }, }, }, { path: "/api/token/create-with-abilities", method: "POST", controller: "ApiController@createTokenWithAbilities", category: ENDPOINT_CATEGORIES.GENERAL, description: "Create a token with specific abilities", parameters: {user_id: { type: "integer", required: true, description: "user_id parameter",, user_id: { type: "integer", required: true, description: "Parameter", }, token_name: { type: "string", required: true, description: "Parameter", }, abilities: { type: "array", required: true, description: "Parameter", }, expires_in_hours: { type: "integer", required: false, description: "Parameter", }}, token_name: { type: "string", required: true, description: "token_name parameter", }, abilities: { type: "array", required: true, description: "abilities parameter", }, expires_in_hours: { type: "integer", required: false, description: "expires_in_hours parameter", }, }, }, { path: "/api/token/generate-temporary", method: "POST", controller: "ApiController@generateTemporaryToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Generate a temporary API token", parameters: {user_id: { type: "integer", required: true, description: "user_id parameter",, user_id: { type: "integer", required: true, description: "Parameter", }, expires_in_hours: { type: "integer", required: true, description: "Parameter", }, abilities: { type: "array", required: false, description: "Parameter", }}, expires_in_hours: { type: "integer", required: true, description: "expires_in_hours parameter", }, abilities: { type: "array", required: false, description: "abilities parameter", }, }, }, { path: "/api/token/list/{userId}", method: "GET", controller: "ApiController@listUserTokens", category: ENDPOINT_CATEGORIES.GENERAL, description: "List all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, }, }, { path: "/api/token/refresh", method: "POST", controller: "ApiController@refreshCurrentToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Refresh current token", }, { path: "/api/token/revoke", method: "DELETE", controller: "ApiController@revokeToken", category: ENDPOINT_CATEGORIES.GENERAL, description: "Revoke a specific token", parameters: {token_id: { type: "integer", required: true, description: "token_id parameter",, token_id: { type: "integer", required: true, description: "Parameter", }}, }, }, { path: "/api/token/revoke-all/{userId}", method: "DELETE", controller: "ApiController@revokeAllUserTokens", category: ENDPOINT_CATEGORIES.GENERAL, description: "Revoke all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID" }, }, }, { path: "/api/update-category/{id}", method: "POST", controller: "ApiController@updateCategory", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update product category", parameters: { id: { type: "integer", required: true, description: "Category ID" }, name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter", }, }, }, { path: "/api/update-form-status", method: "PUT", controller: "ApiController@updateFormRequestStatus", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update form request status", parameters: {form_id: { type: "integer", required: true, description: "form_id parameter",, form_id: { type: "integer", required: true, description: "Parameter", }, patient_id: { type: "integer", required: true, description: "Parameter", }, status: { type: "string", required: true, description: "Parameter", }}, patient_id: { type: "integer", required: true, description: "patient_id parameter", }, status: { type: "string", required: true, description: "status parameter", }, }, }, { path: "/api/update-form/{id}", method: "PUT", controller: "ApiController@updateForm", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID" }, type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "name parameter" }, }, }, { path: "/api/update-intake-form-data", method: "POST", controller: "ApiController@updateIntakeFormData", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update intake form data", parameters: {form_id: { type: "integer", required: true, description: "form_id parameter",, form_id: { type: "integer", required: true, description: "Parameter", }, pid: { type: "integer", required: true, description: "Parameter", }, data: { type: "object", required: true, description: "Parameter", }}, pid: { type: "integer", required: true, description: "pid parameter" }, data: { type: "object", required: true, description: "data parameter" }, }, }, { path: "/api/update-location/{id}", method: "PUT", controller: "ApiController@updateLocation", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Update a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to update", }, name: { type: "string", required: true, description: "name parameter" }, npiNumber: { type: "string", required: true, description: "npiNumber parameter", }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter", }, address: { type: "string", required: true, description: "address parameter", }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter", }, country: { type: "string", required: true, description: "country parameter", }, }, }, { path: "/api/update-location/{uuid}", method: "PUT", controller: "ApiController@updateLocationByUuid", category: ENDPOINT_CATEGORIES.LOCATION_MANAGEMENT, description: "Update a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to update", }, name: { type: "string", required: true, description: "name parameter" }, npiNumber: { type: "string", required: true, description: "npiNumber parameter", }, phoneNumber: { type: "string", required: true, description: "phoneNumber parameter", }, address: { type: "string", required: true, description: "address parameter", }, city: { type: "string", required: true, description: "city parameter" }, state: { type: "string", required: true, description: "state parameter" }, zipcode: { type: "string", required: true, description: "zipcode parameter", }, country: { type: "string", required: true, description: "country parameter", }, }, }, { path: "/api/update-password", method: "POST", controller: "ApiController@updatePasswordPatient", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update patient password", parameters: {new_password: { type: "string", required: true, description: "new_password parameter",, new_password: { type: "string", required: true, description: "Parameter", }}, }, }, { path: "/api/update-patient-info/{patientId}", method: "POST", controller: "ApiController@updateInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, address: { type: "string", required: false, description: "address parameter", }, zip_code: { type: "string", required: false, description: "zip_code parameter", }, dob: { type: "string", required: false, description: "dob parameter" }, country: { type: "string", required: false, description: "country parameter", }, }, }, { path: "/api/update-product/{id}", method: "POST", controller: "ApiController@updateProduct", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Update product", parameters: { id: { type: "integer", required: true, description: "Product ID" }, name: { type: "string", required: true, description: "name parameter" }, description: { type: "string", required: false, description: "description parameter", }, price: { type: "number", required: true, description: "price parameter" }, category_id: { type: "integer", required: true, description: "category_id parameter", }, sku: { type: "string", required: false, description: "sku parameter" }, stock_quantity: { type: "integer", required: false, description: "stock_quantity parameter", }, }, }, { path: "/api/update-task/{task_id}", method: "PUT", controller: "ApiController@updateTask", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update an existing task", parameters: { task_id: { type: "integer", required: true, description: "ID of the task to update", }, task_title: { type: "string", required: false, description: "task_title parameter", }, task_body: { type: "string", required: false, description: "task_body parameter", }, task_due_date: { type: "string", required: false, description: "task_due_date parameter", }, task_assigned_to: { type: "integer", required: false, description: "task_assigned_to parameter", }, task_watchers: { type: "array", required: false, description: "task_watchers parameter", }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "sendEmailtoPatientApplicationForTask parameter", }, task_priority: { type: "string", required: false, description: "task_priority parameter", }, task_status: { type: "string", required: false, description: "task_status parameter", }, }, }, { path: "/api/update-user/{id}", method: "POST", controller: "ApiController@updateUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update user", parameters: { id: { type: "integer", required: true, description: "User ID" }, firstName: { type: "string", required: true, description: "firstName parameter", }, lastName: { type: "string", required: true, description: "lastName parameter", }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter", }, timezone: { type: "string", required: true, description: "timezone parameter", }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter", }, gender: { type: "string", required: false, description: "gender parameter", }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, zipcode: { type: "string", required: false, description: "zipcode parameter", }, type: { type: "string", required: false, description: "type parameter" }, role_id: { type: "string", required: true, description: "role_id parameter", }, username: { type: "string", required: false, description: "username parameter", }, newUserPassword: { type: "string", required: false, description: "newUserPassword parameter", }, }, }, { path: "/api/user-list", method: "GET", controller: "ApiController@getUserList", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get list of users", }, { path: "/api/user-list/{id}", method: "GET", controller: "ApiController@getUserById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user by ID", parameters: { id: { type: "integer", required: true, description: "User ID" }, }, }, { path: "/api/user/create", method: "POST", controller: "ApiController@createUserFromAdmin", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Create new user from admin", parameters: { firstName: { type: "string", required: true, description: "firstName parameter", }, lastName: { type: "string", required: true, description: "lastName parameter", }, username: { type: "string", required: true, description: "username parameter", }, emailAddress: { type: "string", required: true, description: "emailAddress parameter", }, textMessageNumber: { type: "string", required: true, description: "textMessageNumber parameter", }, dateOfBirth: { type: "string", required: false, description: "dateOfBirth parameter", }, gender: { type: "string", required: false, description: "gender parameter", }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, zipcode: { type: "string", required: false, description: "zipcode parameter", }, role_id: { type: "string", required: true, description: "role_id parameter", }, newUserPassword: { type: "string", required: true, description: "newUserPassword parameter", }, type: { type: "string", required: true, description: "type parameter" }, avatarImg: { type: "file", required: false, description: "User profile image", }, }, }, { path: "/appointment-status/{id}/{status}", method: "PUT", controller: "ApiController@updateAppointmentStatus", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Update appointment status", parameters: { id: { type: "integer", required: true, description: "Appointment ID" }, status: { type: "string", required: true, description: "New status for the appointment", }, }, }, { path: "/create-meeting/{meeting_id}", method: "GET", controller: "ApiController@showMeeting", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Show meeting details", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, }, }, { path: "/delete-inventory/{id}", method: "DELETE", controller: "ApiController@deleteInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Delete inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to delete", }, }, }, { path: "/emr-api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetup", category: ENDPOINT_CATEGORIES.GENERAL, description: "Complete provider setup", parameters: { status: { type: "integer", required: true, description: "Setup status (1 for complete, 0 for incomplete)", }, }, }, { path: "/emr-api/company/status", method: "GET", controller: "ApiController@getCompanyStatus", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get company status", }, { path: "/emr-api/get-company", method: "GET", controller: "ApiController@getCompany", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get company information", }, { path: "/emr-api/provider-wizard-setup", method: "GET", controller: "ApiController@getCounts", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get provider setup counts", }, { path: "/emr-api/store-company", method: "POST", controller: "ApiController@updateCompany", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update company information", parameters: { id: { type: "integer", required: true, description: "id parameter" }, company_name: { type: "string", required: true, description: "company_name parameter", }, company_phone: { type: "string", required: false, description: "company_phone parameter", }, company_email: { type: "string", required: true, description: "company_email parameter", }, address: { type: "string", required: false, description: "address parameter", }, domain_name: { type: "string", required: false, description: "domain_name parameter", }, city: { type: "string", required: false, description: "city parameter" }, state: { type: "string", required: false, description: "state parameter", }, zip: { type: "string", required: false, description: "zip parameter" }, header_scripts: { type: "string", required: false, description: "header_scripts parameter", }, footer_scripts: { type: "string", required: false, description: "footer_scripts parameter", }, logo: { type: "string", required: false, description: "logo parameter" }, }, }, { path: "/get-insurance/{patientId}", method: "GET", controller: "ApiController@getInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient", }, }, }, { path: "/get-inventory/{id}", method: "GET", controller: "ApiController@getInventoryItemById", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Get inventory item by ID", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item", }, }, }, { path: "/get-realtime-questions/{appointmentId}", method: "GET", controller: "ApiController@getRealtimeQuestions", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Get real-time questions", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID", }, }, }, { path: "/inventory", method: "GET", controller: "ApiController@listInventoryItems", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Get inventory list", }, { path: "/join-meeting/{meeting_id}", method: "GET", controller: "ApiController@joinMeeting", category: ENDPOINT_CATEGORIES.AI_INTEGRATION, description: "Join a meeting", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID" }, }, }, { path: "/phone-log-list/{patient_id}", method: "GET", controller: "ApiController@getPhoneLogList", category: ENDPOINT_CATEGORIES.MESSAGING, description: "Get phone logs for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, draw: { type: "integer", required: false, description: "Draw counter for DataTables", }, start: { type: "integer", required: false, description: "Paging first record indicator for DataTables", }, length: { type: "integer", required: false, description: "Number of records per page for DataTables", }, }, }, { path: "/provider/me", method: "GET", controller: "ApiController@getProviderDetailsByAccessToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get provider details by access token", }, { path: "/save-payment-method", method: "POST", controller: "ApiController@storePaymentMethodConfigProvider", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save payment method configuration", parameters: {name: { type: "string", required: true, description: "name parameter", name: { type: "string", required: true, description: "Parameter", }, config: { type: "object", required: true, description: "Parameter", }}, config: { type: "object", required: true, description: "config parameter", }, }, }, { path: "/store-insurance/{patientId}", method: "POST", controller: "ApiController@insuranceStore", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient", }, insurance: { type: "string", required: false, description: "insurance parameter", }, insuredPlanOrProgramName: { type: "string", required: true, description: "insuredPlanOrProgramName parameter", }, insuredIDNumber: { type: "string", required: true, description: "insuredIDNumber parameter", }, insuredGroupNameNo: { type: "string", required: false, description: "insuredGroupNameNo parameter", }, employersSchoolName: { type: "string", required: false, description: "employersSchoolName parameter", }, relationshiptoInsured: { type: "string", required: true, description: "relationshiptoInsured parameter", }, insuredName: { type: "string", required: false, description: "insuredName parameter", }, insuredDateOfBirth: { type: "string", required: true, description: "insuredDateOfBirth parameter", }, insuredGender: { type: "string", required: false, description: "insuredGender parameter", }, coPayment: { type: "number", required: false, description: "coPayment parameter", }, coInsurance: { type: "number", required: false, description: "coInsurance parameter", }, insuranceDeductible: { type: "number", required: false, description: "insuranceDeductible parameter", }, insuredAddress: { type: "string", required: true, description: "insuredAddress parameter", }, insuredCity: { type: "string", required: true, description: "insuredCity parameter", }, insuredState: { type: "string", required: true, description: "insuredState parameter", }, insuredZip: { type: "string", required: true, description: "insuredZip parameter", }, insuredPhone: { type: "string", required: true, description: "insuredPhone parameter", }, payerName: { type: "string", required: true, description: "payerName parameter", }, payerID: { type: "string", required: true, description: "payerID parameter", }, payerAddress: { type: "string", required: true, description: "payerAddress parameter", }, payerCity: { type: "string", required: true, description: "payerCity parameter", }, payerState: { type: "string", required: true, description: "payerState parameter", }, payerZip: { type: "string", required: true, description: "payerZip parameter", }, referringProviderName: { type: "string", required: false, description: "referringProviderName parameter", }, referringProviderNPI: { type: "string", required: false, description: "referringProviderNPI parameter", }, referringProviderTaxonomy: { type: "string", required: false, description: "referringProviderTaxonomy parameter", }, type: { type: "string", required: true, description: "type parameter" }, }, }, { path: "/store-tags/{patientId}", method: "POST", controller: "ApiController@storeTagsAlternate", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store tags for a patient (alternate endpoint)", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient", }, }, }, { path: "/tags/list/{pid}", method: "GET", controller: "ApiController@getTags", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/tags/store/{pid}", method: "POST", controller: "ApiController@storeTags", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient", }, }, }, { path: "/update-insurance/{patientId}", method: "PUT", controller: "ApiController@updateInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update insurance information for a patient", parameters: { patientId: { type: "integer", required: true, description: "ID of the patient", }, insuredPlanOrProgramName: { type: "string", required: true, description: "insuredPlanOrProgramName parameter", }, insuredIDNumber: { type: "string", required: true, description: "insuredIDNumber parameter", }, insuredGroupNameNo: { type: "string", required: false, description: "insuredGroupNameNo parameter", }, relationshiptoInsured: { type: "string", required: true, description: "relationshiptoInsured parameter", }, insuredDateOfBirth: { type: "string", required: true, description: "insuredDateOfBirth parameter", }, insuredAddress: { type: "string", required: true, description: "insuredAddress parameter", }, insuredCity: { type: "string", required: true, description: "insuredCity parameter", }, insuredState: { type: "string", required: true, description: "insuredState parameter", }, insuredZip: { type: "string", required: true, description: "insuredZip parameter", }, insuredPhone: { type: "string", required: true, description: "insuredPhone parameter", }, payerName: { type: "string", required: true, description: "payerName parameter", }, coPayment: { type: "number", required: false, description: "coPayment parameter", }, type: { type: "string", required: true, description: "type parameter" }, }, }, { path: "/update-inventory/{id}", method: "PUT", controller: "ApiController@updateInventoryItem", category: ENDPOINT_CATEGORIES.INVENTORY, description: "Update inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to update", }, inventoryType: { type: "string", required: false, description: "inventoryType parameter", }, item_name: { type: "string", required: false, description: "item_name parameter", }, price: { type: "number", required: false, description: "price parameter", }, expirationDate: { type: "string", required: false, description: "expirationDate parameter", }, }, }, // ===== MISSING ENDPOINTS FROM COMPREHENSIVE AUDIT ===== { path: "/api/emr/appointment/doctor/patient/{patientId}", method: "GET", controller: "AppointmentController@getDoctorAppointmentsByPatientId", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments by patient ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/appointment/patient/{patient_id}/list", method: "GET", controller: "AppointmentController@getPatientApptList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointment list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, }, }, { path: "/api/emr/appointment/patient/carts-items", method: "GET", controller: "AppointmentController@getPatientAppointmentsWithCartsAndItems", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments with carts and items", parameters: {}, },, // ===== NEW ENDPOINTS FROM API-DOCS.JSON COMPREHENSIVE AUDIT ===== { path: "/create-meeting/{meeting_id}", method: "GET", controller: "ApiController@showMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Show meeting details", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID", } }, }, { path: "/join-meeting/{meeting_id}", method: "GET", controller: "ApiController@joinMeeting", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Join a meeting", parameters: { meeting_id: { type: "string", required: true, description: "Meeting ID", } }, }, { path: "/api/start-call/{patient_id}/{agent_id}/{appointment_id}", method: "POST", controller: "ApiController@startCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Start a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, agent_id: { type: "integer", required: true, description: "Agent ID", }, appointment_id: { type: "integer", required: true, description: "Appointment ID", }, call_type: { type: "string", required: false, description: "Parameter", } }, }, { path: "/get-realtime-questions/{appointmentId}", method: "GET", controller: "ApiController@getRealtimeQuestions", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Get real-time questions", parameters: { appointmentId: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/end-call/{patient_id}/{appointment_id}", method: "POST", controller: "ApiController@endCall", category: ENDPOINT_CATEGORIES.MEETINGS, description: "End a call", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, appointment_id: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/appointment-status/{id}/{status}", method: "POST", controller: "ApiController@markAppointmentsStatus", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Mark appointment status", parameters: { id: { type: "integer", required: true, description: "Appointment ID", }, status: { type: "string", required: true, description: "New status for the appointment", } }, }, { path: "/emr/patients-list", method: "GET", controller: "ApiController@getPatientsList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patients list", parameters: {}, }, { path: "/emr/patient-data/{id}", method: "GET", controller: "ApiController@getPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient data", parameters: { id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/dashboard-states", method: "GET", controller: "ApiController@getDashboardStates", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get dashboard states", parameters: { start_date: { type: "string", required: false, description: "Start date for the dashboard data range", }, end_date: { type: "string", required: false, description: "End date for the dashboard data range", } }, }, { path: "/emr/get-patient-data/{id}", method: "GET", controller: "ApiController@getPatientDataById", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient data by ID", parameters: { id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/patients/profile-image/{pid}", method: "GET", controller: "ApiController@getProfileImage", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient profile image", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/patients/store-document/{pid}", method: "POST", controller: "ApiController@storeDocumentsEmr", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient document", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/patients/get-document/{pid}", method: "GET", controller: "ApiController@getDocumentEmr", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient documents", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/update-patient/{id}", method: "POST", controller: "ApiController@updatePatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient", parameters: { id: { type: "integer", required: true, description: "Patient ID", }, firstName: { type: "string", required: false, description: "Parameter", }, lastName: { type: "string", required: false, description: "Parameter", }, email: { type: "string", required: false, description: "Parameter", }, dateOfBirth: { type: "string", required: false, description: "Parameter", }, phone: { type: "string", required: false, description: "Parameter", }, address: { type: "string", required: false, description: "Parameter", } }, }, { path: "/emr/guardian-update/{id}", method: "POST", controller: "ApiController@guardianUpdate", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update patient guardian information", parameters: { id: { type: "integer", required: true, description: "Patient ID", }, nextKinRelation: { type: "string", required: false, description: "Parameter", }, nextkinPhone: { type: "string", required: false, description: "Parameter", }, nextkinAddress: { type: "string", required: false, description: "Parameter", }, nextkinCity: { type: "string", required: false, description: "Parameter", }, nextkinState: { type: "string", required: false, description: "Parameter", }, nextkinZipCode: { type: "string", required: false, description: "Parameter", }, nextkinFirstName: { type: "string", required: false, description: "Parameter", }, nextkinLastName: { type: "string", required: false, description: "Parameter", } }, }, { path: "/store-insurance/{patientId}", method: "POST", controller: "ApiController@insuranceStore", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient insurance", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, insuredPlanOrProgramName: { type: "string", required: false, description: "Parameter", }, insuredIDNumber: { type: "string", required: false, description: "Parameter", }, insuredGroupNameNo: { type: "string", required: false, description: "Parameter", }, payerName: { type: "string", required: false, description: "Parameter", }, relationshiptoInsured: { type: "string", required: false, description: "Parameter", }, insuredDateOfBirth: { type: "string", required: false, description: "Parameter", }, insuredAddress: { type: "string", required: false, description: "Parameter", }, insuredZip: { type: "string", required: false, description: "Parameter", }, insuredCity: { type: "string", required: false, description: "Parameter", }, insuredState: { type: "string", required: false, description: "Parameter", }, insuredPhone: { type: "string", required: false, description: "Parameter", }, coPayment: { type: "string", required: false, description: "Parameter", } }, }, { path: "/get-insurance/{patientId}", method: "GET", controller: "ApiController@getInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient insurance", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/update-insurance/{patientId}", method: "POST", controller: "ApiController@updateInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient insurance", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, insuredPlanOrProgramName: { type: "string", required: false, description: "Parameter", }, insuredIDNumber: { type: "string", required: false, description: "Parameter", }, insuredGroupNameNo: { type: "string", required: false, description: "Parameter", }, payerName: { type: "string", required: false, description: "Parameter", }, relationshiptoInsured: { type: "string", required: false, description: "Parameter", }, insuredDateOfBirth: { type: "string", required: false, description: "Parameter", }, insuredAddress: { type: "string", required: false, description: "Parameter", }, insuredZip: { type: "string", required: false, description: "Parameter", }, insuredCity: { type: "string", required: false, description: "Parameter", }, insuredState: { type: "string", required: false, description: "Parameter", }, insuredPhone: { type: "string", required: false, description: "Parameter", }, coPayment: { type: "string", required: false, description: "Parameter", } }, }, { path: "/locations", method: "GET", controller: "ApiController@getLocations", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get locations", parameters: {}, }, { path: "/add-location", method: "POST", controller: "ApiController@addLocation", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Add location", parameters: { name: { type: "string", required: false, description: "Parameter", }, address: { type: "string", required: false, description: "Parameter", }, city: { type: "string", required: false, description: "Parameter", }, state: { type: "string", required: false, description: "Parameter", }, postal_code: { type: "string", required: false, description: "Parameter", }, phone: { type: "string", required: false, description: "Parameter", } }, }, { path: "/update-location/{id}", method: "POST", controller: "ApiController@updateLocation", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update location", parameters: { id: { type: "integer", required: true, description: "Location ID", }, name: { type: "string", required: false, description: "Parameter", }, address: { type: "string", required: false, description: "Parameter", }, city: { type: "string", required: false, description: "Parameter", }, state: { type: "string", required: false, description: "Parameter", }, postal_code: { type: "string", required: false, description: "Parameter", }, phone: { type: "string", required: false, description: "Parameter", } }, }, { path: "/get-location/{uuid}", method: "GET", controller: "ApiController@getLocationById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get location by UUID", parameters: { uuid: { type: "string", required: true, description: "Location UUID", } }, }, { path: "/patient-nextofskin", method: "POST", controller: "ApiController@addNextOfKin", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add next of kin", parameters: { patient_id: { type: "integer", required: false, description: "Parameter", }, nextKinRelation: { type: "string", required: false, description: "Parameter", }, nextkinPhone: { type: "string", required: false, description: "Parameter", }, nextkinAddress: { type: "string", required: false, description: "Parameter", }, nextkinCity: { type: "string", required: false, description: "Parameter", }, nextkinState: { type: "string", required: false, description: "Parameter", }, nextkinZipCode: { type: "string", required: false, description: "Parameter", }, nextkinFirstName: { type: "string", required: false, description: "Parameter", }, nextkinLastName: { type: "string", required: false, description: "Parameter", } }, }, { path: "/patient-insurance", method: "POST", controller: "ApiController@addPatientInsurance", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add patient insurance", parameters: { patient_id: { type: "integer", required: false, description: "Parameter", }, insuredPlanOrProgramName: { type: "string", required: false, description: "Parameter", }, insuredIDNumber: { type: "string", required: false, description: "Parameter", }, insuredGroupNameNo: { type: "string", required: false, description: "Parameter", }, payerName: { type: "string", required: false, description: "Parameter", }, relationshiptoInsured: { type: "string", required: false, description: "Parameter", }, insuredDateOfBirth: { type: "string", required: false, description: "Parameter", }, insuredAddress: { type: "string", required: false, description: "Parameter", }, insuredZip: { type: "string", required: false, description: "Parameter", }, insuredCity: { type: "string", required: false, description: "Parameter", }, insuredState: { type: "string", required: false, description: "Parameter", }, insuredPhone: { type: "string", required: false, description: "Parameter", }, coPayment: { type: "string", required: false, description: "Parameter", } }, }, { path: "/patient-eligibility-check", method: "POST", controller: "ApiController@checkPatientEligibility", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Check patient eligibility", parameters: { patient_id: { type: "integer", required: false, description: "Parameter", }, insurance_id: { type: "integer", required: false, description: "Parameter", } }, }, { path: "/emr/get-products", method: "GET", controller: "ApiController@getProducts", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get products", parameters: {}, }, { path: "/emr/save-product", method: "POST", controller: "ApiController@saveProduct", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save product", parameters: { name: { type: "string", required: false, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: false, description: "Parameter", }, category_id: { type: "integer", required: false, description: "Parameter", } }, }, { path: "/emr/update-product", method: "POST", controller: "ApiController@updateProduct", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update product", parameters: { id: { type: "integer", required: false, description: "Parameter", }, name: { type: "string", required: false, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: false, description: "Parameter", }, category_id: { type: "integer", required: false, description: "Parameter", } }, }, { path: "/emr/get-categories", method: "GET", controller: "ApiController@getCategories", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get categories", parameters: {}, }, { path: "/emr/save-category", method: "POST", controller: "ApiController@saveCategory", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Save category", parameters: { name: { type: "string", required: false, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", } }, }, { path: "/emr/update-category", method: "POST", controller: "ApiController@updateCategory", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update category", parameters: { id: { type: "integer", required: false, description: "Parameter", }, name: { type: "string", required: false, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", } }, }, { path: "/text-messages", method: "GET", controller: "ApiController@getTextMessages", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get text messages", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/text-messages", method: "POST", controller: "ApiController@sendTextMessage", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Send text message", parameters: { patient_id: { type: "integer", required: false, description: "Parameter", }, message: { type: "string", required: false, description: "Parameter", }, phone_number: { type: "string", required: false, description: "Parameter", } }, }, { path: "/patient-history", method: "GET", controller: "ApiController@getPatientHistory", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient history", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/tags/list", method: "GET", controller: "ApiController@getTagsList", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get tags list", parameters: {}, }, { path: "/emr/tags/store", method: "POST", controller: "ApiController@storeTags", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store tags", parameters: { patient_id: { type: "integer", required: false, description: "Parameter", }, tags: { type: "array", required: false, description: "Parameter", } }, }, { path: "/api/update-patient-info/{patientId}", method: "POST", controller: "ApiController@updateInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, city: { type: "string", required: false, description: "Parameter", }, state: { type: "string", required: false, description: "Parameter", }, address: { type: "string", required: false, description: "Parameter", }, zip_code: { type: "string", required: false, description: "Parameter", }, dob: { type: "string", required: false, description: "Parameter", }, country: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/get-patient-info/{patientId}", method: "POST", controller: "ApiController@getInfo", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient information", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/available-slots/{date}", method: "POST", controller: "ApiController@availableSlots", category: ENDPOINT_CATEGORIES.MEDICAL_RECORDS, description: "Get available appointment slots", parameters: { date: { type: "string", required: true, description: "Date (YYYY-MM-DD)", } }, }, { path: "/api/appointment-detail/{appointment}", method: "POST", controller: "ApiController@appointmentDetail", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/lab-detail/{appointment}", method: "GET", controller: "ApiController@labDetail", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get lab details for an appointment", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/patient-data/{id}", method: "GET", controller: "ApiController@getAssistantPatientData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient data", parameters: { id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-forms-list/{pid}", method: "GET", controller: "ApiController@getPatientIntakeSimpleFormList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient intake simple forms list", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-prescription-list/{patient_id}", method: "GET", controller: "ApiController@getPrescriptionList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient prescription list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/assistant/update-form/{id}", method: "PUT", controller: "ApiController@updateAssistantForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID", }, type: { type: "string", required: true, description: "Parameter", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/update-category/{id}", method: "POST", controller: "ApiController@updateCategory", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update product category", parameters: { id: { type: "integer", required: true, description: "Category ID", }, name: { type: "string", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/update-product/{id}", method: "POST", controller: "ApiController@updateProduct", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update product", parameters: { id: { type: "integer", required: true, description: "Product ID", }, name: { type: "string", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: true, description: "Parameter", }, category_id: { type: "integer", required: true, description: "Parameter", }, sku: { type: "string", required: false, description: "Parameter", }, stock_quantity: { type: "integer", required: false, description: "Parameter", } }, }, { path: "/api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetupAssistant", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Complete company setup", parameters: { status: { type: "string", required: true, description: "Setup status (complete or incomplete)", } }, }, { path: "/emr-api/company/complete/setup/{status}", method: "PUT", controller: "ApiController@completeSetup", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Complete provider setup", parameters: { status: { type: "integer", required: true, description: "Setup status (1 for complete, 0 for incomplete)", } }, }, { path: "/api/emr/appointment/{id}/cancel", method: "POST", controller: "ApiController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel an appointment", parameters: { id: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/emr/appointment/{appointment_id}/order", method: "GET", controller: "ApiController@getAppointmentOrder", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment order details", parameters: { appointment_id: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/emr/appointment/transcribe/{patient_id}", method: "GET", controller: "ApiController@getAppointmentTranscribe", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment transcriptions", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/appointment/patient/{patient_id}/list", method: "GET", controller: "ApiController@getPatientApptList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointment list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/appointment/{appointment}/detail", method: "GET", controller: "ApiController@getAppointmentDetailUnique", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/emr/appointment/queue/{patientId}", method: "POST", controller: "ApiController@addPatientToQueue", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Add patient to queue", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/appointment/doctor/patient/{patientId}", method: "GET", controller: "ApiController@getDoctorAppointmentsByPatientId", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments by patient ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/appointment/agent/{appointment}", method: "GET", controller: "ApiController@getAgentAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get agent appointment details", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", } }, }, { path: "/api/emr/appointment/{appointment}/update-meeting-analysis", method: "POST", controller: "ApiController@updateMeetingAnalysis", category: ENDPOINT_CATEGORIES.MEETINGS, description: "Update meeting analysis", parameters: { appointment: { type: "integer", required: true, description: "Appointment ID", }, data: { type: "object", required: false, description: "Meeting analytics data", } }, }, { path: "/api/document/download/{rowId}/{key}", method: "GET", controller: "ApiController@downloadDocument", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Download a patient document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record", }, key: { type: "string", required: true, description: "Key identifier for the document in the form data", } }, }, { path: "/api/render/pdf/{rowId}", method: "GET", controller: "ApiController@renderPdf", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Render a PDF document", parameters: { rowId: { type: "integer", required: true, description: "ID of the intake form record", } }, }, { path: "/api/add-email/{patient_id}", method: "POST", controller: "ApiController@addEmail", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add a new email for a patient", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, practitioner: { type: "integer", required: false, description: "User ID of the practitioner", }, messageText: { type: "string", required: true, description: "Parameter", }, to_email: { type: "string", required: true, description: "Parameter", }, from_email: { type: "string", required: false, description: "Parameter", }, emailTemplate: { type: "string", required: false, description: "Template name used for the email", }, subject: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/get-email-list/{patient_id}", method: "GET", controller: "ApiController@getEmailList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get email list for a patient", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, draw: { type: "integer", required: false, description: "DataTables draw counter", }, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, search_value_: { type: "string", required: false, description: "DataTables search value", }, order_0__column_: { type: "integer", required: false, description: "DataTables column index for ordering", }, order_0__dir_: { type: "string", required: false, description: "DataTables order direction (asc/desc)", } }, }, { path: "/api/get-email/{id}", method: "GET", controller: "ApiController@getEmailById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get an email by ID", parameters: { id: { type: "integer", required: true, description: "ID of the email to retrieve", } }, }, { path: "/api/get-forms/{type}", method: "GET", controller: "ApiController@getForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", } }, }, { path: "/api/get-form/{id}", method: "GET", controller: "ApiController@getFormById", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get form by ID", parameters: { id: { type: "integer", required: true, description: "Form ID", } }, }, { path: "/api/update-form/{id}", method: "PUT", controller: "ApiController@updateForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Update form", parameters: { id: { type: "integer", required: true, description: "Form ID", }, type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, data: { type: "object", required: true, description: "Form structure and fields", }, name: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/delete-form/{id}", method: "DELETE", controller: "ApiController@deleteForm", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete form", parameters: { id: { type: "integer", required: true, description: "Form ID", } }, }, { path: "/api/get-patient-intake-form-data/{form_id}/{pid}/{rowId}", method: "GET", controller: "ApiController@getIntakeFormData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID", }, pid: { type: "integer", required: true, description: "Patient ID", }, rowId: { type: "integer", required: true, description: "Row ID of the specific form submission", } }, }, { path: "/api/get-patient-intake-form-latest-data/{form_id}/{pid}", method: "GET", controller: "ApiController@getIntakeFormLatestData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get latest intake form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID", }, pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-submitted-intake-forms/{pid}", method: "GET", controller: "ApiController@getMergedFormData", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get all submitted forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-intake-form-list/{type}/{pid}", method: "GET", controller: "ApiController@getPatientIntakeFormList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient intake forms by type", parameters: { type: { type: "string", required: true, description: "Form type (simple-forms, consent-forms, charting-forms, etc.)", }, pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/delete-intake-question/{form_id}", method: "DELETE", controller: "ApiController@deleteIntakeQuestionById", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Delete intake question", parameters: { form_id: { type: "integer", required: true, description: "Intake question ID", } }, }, { path: "/api/get-intake-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormIntakeById", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get intake form data by ID", parameters: { form_id: { type: "integer", required: true, description: "Form ID", } }, }, { path: "/api/get-document-vue/{patient_id}", method: "GET", controller: "ApiController@getDocumentVue", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get documents for Vue component", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-forms/{pid}", method: "GET", controller: "ApiController@getPatientFormList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get all forms for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-patient-questionnaire-form-list/{pid}", method: "GET", controller: "ApiController@getPatientQuestionairForm", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient questionnaire forms", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-questioner-forms-data/{form_id}", method: "GET", controller: "ApiController@getQuestionFormQuestionerById", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get questionnaire form data", parameters: { form_id: { type: "integer", required: true, description: "Form ID", } }, }, { path: "/api/get-questioner-question/{id}", method: "GET", controller: "ApiController@getQuestionQuestionerById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get questionnaire question by ID", parameters: { id: { type: "integer", required: true, description: "Question ID", } }, }, { path: "/get-inventory/{id}", method: "GET", controller: "ApiController@getInventoryItemById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get inventory item by ID", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item", } }, }, { path: "/update-inventory/{id}", method: "PUT", controller: "ApiController@updateInventoryItem", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to update", }, inventoryType: { type: "string", required: false, description: "Parameter", }, item_name: { type: "string", required: false, description: "Parameter", }, price: { type: "number", required: false, description: "Parameter", }, expirationDate: { type: "string", required: false, description: "Parameter", } }, }, { path: "/delete-inventory/{id}", method: "DELETE", controller: "ApiController@deleteInventoryItem", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Delete inventory item", parameters: { id: { type: "integer", required: true, description: "ID of the inventory item to delete", } }, }, { path: "/api/location/{id}", method: "GET", controller: "ApiController@getLocationById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to retrieve", } }, }, { path: "/api/get-location/{uuid}", method: "GET", controller: "ApiController@getLocationByUuid", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to retrieve", } }, }, { path: "/api/update-location/{id}", method: "PUT", controller: "ApiController@updateLocation", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update a location by ID", parameters: { id: { type: "integer", required: true, description: "ID of the location to update", }, name: { type: "string", required: true, description: "Parameter", }, npiNumber: { type: "string", required: true, description: "Parameter", }, phoneNumber: { type: "string", required: true, description: "Parameter", }, address: { type: "string", required: true, description: "Parameter", }, city: { type: "string", required: true, description: "Parameter", }, state: { type: "string", required: true, description: "Parameter", }, zipcode: { type: "string", required: true, description: "Parameter", }, country: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/update-location/{uuid}", method: "PUT", controller: "ApiController@updateLocationByUuid", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update a location by UUID", parameters: { uuid: { type: "string", required: true, description: "UUID of the location to update", }, name: { type: "string", required: true, description: "Parameter", }, npiNumber: { type: "string", required: true, description: "Parameter", }, phoneNumber: { type: "string", required: true, description: "Parameter", }, address: { type: "string", required: true, description: "Parameter", }, city: { type: "string", required: true, description: "Parameter", }, state: { type: "string", required: true, description: "Parameter", }, zipcode: { type: "string", required: true, description: "Parameter", }, country: { type: "string", required: true, description: "Parameter", } }, }, { path: "/api/medical-problems-store/{pid}", method: "POST", controller: "ApiController@storeMedicalProblem", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Add a new medical problem for a patient", parameters: { pid: { type: "integer", required: true, description: "ID of the patient", }, name: { type: "string", required: true, description: "Parameter", }, lastDate: { type: "string", required: true, description: "Parameter", }, nextDate: { type: "string", required: true, description: "Parameter", }, screeningDetails: { type: "string", required: true, description: "Parameter", }, flag: { type: "string", required: true, description: "Status flag for the medical problem", }, typeOfItem: { type: "string", required: true, description: "Type of medical problem", } }, }, { path: "/api/medical-problems-update/{id}", method: "PUT", controller: "ApiController@updateMedicalProblemRecord", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update an existing medical problem", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to update", }, name: { type: "string", required: true, description: "Parameter", }, lastDate: { type: "string", required: true, description: "Parameter", }, nextDate: { type: "string", required: true, description: "Parameter", }, screeningDetails: { type: "string", required: true, description: "Parameter", }, flag: { type: "string", required: true, description: "Status flag for the medical problem", }, typeOfItem: { type: "string", required: true, description: "Type of medical problem", }, medical_problem_id: { type: "integer", required: true, description: "ID of the medical problem", } }, }, { path: "/api/medical-problem/{id}", method: "GET", controller: "ApiController@getMedicalProblemById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get a medical problem by ID", parameters: { id: { type: "integer", required: true, description: "ID of the medical problem to retrieve", } }, }, { path: "/add-phone-log/{patient_id}", method: "POST", controller: "ApiController@addPhoneLog", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add a new phone log for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, provider: { type: "string", required: true, description: "Name of the provider who made/received the call", }, message: { type: "string", required: true, description: "Details about the phone call", }, user_id: { type: "integer", required: true, description: "ID of the user who logged the call", } }, }, { path: "/phone-log-list/{patient_id}", method: "GET", controller: "ApiController@getPhoneLogList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get phone logs for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, draw: { type: "integer", required: false, description: "Draw counter for DataTables", }, start: { type: "integer", required: false, description: "Paging first record indicator for DataTables", }, length: { type: "integer", required: false, description: "Number of records per page for DataTables", } }, }, { path: "/tags/store/{pid}", method: "POST", controller: "ApiController@storeTags", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Store tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID", }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient", } }, }, { path: "/store-tags/{patientId}", method: "POST", controller: "ApiController@storeTagsAlternate", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store tags for a patient (alternate endpoint)", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, tags: { type: "array", required: true, description: "Array of tag names to be associated with the patient", } }, }, { path: "/tags/list/{pid}", method: "GET", controller: "ApiController@getTags", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get tags for a patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/add-task/{patient_id}", method: "POST", controller: "ApiController@addTask", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add a new task for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, task_title: { type: "string", required: true, description: "Parameter", }, task_body: { type: "string", required: true, description: "Parameter", }, task_due_date: { type: "string", required: true, description: "Parameter", }, task_assigned_to: { type: "integer", required: true, description: "Parameter", }, task_watchers: { type: "array", required: false, description: "Parameter", }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "Parameter", }, task_priority: { type: "string", required: false, description: "Parameter", }, task_status: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/update-task/{task_id}", method: "PUT", controller: "ApiController@updateTask", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Update an existing task", parameters: { task_id: { type: "integer", required: true, description: "ID of the task to update", }, task_title: { type: "string", required: false, description: "Parameter", }, task_body: { type: "string", required: false, description: "Parameter", }, task_due_date: { type: "string", required: false, description: "Parameter", }, task_assigned_to: { type: "integer", required: false, description: "Parameter", }, task_watchers: { type: "array", required: false, description: "Parameter", }, sendEmailtoPatientApplicationForTask: { type: "boolean", required: false, description: "Parameter", }, task_priority: { type: "string", required: false, description: "Parameter", }, task_status: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/task/{id}", method: "GET", controller: "ApiController@getOneTaskById", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get a task by ID", parameters: { id: { type: "integer", required: true, description: "ID of the task to retrieve", } }, }, { path: "/api/tasks/{patient_id}", method: "GET", controller: "ApiController@getTasks", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get all tasks for a patient", parameters: { patient_id: { type: "integer", required: true, description: "ID of the patient", }, draw: { type: "integer", required: false, description: "DataTables draw counter", }, start: { type: "integer", required: false, description: "DataTables start offset", }, length: { type: "integer", required: false, description: "DataTables page length", }, search_value_: { type: "string", required: false, description: "DataTables search value", }, order_0__column_: { type: "integer", required: false, description: "DataTables column index for ordering", }, order_0__dir_: { type: "string", required: false, description: "DataTables order direction (asc/desc)", } }, }, { path: "/api/user-list/{id}", method: "GET", controller: "ApiController@getUserById", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get user by ID", parameters: { id: { type: "integer", required: true, description: "User ID", } }, }, { path: "/api/update-user/{id}", method: "POST", controller: "ApiController@updateUser", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update user", parameters: { id: { type: "integer", required: true, description: "User ID", }, firstName: { type: "string", required: true, description: "Parameter", }, lastName: { type: "string", required: true, description: "Parameter", }, textMessageNumber: { type: "string", required: true, description: "Parameter", }, timezone: { type: "string", required: true, description: "Parameter", }, dateOfBirth: { type: "string", required: false, description: "Parameter", }, gender: { type: "string", required: false, description: "Parameter", }, city: { type: "string", required: false, description: "Parameter", }, state: { type: "string", required: false, description: "Parameter", }, zipcode: { type: "string", required: false, description: "Parameter", }, type: { type: "string", required: false, description: "Parameter", }, role_id: { type: "string", required: true, description: "Parameter", }, username: { type: "string", required: false, description: "Parameter", }, newUserPassword: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/store-document/{patientId}", method: "POST", controller: "ApiController@storeDocuments", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-document/{patientId}", method: "GET", controller: "ApiController@getDocuments", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient documents", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/get-document-by-id/{patientId}/{did}", method: "GET", controller: "ApiController@getDocumentsById", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get a specific patient document by ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, did: { type: "integer", required: true, description: "Document ID", } }, }, { path: "/api/add-vital/{patientId}", method: "POST", controller: "ApiController@addVital", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Add vital signs for a patient", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, provider_id: { type: "integer", required: true, description: "Parameter", }, blood_presssure: { type: "string", required: false, description: "Parameter", }, diastolic: { type: "string", required: false, description: "Parameter", }, weight_lbs: { type: "number", required: false, description: "Parameter", }, height_ft: { type: "integer", required: false, description: "Parameter", }, height_in: { type: "integer", required: false, description: "Parameter", }, temperature: { type: "number", required: false, description: "Parameter", }, pulse: { type: "integer", required: false, description: "Parameter", }, respiratory_rate: { type: "integer", required: false, description: "Parameter", }, saturation: { type: "integer", required: false, description: "Parameter", }, waist_in: { type: "number", required: false, description: "Parameter", }, headCircumference_in: { type: "number", required: false, description: "Parameter", }, note: { type: "string", required: false, description: "Parameter", }, provider: { type: "string", required: false, description: "Parameter", }, weight_oz: { type: "number", required: false, description: "Parameter", }, bmi: { type: "number", required: false, description: "Parameter", }, bloodSugar: { type: "number", required: false, description: "Parameter", }, fasting: { type: "boolean", required: false, description: "Parameter", }, neck_in: { type: "number", required: false, description: "Parameter", }, shoulders_in: { type: "number", required: false, description: "Parameter", }, chest_in: { type: "number", required: false, description: "Parameter", }, hips_in: { type: "number", required: false, description: "Parameter", }, lean_body_mass_lbs: { type: "number", required: false, description: "Parameter", }, body_fat: { type: "number", required: false, description: "Parameter", }, notes: { type: "string", required: false, description: "Parameter", }, subjective_notes: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/get-stored-methods/{id}", method: "GET", controller: "ApiController@getStoredMethods", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get stored payment methods", parameters: { id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/patient/medical-problem/{id}", method: "GET", controller: "ApiController@getPatientMedicalProblemById", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get medical problem by ID", parameters: { id: { type: "integer", required: true, description: "Medical problem ID", } }, }, { path: "/api/patient/medical-problem/{id}", method: "PUT", controller: "ApiController@updatePatientMedicalProblem", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update medical problem", parameters: { id: { type: "integer", required: true, description: "Medical problem ID", }, description: { type: "string", required: false, description: "Parameter", }, date_of_onset: { type: "string", required: false, description: "Parameter", }, status: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/patient/history/{patientId}", method: "GET", controller: "ApiController@patientHistory", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient history", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/patient/medical-problem/{pid}", method: "POST", controller: "ApiController@storePatientMedicalProblem", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store medical problem", parameters: { pid: { type: "integer", required: true, description: "Patient ID", }, description: { type: "string", required: false, description: "Parameter", }, date_of_onset: { type: "string", required: false, description: "Parameter", }, status: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/patient/subscription/{subscription}/cancel", method: "POST", controller: "ApiController@cancelSubscription", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Cancel subscription", parameters: { subscription: { type: "integer", required: true, description: "Subscription ID", }, reason: { type: "string", required: false, description: "Parameter", }, feedback: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/token/list/{userId}", method: "GET", controller: "ApiController@listUserTokens", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "List all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID", } }, }, { path: "/api/token/revoke-all/{userId}", method: "DELETE", controller: "ApiController@revokeAllUserTokens", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Revoke all tokens for a user", parameters: { userId: { type: "integer", required: true, description: "User ID", } }, }, { path: "/api/dashboard-states", method: "GET", controller: "ApiController@getDashboardStates", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get dashboard statistics", parameters: {}, }, { path: "/api/get-appointments/{patient_id}", method: "GET", controller: "ApiController@getPatientAppointments", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/cancel-appointment/{id}", method: "PUT", controller: "ApiController@cancelAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Cancel appointment", parameters: { id: { type: "integer", required: true, description: "Appointment ID", }, reason: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/emr/prescription/store/{patientId}", method: "POST", controller: "ApiController@storePrescription", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Create prescription", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, medication_name: { type: "string", required: true, description: "Parameter", }, dosage: { type: "string", required: true, description: "Parameter", }, frequency: { type: "string", required: true, description: "Parameter", }, duration: { type: "string", required: true, description: "Parameter", }, instructions: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/emr/prescriptions/{patientId}", method: "GET", controller: "ApiController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient prescriptions", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/invoice-create", method: "POST", controller: "ApiController@createInvoice", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Create invoice", parameters: { patient_id: { type: "integer", required: true, description: "Parameter", }, amount: { type: "number", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, due_date: { type: "string", required: false, description: "Parameter", } }, }, { path: "/api/emr/invoices", method: "GET", controller: "ApiController@getInvoices", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get invoices", parameters: {}, }, { path: "/api/emr/invoice-payment", method: "POST", controller: "ApiController@processInvoicePayment", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Process invoice payment", parameters: { invoice_id: { type: "integer", required: true, description: "Parameter", }, payment_method: { type: "string", required: true, description: "Parameter", }, amount: { type: "number", required: true, description: "Parameter", }, card_details: { type: "object", required: false, description: "Card details (will be masked in response)", } }, }, { path: "/api/emr/roles-create", method: "POST", controller: "ApiController@createRole", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Create role", parameters: { name: { type: "string", required: true, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }, permissions: { type: "array", required: false, description: "Parameter", } }, }, { path: "/api/emr/roles", method: "GET", controller: "ApiController@getRoles", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get roles", parameters: {}, }, { path: "/api/emr/patients/store-document/{pid}", method: "POST", controller: "ApiController@storeDocumentsEmr", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient document in EMR", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/api/emr/patients/get-document/{pid}", method: "GET", controller: "ApiController@getDocumentEmr", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient documents from EMR", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/get-intake-questions", method: "GET", controller: "ApiController@getIntakeQuestions", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get intake questions", parameters: {}, }, { path: "/get-consent-forms", method: "GET", controller: "ApiController@getConsentForms", category: ENDPOINT_CATEGORIES.FORMS_QUESTIONNAIRES, description: "Get consent forms", parameters: {}, }, { path: "/get-message-list/{patient_id}", method: "GET", controller: "ApiController@getMessageList", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get message list for patient", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/get-vital/{pid}", method: "GET", controller: "ApiController@getVitalsEmr", category: ENDPOINT_CATEGORIES.PROVIDER_MANAGEMENT, description: "Get patient vitals from EMR", parameters: { pid: { type: "integer", required: true, description: "Patient ID", } }, }, { path: "/emr/patients/save-clinical-profile/{pid}", method: "POST", controller: "ApiController@saveClinicalProfile", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Save clinical profile for patient", parameters: { pid: { type: "integer", required: true, description: "Patient ID", }, immunizations: { type: "array", required: false, description: "Parameter", }, allergies: { type: "array", required: false, description: "Parameter", } }, }, { path: "/emr/patients/store-vitals/{pid}", method: "POST", controller: "ApiController@storeVitalsEmr", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient vitals in EMR", parameters: { pid: { type: "integer", required: true, description: "Patient ID", }, temperature: { type: "number", required: true, description: "Parameter", }, blood_pressure: { type: "string", required: true, description: "Parameter", }, heart_rate: { type: "integer", required: true, description: "Parameter", }, weight: { type: "number", required: false, description: "Parameter", }, height: { type: "number", required: false, description: "Parameter", }, notes: { type: "string", required: false, description: "Parameter", } }, }, { path: "/emr/family-history/allergies/{patientId}", method: "POST", controller: "ApiController@storeAllergies", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Store patient allergies", parameters: { patientId: { type: "integer", required: true, description: "Patient ID", }, allergies: { type: "array", required: false, description: "Parameter", } }, } ]; /** * Patient endpoints (patient authentication required) * Patient portal operations and personal health data access */ export const PATIENT_ENDPOINTS = [ // ===== PATIENT PORTAL OPERATIONS ===== { path: "/api/frontend/patient-dashboard", method: "GET", controller: "FrontendController@patientDashboard", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient dashboard data", parameters: {}, }, { path: "/api/frontend/patient-profile", method: "GET", controller: "FrontendController@getPatientProfile", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get patient profile", parameters: {}, }, { path: "/api/frontend/update-patient-profile", method: "POST", controller: "FrontendController@updatePatientProfile", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Update patient profile", parameters: { first_name: { type: "string", required: false, description: "First name", }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone: { type: "string", required: false, description: "Phone number" }, address: { type: "string", required: false, description: "Address" }, city: { type: "string", required: false, description: "City" }, state: { type: "string", required: false, description: "State" }, zipcode: { type: "string", required: false, description: "ZIP code" }, }, }, { path: "/api/frontend/patient-appointments", method: "GET", controller: "FrontendController@getPatientAppointments", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments", parameters: {}, }, { path: "/api/frontend/book-appointment", method: "POST", controller: "FrontendController@bookAppointment", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Book appointment from patient portal", parameters: { practitioner_id: { type: "string", required: true, description: "Practitioner ID", }, appointment_date: { type: "string", required: true, description: "Appointment date", }, appointment_time: { type: "string", required: true, description: "Appointment time", }, reason: { type: "string", required: false, description: "Appointment reason", }, }, }, { path: "/api/frontend/patient-prescriptions", method: "GET", controller: "FrontendController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.PRESCRIPTION_MANAGEMENT, description: "Get patient prescriptions", parameters: {}, }, { path: "/api/frontend/patient-documents", method: "GET", controller: "FrontendController@getPatientDocuments", category: ENDPOINT_CATEGORIES.DOCUMENT_MANAGEMENT, description: "Get patient documents", parameters: {}, }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 1 new patient endpoint from api-docs.json { path: "/api/change-password", method: "POST", controller: "PatientController@changePassword", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update patient password", parameters: {current_password: { type: "string", required: true, description: "Current password",, current_password: { type: "string", required: true, description: "Parameter", }, new_password: { type: "string", required: true, description: "Parameter", }}, new_password: { type: "string", required: true, description: "new_password parameter", }, new_password: { type: "string", required: true, description: "New password", }, confirm_password: { type: "string", required: true, description: "Confirm new password", }, }, }, // ===== NEW TOOLS FROM API DOCUMENTATION ===== { path: "/api/emr/appointment/doctor/patient/{patientId}", method: "GET", controller: "ApiController@getDoctorAppointmentsByPatientId", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get doctor appointments by patient ID", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/emr/appointment/patient/{patient_id}/list", method: "GET", controller: "ApiController@getPatientApptList", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointment list", parameters: { patient_id: { type: "integer", required: true, description: "Patient ID", }, }, }, { path: "/api/emr/appointment/patient/carts-items", method: "GET", controller: "ApiController@getPatientAppointmentsWithCartsAndItems", category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING, description: "Get patient appointments with carts and items", }, { path: "/api/patient/data", method: "GET", controller: "ApiController@getPatientData", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient data", }, { path: "/api/patient/history/{patientId}", method: "GET", controller: "ApiController@patientHistory", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient history", parameters: { patientId: { type: "integer", required: true, description: "Patient ID" }, }, }, { path: "/api/patient/medical-problem/{id}", method: "GET", controller: "ApiController@getPatientMedicalProblemById", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get medical problem by ID", parameters: { id: { type: "integer", required: true, description: "Medical problem ID", }, }, }, { path: "/api/patient/medical-problem/{id}", method: "PUT", controller: "ApiController@updatePatientMedicalProblem", category: ENDPOINT_CATEGORIES.GENERAL, description: "Update medical problem", parameters: { id: { type: "integer", required: true, description: "Medical problem ID", }, description: { type: "string", required: false, description: "description parameter", }, date_of_onset: { type: "string", required: false, description: "date_of_onset parameter", }, status: { type: "string", required: false, description: "status parameter", }, }, }, { path: "/api/patient/medical-problem/{pid}", method: "POST", controller: "ApiController@storePatientMedicalProblem", category: ENDPOINT_CATEGORIES.GENERAL, description: "Store medical problem", parameters: { pid: { type: "integer", required: true, description: "Patient ID" }, description: { type: "string", required: false, description: "description parameter", }, date_of_onset: { type: "string", required: false, description: "date_of_onset parameter", }, status: { type: "string", required: false, description: "status parameter", }, }, }, { path: "/api/patient/notifications", method: "GET", controller: "ApiController@getNotification", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient notifications", }, { path: "/api/patient/prescription", method: "GET", controller: "ApiController@getPatientPrescriptions", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient prescriptions", }, { path: "/api/patient/process-payment", method: "POST", controller: "ApiController@processPayment", category: ENDPOINT_CATEGORIES.GENERAL, description: "Process payment", parameters: {amount: { type: "number", required: true, description: "amount parameter",, amount: { type: "number", required: true, description: "Parameter", }, payment_method: { type: "string", required: true, description: "Parameter", }, currency: { type: "string", required: true, description: "Parameter", }, payment_method_id: { type: "string", required: false, description: "Parameter", }, description: { type: "string", required: false, description: "Parameter", }}, payment_method: { type: "string", required: true, description: "payment_method parameter", }, currency: { type: "string", required: true, description: "currency parameter", }, payment_method_id: { type: "string", required: false, description: "payment_method_id parameter", }, description: { type: "string", required: false, description: "description parameter", }, }, }, { path: "/api/patient/profile-picture", method: "POST", controller: "ApiController@uploadProfilePicture", category: ENDPOINT_CATEGORIES.GENERAL, description: "Upload profile picture", parameters: { profile_picture: { type: "string", required: false, description: "Profile picture file (JPEG, PNG)", }, }, }, { path: "/api/patient/register-patient", method: "POST", controller: "ApiController@registerPatientForPatient", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Register a new patient", parameters: { first_name: { type: "string", required: true, description: "first_name parameter", }, last_name: { type: "string", required: true, description: "last_name parameter", }, email: { type: "string", required: true, description: "email parameter" }, phone_no: { type: "string", required: true, description: "phone_no parameter", }, dob: { type: "string", required: true, description: "dob parameter" }, gender: { type: "string", required: true, description: "gender parameter", }, }, }, { path: "/api/patient/session-history", method: "GET", controller: "ApiController@sessionHistory", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient session history", }, { path: "/api/patient/subscription/{subscription}/cancel", method: "POST", controller: "ApiController@cancelSubscription", category: ENDPOINT_CATEGORIES.GENERAL, description: "Cancel subscription", parameters: { subscription: { type: "integer", required: true, description: "Subscription ID", }, reason: { type: "string", required: false, description: "reason parameter", }, feedback: { type: "string", required: false, description: "feedback parameter", }, }, }, { path: "/api/patient/subscriptions", method: "GET", controller: "ApiController@getSubscriptionList", category: ENDPOINT_CATEGORIES.GENERAL, description: "Get patient subscription list", }, { path: "/patient/me", method: "GET", controller: "ApiController@getPatientDetailsByAccessToken", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get patient details by access token", }, ]; /** * Partner endpoints (partner authentication required) * Partner business operations and management */ export const PARTNER_ENDPOINTS = [ // ===== PARTNER MANAGEMENT ===== { path: "/api/partner/dashboard", method: "GET", controller: "PartnerController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get partner dashboard", parameters: {}, }, { path: "/api/partner/profile", method: "GET", controller: "PartnerController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get partner profile", parameters: {}, }, { path: "/api/partner/update-profile", method: "POST", controller: "PartnerController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update partner profile", parameters: { first_name: { type: "string", required: false, description: "First name", }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number", }, company_name: { type: "string", required: false, description: "Company name", }, business_type: { type: "string", required: false, description: "Business type", }, }, }, { path: "/api/partner/patients", method: "GET", controller: "PartnerController@getPatients", category: ENDPOINT_CATEGORIES.PATIENT_MANAGEMENT, description: "Get partner patients", parameters: {}, }, { path: "/api/partner/referrals", method: "GET", controller: "PartnerController@getReferrals", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get partner referrals", parameters: {}, }, { path: "/api/partner/create-referral", method: "POST", controller: "PartnerController@createReferral", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Create referral", parameters: { patient_id: { type: "string", required: true, description: "Patient ID" }, practitioner_id: { type: "string", required: true, description: "Practitioner ID", }, referral_reason: { type: "string", required: false, description: "Referral reason", }, notes: { type: "string", required: false, description: "Additional notes", }, }, }, ]; /** * Affiliate endpoints (affiliate authentication required) * Affiliate management and commission tracking */ export const AFFILIATE_ENDPOINTS = [ // ===== AFFILIATE MANAGEMENT ===== { path: "/api/affiliate/dashboard", method: "GET", controller: "AffiliateController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate dashboard", parameters: {}, }, { path: "/api/affiliate/profile", method: "GET", controller: "AffiliateController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get affiliate profile", parameters: {}, }, { path: "/api/affiliate/update-profile", method: "POST", controller: "AffiliateController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update affiliate profile", parameters: { first_name: { type: "string", required: false, description: "First name", }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number", }, partner_email: { type: "string", required: false, description: "Partner email", }, }, }, { path: "/api/affiliate/commissions", method: "GET", controller: "AffiliateController@getCommissions", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate commissions", parameters: {}, }, { path: "/api/affiliate/referrals", method: "GET", controller: "AffiliateController@getReferrals", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get affiliate referrals", parameters: {}, }, // ===== NEW ENDPOINTS FROM API-DOCS.JSON ===== // Added 1 new affiliate endpoint from api-docs.json { path: "/affiliate/me", method: "GET", controller: "AffiliateController@getMe", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get affiliate details by access token", parameters: {}, }, ]; /** * Network endpoints (network authentication required) * Network operations and multi-partner management */ export const NETWORK_ENDPOINTS = [ // ===== NETWORK MANAGEMENT ===== { path: "/api/network/dashboard", method: "GET", controller: "NetworkController@dashboard", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get network dashboard", parameters: {}, }, { path: "/api/network/profile", method: "GET", controller: "NetworkController@getProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Get network profile", parameters: {}, }, { path: "/api/network/update-profile", method: "POST", controller: "NetworkController@updateProfile", category: ENDPOINT_CATEGORIES.USER_MANAGEMENT, description: "Update network profile", parameters: { first_name: { type: "string", required: false, description: "First name", }, last_name: { type: "string", required: false, description: "Last name" }, email: { type: "string", required: false, description: "Email address" }, phone_no: { type: "string", required: false, description: "Phone number", }, partner_id: { type: "string", required: false, description: "Partner ID", }, }, }, { path: "/api/network/partners", method: "GET", controller: "NetworkController@getPartners", category: ENDPOINT_CATEGORIES.BUSINESS_OPERATIONS, description: "Get network partners", parameters: {}, }, { path: "/api/network/analytics", method: "GET", controller: "NetworkController@getAnalytics", category: ENDPOINT_CATEGORIES.ANALYTICS_REPORTS, description: "Get network analytics", parameters: {}, }, ]; /** * Get endpoints by authentication type * @param {string} authType - Authentication type * @returns {Array} Array of endpoints for the specified auth type */ export function getEndpointsByAuthType(authType) { switch (authType) { case AUTH_TYPES.PUBLIC: return PUBLIC_ENDPOINTS; case AUTH_TYPES.PROVIDER: return PROVIDER_ENDPOINTS; case AUTH_TYPES.PATIENT: return PATIENT_ENDPOINTS; case AUTH_TYPES.PARTNER: return PARTNER_ENDPOINTS; case AUTH_TYPES.AFFILIATE: return AFFILIATE_ENDPOINTS; case AUTH_TYPES.NETWORK: return NETWORK_ENDPOINTS; default: return []; } } /** * Get all endpoints organized by authentication type * @returns {Object} Object with auth types as keys and endpoint arrays as values */ export function getAllEndpointsByAuthType() { return { [AUTH_TYPES.PUBLIC]: PUBLIC_ENDPOINTS, [AUTH_TYPES.PROVIDER]: PROVIDER_ENDPOINTS, [AUTH_TYPES.PATIENT]: PATIENT_ENDPOINTS, [AUTH_TYPES.PARTNER]: PARTNER_ENDPOINTS, [AUTH_TYPES.AFFILIATE]: AFFILIATE_ENDPOINTS, [AUTH_TYPES.NETWORK]: NETWORK_ENDPOINTS, }; } /** * Get total endpoint count * @returns {number} Total number of endpoints */ export function getTotalEndpointCount() { return ( PUBLIC_ENDPOINTS.length + PROVIDER_ENDPOINTS.length + PATIENT_ENDPOINTS.length + PARTNER_ENDPOINTS.length + AFFILIATE_ENDPOINTS.length + NETWORK_ENDPOINTS.length ); } /** * Get endpoint statistics * @returns {Object} Statistics about endpoints by auth type and category */ export function getEndpointStatistics() { const stats = { total: getTotalEndpointCount(), byAuthType: { [AUTH_TYPES.PUBLIC]: PUBLIC_ENDPOINTS.length, [AUTH_TYPES.PROVIDER]: PROVIDER_ENDPOINTS.length, [AUTH_TYPES.PATIENT]: PATIENT_ENDPOINTS.length, [AUTH_TYPES.PARTNER]: PARTNER_ENDPOINTS.length, [AUTH_TYPES.AFFILIATE]: AFFILIATE_ENDPOINTS.length, [AUTH_TYPES.NETWORK]: NETWORK_ENDPOINTS.length, }, byCategory: {}, }; // Count by category across all auth types const allEndpoints = [ ...PUBLIC_ENDPOINTS, ...PROVIDER_ENDPOINTS, ...PATIENT_ENDPOINTS, ...PARTNER_ENDPOINTS, ...AFFILIATE_ENDPOINTS, ...NETWORK_ENDPOINTS, ]; allEndpoints.forEach((endpoint) => { const category = endpoint.category || "undefined"; stats.byCategory[category] = (stats.byCategory[category] || 0) + 1; }); return stats; }