Files
OpticZ/src/app/api/patients/[id]/route.ts
2026-05-30 14:33:11 +01:00

116 lines
2.8 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { db } from '@/lib/db'
// GET /api/patients/[id] - Get a specific patient
export async function GET(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params
const patient = await db.patient.findUnique({
where: { id },
include: {
client: true,
ordonnances: {
include: {
fichiers: true
}
}
}
})
if (!patient) {
return NextResponse.json(
{ error: 'Patient not found' },
{ status: 404 }
)
}
return NextResponse.json(patient)
} catch (error) {
console.error('Error fetching patient:', error)
return NextResponse.json(
{ error: 'Failed to fetch patient' },
{ status: 500 }
)
}
}
// PUT /api/patients/[id] - Update a patient
export async function PUT(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params
const body = await request.json()
const {
clientId,
odSphere,
odCylindre,
odAxe,
ogSphere,
ogCylindre,
ogAxe,
addition,
pd,
hauteur,
notes
} = body
const patient = await db.patient.update({
where: { id },
data: {
clientId: clientId || undefined,
odSphere: odSphere !== undefined ? parseFloat(odSphere) : undefined,
odCylindre: odCylindre !== undefined ? parseFloat(odCylindre) : undefined,
odAxe: odAxe !== undefined ? parseInt(odAxe) : undefined,
ogSphere: ogSphere !== undefined ? parseFloat(ogSphere) : undefined,
ogCylindre: ogCylindre !== undefined ? parseFloat(ogCylindre) : undefined,
ogAxe: ogAxe !== undefined ? parseInt(ogAxe) : undefined,
addition: addition !== undefined ? parseFloat(addition) : undefined,
pd: pd !== undefined ? parseFloat(pd) : undefined,
hauteur: hauteur !== undefined ? parseFloat(hauteur) : undefined,
notes: notes !== undefined ? notes : undefined
},
include: {
client: true,
ordonnances: true
}
})
return NextResponse.json(patient)
} catch (error) {
console.error('Error updating patient:', error)
return NextResponse.json(
{ error: 'Failed to update patient' },
{ status: 500 }
)
}
}
// DELETE /api/patients/[id] - Delete a patient
export async function DELETE(
request: NextRequest,
{ params }: { params: Promise<{ id: string }> }
) {
try {
const { id } = await params
await db.patient.delete({
where: { id }
})
return NextResponse.json({ success: true })
} catch (error) {
console.error('Error deleting patient:', error)
return NextResponse.json(
{ error: 'Failed to delete patient' },
{ status: 500 }
)
}
}