
    U+i=!              
          d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZ d dlmZ  edd	g
      Zej)                  d       ee       ee	      fdededefd       Zej-                  d       ee       ee	      fdededefd       Zej-                  d       ee       ee	      fdededefd       Zej-                  d       ee       ee	      fdededefd       Zej)                  d       e        ee       ee	      fdededefd       Zej9                  d       ee       ee	      fdedededefd       Zej=                  d       ee       ee	      fdededefd       Zy)    )	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           	        K   	 t        |      }|j                  | j                               }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	|j	                  dd
      d|j	                  d      id      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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         T/var/www/pie360backend.cl/public_html/app/backend/routes/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?
*C:4C?5D:C??Dz/list/{student_id}
student_idc           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd	      S t        t        j                  d
|rdnd|d	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	d
|d      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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A.B 2C3B C	C*CCCCCz/{id}r   c           	        K   	 t        |      }|j                  |       }t        |t              rC|j                  d      dk(  r/t	        t
        j                  d|j                  dd      dd      S t	        t
        j                  d	d
|d      S # t        $ r5}t	        t
        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  | j                        }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S t        t        j                  d
|rdnd|d	      S # t        $ r5}t        t        j                  ddt        |       dd	      cY d}~S d}~ww xY ww)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           	        K   	 t        |      }|j                  | |j                  d            }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd	
      S t        t        j                  d|j	                  dd      d|j	                  d      id	
      S # t        $ r5}t        t        j                  ddt        |       dd	
      cY d}~S d}~ww xY ww)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DIIDI$ABfd#

8(<(GF,E,E&**Y@\*]gkP   (:(:fjj<^&_6::d+,E
  	  (M(M(UVYZ[V\U]&^hlX
  	sA   DA?C D?C D	D*C=7D8D=DDc           	        K   	 t        |      }|j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      dd      S t        t        j                  d	|j	                  dd
      dd      S # t        $ r5}t        t        j                  ddt        |       dd      cY d}~S d}~ww xY ww)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#A.B" 2C#3.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   