clqms-fe1/src/lib/api/tests.js

71 lines
2.1 KiB
JavaScript
Raw Normal View History

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<Object>} 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',
});
}