const nome = _req.getString("nome") ?? ""; const crm = _req.getString("crm") ?? ""; const campos = _req.getString("campos").split(","); const dbRegistros = _db.query(` SELECT nome, c_r_m, id, uid FROM medico WHERE nome LIKE ? AND c_r_m LIKE ? `, `%${nome}%`, `%${crm}%` ); const lista = _val.list(); for (const dbRegistro of dbRegistros) { const medico = _val.map() .set("nome", dbRegistro.getString("nome")) .set("crm", dbRegistro.getString("c_r_m")) .set("uid", dbRegistro.getUID("uid")); const medico_id = dbRegistro.getInt("id"); if (campos.includes("especialidades")) { addCampos(medico, medico_id, "especialidade"); } if (campos.includes("convenios")) { addCampos(medico, medico_id, "convenio"); } lista.add(medico); } _out.json(lista); function addCampos(medico, medico_id, campo) { const campo_valores = []; const dbMedicoCampoValores = _db.form("medico_" + campo) .where(_db.where("medico_id").equal(medico_id)) .all(); for (dbMedicoCampoValor of dbMedicoCampoValores) { const campo_id = dbMedicoCampoValor.getInt(campo + "_id"); const campo_uid = _db.form(campo) .where(_db.where("id").equal(campo_id)) .first() .getUID("uid"); campo_valores.push(campo_uid); } medico.set(campo + "s", campo_valores); }