import type { ClinicalCase } from './cases' import { FASTAPI_BASE_URL, authHeaders, readError, type ApiEnvelope } from './session' export type DiagnosisDraft = { primaryDiagnosis: string differentialDiagnosis: string[] evidence: string } export type DiagnosisPayload = { primary_diagnosis: string differential_diagnoses: string[] diagnosis_basis: string } export type DiagnosisContext = { mentorAdvice: string defaultDraft: DiagnosisDraft } export function fetchDiagnosisContext(caseItem?: ClinicalCase | null): Promise { const isChestPain = caseItem?.title.includes('胸痛') || caseItem?.department === '心血管内科' return Promise.resolve({ mentorAdvice: isChestPain ? '王主任建议:请结合患者既往高血压史及突发性胸痛的性质,进行准确诊断。注意鉴别心梗与主动脉夹层。' : '王主任建议:请基于主诉、阳性症状和危险信号提出主要诊断,并列出需要排除的鉴别诊断。', defaultDraft: { primaryDiagnosis: '', differentialDiagnosis: ['', ''], evidence: '' } }) } export async function submitDiagnosis(sessionId: number, draft: DiagnosisDraft) { const payload: DiagnosisPayload = { primary_diagnosis: draft.primaryDiagnosis.trim(), differential_diagnoses: draft.differentialDiagnosis.map(item => item.trim()).filter(Boolean), diagnosis_basis: draft.evidence.trim() } const response = await fetch(`${FASTAPI_BASE_URL}/sessions/${sessionId}/diagnosis`, { method: 'POST', headers: authHeaders(), body: JSON.stringify(payload) }) if (!response.ok) { throw new Error(await readError(response)) } const result = (await response.json()) as ApiEnvelope if (result.code !== 'OK') { throw new Error(result.message || '诊断提交失败') } return result.data || payload }