diff --git a/src/apps/users/v1/router.py b/src/apps/users/v1/router.py index 338af3a..efffa5a 100644 --- a/src/apps/users/v1/router.py +++ b/src/apps/users/v1/router.py @@ -154,6 +154,14 @@ async def get_diagnostic_results(): ) +@router.get('/getELNs') +async def get_eln(): + """ + Get list of ELNs. + """ + return await c.vitacore_api.getELNs('d4493f1c-fcbb-4242-99e6-32328bed53b9') + + @router.post('/measurement', status_code=status.HTTP_202_ACCEPTED) async def measurement( user: Annotated[str, Depends(login)], @@ -218,11 +226,6 @@ async def find_pat(user: Annotated[str, Depends(login)]): return mock.findpat[0] -@router.get('/getELNS') -async def get_elns(user: Annotated[str, Depends(login)]): - return mock.elns[0] - - @router.get('/getPatFLG') async def get_pat_flg(user: Annotated[str, Depends(login)]): return mock.patFLG[0] diff --git a/src/clients/vitacore/api.py b/src/clients/vitacore/api.py index 0ccd6e3..2207057 100644 --- a/src/clients/vitacore/api.py +++ b/src/clients/vitacore/api.py @@ -165,3 +165,13 @@ class VITACORE_API(AsyncClient): case _: self.logger.error(req.json()) raise e.UnknownException + + async def getELNs(self, patId: str): + req = await self.get('/getELNs', params={'patId': patId}) + + match req.status_code: + case st.HTTP_200_OK: + return s.ELNsModel.model_validate(req.json()) + case _: + self.logger.error(req.json()) + raise e.UnknownException diff --git a/src/clients/vitacore/schema.py b/src/clients/vitacore/schema.py index 72c8a1f..895a9ae 100644 --- a/src/clients/vitacore/schema.py +++ b/src/clients/vitacore/schema.py @@ -552,3 +552,59 @@ class DiagnosticResultsModel(BaseModel): DainosticsResults: list[DiagnosticResultModel] = Field( title='Список результатов исследований' ) + + +class ProlongationModel(BaseModel): + StartDate: datetime = Field( + title='Дата продления с', examples=['2020-10-21'] + ) + ProlongationDate: str = Field( + title='Дата продления до', examples=['2020-10-25'] + ) + Post: str = Field( + title='Врач', + examples=['Ахсанова Р.М. (Врач общей практики (семейный врач))'], + ) + + +class PatientELNModel(BaseModel): + PatientSNILS: str = Field( + title='СНИЛС болеющего', examples=['000-000-600 01'] + ) + Number: str = Field( + title='Номер листа нетрудоспособности', examples=['910040906829'] + ) + OpenDate: datetime = Field(title='Дата открытия', examples=['2020-10-21']) + DateClose: datetime = Field(title='Дата закрытия', examples=['2020-10-25']) + WorkDate: datetime = Field( + title='Дата выхода на работу', examples=['2020-10-26'] + ) + DaysCount: int = Field( + title='Количество дней нетрудоспособности', examples=[5] + ) + Cause: str = Field( + title='Причина нетрудоспособности', + examples=[ + 'Заболевание (в том числе профессиональное заболевание и его ' + 'обострение)' + ], + ) + Prolongations: list[ProlongationModel] = Field(title='Продления') + LpuName: str = Field( + title='Наименование МО', examples=['ГАУЗ Новошешминская ЦРБ'] + ) + BranchAddress: str = Field( + title='Адрес подразделения выдачи', + examples=['Республика Татарстан,с.Новошешминск, ул.Майская, д.8'], + ) + FssLnStatus: str = Field(title='Статус ЭЛН в ФСС', examples=['30']) + SentSNILS: str = Field( + title='СНИЛС получателя ЭЛН (отправленный в ФСС)', + examples=['00000060001'], + ) + + +class ELNsModel(BaseModel): + PatientELNs: list[PatientELNModel] = Field( + title='Список электронных листов нетрудоспособности' + )