def exporta_agendamentos_complexos(): hoje = cal.hoje() report = {} for x in Posologia_Smorfolipide.agendamentos(): if x.datahora < hoje: continue data, horario = datahora_split(x.datahora) if data not in report: report[data] = {} if horario not in report[data]: report[data][horario] = [] report[data][horario].append(u'Infusão de Smorf Lipide') for x in Eventos: if x.datahora() < hoje: continue if isinstance(x, EExame) or isinstance(x, EConsulta): data, horario = datahora_split(x.datahora()) if data not in report: report[data] = {} if horario not in report[data]: report[data][horario] = [] report[data][horario].append(x.descricao()) __writedown(report, 'agendas_complexas.html', u'Agendas Complexas')
def exporta_expectativa_consumo(): sga = cal.qual_semana_gestacao(cal.hoje()) sgf = min(sga + 7, cal.SEMANAS_GESTACAO_TOTAL - sga + 1) data = {} for i in range(sga, sgf): sg = cal.semana_gestacao(i) sgkey = str(sg.inicio)[2:10] + u' até ' + str(sg.fim)[2:10] data[sgkey] = {} for medicamento in Medicamentos: quantidade_acumulada = 0 posologia = obter_posologia(medicamento) for agendamento in posologia.agendamentos(): if sg.inicio <= agendamento.datahora <= sg.fim: quantidade_acumulada += agendamento.quantidade data[sgkey][medicamento.nome()] = quantidade_acumulada sg = cal.semana_gestacao(sga) table = [] header1 = ['', ''] for x in range(sga, sgf): header1.append(str(x)) header1.append('') table.append('\t'.join(header1)) header2 = ['Medicamento', 'Estoque'] for x in sorted(data.keys()): header2.append(x) header2.append('Estoque') table.append('\t'.join(header2)) ref = data[header2[2]] for med in sorted(ref.keys()): medicamento = obter_medicamento(med) estoque = obter_estoque(medicamento) saldo = estoque.saldo(sg.inicio) i = 1 row = [med, str(saldo)] for x in sorted(data.keys()): consumo_na_semana = data[x][med] row.append(str(consumo_na_semana)) # consuma na semana 'x' saldo -= consumo_na_semana # ajuste do saldo, com adições ou subtrações em estoque! sgai = cal.semana_gestacao(sga + i) saldo_em_estoque = estoque.saldo(sgai.inicio) if saldo_em_estoque != saldo and saldo_em_estoque > 0: saldo = saldo_em_estoque row.append(str(saldo)) i += 1 table.append('\t'.join(row)) with codecs.open('consumo.txt', 'w', 'utf-8') as fout: fout.write('\n'.join(table))
def exporta_calendario(): trimestre_label = [ '', 'primeiro trimestre', 'segundo trimestre', 'terceiro trimestre', ] with codecs.open('agenda_calendario.html', 'w', 'utf-8') as fout: fout.write('data do beta: %s<br>' % str(cal.BETA_HCG)[:10]) fout.write('data do DUM: %s<br>' % str(cal.DUM)[:10]) data_parto = cal.semana_gestacao(40).fim fout.write('data do parto: %s<br>' % str(data_parto)[:10]) fout.write(u'Retorno licença Mamãe: %s<br>' % str(data_parto + 180 * cal.UM_DIA)[:10]) fout.write(u'Retorno licença Papai: %s<br>' % str(data_parto + 20 * cal.UM_DIA)[:10]) for i in range(1, 41): sg = cal.semana_gestacao(i) itg = cal.qual_trimestre_gestacao(sg.fim) tgl = trimestre_label[itg] fout.write(u'<p>semana %02s [%s]: de %s até %s</p>' % (i, tgl, str(sg.inicio)[:10], str(sg.fim)[:10])) hoje = cal.hoje() select_list = set([Smorfolipide, Utrogestan]) for medicacao in Posologias.values(): medicamento = medicacao.medicamento() if medicamento not in select_list: continue fout.write(u'<ul>') fout.write(u'<li>%s</li>' % medicamento.nome()) fout.write(u'<ul>') agendamentos = medicacao.agendamentos() lagendamentos = len(agendamentos) for i in range(lagendamentos): agendamento = agendamentos[i] if agendamento.datahora < hoje: continue fout.write( u'<li>Em: %s, %s unidade</li>' % (str(agendamento.datahora)[:16], agendamento.quantidade)) fout.write(u'</ul>') fout.write(u'</ul>')
def exporta_dados_planilha(): hoje = cal.hoje() - cal.UM_DIA ultdia = hoje + 45 * cal.UM_DIA sultdia = str(ultdia)[:10] grafico_data = {} for medicamento in Medicamentos: if medicamento == Smorfolipide: continue estoque = obter_estoque(medicamento) posologia = obter_posologia(medicamento) #if not estah_tratando: # continue grafico_data[medicamento.nome()] = {} i = 1 for dia in cal.dias_entre(hoje, ultdia): fdia = cal.agendamento(dia, 0, 0) sdia = str(fdia)[:10] if not posologia.estah_tratando(dia): grafico_data[medicamento.nome()][sdia] = '' else: saldo = estoque.saldo(fdia) grafico_data[medicamento.nome()][sdia] = saldo i += 1 #if ( grafico_data[medicamento.nome()][sultdia] > 50) : # del grafico_data[ medicamento.nome() ] table = [] header = ['data'] + [x for x in sorted(grafico_data.keys())] table.append('\t'.join(header)) ref = grafico_data[header[1]] for dia in sorted(ref.keys()): line = [dia] + [ str(grafico_data[x][dia]) for x in sorted(grafico_data.keys()) ] table.append('\t'.join(line)) with codecs.open('estoque.txt', 'w', 'utf-8') as fout: fout.write('\n'.join(table))
#!/usr/bin/env python # -*- coding: utf-8 -*- import lib.calendario as cal for i in range(15): sg = cal.SEMANAS_GESTACAO[i] print i + 1, sg print cal.BETA_HCG print cal.qual_semana_gestacao(cal.hoje())
#!/usr/bin/env python # -*- coding: utf-8 -*- import lib.calendario as cal from lib.eventos import * from lib.estoques import * from lib.relatorios import * from lib.medicacao import * hoje = cal.hoje() - cal.UM_DIA atequando = cal.hoje() + 30 * cal.UM_DIA report = {} count = 0 for evento in Eventos: if isinstance(evento, EMedicacao): medicamento = evento.medicamento() estoque = obter_estoque(medicamento) try: #print evento.datahora(), medicamento.nome(), estoque.saldo() estoque.registrar_saida(evento.datahora(), evento.quantidade()) except SaldoInsuficienteException as e: pass if count > 0 and hoje <= evento.datahora() <= atequando: print evento.datahora(), evento.medicamento().nome() count -= 1