class Iamspe::Door::Rest
Classe de solicitação de repouso no leito
Public Class Methods
Source
# File lib/iamspe/door/rest.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 # Coletar dados 24 req = { physician: @config.fetch(:nome).upcase } 25 req.merge! patient 26 req.merge! rest_type 27 req.merge! hd 28 req.merge! notes 29 patient = parse_patient(req) 30 obs = parse_notes(req) 31 now = parse_time 32 # Compilar texto de "output" 33 @out = parse_output(req, patient, obs, now) 34 end
Inicializador
Public Instance Methods
Source
# File lib/iamspe/door/rest.rb 37 def to_s 38 Clipboard.copy(@out) 39 @out.prepend "<< Texto copiado! >>\n\n" 40 end
Converter em String, no caso sendo o texto de “output”
Private Instance Methods
Source
# File lib/iamspe/door/rest.rb 106 def hd 107 @prompt.collect do 108 key(:hd).ask('HD:') do |q| 109 q.required true 110 q.modify :trim 111 end 112 end 113 end
Obter hipótese diagnóstica
Source
# File lib/iamspe/door/rest.rb 116 def notes 117 @prompt.collect do 118 key(:obs).multiline('Observações?') do |q| 119 q.help 'Use Ctrl+D ou Ctrl+Z para terminar' 120 q.modify :trim 121 end 122 end 123 end
Obter observações adicionais, se aplicável
Source
# File lib/iamspe/door/rest.rb 134 def parse_notes(req) 135 if req[:obs].empty? 136 'ndn' 137 else 138 obs = req[:obs].map(&:strip) 139 obs.join("\n") 140 end 141 end
Compilar observações
Source
# File lib/iamspe/door/rest.rb 152 def parse_output(req, patient, obs, now) 153 out = [] 154 out.push "\x2a🛏 \x60ATUALIZAÇÃO - MÉDICOS DA PORTA\x60 🩺\x2a" 155 out.push "\x2aMédico:\x2a #{req[:physician]}" 156 out.push "\x2aPaciente:\x2a #{patient}" 157 out.push "\x2aSolicitação:\x2a" 158 out.push "- (#{req[:type] == 'repouso' ? 'x' : ' '}) Repouso no leito" 159 out.push "- (#{req[:type] == 'ih' ? 'x' : ' '}) Internação" 160 out.push "\x2aElegível para Transferência Externa:\x2a" 161 out.push "- (#{req[:external] ? 'x' : ' '}) Sim#{req[:external] ? " (#{req[:external]})" : ' '}" 162 out.push "- (#{req[:external] ? ' ' : 'x'}) Não" 163 out.push "\x2aHipótese diagnóstica:\x2a #{req[:hd]}" 164 out.push "\x2aPrioridade:\x2a" 165 out.push "- (#{req[:priority] == 2 ? 'x' : ' '}) Urgente" 166 out.push "- (#{req[:priority] == 1 ? 'x' : ' '}) Pode aguardar" 167 out.push "- (#{req[:priority].zero? ? 'x' : ' '}) Não urgente" 168 out.push "\x2aObservações:\x2a #{obs}" 169 out.push "\x2aData e hora:\x2a #{now}" 170 171 out.join("\n") 172 end
Compilar texto de “output”
Source
# File lib/iamspe/door/rest.rb 126 def parse_patient(req) 127 patient = "\x60#{req[:patient]}\x60" 128 patient += ", #{req[:age]}a" unless req[:age].nil? 129 patient += ", Same #{req[:pront]}" unless req[:pront].nil? 130 patient 131 end
Compilar paciente com idade e SAME, se disponíveis
Source
# File lib/iamspe/door/rest.rb 144 def parse_time 145 tz = TZInfo::Timezone.get('America/Sao_Paulo') 146 now = Time.now 147 now = tz.to_local(now) 148 now.strftime('%e/%b, %Hh%Mmin') 149 end
Obter tempo em formato configurado para região
Source
# File lib/iamspe/door/rest.rb 45 def patient 46 patient = patient_name 47 patient.merge! patient_age 48 patient.merge! patient_same 49 patient 50 end
Obter dados do paciente
Source
# File lib/iamspe/door/rest.rb 64 def patient_age 65 @prompt.collect do 66 key(:age).ask('Idade:') do |q| 67 q.required false 68 q.validate do |input| 69 !input.to_f.nan? || input.nil? 70 end 71 end 72 end 73 end
Obter idade do paciente, se aplicável
Source
# File lib/iamspe/door/rest.rb 53 def patient_name 54 @prompt.collect do 55 key(:patient).ask('Paciente:') do |q| 56 q.required true 57 q.validate(/^[A-Za-z ]+$/) 58 q.modify :up, :trim 59 end 60 end 61 end
Obter nome do paciente
Source
# File lib/iamspe/door/rest.rb 76 def patient_same 77 @prompt.collect do 78 key(:pront).ask('Same:') do |q| 79 q.required false 80 q.validate do |input| 81 !input.to_f.nan? || input.nil? 82 end 83 end 84 end 85 end
Obter prontuário do paciente, se aplicável
Source
# File lib/iamspe/door/rest.rb 88 def rest_type 89 @prompt.collect do 90 key(:type).select('Tipo de solicitação:', %w[repouso ih]) 91 key(:external).select('Elegível para regulação?') do |menu| 92 menu.choice(name: 'Sim', value: 'baixa complexidade') 93 menu.choice(name: 'Sim (média complex.)', value: 'média complexidade') 94 menu.choice(name: 'Sim (mas HNSF)', value: 'mas HNSF') 95 menu.choice(name: 'Não', value: false) 96 end 97 key(:priority).select('Prioridade:') do |menu| 98 menu.choice(name: 'Baixa', value: 0) 99 menu.choice(name: 'Média', value: 1) 100 menu.choice(name: 'Alta', value: 2) 101 end 102 end 103 end
Selecionar tipo de solicitação