
    ozi!              
          S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJr  S SKJr  \" SS	/S
9r\R)                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R-                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R-                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R-                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R)                  S5      \" 5       \" \5      \" \	5      4S\S\S\4S jj5       r\R9                  S5      \" \5      \" \	5      4S\S\S\S\4S jj5       r\R=                  S5      \" \5      \" \	5      4S\S\S\4S jj5       rg)    )	APIRouterstatusDepends)JSONResponse)FonoaudiologicalReportClass)get_db)get_current_active_user)	UserLoginStoreFonoaudiologicalReportUpdateFonoaudiologicalReportFonoaudiologicalReportList)Sessionz/fonoaudiological_reportszFonoaudiological Reports)prefixtagsz/storedatasession_userdbc           	        #     [        U5      nUR                  U R                  5       5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	UR	                  SS
5      SUR	                  S5      0S.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u5   Crea un nuevo informe fonoaudiológico (Documento 8).r   error  messageu(   Error guardando informe fonoaudiológicoNr   r   r   status_codecontent   u,   Informe fonoaudiológico creado exitosamenteidu(   Error creando informe fonoaudiológico: )r   storedict
isinstancegetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED	Exceptionstr)r   r   r   serviceresultes         ^C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\fonoaudiological_reports.pystore_fonoaudiological_reportr*      s     -b1tyy{+fd##

8(<(GF,Q,Q&**Y@j*kuy\   (?(?fjj<j&k6::d+,J
  	  (M(M(PQTUVQWPX&YcgX
  	sA   D A?C D <C  D 
C='C82C=3D 8C==D z/list/{student_id}
student_idc           	        #     [        U5      nUR                  U S9n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S	9$ [        [        R                  S
U(       a  SOSUS.S	9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S	9s SnA$ SnAff = f7f)u<   Lista todos los informes fonoaudiológicos de un estudiante.r+   r   r   r   r   Error listando informesNr   r      &   Informes fonoaudiológicos encontradosz$No hay informes para este estudiante+   Error listando informes fonoaudiológicos: )r   get_allr    r   r!   r   r   r"   HTTP_200_OKr$   r%   )r+   r   r   r&   r   r(   s         r)   (list_fonoaudiological_reports_by_studentr4   %   s     -b1*5dD!!dhhx&8G&CF,Q,Q$((9>W*Xbf\   (:(:CG?MsE
  	
  (M(M(STWXYTZS[&\fjX
  	sA   CA/B 3C4$B C
C#'C
CCCCz/student/{student_id}c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	S
US.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)uE   Obtiene el último informe fonoaudiológico por el ID del estudiante.r   r     r   u9   Informe fonoaudiológico no encontrado para el estudianteNr   r   r/   #   Informe fonoaudiológico encontrador   +   Error obteniendo informe fonoaudiológico: )r   get_by_student_idr    r   r!   r   r   HTTP_404_NOT_FOUNDr3   r$   r"   r%   )r+   r   r   r&   r'   r(   s         r)   &get_fonoaudiological_report_by_studentr;   =   s     -b1**:6fd##

8(<(GF,E,E&**Y@{*|  GKP   (:(:&KU[E
  	  (M(M(STWXYTZS[&\fjX
  	A   CA1B 5C6B C
C'C	CC	CCz/{id}r   c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [	        [
        R                  SUR                  SS5      SS.S9$ [	        [
        R                  S	S
US.S9$ ! [         a2  n[	        [
        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u.   Obtiene un informe fonoaudiológico por su ID.r   r   r6   r   u&   Informe fonoaudiológico no encontradoNr   r   r/   r7   r   r8   )r   r!   r    r   r   r   r:   r3   r$   r"   r%   r   r   r   r&   r'   r(   s         r)   get_fonoaudiological_reportr?   S   s     -b1Rfd##

8(<(GF,E,E&**Y@h*iswP   (:(:&KU[E
  	  (M(M(STWXYTZS[&\fjX
  	r<   /filtersc           	        #     [        U5      nUR                  U R                  S9n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ [        [        R                  S
U(       a  SOSUS.S	9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S	9s SnA$ SnAff = f7f)uA   Lista informes fonoaudiológicos. Filtro opcional por student_id.r-   r   r   r   r   r.   Nr   r   r/   r0   zNo hay informes registradosr1   )r   r2   r+   r    r   r!   r   r   r"   r3   r$   r%   )rA   r   r   r&   r   r(   s         r)   list_fonoaudiological_reportsrC   i   s     -b1'*<*<=dD!!dhhx&8G&CF,Q,Q$((9>W*Xbf\   (:(:CG?MjE
  	
  (M(M(STWXYTZS[&\fjX
  	sA   C"A9B# =C">$B# "C"#
C-'CCC"CC"c           	        #     [        U5      nUR                  XR                  SS95      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS	.S
9$ [        [        R                  SUR	                  SS5      SUR	                  S5      0S	.S
9$ ! [         a2  n[        [        R                  SS[        U5       3SS	.S
9s SnA$ SnAff = f7f)u0   Actualiza un informe fonoaudiológico existente.T)exclude_unsetr   r   r6   r   zError actualizando informeNr   r   r/   z Informe actualizado exitosamenter   r   u-   Error actualizando informe fonoaudiológico: )r   updater   r    r!   r   r   r:   r3   r$   r"   r%   )r   r   r   r   r&   r'   r(   s          r)   update_fonoaudiological_reportrG      s     -b1IIDI$ABfd##

8(<(GF,E,E&**Y@\*]gkP   (:(:fjj<^&_6::d+,E
  	  (M(M(UVYZ[V\U]&^hlX
  	sA   C?A>C  C?<C  ?C? 
C<
'C71C<2C?7C<<C?c           	        #     [        U5      nUR                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      SS.S9$ [        [        R                  S	UR	                  SS
5      SS.S9$ ! [         a2  n[        [        R                  SS[        U5       3SS.S9s SnA$ SnAff = f7f)u?   Elimina lógicamente un informe fonoaudiológico (soft delete).r   r   r6   r   zError eliminando informeNr   r   r/   zInforme eliminado exitosamenter   u+   Error eliminando informe fonoaudiológico: )r   deleter    r   r!   r   r   r:   r3   r$   r"   r%   r>   s         r)   delete_fonoaudiological_reportrJ      s     -b1#fd##

8(<(GF,E,E&**Y@Z*[eiP   (:(:fjj<\&]gkE
  	  (M(M(STWXYTZS[&\fjX
  	sA   C!A1B" 5C!6+B" !C!"
C,'CCC!CC!N) fastapir   r   r   fastapi.responsesr   1app.backend.classes.fonoaudiological_report_classr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   sqlalchemy.ormr   fonoaudiological_reportspostr*   r!   intr4   r;   r?   rC   putrG   rI   rJ        r)   <module>rX      sW   . . * Y * > A  A "$&
$	% 
 x( &&=>&/
% 	 ), 23 &&=>&/ 	 4. 56 &&=>&/ 	 7* g& &&=>&/ 	 '* s#*D*F%&=>&/' 	 $. g& &&=>&/	
&  		 '.   ) &&=>&/ 	 *rW   