prettier fix

This commit is contained in:
Danel Kungla
2025-09-19 17:22:36 +03:00
parent efa94b3322
commit 0c2cfe6d18
509 changed files with 17988 additions and 9920 deletions

View File

@@ -1,11 +1,19 @@
import { SupabaseClient } from '@supabase/supabase-js';
import { Database } from '@kit/supabase/database';
import { toArray } from '@kit/shared/utils';
import type { UuringuVastus } from '@kit/shared/types/medipost-analysis';
import { toArray } from '@kit/shared/utils';
import { Database } from '@kit/supabase/database';
import type { AnalysisResultsQuery, AnalysisResultDetailsElement, AnalysisResultDetailsMapped, AnalysisResultLevel, AnalysisResultsDetailsElementNested, AnalysisStatus, UserAnalysis } from '../types/analysis-results';
import type { AnalysisOrder } from '../types/analysis-orders';
import type {
AnalysisResultDetailsElement,
AnalysisResultDetailsMapped,
AnalysisResultLevel,
AnalysisResultsDetailsElementNested,
AnalysisResultsQuery,
AnalysisStatus,
UserAnalysis,
} from '../types/analysis-results';
/**
* Class representing an API for interacting with user accounts.
@@ -13,7 +21,7 @@ import type { AnalysisOrder } from '../types/analysis-orders';
* @param {SupabaseClient<Database>} client - The Supabase client instance.
*/
class UserAnalysesApi {
constructor(private readonly client: SupabaseClient<Database>) { }
constructor(private readonly client: SupabaseClient<Database>) {}
async getAnalysisOrder({
medusaOrderId,
@@ -25,7 +33,7 @@ class UserAnalysesApi {
const query = this.client
.schema('medreport')
.from('analysis_orders')
.select('*')
.select('*');
if (medusaOrderId) {
query.eq('medusa_order_id', medusaOrderId);
} else if (analysisOrderId) {
@@ -36,7 +44,9 @@ class UserAnalysesApi {
const { data: order, error } = await query.single();
if (error) {
throw new Error(`Failed to get order by medusaOrderId=${medusaOrderId} or analysisOrderId=${analysisOrderId}, message=${error.message}, data=${JSON.stringify(order)}`);
throw new Error(
`Failed to get order by medusaOrderId=${medusaOrderId} or analysisOrderId=${analysisOrderId}, message=${error.message}, data=${JSON.stringify(order)}`,
);
}
return order as AnalysisOrder;
}
@@ -47,28 +57,43 @@ class UserAnalysesApi {
const analysisOrder = await this.getAnalysisOrder({ analysisOrderId });
const orderedAnalysisElementIds = analysisOrder.analysis_element_ids ?? [];
if (orderedAnalysisElementIds.length === 0) {
console.error('No ordered analysis element ids found for analysis order id=', analysisOrderId);
console.error(
'No ordered analysis element ids found for analysis order id=',
analysisOrderId,
);
return null;
}
const orderedAnalysisElements = await this.getOrderedAnalysisElements({ analysisOrderId, orderedAnalysisElementIds });
const orderedAnalysisElements = await this.getOrderedAnalysisElements({
analysisOrderId,
orderedAnalysisElementIds,
});
const orderedAnalysisElementOriginalIds = orderedAnalysisElements.map(({ analysis_id_original }) => analysis_id_original);
const orderedAnalysisElementOriginalIds = orderedAnalysisElements.map(
({ analysis_id_original }) => analysis_id_original,
);
if (orderedAnalysisElementOriginalIds.length === 0) {
console.error('No ordered analysis element original ids found for analysis order id=', analysisOrderId);
console.error(
'No ordered analysis element original ids found for analysis order id=',
analysisOrderId,
);
return null;
}
const responseWithElements = await this.getAnalysisResponseWithElements({ analysisOrderId });
const responseWithElements = await this.getAnalysisResponseWithElements({
analysisOrderId,
});
if (!responseWithElements) {
return null;
}
const mappedOrderedAnalysisElements = await this.getMappedOrderedAnalysisElements({
analysisResponseElements: responseWithElements.elements,
orderedAnalysisElements,
});
const mappedOrderedAnalysisElements =
await this.getMappedOrderedAnalysisElements({
analysisResponseElements: responseWithElements.elements,
orderedAnalysisElements,
});
const feedback = responseWithElements.summary?.doctor_analysis_feedback?.[0];
const feedback =
responseWithElements.summary?.doctor_analysis_feedback?.[0];
return {
id: analysisOrderId,
order: {
@@ -79,7 +104,8 @@ class UserAnalysesApi {
orderedAnalysisElements: mappedOrderedAnalysisElements,
summary:
feedback?.status === 'COMPLETED'
? (responseWithElements.summary?.doctor_analysis_feedback?.[0] ?? null)
? (responseWithElements.summary?.doctor_analysis_feedback?.[0] ??
null)
: null,
};
}
@@ -117,13 +143,19 @@ class UserAnalysesApi {
analysisOrderId: number;
orderedAnalysisElementIds: number[];
}) {
const { data: orderedAnalysisElements, error: orderedAnalysisElementsError } = await this.client
const {
data: orderedAnalysisElements,
error: orderedAnalysisElementsError,
} = await this.client
.schema('medreport')
.from('analysis_elements')
.select('analysis_id_original,analysis_name_lab')
.in('id', orderedAnalysisElementIds);
if (orderedAnalysisElementsError) {
console.error(`Failed to get ordered analysis elements for analysis order id=${analysisOrderId}`, orderedAnalysisElementsError);
console.error(
`Failed to get ordered analysis elements for analysis order id=${analysisOrderId}`,
orderedAnalysisElementsError,
);
throw orderedAnalysisElementsError;
}
return orderedAnalysisElements;
@@ -134,21 +166,34 @@ class UserAnalysesApi {
orderedAnalysisElements,
}: {
analysisResponseElements: AnalysisResultsQuery['elements'];
orderedAnalysisElements: { analysis_id_original: string; analysis_name_lab: string }[];
orderedAnalysisElements: {
analysis_id_original: string;
analysis_name_lab: string;
}[];
}): Promise<AnalysisResultDetailsElement[]> {
const mappedOrderedAnalysisElements = orderedAnalysisElements.map(({ analysis_id_original, analysis_name_lab }) => {
return this.getOrderedAnalysisElement({
analysisIdOriginal: analysis_id_original,
analysisNameLab: analysis_name_lab,
analysisResponseElements,
});
}).sort((a, b) => a.analysisName.localeCompare(b.analysisName));
const mappedOrderedAnalysisElements = orderedAnalysisElements
.map(({ analysis_id_original, analysis_name_lab }) => {
return this.getOrderedAnalysisElement({
analysisIdOriginal: analysis_id_original,
analysisNameLab: analysis_name_lab,
analysisResponseElements,
});
})
.sort((a, b) => a.analysisName.localeCompare(b.analysisName));
const nestedAnalysisElementIds = mappedOrderedAnalysisElements
.map(({ results }) => results?.nestedElements.map(({ analysisElementOriginalId }) => analysisElementOriginalId))
.flat().filter(Boolean);
.map(({ results }) =>
results?.nestedElements.map(
({ analysisElementOriginalId }) => analysisElementOriginalId,
),
)
.flat()
.filter(Boolean);
if (nestedAnalysisElementIds.length > 0) {
const { data: nestedAnalysisElements, error: nestedAnalysisElementsError } = await this.client
const {
data: nestedAnalysisElements,
error: nestedAnalysisElementsError,
} = await this.client
.schema('medreport')
.from('analysis_elements')
.select('*')
@@ -161,18 +206,28 @@ class UserAnalysesApi {
}
for (const nestedElement of results.nestedElements) {
const { analysisElementOriginalId } = nestedElement;
const nestedAnalysisElement = nestedAnalysisElements.find(({ analysis_id_original }) => analysis_id_original === analysisElementOriginalId);
const nestedAnalysisElement = nestedAnalysisElements.find(
({ analysis_id_original }) =>
analysis_id_original === analysisElementOriginalId,
);
if (!nestedAnalysisElement) {
continue;
}
nestedElement.analysisElementOriginalId = analysisElementOriginalId;
nestedElement.analysisName = nestedAnalysisElement.analysis_name_lab as string | undefined;
nestedElement.analysisName =
nestedAnalysisElement.analysis_name_lab as string | undefined;
}
results.nestedElements = results.nestedElements.sort((a, b) => a.analysisName?.localeCompare(b.analysisName ?? '') ?? 0);
results.nestedElements = results.nestedElements.sort(
(a, b) => a.analysisName?.localeCompare(b.analysisName ?? '') ?? 0,
);
}
} else {
console.error('Failed to get nested analysis elements by ids=', nestedAnalysisElementIds, nestedAnalysisElementsError);
console.error(
'Failed to get nested analysis elements by ids=',
nestedAnalysisElementIds,
nestedAnalysisElementsError,
);
}
}
@@ -188,7 +243,9 @@ class UserAnalysesApi {
analysisNameLab: string;
analysisResponseElements: AnalysisResultsQuery['elements'];
}): AnalysisResultDetailsElement {
const elementResponse = analysisResponseElements.find((element) => element.analysis_element_original_id === analysisIdOriginal);
const elementResponse = analysisResponseElements.find(
(element) => element.analysis_element_original_id === analysisIdOriginal,
);
if (!elementResponse) {
return {
analysisIdOriginal,
@@ -196,34 +253,42 @@ class UserAnalysesApi {
analysisName: analysisNameLab,
};
}
const labComment = elementResponse.original_response_element?.UuringuKommentaar;
const labComment =
elementResponse.original_response_element?.UuringuKommentaar;
return {
analysisIdOriginal,
isWaitingForResults: false,
analysisName: analysisNameLab,
results: {
nestedElements: ((): AnalysisResultsDetailsElementNested[] => {
const nestedElements = toArray(elementResponse.original_response_element?.UuringuElement)
return nestedElements.map<AnalysisResultsDetailsElementNested>((element) => {
const mappedResponse = this.mapUuringVastus({
uuringVastus: element.UuringuVastus as UuringuVastus | undefined,
});
return {
unit: element.Mootyhik ?? null,
normLower: mappedResponse.normLower,
normUpper: mappedResponse.normUpper,
normStatus: mappedResponse.normStatus,
responseTime: mappedResponse.responseTime,
responseValue: mappedResponse.responseValue,
responseValueIsNegative: mappedResponse.responseValueIsNegative,
responseValueIsWithinNorm: mappedResponse.responseValueIsWithinNorm,
normLowerIncluded: mappedResponse.normLowerIncluded,
normUpperIncluded: mappedResponse.normUpperIncluded,
analysisElementOriginalId: element.UuringId,
status: Number(elementResponse.status) as AnalysisStatus,
analysisName: undefined,
};
});
const nestedElements = toArray(
elementResponse.original_response_element?.UuringuElement,
);
return nestedElements.map<AnalysisResultsDetailsElementNested>(
(element) => {
const mappedResponse = this.mapUuringVastus({
uuringVastus: element.UuringuVastus as
| UuringuVastus
| undefined,
});
return {
unit: element.Mootyhik ?? null,
normLower: mappedResponse.normLower,
normUpper: mappedResponse.normUpper,
normStatus: mappedResponse.normStatus,
responseTime: mappedResponse.responseTime,
responseValue: mappedResponse.responseValue,
responseValueIsNegative: mappedResponse.responseValueIsNegative,
responseValueIsWithinNorm:
mappedResponse.responseValueIsWithinNorm,
normLowerIncluded: mappedResponse.normLowerIncluded,
normUpperIncluded: mappedResponse.normUpperIncluded,
analysisElementOriginalId: element.UuringId,
status: Number(elementResponse.status) as AnalysisStatus,
analysisName: undefined,
};
},
);
})(),
labComment,
unit: elementResponse.unit,
@@ -232,13 +297,19 @@ class UserAnalysesApi {
normStatus: elementResponse.norm_status,
responseTime: elementResponse.response_time,
responseValue: elementResponse.response_value,
responseValueIsNegative: elementResponse.response_value_is_negative === null ? null : elementResponse.response_value_is_negative === true,
responseValueIsWithinNorm: elementResponse.response_value_is_within_norm === null ? null : elementResponse.response_value_is_within_norm === true,
responseValueIsNegative:
elementResponse.response_value_is_negative === null
? null
: elementResponse.response_value_is_negative === true,
responseValueIsWithinNorm:
elementResponse.response_value_is_within_norm === null
? null
: elementResponse.response_value_is_within_norm === true,
normLowerIncluded: elementResponse.norm_lower_included,
normUpperIncluded: elementResponse.norm_upper_included,
status: Number(elementResponse.status) as AnalysisStatus,
analysisElementOriginalId: elementResponse.analysis_element_original_id,
}
},
};
}
@@ -258,11 +329,19 @@ class UserAnalysesApi {
return {
normLower: uuringVastus?.NormAlum?.['#text'] ?? null,
normUpper: uuringVastus?.NormYlem?.['#text'] ?? null,
normStatus: (uuringVastus?.NormiStaatus ?? null) as AnalysisResultLevel | null,
normStatus: (uuringVastus?.NormiStaatus ??
null) as AnalysisResultLevel | null,
responseTime: uuringVastus?.VastuseAeg ?? null,
responseValue: responseValueIsNegative || !responseValueIsNumeric ? null : (responseValueNumber ?? null),
responseValueIsNegative: responseValueIsNumeric ? null : responseValueIsNegative,
responseValueIsWithinNorm: responseValueIsNumeric ? null : responseValueIsWithinNorm,
responseValue:
responseValueIsNegative || !responseValueIsNumeric
? null
: (responseValueNumber ?? null),
responseValueIsNegative: responseValueIsNumeric
? null
: responseValueIsNegative,
responseValueIsWithinNorm: responseValueIsNumeric
? null
: responseValueIsWithinNorm,
normLowerIncluded:
uuringVastus?.NormAlum?.['@_kaasaarvatud'].toLowerCase() === 'jah',
normUpperIncluded: