
    HŴiQ8                     T    d dl mZmZ d dlmZ d dlmZmZ d dlmZm	Z	  G d d      Z
y)    )OptionalAny)Session)datetimedate)HealthEvaluationModelFolderModelc                   `    e Zd ZdefdZdedefdZdedefdZdde	e   defd	Z
d
edefdZy)HealthEvaluationClassdbc                     || _         y N)r   )selfr   s     T/var/www/pie360backend.cl/public_html/app/backend/classes/health_evaluation_class.py__init__zHealthEvaluationClass.__init__   s	        idreturnc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|ri d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d	|j                  d
|j                  r|j                  j                  d      ndd|j                   d|j"                  d|j$                  d|j&                  d|j(                  d|j*                  d|j,                  |j.                  |j0                  |j2                  r|j2                  j                  d      nd|j4                  r|j4                  j                  d      nd|j6                  |j8                  |j:                  |j<                  r|j<                  j                  d      nd|j>                  r|j>                  j                  d      ndd	S dddS # t@        $ r}tC        |      }d|dcY d}~S d}~ww xY w)u=   
        Obtiene una evaluación de salud por su ID.
        r   
student_id	gender_idnationality_idconsultation_reason_idprofesional_idprocedence_id	full_nameidentification_number	born_date%Y-%m-%dNagenative_languagelanguage_usually_usedconsultation_reason_detail"professional_identification_number professional_registration_numberprofessional_specialty%Y-%m-%d %H:%M:%S	procedence_otherprofessional_contactevaluation_datereevaluation_dategeneral_assessment	diagnosisindications
added_dateupdated_dateerroruB   No se encontraron datos para la evaluación de salud especificada.statusmessage)"r   queryr   filterr   firstr   r   r   r   r   r   r   r   r   strftimer    r!   r"   r#   r$   r%   r&   r)   r*   r+   r,   r-   r.   r/   r0   r1   	Exceptionstr)r   r   
evaluationeerror_messages        r   getzHealthEvaluationClass.get   sw   '	A'<=DD%((B.eg  *-- *"7"7  !5!5 %j&?&?	
 -j.O.O %j&?&? $Z%=%=  !5!5 ,Z-M-M  jNbNb!5!5!>!>z!Jhl :>> &z'A'A ,Z-M-M 1*2W2W 9*:g:g  7
8c8c!" -j.O.O#$ )3(C(C,6,K,KZdZtZtz'A'A'J'J:'Vz~^h^z^z)E)E)N)Nz)Z  AE*4*G*G!+!5!5#-#9#9YcYnYn*"7"7"@"@AT"Utx]g]t]tJ$;$;$D$DEX$Yz~5 : #*6z{{ 	AFM%-@@	As$   H%H- (H- -	I6IIIr   c                    	 | j                   j                  t              j                  t        j                  |k(        j                  t        j                  j                               j                         }|ri d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d	|j                  d
|j                   r|j                   j#                  d      ndd|j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  |j2                  |j4                  |j6                  r|j6                  j#                  d      nd|j8                  r|j8                  j#                  d      nd|j:                  |j<                  |j>                  |j@                  r|j@                  j#                  d      nd|jB                  r|jB                  j#                  d      ndd	S dddS # tD        $ r}tG        |      }d|dcY d}~S d}~ww xY w)ue   
        Obtiene la evaluación de salud más reciente para un estudiante por su student_id.
        r   r   r   r   r   r   r   r   r   r   r   Nr    r!   r"   r#   r$   r%   r&   r'   r(   r2   u:   No se encontró evaluación de salud para este estudiante.r3   )$r   r6   r   r7   r   order_byr   descr8   r   r   r   r   r   r   r   r   r9   r    r!   r"   r#   r$   r%   r&   r)   r*   r+   r,   r-   r.   r/   r0   r1   r:   r;   )r   r   r<   r=   r>   s        r   get_by_student_idz'HealthEvaluationClass.get_by_student_id8   s   '	A'<=DD%00J>h,//4467  *-- *"7"7  !5!5 %j&?&?	
 -j.O.O %j&?&? $Z%=%=  !5!5 ,Z-M-M  jNbNb!5!5!>!>z!Jhl :>> &z'A'A ,Z-M-M 1*2W2W 9*:g:g  7
8c8c!" -j.O.O#$ )3(C(C,6,K,KZdZtZtz'A'A'J'J:'Vz~^h^z^z)E)E)N)Nz)Z  AE*4*G*G!+!5!5#-#9#9YcYnYn*"7"7"@"@AT"Utx]g]t]tJ$;$;$D$DEX$Yz~5 : #*6rss 	AFM%-@@	As$   II I 	I;!I60I;6I;Nc                    	 | j                   j                  t              }|"|j                  t        j                  |k(        }|j                  t        j                  j                               j                         }|D cg c]  }i d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d|j                  d	|j                  d
|j                  d|j                   r|j                   j#                  d      ndd|j$                  d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  |j2                  |j4                  |j6                  r|j6                  j#                  d      nd|j8                  r|j8                  j#                  d      nd|j:                  |j<                  |j>                  |j@                  r|j@                  j#                  d      nd|jB                  r|jB                  j#                  d      ndd	 c}S c c}w # tD        $ r}dtG        |      dcY d}~S d}~ww xY w)zp
        Obtiene la lista de evaluaciones de salud almacenadas.
        Puede filtrarse por student_id.
        Nr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r2   r3   )$r   r6   r   r7   r   rA   r   rB   allr   r   r   r   r   r   r   r   r9   r    r!   r"   r#   r$   r%   r&   r)   r*   r+   r,   r-   r.   r/   r0   r1   r:   r;   )r   r   r6   evaluationsevalr=   s         r   get_allzHealthEvaluationClass.get_alle   s   
,	GGMM"78E%%:%E%E%ST..)>)A)A)F)F)HIMMOK> (;: 9$'' $//   %d&9&9	
 -d.I.I %d&9&9 $T%7%7   ,T-G-G  !8!8!D\` 488 &t';'; ,T-G-G 1$2Q2Q 9$:a:a  78]8]!" -d.I.I#$ )-(=(=,0,E,ETXThTht';';'D'DZ'PnrX\XnXn)?)?)H)H)Ttx*.*A*A!%#'#3#3SWSbSb$//":":;N"OhlW[WhWhD$5$5$>$>?R$Snr5  @  	!q6 	s1   BI+ GI&#I+ &I+ +	J4JJJevaluation_datac                 
   	 d}|j                  d      ret        |j                  d      t              r5	 t        j                  |j                  d      d      j                         }n|j                  d      }d}|j                  d      ret        |j                  d      t              r5	 t        j                  |j                  d      d      j                         }n|j                  d      }d}|j                  d      ret        |j                  d      t              r5	 t        j                  |j                  d      d      j                         }n|j                  d      }t        d&i d|j                  d      d|j                  d      d|j                  d      d	|j                  d	      d
|j                  d
      d|j                  d      d|j                  d      d|j                  d      d|d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|j                  d      d|d|d|j                  d      d|j                  d      d|j                  d      dt        j                         dt        j                         }| j                  j                  |       | j                  j                          	 d}| j                  j                  t              j                  t        j                  |j                  k(  t        j                  |k(        j!                  t        j"                  j%                               j'                         }|r|j"                  dz   }nd}t        dd|j                  |||j(                  dddt        j                         t        j                         d      }	| j                  j                  |	       | j                  j                          | j                  j/                          | j                  j1                  |       d#d$|j(                  d%S #  d}Y DxY w#  d}Y xY w#  d}Y hxY w# t*        $ r5}
| j                  j-                          d d!t        |
       d"cY d}
~
S d}
~
ww xY w# t*        $ r2}| j                  j-                          d t        |      d"cY d}~S d}~ww xY w)'u:   
        Almacena una nueva evaluación de salud.
        Nr   r   r+   r,   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r)   r*   r-   r.   r/   r0   r1         r   )	school_id	course_idr   document_id
version_id	detail_idprofessional_idfileperiod_yearr0   r1   deleted_dater2   z"Error guardando en tabla folders: r3   successu(   Evaluación de salud creada exitosamente)r4   r5   r    )r?   
isinstancer;   r   strptimer   r   nowr   addflushr6   r	   r7   r   rO   rA   rP   rB   r8   r   r:   rollbackcommitrefresh)r   rI   born_date_objevaluation_date_objreevaluation_date_objnew_evaluationrO   last_versionnew_version_id
new_folderfolder_errorr=   s               r   storezHealthEvaluationClass.store   s$   z	 M"";/o11+>D-(0(9(9/:M:Mk:Z\f(g(l(l(n %4$7$7$DM"&""#45o112CDcJ3.6.?.?@S@STe@fhr.s.x.x.z+ +:*=*=>O*P'$(!""#67o112EFL5080A0A/BUBUViBjlv0w0|0|0~- -<,?,?@S,T) 3 *..|<)--k:  /223CD (7':':;S'T	
  /223CD .11/B *--k: '6&9&9:Q&R ( $''. !0 3 34E F '6&9&9:Q&R ,;+>+>?[+\ 4C3F3FGk3l 2A1D1DEg1h  (7':':;S'T!" "1!4!45G!H#$ &5%8%89O%P%& !4'( #8)* $3#6#67K#L+, *--k:-. ,//>/0 $<<>12 &\\^3N8 GGKK'GGMMO)  $ww}}[9@@**n.G.GG++{:  (;116689%%'   %1%<%<q%@N%&N )""-88 +-,//$% $'||~!)!%
 J' GGNNGGOON+ $E$'' Q-(,3.2+504-P    "%!CCDUCVW "  	GG!q6 	s   2T 3R7 (AT -3S  AT %3S G+T D.S 2AT 7R>;T ST ST 	T*TT	T TT 	U'UUUr   )__name__
__module____qualname__r   r   intr   r?   rC   r   rH   dictrh   rW   r   r   r   r      sj    7 +Ac +Ac +AZ+AC +AC +AZ1(3- 13 1f~T ~c ~r   r   N)typingr   r   sqlalchemy.ormr   r   r   app.backend.db.modelsr   r	   r   rW   r   r   <module>rq      s      " # DO Or   