feat: 联调对话功能
This commit is contained in:
+29
-6
@@ -1,4 +1,5 @@
|
||||
import type { ClinicalCase } from './cases'
|
||||
import { FASTAPI_BASE_URL, authHeaders, readError, type ApiEnvelope } from './session'
|
||||
|
||||
export type DiagnosisDraft = {
|
||||
primaryDiagnosis: string
|
||||
@@ -6,6 +7,12 @@ export type DiagnosisDraft = {
|
||||
evidence: string
|
||||
}
|
||||
|
||||
export type DiagnosisPayload = {
|
||||
primary_diagnosis: string
|
||||
differential_diagnoses: string[]
|
||||
diagnosis_basis: string
|
||||
}
|
||||
|
||||
export type DiagnosisContext = {
|
||||
mentorAdvice: string
|
||||
defaultDraft: DiagnosisDraft
|
||||
@@ -26,11 +33,27 @@ export function fetchDiagnosisContext(caseItem?: ClinicalCase | null): Promise<D
|
||||
})
|
||||
}
|
||||
|
||||
export function submitDiagnosis(caseId: string, draft: DiagnosisDraft) {
|
||||
return Promise.resolve({
|
||||
id: `mock-diagnosis-${Date.now()}`,
|
||||
caseId,
|
||||
...draft,
|
||||
submittedAt: new Date().toISOString()
|
||||
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<unknown>
|
||||
if (result.code !== 'OK') {
|
||||
throw new Error(result.message || '诊断提交失败')
|
||||
}
|
||||
|
||||
return result.data || payload
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user