feat(MED-131): show package analysis elements in comparison modal

This commit is contained in:
2025-08-04 11:51:38 +03:00
parent d7d089c11d
commit 8c4df731aa
7 changed files with 224 additions and 106 deletions

View File

@@ -0,0 +1,60 @@
import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { Json, Tables } from '@kit/supabase/database';
import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';
import type { IMaterialGroup, IUuringElement } from './medipost.types';
export type AnalysisElement = Tables<{ schema: 'medreport' }, 'analysis_elements'> & {
analysis_groups: Tables<{ schema: 'medreport' }, 'analysis_groups'>;
};
export async function getAnalysisElements({
originalIds,
}: {
originalIds: string[]
}) {
const { data: analysisElements } = await getSupabaseServerClient()
.schema('medreport')
.from('analysis_elements')
.select(`*, analysis_groups(*)`)
.in('analysis_id_original', [...new Set(originalIds)])
.order('order', { ascending: true });
return analysisElements ?? [];
}
export async function createAnalysisElement({
analysisElement,
analysisGroupId,
materialGroups,
}: {
analysisElement: IUuringElement;
analysisGroupId: number;
materialGroups: IMaterialGroup[];
}) {
const { data: insertedAnalysisElement, error } = await getSupabaseServerAdminClient()
.schema('medreport')
.from('analysis_elements')
.upsert(
{
analysis_id_oid: analysisElement.UuringIdOID,
analysis_id_original: analysisElement.UuringId,
tehik_short_loinc: analysisElement.TLyhend,
tehik_loinc_name: analysisElement.KNimetus,
analysis_name_lab: analysisElement.UuringNimi,
order: analysisElement.Jarjekord,
parent_analysis_group_id: analysisGroupId,
material_groups: materialGroups as unknown as Json[],
},
{ onConflict: 'analysis_id_original', ignoreDuplicates: false },
)
.select('id');
const id = insertedAnalysisElement?.[0]?.id;
if (error || !id) {
throw new Error(
`Failed to insert analysis element (id: ${analysisElement.UuringId}), error: ${error?.message}`,
);
}
return id;
}