class Iamspe::Bossy::IcuCath
Classe de lista de solicitações de CATEs e UTIs
Public Class Methods
Source
# File lib/iamspe/bossy/icu_cath.rb 12 def initialize 13 # Inicializar TTY::Prompt 14 @prompt = TTY::Prompt.new 15 # Inicializar TTY::Config 16 @config = TTY::Config.new 17 @config.filename = '.iamspe' 18 @config.append_path Dir.home 19 raise new Error, 'Arquivo de configuração não encontrado' unless @config.exist? 20 21 @config.read 22 23 # Inicializar variáveis 24 @patients = [] 25 @dt_beds = @config.fetch(:dt, :leitos) 26 @eme_beds = @config.fetch(:eme, :leitos) 27 @eme_ext = @config.fetch(:eme, :contingencia) 28 # Compilar dados 29 build_patients 30 @icu = build_icu 31 @cath = build_cath 32 @occupation = count_eme 33 end
Inicializador
Public Instance Methods
Source
# File lib/iamspe/bossy/icu_cath.rb 36 def to_s 37 # Texto de CATEs 38 Clipboard.copy(@cath) 39 puts @cath.prepend("<< Texto de CATE copiado! >>\n\n") 40 @prompt.keypress('Pressione qualquer tecla para continuar, ou aguarde mais :countdown s...', timeout: 60) 41 42 # Texto de UTIs 43 @icu.concat '_Ocupação:_', "\n", @occupation, "\n\n", '*Obs.:* colegas dos setores já cobrados de solicitar UTI para *todo* paciente que não tiver previsão de alta para enfermaria nas próximas 24h.' 44 Clipboard.copy(@icu) 45 '<< Texto de UTI copiado! >>' 46 end
Compilar texto de “output” e retorná-lo como String
Private Instance Methods
Source
# File lib/iamspe/bossy/icu_cath.rb 150 def build_cath 151 ucp = build_sector_patients('UCP', :cath) 152 ucp = if ucp.empty? 153 ['*UCP:*', '- Sem indicações'] 154 else 155 ['*UCP:*'].concat(ucp) 156 end 157 semi = build_sector_patients('Semi', :cath) 158 semi = if semi.empty? 159 ['*Semi:*', '- Sem indicações'] 160 else 161 ['*Semi:*'].concat(semi) 162 end 163 if @dt_beds 164 dt = build_sector_patients('DT', :cath) 165 dt = if dt.empty? 166 ['*DT:*', '- Sem indicações'] 167 else 168 ['*DT:*'].concat(dt) 169 end 170 else 171 dt = [] 172 end 173 eme = build_sector_patients('EME', :cath) 174 eme = if eme.empty? 175 ['*EME:*', '- Sem indicações'] 176 else 177 ['*EME:*'].concat(eme) 178 end 179 180 [ 181 ucp.join("\n"), 182 semi.join("\n"), 183 dt.join("\n"), 184 eme.join("\n") 185 ].reject(&:empty?).join "\n" 186 end
Compilar listas de CATE
Source
# File lib/iamspe/bossy/icu_cath.rb 111 def build_icu 112 ucp = build_sector_patients('UCP', :icu) 113 ucp = if ucp.empty? 114 ['*UCP:*', '- Sem indicações'] 115 else 116 ['*UCP:*'].concat(ucp) 117 end 118 semi = build_sector_patients('Semi', :icu) 119 semi = if semi.empty? 120 ['*Semi:*', '- Sem indicações'] 121 else 122 ['*Semi:*'].concat(semi) 123 end 124 if @dt_beds 125 dt = build_sector_patients('DT', :icu) 126 dt = if dt.empty? 127 ['*DT:*', '- Sem indicações'] 128 else 129 ['*DT:*'].concat(dt) 130 end 131 else 132 dt = [] 133 end 134 eme = build_sector_patients('EME', :icu) 135 eme = if eme.empty? 136 ['*EME:*', '- Sem indicações'] 137 else 138 ['*EME:*'].concat(eme) 139 end 140 141 [ 142 ucp.join("\n"), 143 semi.join("\n"), 144 dt.join("\n"), 145 eme.join("\n") 146 ].reject(&:empty?).join "\n" 147 end
Compilar listas de UTI
Source
# File lib/iamspe/bossy/icu_cath.rb 51 def build_patients 52 loop do 53 new_pt = parse_patient 54 break if new_pt[:name].nil? 55 56 @patients.push(new_pt) 57 puts '' 58 end 59 end
Construir lista de pacientes um-a-um
Source
# File lib/iamspe/bossy/icu_cath.rb 189 def build_sector_patients(sector, type) 190 sector = @patients.map do |pt| 191 "- #{pt[:name]}" if pt[:sector] == sector && pt[type] 192 end 193 sector.compact 194 end
Formatar lista de pacientes por setor e tipo
Source
# File lib/iamspe/bossy/icu_cath.rb 95 def count_eme 96 i = @prompt.ask('# Pacientes na EME:') do |q| 97 q.required true 98 q.convert :int 99 end 100 101 if i < @eme_beds 102 ["- #{i} pacientes", "- #{@eme_beds - i} leitos *vagos*"].join "\n" 103 elsif i < @eme_ext 104 ["- #{i} pacientes", "- #{@eme_ext - i} leitos extras *vagos*", '- Segundo salão da EME em uso'].join "\n" 105 else 106 ["- #{i} pacientes", '- *SEM* leitos vagos', '- Segundo salão da EME em uso'].join "\n" 107 end 108 end
Obter número de pacientes fisicamente na EME
Source
# File lib/iamspe/bossy/icu_cath.rb 62 def parse_patient 63 @prompt.collect do 64 key(:name).ask('Nome completo:') do |q| 65 q.modify :trim, :up 66 end 67 next if @answers[:name].nil? 68 69 key(:sector).select('Setor:') do |q| 70 q.choice name: 'UCP', value: 'UCP' 71 q.choice name: 'Semi', value: 'Semi' 72 q.choice name: 'DT', disabled: 'Sem macas no momento' 73 q.choice name: 'EME', value: 'EME' 74 end 75 key(:icu).yes?('UTI?') do |q| 76 q.positive 'SIM' 77 q.negative 'não' 78 end 79 key(:cath).yes?('CATE?') do |q| 80 q.positive 'SIM' 81 q.negative 'não' 82 end 83 next unless @answers[:cath] 84 85 key(:cathwhen).select('Data definida de CATE?') do |q| 86 q.choice(name: 'Não', value: '') 87 q.choice(name: 'Hoje', value: ' (previsão para hoje)') 88 q.choice(name: 'Amanhã', value: ' (previsão para amanhã)') 89 q.choice(name: 'NA HEMO', value: ' (em procedimento no momento)') 90 end 91 end 92 end
Obter dados de cada paciente, individualmente