Files
mcp-tool/endpoints_comprehensive_fix_backup_1752009478773.js
nasir@endelospay.com 8c74b0e23f first
2025-07-11 20:22:12 +05:00

4077 lines
162 KiB
JavaScript

/**
* @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" },
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" },
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: "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: "Dummy field" },
// ===== 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: "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",
},
{
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" }
{
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: "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",
},
{
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: "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: "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" }
{
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" },
{
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" },
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" },
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" },
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" },
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" }
];
/**
* 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: "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" },
// ===== 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" },
// ===== 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" },
// ===== 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" },
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: "GET",
controller: "AppointmentController@getAvailableSlots",
category: ENDPOINT_CATEGORIES.APPOINTMENT_SCHEDULING,
description: "Get available appointment slots (requires provider authentication for practitioner data protection)",
parameters: {
practitionerId: {
type: "string",
required: true,
description: "Practitioner ID" },
// ===== 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",
},
{
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 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: "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" },
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" },
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" },
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" },
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)" },
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)" },
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" },
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" },
{
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" },
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" },
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" },
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" },
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" },
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" },
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" },
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" },
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" },
{
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" },
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" },
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" },
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" },
{
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" },
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" },
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" }
}
},
{
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" },
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" }
];
/**
* 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",
},
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" },
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;
}