NeoScan_Physician/app/modules/PatientCare/services/patientAPI.ts
2025-08-20 20:42:33 +05:30

196 lines
5.6 KiB
TypeScript

/*
* File: patientAPI.ts
* Description: API service for patient care operations using apisauce
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/
import { create } from 'apisauce';
import { API_CONFIG, buildHeaders } from '../../../shared/utils';
const api = create({
baseURL: API_CONFIG.BASE_URL
});
/**
* Patient API Service
*
* Purpose: Handle all patient-related API operations
*
* Features:
* - Get patient list with filtering
* - Get individual patient details
* - Update patient information
* - Get patient vital signs
* - Get patient medical history
*/
export const patientAPI = {
/**
* Get Patients
*
* Purpose: Fetch list of medical cases from server
*
* @param token - Authentication token
* @returns Promise with medical cases data
*/
getPatients: (token: string) => {
return api.get('/api/ai-cases/all-patients', {}, buildHeaders({ token }));
},
/**
* Get Patient Details by ID
*
* Purpose: Fetch detailed information for a specific patient by ID
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with patient details including predictions and series
*/
getPatientDetailsById: (patientId: string, token: string) => {
return api.get(`/api/ai-cases/patient/${patientId}/predictions`, {}, buildHeaders({ token }));
},
/**
* Get Patient Details (Legacy - kept for backward compatibility)
*
* Purpose: Fetch detailed information for a specific patient
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with patient details
*/
getPatientDetails: (patientId: string, token: string) => {
return api.get(`/api/ai-cases/patient/${patientId}/predictions`, {}, buildHeaders({ token }));
},
/**
* Update Patient
*
* Purpose: Update patient information
*
* @param patientId - Patient ID
* @param patientData - Updated patient data
* @param token - Authentication token
* @returns Promise with updated patient data
*/
updatePatient: (patientId: string, patientData: any, token: string) => {
return api.put(`/api/patients/${patientId}`, patientData, buildHeaders({ token }));
},
/**
* Get Patient Vital Signs
*
* Purpose: Fetch latest vital signs for a patient
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with vital signs data
*/
getPatientVitals: (patientId: string, token: string) => {
return api.get(`/api/patients/${patientId}/vitals`, {}, buildHeaders({ token }));
},
/**
* Update Patient Vital Signs
*
* Purpose: Add new vital signs reading for a patient
*
* @param patientId - Patient ID
* @param vitalSigns - Vital signs data
* @param token - Authentication token
* @returns Promise with updated vital signs
*/
updatePatientVitals: (patientId: string, vitalSigns: any, token: string) => {
return api.put(`/api/patients/${patientId}/vitals`, vitalSigns, buildHeaders({ token }));
},
/**
* Submit Feedback for AI Prediction
*
* Purpose: Submit physician feedback for AI predictions
*
* @param feedbackData - Feedback payload
* @returns API response
*/
submitFeedback: (feedbackData: {
patid: string;
prediction_id: number;
feedback_text: string;
is_positive: boolean;
},token) => api.post('/api/ai-cases/feedbacks', feedbackData, buildHeaders({ token })),
/**
* Get Patient Medical History
*
* Purpose: Fetch medical history for a patient
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with medical history data
*/
getPatientHistory: (patientId: string, token: string) => {
return api.get(`/api/patients/${patientId}/history`, {}, buildHeaders({ token }));
},
/**
* Get Patient Medications
*
* Purpose: Fetch current medications for a patient
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with medications data
*/
getPatientMedications: (patientId: string, token: string) => {
return api.get(`/api/patients/${patientId}/medications`, {}, buildHeaders({ token }));
},
/**
* Add Patient Medication
*
* Purpose: Add new medication for a patient
*
* @param patientId - Patient ID
* @param medication - Medication data
* @param token - Authentication token
* @returns Promise with updated medications
*/
addPatientMedication: (patientId: string, medication: any, token: string) => {
return api.post(`/api/patients/${patientId}/medications`, medication, buildHeaders({ token }));
},
/**
* Get Patient Allergies
*
* Purpose: Fetch allergies for a patient
*
* @param patientId - Patient ID
* @param token - Authentication token
* @returns Promise with allergies data
*/
getPatientAllergies: (patientId: string, token: string) => {
return api.get(`/api/patients/${patientId}/allergies`, {}, buildHeaders({ token }));
},
/**
* Search Patients
*
* Purpose: Search patients by various criteria
*
* @param query - Search query
* @param token - Authentication token
* @returns Promise with search results
*/
searchPatients: (query: string, token: string) => {
return api.get('/api/patients/search', { q: query }, buildHeaders({ token }));
},
};
// Legacy export for backward compatibility
export const caseAPI = patientAPI;
/*
* End of File: patientAPI.ts
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/