53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { cache } from 'react';
|
|
|
|
import { getAnalysisResultsForDoctor } from '@kit/doctor/services/doctor-analysis.service';
|
|
import { PageBody, PageHeader } from '@kit/ui/page';
|
|
|
|
import {
|
|
DoctorPageViewAction,
|
|
createDoctorPageViewLog,
|
|
} from '~/lib/services/audit/doctorPageView.service';
|
|
|
|
import AnalysisView from '../../_components/analysis-view';
|
|
import { DoctorGuard } from '../../_components/doctor-guard';
|
|
|
|
async function AnalysisPage({
|
|
params,
|
|
}: {
|
|
params: Promise<{
|
|
id: string;
|
|
}>;
|
|
}) {
|
|
const { id: analysisOrderId } = await params;
|
|
const analysisResultDetails = await loadResult(Number(analysisOrderId));
|
|
|
|
if (!analysisResultDetails) {
|
|
return null;
|
|
}
|
|
|
|
if (analysisResultDetails) {
|
|
await createDoctorPageViewLog({
|
|
action: DoctorPageViewAction.VIEW_ANALYSIS_RESULTS,
|
|
recordKey: analysisOrderId,
|
|
dataOwnerUserId: analysisResultDetails.patient.userId,
|
|
});
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<PageHeader />
|
|
<PageBody>
|
|
<AnalysisView
|
|
patient={analysisResultDetails.patient}
|
|
order={analysisResultDetails.order}
|
|
analyses={analysisResultDetails.analysisResponse}
|
|
feedback={analysisResultDetails.doctorFeedback}
|
|
/>
|
|
</PageBody>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default DoctorGuard(AnalysisPage);
|
|
const loadResult = cache(getAnalysisResultsForDoctor);
|