You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 lines
1.3 KiB

const nome = _req.getString("nome");
const crm = _req.getString("crm");
const campos = _req.getString("campos").split(",");
const dbMedicos = _db.query(`
SELECT id, uid, nome, c_r_m
FROM medico
WHERE nome LIKE ? AND c_r_m LIKE ?
`,
`%${nome}%`,
`%${crm}%`
);
const lista = _val.list();
for (const dbMedico of dbMedicos) {
const medico = _val.map()
.set("nome", dbMedico.getString("nome"))
.set("crm", dbMedico.getString("c_r_m"))
.set("uid", dbMedico.getUID("uid"));
const medico_id = dbMedico.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 dbMedicoCampoValores = _db.form("medico_" + campo)
.where(_db.where("medico_id").equal(medico_id))
.link(campo)
.get(campo + ".uid", campo + "_uid")
.all();
const campo_valores = [];
for (dbMedicoCampoValor of dbMedicoCampoValores) {
campo_valores.push(dbMedicoCampoValor.getUID(campo + "_uid"));
}
medico.set(campo + "s", campo_valores);
}