clinicalUpdate method

Future<AdmissionResponse> clinicalUpdate({
  1. required String admissionId,
  2. required String principalDiagnosis,
  3. required String medicalHistory,
  4. required PatientPreviewResponse patient,
  5. String? allergies,
  6. String? chronicTreatment,
  7. int? basalBarthel,
})

Actualiza los datos clínicos de un ingreso vía PUT /admissions/clinical-update/{id}.

Recibe patient para reconstruir la respuesta completa cuando el backend devuelve solo la parte de ingreso (sin paciente anidado).

Implementation

Future<AdmissionResponse> clinicalUpdate({
  required String admissionId,
  required String principalDiagnosis,
  required String medicalHistory,
  required PatientPreviewResponse patient,
  String? allergies,
  String? chronicTreatment,
  int? basalBarthel,
}) async {
  try {
    final response = await _apiClient.put(
      "/admissions/clinical-update/$admissionId",
      data: {
        "principalDiagnosis": principalDiagnosis,
        "medicalHistory": medicalHistory,
        "allergies": allergies,
        "chronicTreatment": chronicTreatment,
        "basalBarthel": basalBarthel,
      },
    );

    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>;
    }

    final update = AdmissionUpdateResponse.fromJson(jsonData);
    return update.toFullResponse(patient);
  } catch (e) {
    rethrow;
  }
}