diff --git a/app/routers/frontend.py b/app/routers/frontend.py index c02a96e..388515c 100644 --- a/app/routers/frontend.py +++ b/app/routers/frontend.py @@ -153,6 +153,21 @@ async def get_patient_summary( ], } +@router.get("/patient/filter_tags") +async def get_filter_tags( + _: Annotated[User, Depends(get_current_active_user)] +) -> List[str]: + return [ + "CF/CMS", + "HOSPITAL", + "CENTRO SAUDE ESCOLA", + "UPA", + "CCO", + "MATERNIDADE", + "CER", + "POLICLINICA", + ] + @router.get("/patient/encounters/{cpf}") async def get_patient_encounters( @@ -179,13 +194,13 @@ async def get_patient_encounters( "role": professional.get('especialidade') } - # CIDs - cids = [] - for cid in result['condicoes']: - nome, descricao = cid.get('id'), cid.get('descricao') - if nome is None or descricao is None: - continue - cids.append(f"{nome} - {descricao}") + # Filter Tags + unit_type = result['estabelecimento']['estabelecimento_tipo'] + if unit_type in [ + 'CLINICA DA FAMILIA', + 'CENTRO MUNICIPAL DE SAUDE' + ]: + unit_type = 'CF/CMS' encounter = { "entry_datetime": read_timestamp(result['entrada_datahora'], format='datetime'), @@ -193,12 +208,11 @@ async def get_patient_encounters( "location": result['estabelecimento']['nome'], "type": result['tipo'], "subtype": result['subtipo'], - "active_cids": cids, + "active_cids": [cid['descricao'] for cid in result['condicoes'] if cid['descricao']], "responsible": professional, - "description": result['motivo_atendimento'], - "motivation": result['motivo_atendimento'], - "summary": result['desfecho_atendimento'], - "filter_tags": [result['estabelecimento']['estabelecimento_tipo']], + "clinical_motivation": result['motivo_atendimento'], + "clinical_outcome": result['desfecho_atendimento'], + "filter_tags": [unit_type], } encounters.append(encounter) diff --git a/app/types/frontend.py b/app/types/frontend.py index d127684..fb3e502 100644 --- a/app/types/frontend.py +++ b/app/types/frontend.py @@ -38,9 +38,8 @@ class Encounter(BaseModel): subtype: Optional[str] active_cids: List[str] responsible: Optional[Responsible] - description: Optional[str] - motivation: Optional[str] - summary: Optional[str] + clinical_motivation: Optional[str] + clinical_outcome: Optional[str] filter_tags: List[str] diff --git a/app/utils.py b/app/utils.py index d831e75..8dafc71 100644 --- a/app/utils.py +++ b/app/utils.py @@ -124,7 +124,7 @@ async def get_instance(Model, table, slug=None, code=None): def read_timestamp(timestamp: int, format=Literal['date','datetime']) -> str: - value = datetime(1970, 1, 1) + timedelta(milliseconds=timestamp) + value = datetime(1970, 1, 1) + timedelta(seconds=timestamp) if format == 'datetime': return value.strftime("%Y-%m-%d %H:%M:%S") elif format == 'date':