feat(MED-168): clean up types, show nested elements

This commit is contained in:
2025-09-19 15:28:56 +03:00
parent e7b484e1d4
commit 091144d942
9 changed files with 188 additions and 289 deletions

View File

@@ -2,9 +2,9 @@ import { SupabaseClient } from '@supabase/supabase-js';
import { Database } from '@kit/supabase/database';
import { toArray } from '@kit/shared/utils';
import type { UuringElement, UuringuVastus } from '@kit/shared/types/medipost-analysis';
import type { UuringuVastus } from '@kit/shared/types/medipost-analysis';
import type { AnalysisResultDetails, AnalysisResultDetailsMapped, UserAnalysis } from '../types/analysis-results';
import type { AnalysisResultDetails, AnalysisResultDetailsMapped, AnalysisResultsDetailsElementNested, UserAnalysis } from '../types/analysis-results';
import type { AnalysisOrder } from '../types/analysis-orders';
/**
@@ -166,28 +166,14 @@ class UserAnalysesApi {
if (!nestedAnalysisElement) {
continue;
}
results.nestedElements.push({
...nestedAnalysisElement,
analysisElementOriginalId,
analysisName: nestedAnalysisElement.analysis_name_lab,
});
}
}
mappedOrderedAnalysisElements.forEach(({ results }) => {
results?.nestedElements.forEach(({ analysisElementOriginalId }) => {
const nestedAnalysisElement = nestedAnalysisElements.find(({ id }) => id === analysisElementOriginalId);
if (nestedAnalysisElement) {
results?.nestedElements.push({
...nestedAnalysisElement,
analysisElementOriginalId,
analysisName: nestedAnalysisElement.analysis_name_lab,
});
} else {
console.error('Nested analysis element not found for analysis element original id=', analysisElementOriginalId);
}
});
});
nestedElement.analysisElementOriginalId = analysisElementOriginalId;
nestedElement.analysisName = nestedAnalysisElement.analysis_name_lab as string | undefined;
}
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);
}
}
@@ -218,16 +204,12 @@ class UserAnalysesApi {
analysisName: analysisNameLab,
results: {
nestedElements: (() => {
const nestedElements = elementResponse.original_response_element?.UuringuElement as UuringElement[] | undefined;
if (!nestedElements) {
return [];
}
return toArray(nestedElements).map((element) => {
const nestedElements = toArray(elementResponse.original_response_element?.UuringuElement)
return nestedElements.map<AnalysisResultsDetailsElementNested>((element) => {
const mappedResponse = this.mapUuringVastus({
uuringVastus: element.UuringuVastus as UuringuVastus | undefined,
});
return {
status: element.UuringOlek,
unit: element.Mootyhik ?? null,
normLower: mappedResponse.normLower,
normUpper: mappedResponse.normUpper,
@@ -239,6 +221,7 @@ class UserAnalysesApi {
normLowerIncluded: mappedResponse.normLowerIncluded,
normUpperIncluded: mappedResponse.normUpperIncluded,
analysisElementOriginalId: element.UuringId,
status: elementResponse.status,
analysisName: undefined,
};
});
@@ -251,12 +234,13 @@ class UserAnalysesApi {
normStatus: elementResponse.norm_status,
responseTime: elementResponse.response_time,
responseValue: elementResponse.response_value,
responseValueIsNegative: elementResponse.response_value_is_negative === true,
responseValueIsWithinNorm: 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: elementResponse.status,
analysisElementOriginalId: elementResponse.analysis_element_original_id,
elementResponse,
}
};
}