Exemplo n.º 1
0
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')
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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>')
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
#!/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())
Exemplo n.º 6
0
#!/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