import { get, post, patch } from './client.js'; /** * Fetch tests list with optional filters, pagination, and search * @param {Object} params - Query parameters * @param {number} [params.page=1] - Page number * @param {number} [params.perPage=20] - Items per page * @param {string} [params.search] - Search by test code or name * @param {string} [params.TestType] - Filter by test type (TEST, PARAM, CALC, GROUP, TITLE) * @returns {Promise} API response with test data and pagination */ export async function fetchTests(params = {}) { const query = new URLSearchParams(params).toString(); return get(query ? `/api/tests?${query}` : '/api/tests'); } export async function fetchTest(id) { return get(`/api/tests/${id}`); } export async function createTest(data) { const payload = { TestSiteCode: data.TestSiteCode, TestSiteName: data.TestSiteName, TestType: data.TestType, DisciplineID: data.DisciplineID, DepartmentID: data.DepartmentID, SeqScr: data.SeqScr, SeqRpt: data.SeqRpt, VisibleScr: data.VisibleScr ? '1' : '0', VisibleRpt: data.VisibleRpt ? '1' : '0', // Type-specific fields Unit: data.Unit, Formula: data.Formula, // Reference ranges (only for TEST and CALC) refnum: data.refnum, reftxt: data.reftxt, }; return post('/api/tests', payload); } export async function updateTest(data) { const payload = { TestSiteID: data.TestSiteID, TestSiteCode: data.TestSiteCode, TestSiteName: data.TestSiteName, TestType: data.TestType, DisciplineID: data.DisciplineID, DepartmentID: data.DepartmentID, SeqScr: data.SeqScr, SeqRpt: data.SeqRpt, VisibleScr: data.VisibleScr ? '1' : '0', VisibleRpt: data.VisibleRpt ? '1' : '0', // Type-specific fields Unit: data.Unit, Formula: data.Formula, // Reference ranges (only for TEST and CALC) refnum: data.refnum, reftxt: data.reftxt, }; return patch('/api/tests', payload); } export async function deleteTest(id) { // Soft delete - set IsActive to '0' return patch('/api/tests', { TestSiteID: id, IsActive: '0', }); }