Iman_AMS/asm_app/src/utils/hospitalUtils.ts

94 lines
2.7 KiB
TypeScript

/** Hospitals that use Mobile Team Site (Site Name) filtering. */
export function isSiteEnabledHospital(company?: string | null): boolean {
if (!company) return false;
return company.startsWith('Mobile') || company.startsWith('Dental');
}
export type DashboardLocationFilters = {
company?: string;
site_name?: string;
from_date?: string;
to_date?: string;
};
/** Filters for dashboard chart/report API (company + site_name + optional dates). */
export function buildDashboardReportFilters(
hospital?: string,
siteName?: string,
fromDate?: string,
toDate?: string
): DashboardLocationFilters {
const filters: DashboardLocationFilters = {};
if (hospital) filters.company = hospital;
if (siteName && isSiteEnabledHospital(hospital)) filters.site_name = siteName;
if (fromDate) filters.from_date = fromDate;
if (toDate) filters.to_date = toDate;
return filters;
}
/** Work Order list API filters. */
export function buildWorkOrderDashboardFilters(
hospital?: string,
siteName?: string
): Record<string, string> {
const filters: Record<string, string> = {};
if (hospital) filters.company = hospital;
if (siteName && isSiteEnabledHospital(hospital)) filters.site_name = siteName;
return filters;
}
/** Asset Maintenance Log list API filters. */
export function buildMaintenanceLogDashboardFilters(
hospital?: string,
siteName?: string
): Record<string, string> {
const filters: Record<string, string> = {};
if (hospital) filters.custom_hospital_name = hospital;
if (siteName && isSiteEnabledHospital(hospital)) filters.site_name = siteName;
return filters;
}
/** Frappe REST Asset resource filter tuples. */
export function buildAssetResourceFilters(
hospital?: string,
siteName?: string
): [string, string, string][] {
const filters: [string, string, string][] = [];
if (hospital) filters.push(['company', '=', hospital]);
if (siteName && isSiteEnabledHospital(hospital)) {
filters.push(['custom_site', '=', siteName]);
}
return filters;
}
/** LinkField filters for Mobile Team Site (Asset custom_site / Work Order site_name). */
export function buildMobileTeamSiteFilters(
company?: string | null,
userPhccSiteName?: string | null
): Record<string, string> {
const filters: Record<string, string> = {};
if (company && isSiteEnabledHospital(company)) {
filters.mobile_team = company;
}
if (userPhccSiteName) {
filters.name = userPhccSiteName;
}
return filters;
}
/** LinkField filters for Company/Hospital based on user permissions. */
export function buildHospitalLinkFilters(
allowedHospitals?: string[]
): Record<string, unknown> {
const filters: Record<string, unknown> = { domain: 'Healthcare' };
if (allowedHospitals?.length) {
filters.name = ['in', allowedHospitals];
}
return filters;
}