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.
 
 
 
 

69 lines
1.9 KiB

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
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"));
const medico_id = dbRegistro.getInt("id");
if (campos.includes("especialidades")) {
const especialidades = [];
const dbMedicoEspecialidades = _db.form("medico_especialidade")
.where(_db.where("medico_id").equal(medico_id))
.all();
for (dbMedicoEspecialidade of dbMedicoEspecialidades) {
const especialidade_id = dbMedicoEspecialidade.getInt("especialidade_id");
const especialidade_uid = _db.form("especialidade")
.where(_db.where("id").equal(especialidade_id))
.first()
.getUID("uid");
especialidades.push(especialidade_uid);
}
medico.set("especialidades", especialidades);
}
if (campos.includes("convenios")) {
const convenios = [];
const dbMedicoConvenios = _db.form("medico_convenio")
.where(_db.where("medico_id").equal(medico_id))
.all();
for (dbMedicoConvenio of dbMedicoConvenios) {
const convenio_id = dbMedicoConvenio.getInt("convenio_id");
const convenio_uid = _db.form("convenio")
.where(_db.where("id").equal(convenio_id))
.first()
.getUID("uid");
convenios.push(convenio_uid);
}
medico.set("convenios", convenios)
}
lista.add(medico);
}
_out.json(lista);