Já parou para pensar em como/por que você está respirando agora? Para muitos essa atividade é tão banal que não fazem idéia do trabalho que seu corpo tem para coordenar e executar várias ações para a simples atividade de respirar. Nesta palestra pretendo falar um pouco sobre alguns desafios vividos durante 2 anos de desenvolvimento e aperfeiçoamento de um simulador virtual de ventilação mecânica voltado para ensino na área da saúde, o xlung.
25. –Manel
Ventilador mecânico é uma máquina que, ligada a um
paciente, auxilia a respiração injetando ar nos pulmões
através do aumento da pressão nas vias aéreas.
26. MOTIVAÇÕES PARA O USO
DO SIMULADOR NO ENSINO
Maior aprendizado dos alunos
RISCO ZERO para pacientes
Melhora substancial na qualidade de vida dos
pacientes
31. MOTIVAÇÕES PESSOAIS
Trabalhar em algo que é desafiador
Contribuir para a construção de algo útil para a
sociedade e que afeta positivamente a vida de
outras pessoas
32.
33. REUNIÃO COM O CLIENTE 02
A equipe antiga de devs e a passagem de código
67. VENTILADOR MECÂNICO
public class MechanicFan implements Runnable, Constants {
/* Modo de ventilação. */
private int mode;
private int newMode;
/* Tempo total (inspiração + expiração). */
private float totalTime;
/**/
private float fio2;
/* Janela da apresentação gráfica. */
private Graphics graphics;
/* Objeto de tempo real. */
private RealTime realTime;
public LayoutWeb guiWeb;
/* Objeto referênte ao modo de ventilação ciclada à volume controlado. */
private ControlledVolVentilationMode cvvm;
/* Objeto referênte ao modo de ventilação ciclada à pressão controlada. */
private ControlledPresVentilationMode cpvm;
/**/
private SIMVVolVentilationMode simvv;
/**/
private SIMVPresVentilationMode simvp;
/**/
private CPAP cpap;
/* Threads responsável pela a geração dos sinais. */
private Thread cvvm_thread;
private Thread cpvm_thread;
private Thread simvv_thread;
private Thread simvp_thread;
private Thread cpap_thread;
private NewMonitor monitor;
private int stopmf = 0;
68. VENTILADOR MECÂNICO
public class MechanicFan implements Runnable, Constants {
/* Modo de ventilação. */
private int mode;
private int newMode;
/* Tempo total (inspiração + expiração). */
private float totalTime;
/**/
private float fio2;
/* Janela da apresentação gráfica. */
private Graphics graphics;
/* Objeto de tempo real. */
private RealTime realTime;
public LayoutWeb guiWeb;
/* Objeto referênte ao modo de ventilação ciclada à volume controlado. */
private ControlledVolVentilationMode cvvm;
/* Objeto referênte ao modo de ventilação ciclada à pressão controlada. */
private ControlledPresVentilationMode cpvm;
/**/
private SIMVVolVentilationMode simvv;
/**/
private SIMVPresVentilationMode simvp;
/**/
private CPAP cpap;
/* Threads responsável pela a geração dos sinais. */
private Thread cvvm_thread;
private Thread cpvm_thread;
private Thread simvv_thread;
private Thread simvp_thread;
private Thread cpap_thread;
private NewMonitor monitor;
private int stopmf = 0;
Sou uma Thread
Que tem outras Threads!
69. VENTILADOR MECÂNICO
public class MechanicFan implements Runnable, Constants {
/* Modo de ventilação. */
private int mode;
private int newMode;
/* Tempo total (inspiração + expiração). */
private float totalTime;
/**/
private float fio2;
/* Janela da apresentação gráfica. */
private Graphics graphics;
/* Objeto de tempo real. */
private RealTime realTime;
public LayoutWeb guiWeb;
/* Objeto referênte ao modo de ventilação ciclada à volume controlado. */
private ControlledVolVentilationMode cvvm;
/* Objeto referênte ao modo de ventilação ciclada à pressão controlada. */
private ControlledPresVentilationMode cpvm;
/**/
private SIMVVolVentilationMode simvv;
/**/
private SIMVPresVentilationMode simvp;
/**/
private CPAP cpap;
/* Threads responsável pela a geração dos sinais. */
private Thread cvvm_thread;
private Thread cpvm_thread;
private Thread simvv_thread;
private Thread simvp_thread;
private Thread cpap_thread;
private NewMonitor monitor;
private int stopmf = 0;
Modos de ventilação
70. VENTILADOR MECÂNICO
/**
* Troca o modo de operação do ventilador.
*/
public void switchMode() {
/* Verifica qual é o modo atual e para a thread de execução. */
switch (this.mode) {
case CONTROLLED_VOL_MODE:
cvvm_thread.stop();
break;
case CONTROLLED_PRES_MODE:
cpvm_thread.stop();
break;
case SIMV_VOL_MODE:
simvv_thread.stop();
break;
case SIMV_PRES_MODE:
simvp_thread.stop();
break;
case CPAP_MODE:
cpap_thread.stop();
break;
}
}
71. VENTILADOR MECÂNICO
this.mode = newMode;
/* Verifica qual o novo modo de operação e inicia
uma nova thread de execução.*/
switch (this.mode) {
case CONTROLLED_VOL_MODE:
cvvm_thread = new Thread(cvvm);
cvvm_thread.start();
break;
case CONTROLLED_PRES_MODE:
cpvm_thread = new Thread(cpvm);
cpvm_thread.start();
break;
case SIMV_VOL_MODE:
simvv_thread = new Thread(simvv);
simvv_thread.start();
break;
case SIMV_PRES_MODE:
simvp_thread = new Thread(simvp);
simvp_thread.start();
break;
case CPAP_MODE:
cpap_thread = new Thread(cpap);
cpap_thread.start();
break;
}
}
97. BIGDECIMAL PARA GANHAR
PRECISÃO
• Se precisão é um problema, em vez de usar
números de ponto flutuante (float e double),
recomenda-se a utilização de BigDecimal
98. SOMA DE BIGDECIMALS
public class Main {
public static void main(String[] args) {
BigDecimal limite = new BigDecimal(1);
BigDecimal incremento = new BigDecimal("0.1");
for(BigDecimal soma = new BigDecimal("0.0");
soma.compareTo(limite) < 0;
soma = soma.add(incremento)) {
System.out.println(soma);
}
}
}
121. package my.company;
import java.lang.String;
// Inválido - classes do pacote java.lang são implicitamente importadas
import my.company.SomeClass;
// Inválido - arquivos do mesmo pacote são implicitamente importados
import java.io.File;
// Inválido - File não está sendo usado
import my.company2.SomeType;
import my.company2.SomeType;
// Inválido - 'SomeType' já foi importado
class ExampleClass {
public String someString;
public SomeType something;
}
152. 100% CLIENT SIDE
Bom desempenho
Fácil customização
Ecossistema farto
Segurança menor
Reescrever toda a simulação
153.
154. SCALA
Permite utilizar toda a base de código Java
existente
Introduz melhorias de legibilidade
Permite usar programação funcional
Favorece concorrência e escalabilidade