--- /dev/null
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.ufcspa.simdecs.mediador;
+
+import java.util.Iterator;
+import javax.persistence.EntityManager;
+import org.ufcspa.simdecs.entities.Log;
+import org.ufcspa.simdecs.entities.Nodo;
+import org.ufcspa.simdecs.entities.TipoEventoLog;
+import org.ufcspa.simdecs.util.DbUtil;
+
+/**
+ *
+ * @author maroni
+ */
+public class LogExecucao {
+
+ private String confiancaAtual;
+ private boolean abriuFichaPaciente;
+ private int perguntasRealizadas;
+ private int perguntasDisponiveis;
+ private int perguntasProfessor;
+ private int perguntasBogusRealizadas;
+ private int examesFisicosRealizados;
+ private int examesFisicosProfessor;
+ private int examesFisicosDisponiveis;
+ private int examesComplementaresRealizados;
+ private int examesComplementaresProfessor;
+ private int examesComplementaresDisponiveis;
+ private int desmarcacoesDiagnostico;
+ private int desmarcacoesConduta;
+
+ private EntityManager em;
+
+
+ public final void refresh(long idSessao, long idCaso, long idRede) {
+ // Inicializa Valores
+ perguntasRealizadas = perguntasDisponiveis = perguntasProfessor = perguntasBogusRealizadas =
+ examesFisicosRealizados = examesFisicosProfessor = examesFisicosDisponiveis =
+ examesComplementaresRealizados = examesComplementaresProfessor = examesComplementaresDisponiveis =
+ desmarcacoesDiagnostico = desmarcacoesConduta = 0;
+
+ confiancaAtual = "";
+ abriuFichaPaciente = false;
+
+
+ em = DbUtil.getInstance().getEntityManager();
+
+ Iterator<Log> itLog = em.createQuery("From log where log.sessao.id=:pIDSessao order by log.data")
+ .setParameter("pIDSessao", idSessao)
+ .getResultList()
+ .iterator();
+
+ while(itLog.hasNext()) {
+ Log log = itLog.next();
+
+ // Registra a abertura da ficha do paciente
+ if (log.getTipo().getId().equals(TipoEventoLog.VISUALIZA_HISTORICO))
+ abriuFichaPaciente = true;
+
+ // Registra a confianca do aluno
+ if (log.getTipo().getId().equals(TipoEventoLog.CONFIANCA_INICIAL))
+ confiancaAtual = log.getConfianca();
+
+ if (log.getTipo().getId().equals(TipoEventoLog.CONFIANCA_ETAPA))
+ confiancaAtual = log.getConfianca();
+
+ // Soma os sinais e sintomas perguntados pelo aluno
+ if (log.getTipo().getId().equals(TipoEventoLog.PERGUNTA_SINAL_SINTOMA) ||
+ log.getTipo().getId().equals(TipoEventoLog.PERGUNTA_HISTORICO) ) {
+
+ if (log.getNodo().getBogus())
+ perguntasBogusRealizadas+=1;
+ else
+ perguntasRealizadas+=1;
+ }
+
+ // Soma os exames físicos perguntados pelo aluno
+ if (log.getTipo().getId().equals(TipoEventoLog.SOLICITA_EXAME_FISICO))
+ examesFisicosRealizados+=1;
+
+ // Soma os exames complementares perguntados pelo aluno
+ if (log.getTipo().getId().equals(TipoEventoLog.SOLICITA_EXAME_COMPLEMENTAR))
+ examesComplementaresRealizados+=1;
+
+ // Soma as desmarcações de diagnósticos
+ if (log.getTipo().getId().equals(TipoEventoLog.SELECIONA_DIAGNOSTICO) &&
+ log.isDesmarcado())
+ desmarcacoesDiagnostico+=1;
+
+ // Soma as desmarcações de condutas
+ if (log.getTipo().getId().equals(TipoEventoLog.SELECIONA_CONDUTA) &&
+ log.isDesmarcado())
+ desmarcacoesConduta+=1;
+
+ }
+
+
+ Iterator<Nodo> itNodoProf = em.createQuery("Select nodo From NodoPaciente where paciente.id in (select id from Paciente where caso.id=:pIDCaso")
+ .setParameter("pIDCaso", idCaso)
+ .getResultList()
+ .iterator();
+ while(itNodoProf.hasNext()) {
+ Nodo nodo = itNodoProf.next();
+ if (nodo.getTipo().equals(Nodo.SINAL_SINTOMA))
+ perguntasProfessor+=1;
+ if (nodo.getTipo().equals(Nodo.HISTORICO))
+ perguntasProfessor+=1;
+ if (nodo.getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
+ examesComplementaresProfessor+=1;
+ if (nodo.getTipo().equals(Nodo.EXAME_FISICO))
+ examesFisicosProfessor+=1;
+ }
+
+ Iterator<Nodo> itNodoDisp = em.createQuery("From Nodo where rede.id=:pIDRede")
+ .setParameter("pIDRede", idRede)
+ .getResultList()
+ .iterator();
+ while(itNodoDisp.hasNext()) {
+ Nodo nodo = itNodoDisp.next();
+ if (nodo.getTipo().equals(Nodo.SINAL_SINTOMA))
+ perguntasDisponiveis+=1;
+ if (nodo.getTipo().equals(Nodo.HISTORICO))
+ perguntasDisponiveis+=1;
+ if (nodo.getTipo().equals(Nodo.EXAME_COMPLEMENTAR))
+ examesComplementaresDisponiveis+=1;
+ if (nodo.getTipo().equals(Nodo.EXAME_FISICO))
+ examesFisicosDisponiveis+=1;
+ }
+ }
+
+ public LogExecucao(long idSessao, long idCaso, long idRede) {
+ refresh(idSessao, idCaso, idRede);
+ }
+
+ public boolean isAbriuFichaPaciente() {
+ return abriuFichaPaciente;
+ }
+
+ public String getConfiancaAtual() {
+ return confiancaAtual;
+ }
+
+ public int getDesmarcacoesConduta() {
+ return desmarcacoesConduta;
+ }
+
+ public int getDesmarcacoesDiagnostico() {
+ return desmarcacoesDiagnostico;
+ }
+
+ public EntityManager getEm() {
+ return em;
+ }
+
+ public int getExamesComplementaresDisponiveis() {
+ return examesComplementaresDisponiveis;
+ }
+
+ public int getExamesComplementaresProfessor() {
+ return examesComplementaresProfessor;
+ }
+
+ public int getExamesComplementaresRealizados() {
+ return examesComplementaresRealizados;
+ }
+
+ public int getExamesFisicosDisponiveis() {
+ return examesFisicosDisponiveis;
+ }
+
+ public int getExamesFisicosProfessor() {
+ return examesFisicosProfessor;
+ }
+
+ public int getExamesFisicosRealizados() {
+ return examesFisicosRealizados;
+ }
+
+ public int getPerguntasBogusRealizadas() {
+ return perguntasBogusRealizadas;
+ }
+
+ public int getPerguntasDisponiveis() {
+ return perguntasDisponiveis;
+ }
+
+ public int getPerguntasProfessor() {
+ return perguntasProfessor;
+ }
+
+ public int getPerguntasRealizadas() {
+ return perguntasRealizadas;
+ }
+
+}