searchBySurname method

Future<PaginatedAdmissionResult> searchBySurname({
  1. required String surname,
  2. int page = 0,
})

Busca ingresos por apellido del paciente con paginación.

Llama a GET /admissions/search y devuelve un PaginatedAdmissionResult que incluye metadatos de paginación junto con la lista de resultados.

Implementation

Future<PaginatedAdmissionResult> searchBySurname({
  required String surname,
  int page = 0,
}) async {
  try {
    final response = await _apiClient.get(
      "/admissions/search",
      queryParams: {"surname": surname, "page": page},
    );
    final payload = response.data;

    if (payload is! Map) {
      throw Exception("Estructura de respuesta no soportada: $payload");
    }

    Iterable rawContent;
    if (payload.containsKey('data')) {
      rawContent = payload['data'];
    } else if (payload.containsKey('content')) {
      rawContent = payload['content'];
    } else {
      throw Exception(
        "Estructura de respuesta no soportada (sin 'data' o 'content'): $payload",
      );
    }

    final parsedList = rawContent
        .map((json) => AdmissionResponse.fromJson(json))
        .toList();

    return PaginatedAdmissionResult.fromJson(
      Map<String, dynamic>.from(payload),
      parsedList,
    );
  } catch (e) {
    rethrow;
  }
}