Skip to content

Commit

Permalink
Merge pull request #209 from prefeitura-rio/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
TanookiVerde committed Aug 27, 2024
2 parents 23ef8db + e05305c commit 74d2dd9
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 36 deletions.
79 changes: 50 additions & 29 deletions app/routers/frontend.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,15 @@ async def get_patient_header(
if len(patient_record["contato"]["telefone"]) > 0:
telefone_principal = patient_record["contato"]["telefone"][0]["valor"]

clinica_principal = {}
if len(patient_record["clinica_familia"]) > 0:
clinica_principal = patient_record["clinica_familia"][0]

equipe_principal = {}
clinica_principal, equipe_principal = {}, {}
medicos, enfermeiros = [], []
if len(patient_record["equipe_saude_familia"]) > 0:
equipe_principal = patient_record["equipe_saude_familia"][0]

# Pega Clínica da Família
if equipe_principal["clinica_familia"]:
clinica_principal = equipe_principal["clinica_familia"]

for equipe in patient_record["equipe_saude_familia"]:
medicos.extend(equipe["medicos"])
enfermeiros.extend(equipe["enfermeiros"])
Expand Down Expand Up @@ -128,32 +128,50 @@ async def get_patient_summary(
cpf: str,
) -> PatientSummary:

if cpf == '19530236069':
raise HTTPException(status_code=404, detail="Patient not found")
elif cpf == '11111111111':
raise HTTPException(status_code=400, detail="Invalid CPF")
query = f"""
with
base as (select '{cpf}' as cpf),
alergias_grouped as (
select
cpf,
alergias as allergies
from `saude_historico_clinico.alergia`
where cpf = '{cpf}'
),
medicamentos_cronicos_single as (
select
cpf,
med.nome as nome_medicamento
from `saude_historico_clinico.medicamentos_cronicos`,
unnest(medicamentos) as med
where cpf = '{cpf}'
),
medicamentos_cronicos_grouped as (
select
cpf,
array_agg(nome_medicamento) as continuous_use_medications
from medicamentos_cronicos_single
group by cpf
)
select
alergias_grouped.allergies,
medicamentos_cronicos_grouped.continuous_use_medications
from base
left join alergias_grouped on alergias_grouped.cpf = base.cpf
left join medicamentos_cronicos_grouped on medicamentos_cronicos_grouped.cpf = base.cpf
"""
results_json = read_sql(
query,
from_file="/tmp/credentials.json"
).to_json(orient="records")

result = json.loads(results_json)
if len(result) > 0:
return result[0]

return {
"allergies": [
"Sulfonamidas",
"Ácaros do pó",
"Penicilina",
"Medicamentos anticonvulsivantes",
"Gatos",
"Gramíneas",
"Picadas de abelhas",
"Picadas de vespas",
"Preservativos",
"Luvas de látex",
],
"continuous_use_medications": [
"Losartana potássica",
"Enalapril maleato",
"Besilato de anlodipino",
"Captopril",
"Clonazepam",
"Enalapril",
],
"allergies": [],
"continuous_use_medications": []
}

@router.get("/patient/filter_tags")
Expand Down Expand Up @@ -225,4 +243,7 @@ async def get_patient_encounters(
}
encounters.append(encounter)

# Sort Encounters by entry_datetime
encounters = sorted(encounters, key=lambda x: x['entry_datetime'], reverse=True)

return encounters
18 changes: 11 additions & 7 deletions app/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,22 @@ async def get_instance(Model, table, slug=None, code=None):


def read_timestamp(timestamp: int, output_format=Literal['date','datetime']) -> str:
if output_format == 'date':
denominator = 1000
str_format = "%Y-%m-%d"
elif output_format == 'datetime':
denominator = 1
str_format = "%Y-%m-%d %H:%M:%S"
else:
raise ValueError("Invalid format")

try:
value = datetime(1970, 1, 1) + timedelta(seconds=timestamp)
value = datetime(1970, 1, 1) + timedelta(seconds=timestamp/denominator)
except Exception as exc:
logger.error(f"Invalid timestamp: {timestamp} from {exc}")
return None

if output_format == 'datetime':
return value.strftime("%Y-%m-%d %H:%M:%S")
elif output_format == 'date':
return value.strftime("%Y-%m-%d")
else:
raise ValueError("Invalid format")
return value.strftime(str_format)

def normalize_case(text):
# TODO
Expand Down

0 comments on commit 74d2dd9

Please sign in to comment.