fix(gtos): compatibilidade TransformModal com novo formato da API
continuous-integration/webhook Deploy concluído (VPS4)
continuous-integration/webhook Deploy concluído (VPS4)
A refatoração do GET /api/gtos para retornar { rows, total, pages }
quebrou o TransformModal que esperava um array direto.
Correções:
- routes/gtos.js: restaura suporte a ?patient=NOME (match exato) para
o TransformModal continuar filtrando só as GTOs do paciente exibido,
sem retornar resultados de outros pacientes via ILIKE.
- TransformModal.jsx: lê data.rows (novo formato) com fallback para
array direto (compatibilidade durante transição).
As duas superfícies (TransformModal e GtosPage) agora usam a mesma
API, mesmos dados, sem lógica duplicada ou conflitante.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -65,8 +65,9 @@ export default function TransformModal({ isOpen, onClose, image, onSaved }) {
|
||||
const loadGtos = async (patientName) => {
|
||||
setLoadingGtos(true);
|
||||
try {
|
||||
const { data } = await api.get(`/gtos?patient=${encodeURIComponent(patientName)}`);
|
||||
setGtos(data || []);
|
||||
const { data } = await api.get(`/gtos?patient=${encodeURIComponent(patientName)}&limit=100`);
|
||||
// Suporta tanto o formato novo { rows } quanto o antigo array (retrocompatibilidade)
|
||||
setGtos(Array.isArray(data) ? data : (data.rows || []));
|
||||
} catch {
|
||||
setGtos([]);
|
||||
} finally {
|
||||
|
||||
@@ -12,17 +12,24 @@ const db = require('../database');
|
||||
// ================================================================
|
||||
router.get('/', async (req, res) => {
|
||||
try {
|
||||
const search = (req.query.search || '').trim();
|
||||
const filter = req.query.filter || 'all';
|
||||
const page = Math.max(1, parseInt(req.query.page) || 1);
|
||||
const limit = Math.min(100, parseInt(req.query.limit) || 20);
|
||||
const offset = (page - 1) * limit;
|
||||
const search = (req.query.search || '').trim();
|
||||
const patient = (req.query.patient || '').trim(); // match exato (usado pelo TransformModal)
|
||||
const filter = req.query.filter || 'all';
|
||||
const page = Math.max(1, parseInt(req.query.page) || 1);
|
||||
const limit = Math.min(200, parseInt(req.query.limit) || 20);
|
||||
const offset = (page - 1) * limit;
|
||||
|
||||
let params = [];
|
||||
let where = [];
|
||||
let i = 1;
|
||||
|
||||
if (search) {
|
||||
// Match exato por paciente (TransformModal: mostra só as GTOs deste paciente)
|
||||
if (patient) {
|
||||
where.push(`g.patient_name = $${i}`);
|
||||
params.push(patient);
|
||||
i++;
|
||||
} else if (search) {
|
||||
// Busca ILIKE por nome ou número (GtosPage)
|
||||
where.push(`(g.patient_name ILIKE $${i} OR g.gto_number ILIKE $${i})`);
|
||||
params.push(`%${search}%`);
|
||||
i++;
|
||||
|
||||
Reference in New Issue
Block a user