assignDoctor method
- required String admissionId,
- required String doctorId,
- required PatientPreviewResponse patient,
Reasigna el médico responsable de un ingreso vía PATCH /admissions/assign-doctor/{id}.
Si la respuesta incluye el paciente, se parsea directamente;
en caso contrario se reconstruye con patient.
Implementation
Future<AdmissionResponse> assignDoctor({
required String admissionId,
required String doctorId,
required PatientPreviewResponse patient,
}) async {
try {
final response = await _apiClient.patch(
"/admissions/assign-doctor/$admissionId?doctorId=$doctorId",
);
final payload = response.data;
Map<String, dynamic> jsonData;
if (payload is Map<String, dynamic> && payload.containsKey('data')) {
jsonData = payload['data'] as Map<String, dynamic>;
} else {
jsonData = payload as Map<String, dynamic>;
}
// Si el endpoint devuelve el paciente o no, intentamos recuperarlo igual que en clinicalUpdate
if (jsonData.containsKey('patient') && jsonData['patient'] != null) {
return AdmissionResponse.fromJson(jsonData);
} else {
final update = AdmissionUpdateResponse.fromJson(jsonData);
return update.toFullResponse(patient);
}
} catch (e) {
rethrow;
}
}