Browse Source

inserir especialidades de um medico ao inserir um medico

master
Henrique-Sousa 4 weeks ago
parent
commit
482eb56bcb
4 changed files with 112 additions and 3 deletions
  1. BIN
      dbs/clinica.mv.db
  2. +72
    -0
      dbs/clinica.trace.db
  3. +9
    -2
      server/services/medicos/post.in.json
  4. +31
    -1
      server/services/medicos/post.js

BIN
dbs/clinica.mv.db View File


+ 72
- 0
dbs/clinica.trace.db View File

@ -848,3 +848,75 @@ show tables from paciente [90001-240]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1239)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1194)
at java.base/java.lang.Thread.run(Thread.java:1474)
2026-03-22 16:53:23.306218-03:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "select id from medico where medico [*]name = 'Jonas Salk';\000d\000a"; SQL statement:
select id from medico where medico name = 'Jonas Salk';
[42000-240]
2026-03-22 16:53:36.277419-03:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "name" not found; SQL statement:
select id from medico where name = 'Jonas Salk';
[42122-240]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:514)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:244)
at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:226)
at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213)
at org.h2.expression.condition.Comparison.optimize(Comparison.java:148)
at org.h2.expression.Expression.optimizeCondition(Expression.java:149)
at org.h2.command.query.Select.prepareExpressions(Select.java:1215)
at org.h2.command.query.Query.prepare(Query.java:235)
at org.h2.command.Parser.prepareCommand(Parser.java:492)
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:647)
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:563)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1160)
at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:94)
at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111)
at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java)
at org.netuno.tritao.dev.Query._main(Query.java:122)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at org.netuno.proteu.Run.execute(Run.java:119)
at org.netuno.proteu.DynamicURL.build(DynamicURL.java:169)
at org.netuno.proteu.Enterprise.processRequest(Enterprise.java:418)
at org.netuno.proteu.Enterprise.service(Enterprise.java:486)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.eclipse.jetty.ee11.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1384)
at org.eclipse.jetty.ee11.servlet.ServletHolder.handle(ServletHolder.java:750)
at org.eclipse.jetty.ee11.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1668)
at org.eclipse.jetty.ee11.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:199)
at org.eclipse.jetty.ee11.servlet.FilterHolder.doFilter(FilterHolder.java:205)
at org.eclipse.jetty.ee11.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1640)
at org.eclipse.jetty.ee11.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1602)
at org.eclipse.jetty.ee11.servlet.ServletChannel.dispatch(ServletChannel.java:868)
at org.eclipse.jetty.ee11.servlet.ServletChannel.handle(ServletChannel.java:449)
at org.eclipse.jetty.ee11.servlet.ServletHandler.handle(ServletHandler.java:470)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:546)
at org.eclipse.jetty.ee11.servlet.SessionHandler.handle(SessionHandler.java:763)
at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1224)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:178)
at org.eclipse.jetty.server.Server.handle(Server.java:197)
at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:787)
at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:410)
at org.eclipse.jetty.server.internal.HttpConnection$FillableCallback.succeeded(HttpConnection.java:1805)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:54)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:492)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.epcRunTask(AdaptiveExecutionStrategy.java:428)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:401)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:255)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:204)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:317)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:1009)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1239)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1194)
at java.base/java.lang.Thread.run(Thread.java:1474)
2026-03-22 16:59:48.658798-03:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLDataException: Data conversion error converting "Cardiologia"; SQL statement:
SELECT
especialidade.*
FROM especialidade
WHERE 1 = 1
AND especialidade.uid = 'Cardiologia'
LIMIT 1 [22018-240]

+ 9
- 2
server/services/medicos/post.in.json View File

@ -11,13 +11,20 @@
},
"crm": {
"type": "string"
},
"especialidades": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"nome", "crm"
"nome", "crm", "especialidades"
],
"example": {
"nome": "Jonas Salk",
"crm": "203948"
"crm": "203948",
"especialidades": ["9fe6bca9-7da2-4f23-a26a-c6c20872aa6c", "d4688e22-ee5f-45d9-8526-36d53de50986"]
}
}

+ 31
- 1
server/services/medicos/post.js View File

@ -1,5 +1,18 @@
const nome = _req.getString("nome");
const crm = _req.getString("crm");
const especialidades = _req.getList("especialidades");
for (const especialidade_uid of especialidades) {
const dbEspecialidade = _db.form('especialidade')
.where(_db.where('uid').equal(especialidade_uid))
.first();
if (!dbEspecialidade) {
_header.status(404);
_out.json({result: false, error: true, reason: 'especialidade-não-encontrada'});
_exec.stop();
}
}
const insertedData = _db.insertIfNotExists(
'medico',
@ -8,4 +21,21 @@ const insertedData = _db.insertIfNotExists(
.set("c_r_m", crm)
);
_out.json({insertedData})
const medico_id = _db.form('medico')
.where(_db.where('nome').equal(nome))
.first()
.get('id');
for (const especialidade_uid of especialidades) {
const especialidade_id = _db.form('especialidade')
.where(_db.where('uid').equal(especialidade_uid))
.first()
.get('id');
_db.insertIfNotExists(
'medico_especialidade',
{ medico_id, especialidade_id }
);
}
_out.json({insertedData});

Loading…
Cancel
Save