def regras_gerais_atendidas(paciente, tratamento): ats = Atendimento.objects.filter(paciente = paciente, status='A').order_by('-instancia_tratamento__data') dic_retorno = {'sucesso':False, 'mensagem':None} # somente os tratamentos nas salas 1, 2, 3 e 4 são verificados, pois qualquer paciente pode fazer check-in na # quinta-feira na sala 5. if tratamento.id in [1,2,3,4,12]: if len(ats) == 0: dic_retorno['mensagem']='Paciente sem atendimentos registrados. Deve retornar para as segundas-feiras' return dic_retorno else: # último atendimento na casa há mais de 3 meses if ats[0].instancia_tratamento.data < get_data_limite(): dic_retorno['mensagem']='Último atendimento realizado há mais de 3 meses. Encaminhar paciente para a coordenação.' return dic_retorno # somente pacientes com agendamento na desobsessão podem fazer checkin. if tratamento.id == 8: agenda = AgendaAtendimento.objects.filter(paciente = paciente, agenda_tratamento__tratamento = tratamento, \ status='A') if not agenda: dic_retorno['mensagem']='Paciente não agendado para a Desobsessão. Favor encaminhá-lo para a coordenação.' return dic_retorno # regra básica: # se o paciente está fazendo um checkin para algum tratamento, # será necessário verificar se ele já cumpriu as 4 manutenções. # para tal, simplesmente verificamos se o último atendimento foi manutenção ou primeira vez e se # nos últimos 180 dias houve 4 manutenções. if tratamento.id in [1,2,3,4,5,12]: if ats: if ats[0].instancia_tratamento.tratamento.descricao_basica[:4] == "Manu" or \ ats[0].instancia_tratamento.tratamento.descricao_basica[:4] == "Prim": data_limite = datetime.today().date() - timedelta(days=180) manuts = Atendimento.objects.filter(paciente = paciente, status='A', \ instancia_tratamento__tratamento__descricao_basica__startswith="Manu", \ instancia_tratamento__data__gte=data_limite) if len(manuts) < 4: dic_retorno['mensagem']='Paciente ainda não finalizou as manutenções da segunda-feira.' return dic_retorno # caso feliz :) dic_retorno['sucesso']=True return dic_retorno
def relatorio_pacientes_geral(ativo, tratamento): mensagem = '' tps = TratamentoPaciente.objects.filter(status='A', tratamento=tratamento).order_by("paciente__nome") pacientes = [] count = 0 for tp in tps: paciente = {} paciente["nome"] = tp.paciente.nome at = Atendimento.objects.filter(paciente=tp.paciente).order_by("-instancia_tratamento__data") if len(at) > 0: ult_atendimento = at[0] paciente["ult_atendimento"] = ult_atendimento.instancia_tratamento.data count_det_prio = tp.paciente.detalheprioridade_set.count() if count_det_prio == 1: paciente["prioridade"] = tp.paciente.detalheprioridade_set.get().get_tipo_display() else: paciente["prioridade"] = "" voluntarios = Voluntario.objects.filter(paciente = tp.paciente, ativo=True) if len(voluntarios) == 1: paciente["voluntario"] = voluntarios[0].get_tipo_display() else: paciente["voluntario"] = "" data_limite = get_data_limite() if data_limite < ult_atendimento.instancia_tratamento.data: paciente["ativo"]=True else: paciente["ativo"]=False if (ativo == "S" and paciente["ativo"]) or (ativo == "N" and not paciente["ativo"]) or (ativo == "T"): pacientes.append(paciente) count += 1 paciente["count"] = count return pacientes, mensagem