ó
    `ô›j  ã                   óš  • S r SSKJr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  SSKJrJrJrJr  \" S	/S
9rS\S-  S\S-  4S jr\R1                  S\\R2                  S9\" \	5      4S\S\4S jj5       r\R7                  S\\   S9\" \	5      4S\4S jj5       r\R7                  S\\   S9\" \	5      4S\S\4S jj5       r\R7                  S\S9\" \	5      4S\S\4S jj5       r \R7                  S\\   S9\" \	5      4S\S\4S jj5       r!\R1                  S\\R2                  S9\" \	5      4S\S\S\4S jj5       r"g)zHPatients addressed by a doctor, and the BLE measurements saved for them.é    )Ú	APIRouterÚDependsÚHTTPExceptionÚstatus)ÚSession)Úget_db)ÚDoctor)ÚPatient)ÚMeasurement)ÚPatientCreateÚ
PatientOutÚMeasurementCreateÚMeasurementOutÚPatients)ÚtagsÚsNÚreturnc                 óT   • [        U [        5      (       a  U R                  SS5      $ U $ )uu   Strip NUL (0x00) bytes â€” BLE device names often carry null padding and
Postgres text columns reject NUL characters.Ú Ú )Ú
isinstanceÚstrÚreplace)r   s    ÚK/var/www/html/health-monitoring.indevconsultancy.in/app/routers/patients.pyÚ_cleanr      s&   € ô %/¨q´#×$6Ñ$6ˆ1�9‰9�V˜RÓ Ð=¸AÐ=ó    z	/patients)Úresponse_modelÚstatus_codeÚpayloadÚdbc                 ó¨  • UR                  [        U R                  5      (       d  [        [        R
                  S5      e[        U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S9nUR                  U5        UR                  5         UR!                  U5        U$ )NúDoctor not found)Ú	doctor_idÚ	full_nameÚfather_husband_nameÚageÚgenderÚmarital_statusÚmobile_numberÚaddress)Úgetr	   r#   r   r   ÚHTTP_404_NOT_FOUNDr
   r$   r%   r&   r'   r(   r)   r*   ÚaddÚcommitÚrefresh)r   r    Úpatients      r   Úcreate_patientr1      s    € à�6‰6”&˜'×+Ñ+×,Ñ,ÜœF×5Ñ5Ð7IÓJÐJÜØ×#Ñ#Ø×#Ñ#Ø#×7Ñ7Ø�K‰KØ�~‰~Ø×-Ñ-Ø×+Ñ+Ø—‘ñ	€Gð ‡F�Fˆ7„OØ‡I�I„KØ‡J�JˆwÔØ€Nr   )r   c                 ó  • U R                  [        5      R                  [        R                  R	                  5       5      R                  5       nU H1  nUR                  (       a  UR                  R                  OSUl        M3     U$ )zAEvery patient across all doctors (admin dashboard), newest first.N)	Úqueryr
   Úorder_byÚ
created_atÚdescÚallÚdoctorr$   Údoctor_name)r    ÚpatientsÚps      r   Úlist_all_patientsr<   +   s]   € ð �x‰xœÓ ×)Ñ)¬'×*<Ñ*<×*AÑ*AÓ*CÓD×HÑHÓJ€HÛˆØ./¯h¯h˜Ÿ™×*Ò*¸DˆŽñ à€Or   z/doctors/{doctor_id}/patientsr#   c                 óH  • UR                  [        U 5      (       d  [        [        R                  S5      eUR                  [        5      R                  [        R                  U :H  5      R                  [        R                  R                  5       5      R                  5       $ )z:Patients this doctor has already addressed (newest first).r"   )r+   r	   r   r   r,   r3   r
   Úfilterr#   r4   r5   r6   r7   )r#   r    s     r   Úlist_patients_of_doctorr?   4   so   € ð �6‰6”&˜)×$Ñ$ÜœF×5Ñ5Ð7IÓJÐJà
�‰”Óß	‰”×!Ñ! YÑ.Ó	/ß	‰”'×$Ñ$×)Ñ)Ó+Ó	,ß	‰‹ð	r   z/patients/{patient_id}Ú
patient_idc                 óÞ   • UR                  [        U 5      nU(       d  [        [        R                  S5      eUR
                  (       a  UR
                  R                  Ul        U$ S Ul        U$ ©NúPatient not found)r+   r
   r   r   r,   r8   r$   r9   )r@   r    r0   s      r   Úget_patientrD   A   sW   € à�f‰f”W˜jÓ)€GÞÜœF×5Ñ5Ð7JÓKÐKØ6=·n·n˜'Ÿ.™.×2Ñ2€GÔØ€Nð KO€GÔØ€Nr   z#/patients/{patient_id}/measurementsc                 óH  • UR                  [        U 5      (       d  [        [        R                  S5      eUR                  [        5      R                  [        R                  U :H  5      R                  [        R                  R                  5       5      R                  5       $ rB   )r+   r
   r   r   r,   r3   r   r>   r@   r4   r5   r6   r7   )r@   r    s     r   Úlist_measurementsrF   M   sm   € à�6‰6”'˜:×&Ñ&ÜœF×5Ñ5Ð7JÓKÐKà
�‰”Óß	‰”×&Ñ&¨*Ñ4Ó	5ß	‰”+×(Ñ(×-Ñ-Ó/Ó	0ß	‰‹ð	r   c                 ó  • UR                  [        U 5      (       d  [        [        R                  S5      e[        U [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      UR                  UR                  S9	nUR                  U5        UR                  5         UR!                  U5        U$ )NrC   )	r@   Ú	test_typeÚvalueÚunitÚpulser   Údevice_nameÚlatitudeÚ	longitude)r+   r
   r   r   r,   r   r   rH   rI   rJ   rK   rL   rM   rN   r-   r.   r/   )r@   r   r    Úms       r   Úadd_measurementrP   Y   sº   € ð �6‰6”'˜:×&Ñ&ÜœF×5Ñ5Ð7JÓKÐKÜØÜ˜×*Ñ*Ó+Ü�W—]‘]Ó#Ü�G—L‘LÓ!Ü�W—]‘]Ó#Ü�g—n‘nÓ%Ü˜7×.Ñ.Ó/Ø×!Ñ!Ø×#Ñ#ñ
	€Að ‡F�Fˆ1„IØ‡I�I„KØ‡J�Jˆq„MØ€Hr   )#Ú__doc__Úfastapir   r   r   r   Úsqlalchemy.ormr   Údatabaser   Úmodel.doctorr	   Úmodel.patientr
   Úmodel.measurementr   Úschemasr   r   r   r   Úrouterr   r   ÚpostÚHTTP_201_CREATEDr1   r+   Úlistr<   Úintr?   rD   rF   rP   © r   r   Ú<module>r_      sÂ  ðÙ Nß =Ó =Ý "å Ý Ý !Ý )ß PÓ Pá	˜˜Ñ	%€ð>ˆc�D‰jð >˜S 4™Zô >ð ‡�ˆ[¨À×AXÑAX€ÐYÙ9@À»ñ ˜Mð ¨wô ó Zðð& ‡�ˆK¨¨ZÑ(8€Ð9Ù$+¨F£Oñ ˜'ô ó :ðð ‡�Ð+¸DÀÑ<L€ÐMÙ:AÀ&»/ñ 	 sð 	°ô 	ó Nð	ð ‡�Ð$°Z€Ð@Ù/6°v«ñ ˜Cð  Wô ó Aðð ‡�Ð1À$À~ÑBV€ÐWÙ5<¸V³_ñ  #ð ¨7ô ó Xðð ‡�Ø)Ø!Ø×'Ñ'ð ð ñ
 PWÐW]Ëñ  ð Ð.?ð ÀWô óñ
r   