diff --git a/dbs/clinica.mv.db b/dbs/clinica.mv.db index 4f85ca0..6535279 100644 Binary files a/dbs/clinica.mv.db and b/dbs/clinica.mv.db differ diff --git a/server/services/medicos/get.js b/server/services/medicos/get.js index 4b8eced..6fb4080 100644 --- a/server/services/medicos/get.js +++ b/server/services/medicos/get.js @@ -1,8 +1,9 @@ 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 + SELECT nome, c_r_m, id FROM medico WHERE nome LIKE ? AND c_r_m LIKE ? `, @@ -10,14 +11,59 @@ const dbRegistros = _db.query(` `%${crm}%` ); + const lista = _val.list(); for (const dbRegistro of dbRegistros) { - lista.add( - _val.map() + const medico = _val.map() .set("nome", dbRegistro.getString("nome")) - .set("CRM", dbRegistro.getString("c_r_m")) - ); + .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);