ó
    M÷›jÞ  ã                   ó>  • S r SSKJrJr  SSK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  SS
KJr  SSKJr  SSKJr  SSKJr  \" SS/S9r\R9                  S\S9\" \5      4S\
4S jj5       r\R9                  S5      \" \5      4S\
4S jj5       rg)z4Admin dashboard summary counts + chart aggregations.é    )ÚdateÚ	timedelta)Ú	APIRouterÚDepends)Úfunc)ÚSession)Úget_db)ÚState)ÚDistrict)ÚCenter)ÚDoctor)ÚPatient)ÚMeasurement)ÚDashboardStatsz
/dashboardÚ	Dashboard)ÚprefixÚtagsz/stats)Úresponse_modelÚdbc           	      óf  • [        U R                  [        5      R                  5       U R                  [        5      R                  5       U R                  [
        5      R                  5       U R                  [        5      R                  5       U R                  [        5      R                  5       S9$ )N)Útotal_statesÚtotal_districtsÚtotal_centersÚtotal_doctorsÚtotal_patients)r   Úqueryr
   Úcountr   r   r   r   )r   s    ÚL/var/www/html/health-monitoring.indevconsultancy.in/app/routers/dashboard.pyÚdashboard_statsr      sw   € äØ—X‘Xœe“_×*Ñ*Ó,ØŸ™¤Ó*×0Ñ0Ó2Ø—h‘hœvÓ&×,Ñ,Ó.Ø—h‘hœvÓ&×,Ñ,Ó.Ø—x‘x¤Ó(×.Ñ.Ó0ñð ó    z/chartsc                 ó¢  • U R                  [        R                  [        R                  " [        R
                  5      5      R                  [        R                  5      R                  [        R                  " [        R
                  5      R                  5       5      R                  5        VVs/ s H  u  pU=(       d    SUS.PM     nnnU R                  [        R                  [        R                  " [        R
                  5      5      R                  [        R                  5      R                  [        R                  " [        R
                  5      R                  5       5      R                  5        VVs/ s H  u  pBU=(       d    SUS.PM     nnnU R                  [        R                  [        R                  " [        R
                  5      5      R                  [        5      R                  [        [        R                   [        R
                  :H  5      R                  [        R
                  [        R                  5      R                  [        R                  " [        R
                  5      R                  5       5      R                  5        VVs/ s H	  u  pbXbS.PM     nnn["        R$                  " 5       nU['        SS9-
  n	U R                  [        R"                  " [        R(                  5      [        R                  " [        R
                  5      5      R+                  [        R"                  " [        R(                  5      U	:¬  5      R                  [        R"                  " [        R(                  5      5      R                  5       n
0 nU
 H5  u  pÂ[-        US5      (       a  UR/                  5       O
[1        U5      nX+U'   M7     / n[3        S5       HP  nU	['        US9-   nUR5                  UR7                  S5      UR9                  UR/                  5       S5      S.5        MR     UUUUS	.$ s  snnf s  snnf s  snnf )
z<Aggregations for the dashboard graphs (patients & readings).ÚUnknown)Úlabelr   é   )ÚdaysÚ	isoformaté   z%d %br   )Úreadings_by_test_typeÚreadings_by_statusÚpatients_per_doctorÚreadings_last_7_days)r   r   Ú	test_typer   r   ÚidÚgroup_byÚorder_byÚdescÚallÚstatusr   Ú	full_namer   Úselect_fromÚ	outerjoinÚ	doctor_idr   Útodayr   Ú
created_atÚfilterÚhasattrr&   ÚstrÚrangeÚappendÚstrftimeÚget)r   ÚtÚcr(   Úsr)   Únamer*   r7   ÚstartÚrowsÚper_dayÚdÚkeyr+   ÚiÚdays                    r   Údashboard_chartsrK      s  € ð —H‘Hœ[×2Ñ2´D·J²J¼{¿~¹~Ó4NÓOß	‰”+×'Ñ'Ó	(ß	‰”$—*’*œ[Ÿ^™^Ó,×1Ñ1Ó3Ó	4ß	‰‹ðôò‰DˆAð —.�y¨1Ô-ñð ñ ð —H‘Hœ[×/Ñ/´·²¼K¿N¹NÓ1KÓLß	‰”+×$Ñ$Ó	%ß	‰”$—*’*œ[Ÿ^™^Ó,×1Ñ1Ó3Ó	4ß	‰‹ðôò‰DˆAð —.�y¨1Ô-ñð ñ ð —x‘x¤× 0Ñ 0´$·*²*¼W¿Z¹ZÓ2HÓIß	‰”VÓ	ß	‰”7œG×-Ñ-´·±Ñ:Ó	;ß	‰”&—)‘)œV×-Ñ-Ó	.ß	‰”$—*’*œWŸZ™ZÓ(×-Ñ-Ó/Ó	0ß	‰‹ðôò‰GˆDð Ô#ñð ñ ô �JŠJ‹L€EØ”I 1Ñ%Ñ%€Eà
�‰”—’œ;×1Ñ1Ó2´D·J²J¼{¿~¹~Ó4NÓOß	‰”—	’	œ+×0Ñ0Ó1°UÑ:Ó	;ß	‰”$—)’)œK×2Ñ2Ó3Ó	4ß	‰‹ð	 	ð €GÛ‰ˆÜ& q¨+×6Ñ6ˆa�k‰kŒm¼CÀ»FˆØ�‹ñ ð ÐÜ�1ŽXˆØ”i QÑ'Ñ'ˆØ×#Ñ#Ø—l‘l 7Ó+°g·k±kÀ#Ç-Á-Ã/ÐSTÓ6UÑVö	
ñ ð "7Ø0Ø2Ø 4ñ	ð ùóaùóùós   Â0P?Å<QÊQN)Ú__doc__Údatetimer   r   Úfastapir   r   Ú
sqlalchemyr   Úsqlalchemy.ormr   Údatabaser	   Úmodel.stater
   Úmodel.districtr   Úmodel.centerr   Úmodel.doctorr   Úmodel.patientr   Úmodel.measurementr   Úschemasr   Úrouterr?   r   rK   © r    r   Ú<module>r[      s”   ðÙ :ß $ç &Ý Ý "å Ý Ý #Ý Ý Ý !Ý )Ý "á	˜,¨k¨]Ñ	;€ð ‡�ˆH ^€Ð4Ù")¨&£/ñ ˜ô ó 5ðð ‡�ˆIÓÙ#*¨6£?ñ 9˜ô 9ó ñ9r    