From 6e50a3f12ecc6053f470647698bc2ec97c52116d Mon Sep 17 00:00:00 2001 From: Marwan Alwali Date: Thu, 6 Nov 2025 14:27:26 +0300 Subject: [PATCH] update --- core/__pycache__/forms.cpython-312.pyc | Bin 28413 -> 29480 bytes core/__pycache__/signals.cpython-312.pyc | Bin 14866 -> 14779 bytes core/forms.py | 22 + core/signals.py | 10 +- core/templates/core/patient_form.html | 20 + db.sqlite3 | Bin 8687616 -> 8687616 bytes logs/django.log | 4154 ++++++++++++++++++++++ static/img/.DS_Store | Bin 14340 -> 14340 bytes 8 files changed, 4201 insertions(+), 5 deletions(-) diff --git a/core/__pycache__/forms.cpython-312.pyc b/core/__pycache__/forms.cpython-312.pyc index 7f28d6e1a6e674148ff8851d45ee43a0425a0ae7..e557341e361e3571b4aff3b16ba8adac29a6893c 100644 GIT binary patch delta 6222 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 L#9n^FiAVeoRncxZ diff --git a/core/__pycache__/signals.cpython-312.pyc b/core/__pycache__/signals.cpython-312.pyc index 9bc28bf2d7e4ee9a44241a1c44863c0710b83b00..c65e7e79e10e74bbf3aa7b791005cf3f09b9dabf 100644 GIT binary patch delta 2270 zcmc&!UrbwN6u%$6Ed^Tsr$8BP2MnnEGe9V^$&&IffenWvWSe8P^nP@Oatq(R9gbk| zg}7AJ-!ukEd{7@`;bpl`nwTh>7~FhNV=~YAy8dCJPbN0$FW)`) zobUY3@0@dA)j!tkU)k;X68tW#*&?@Y*@LEh8JU8$cp(5`Lv|SnRA__mkUP#-H|%Y_8KT*?2Y zurg)&?biaSr259lc2VP9iR4w^sd8Q&*|TQH6oC1Ud!>-&vz8ivnY2|_;(x@ni~?rXi(Dw=**6wu>n9c17K4mhtP5*6|Z^zm5-}jDr6CdP{kj@GuLt0^mIux&k+2Ju$yI~H+;;PP?(Mb-)6zY{( zJ8!X7w~Cr@PckJ{JSd3PwoWG9csCBGkjk(`W8pAmh8$66VjCvbgGsCr zRnvoNh#Ho;r63Dy8qQ8ywc>@K9-*opSYVJPc!{#(e710a_!1u$eqko=#O3k@QiHuS zEFnf=cam-C#jHmW+}z@5B7?l$(N9LW=4fj_1Lh60NY5U}$lPS4!ul{^5FopGeA`h$ zE+&3(d`lqhmz92U6y;&qxrdV-!`OWV*o7`>_OpE0IZAwdrLijUzSES`JAk(g19(kI z)eBM;&oh=kI0ze+9ex#4o@Ov3Qs|V3kZU?A5Wq) zcsa`mH3N^?b;F}km}DP==@#P0!1yWpy#w%^^b3Ev<}DDV!=;nHZZNTSgf4{4#eWy2 zI5jV6T^Rq)Jq|Z@d!}*@XEc%7BHks4i(3WfdHzvt(?6FkI2=^}{=1A^H8@WLG^uhH z--CoGNi$Aqk;CGAs%{H7d+JMb+=BBEkTom=gC_;`f#~ZceN%AQP2;-7!lhd2iT;0~k9AddKg<<8wf#Dk zq|#+*^TcM?4WP}Zy1#Eq6WfrO4-<(>iy%s+Ay^F{6^v@^8jt#15b~n$^QT3K`1XnK zgjkN_7hAi&8T@LsL{@GJX HWc2zA-P0Z3 delta 2284 zcmd5-T}%{L6rRh@EU@b$ivr8SE+Zf^3Mjah1rZG>RLsWoN*x%j|k*@dvfE zX<}`o33^Sf(WcneMAHY`Y?_!fF|BDIOkb9eMl+^qO&=Oxj8z|+KGdFb2Y1zKpF7EZ zbLZT1&;8DK&b|AMaU$vZ(dBXo@N7SDXXm}ITw$9-f-f8V?(bo%a=#^Q?C;!C(#ZP7 zD)xO%@u=+!g8qV_ie-S0z7E+A+Ei&AEQdrrN0knVs{J52BdE56qMCa~{8$_is)b|; zuEZzlvEG6(oKquEi3qr6P&it#SJ-D86!sD&Z+tVWbQZHaq9VSuxvznhO08a#G~9j& z&uwHe&h4gc*$P#0v9Q!BNk$?TW#^<%9E)Kd2^v?}@%(b8**8sG_Xno^fiDMU{H>R( zrv0mCyd6h+Z47 zvpwm#i|z>|zx+m-_k*6hHW>YNzX*2uuD-srMz~tz?hM+lwh+L`tV}Q|2wYQy|ADAo zT+~$F`iXI=d&9|})QeD#;6$iE@FDmSDgjLAa5Scc^s&()jnV~Zu0p6r zr~yzUIuFMS0nGeZ*hq$O1zm*3IsgNekY!1hWvZ~ze6M3E7?$G<7HikG>;Behs8RKd zzvD8U_IJ*ByPj33qRIBj#wjwj_`*PXK~vh{)fAC7;fFmEi|Wyc=`zNKxCWLZPe}v^$OjX8==716lyA-y zk!7$_>_o1JX^+K6Ml@=QQGGam(MDU@&n~}5fqAnq5l%)mJsC<+Eo6lEXmkymSFn}@ zQ`-uzNkmRn%})>?k^~x53nw*8yHVUldRawDQPDAnm&m;my;llsu}WrR%#{p>_V?ZkE* zVh%JPf!FUf9PuTu<7fyWgup3x;Ydcn;4~}U2z)-RM1jRTBSQjwuAtv}fVYJ|Sc~s7 z$mFIkNjh4<#9M^EfTL{Se+yFhsCP1&80=VOKScVaa!1aBtR^C*7>g6zE2Cm?o^dJ_CV0v@H4(Z2*g4zv z?AAih#71x!cW<(qSXQ-|mekZXnQjJqA6zcarOd0f1H33N8Lt)!Xy)z>Q$4DWSQU$a z3C>}rmmh0k5vJ_Wad`ILs`Zcq>{RVB=+|~{S*l}E!bS$zrNyVoR<>bDIT>WylFywg z?pKJQvHA5&YqJ#_Mk5{^xEHdU?L_Np7Ok%?;it7=%+P2kk!g;@sZZ<2;Ebd^jUkc5 z*}mpC$*b(Q<}I*yaQQ0}TX6kWfbqhvxNg8XmyPI%jtccD?rZ_fIT33*l-!@tXr^J! ze9Ju)PEyYB2nL*spdn-%9d$B2BU&=_SS02OINCBfn+3DMhW3ZB51x?K$`pbaDC?}M z{ee<)G8GM+#cRO6;`gGAUKa%#L;`T@ttggH!SG%9-!t4Wcw2Z-C`iutdf(|y7uNkG zDm2IfEkC@$*YZ1&Um^VLtic#jgk1=D)~JDiy+;oq97Z^afV{sBCE7N-CJ diff --git a/core/forms.py b/core/forms.py index cef59b56..9225dc5c 100644 --- a/core/forms.py +++ b/core/forms.py @@ -21,6 +21,28 @@ class PatientForm(forms.ModelForm): 'caregiver_name', 'caregiver_phone', 'caregiver_relationship', 'emergency_contact' ] + labels = { + 'first_name_en': _('First Name (English)'), + 'father_name_en': _("Father's Name (English)"), + 'grandfather_name_en': _("Grandfather's Name (English)"), + 'last_name_en': _('Last Name (English)'), + 'first_name_ar': _('First Name (Arabic)'), + 'father_name_ar': _("Father's Name (Arabic)"), + 'grandfather_name_ar': _("Grandfather's Name (Arabic)"), + 'last_name_ar': _('Last Name (Arabic)'), + 'national_id': _('National ID'), + 'date_of_birth': _('Date of Birth'), + 'sex': _('Gender'), + 'phone': _('Phone Number'), + 'email': _('Email Address'), + 'address': _('Address'), + 'city': _('City'), + 'postal_code': _('Postal Code'), + 'caregiver_name': _('Caregiver Name'), + 'caregiver_phone': _('Caregiver Phone'), + 'caregiver_relationship': _('Relationship to Patient'), + 'emergency_contact': _('Emergency Contact Information'), + } widgets = { 'date_of_birth': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}), 'first_name_en': forms.TextInput(attrs={'class': 'form-control'}), diff --git a/core/signals.py b/core/signals.py index 268d0a00..be80cfb5 100644 --- a/core/signals.py +++ b/core/signals.py @@ -25,7 +25,7 @@ logger = logging.getLogger(__name__) def generate_mrn(tenant): """ Generate unique Medical Record Number (MRN). - Format: MRN-YYYY-NNNNNN + Format: YYYY-NNNNNN """ current_year = timezone.now().year @@ -38,14 +38,14 @@ def generate_mrn(tenant): if last_patient and last_patient.mrn: # Extract number from last MRN try: - last_number = int(last_patient.mrn.split('-')[-1]) + last_number = int(last_patient.mrn[-1]) new_number = last_number + 1 except (ValueError, IndexError): new_number = 1 else: new_number = 1 - return f"MRN-{current_year}-{new_number:06d}" + return f"{new_number:06d}" def generate_file_number(tenant): @@ -63,14 +63,14 @@ def generate_file_number(tenant): if last_file and last_file.file_number: try: - last_number = int(last_file.file_number.split('-')[-1]) + last_number = int(last_file.file_number[-1]) new_number = last_number + 1 except (ValueError, IndexError): new_number = 1 else: new_number = 1 - return f"FILE-{current_year}-{new_number:06d}" + return f"{new_number:06d}" def generate_subfile_number(file, clinic): diff --git a/core/templates/core/patient_form.html b/core/templates/core/patient_form.html index a5faf418..d08a47dc 100644 --- a/core/templates/core/patient_form.html +++ b/core/templates/core/patient_form.html @@ -69,36 +69,47 @@ {% endif %}
+ {{ form.first_name_en }}
+ {{ form.father_name_en }}
+ {{ form.grandfather_name_en }}
+ {{ form.last_name_en }}
+ {{ form.first_name_ar }}
+ {{ form.father_name_ar }}
+ {{ form.grandfather_name_ar }}
+ {{ form.last_name_ar }}
+ {{ form.national_id }}
+ {{ form.date_of_birth }}
+ {{ form.sex }}
@@ -115,18 +126,23 @@
+ {{ form.phone }}
+ {{ form.email }}
+ {{ form.address }}
+ {{ form.city }}
+ {{ form.postal_code }}
@@ -143,12 +159,15 @@
+ {{ form.caregiver_name }}
+ {{ form.caregiver_phone }}
+ {{ form.caregiver_relationship }}
@@ -163,6 +182,7 @@
+ {{ form.emergency_contact }}
diff --git a/db.sqlite3 b/db.sqlite3 index 34cd64d13f2eb9d4f8c4c1905ebca47f40f048bb..ac411fef196b080caa081e4a4568c40a0a80bd3f 100644 GIT binary patch delta 1636 zcmb8vTWl0n7zgm#OQ(C8nX&b7s!Y&Z?!`drL1{7LekFtNwmlE z(ph=4GAxvNGEMC*%?G<$npxCesd+LjJqN7FtW;6$er1I5I!fyZk5Mg22oA+s#3@!+ zP73Z61R=C~l}9DWKM838343u?uIjIi#|U4&j!LLWXd>heu~wo)C2<`^>)Lhsj*~Fl z1S8tRiIo!LDy5t;X8rz?JcI)iDp`JH{_4%)+eaR3H4lj zbVQ3|kkn22R4tD&=ik7AMl_Qc4;oo5u_WQD&Y5Wv`M6>NnlR6`9s4l&qf z-(P-WN$WVBm`aX~PfQI?^p12KqrJ`f6OB1~s8chK9Pc(d`!en6$;?o0vMDosbhNwA z?aFW#o8dOlRYI`ZrhUD9`|aJ4fBn92rG7g+2|M5^*a^GfY1j?VKrPgP3VVP61qK@E zz#$F>B*26uJPXgk^H2|ap#f6R2u;uoEzk;W&<-8Y3HzW6x}gVpAq{=7A2M(N4#FXL z0S-ey9Dx_%C3qQLfuoRx0eBT&gJUoVL-0Dh0mJYnjKC=5U<{5!9>(DWOu!^e!AW=v zPQhvWO8vC4w9i*5$ih9LEUSE{Y?V(+*Q9uODRd{)7QEoi3imu0g;d~h=~txzaiHYe zl8ArM_r0$Yp|w|mDWUFEs$5G|T6JyWXpOtdE87nqIL=j5Gd0Rq_Nr|;DHbj;$qnV& z#nGyDA!i5DlZ>c%K23vLksqgbgqZA}{{sfGQaPzStP-X(uDh4D=B`d(_6vgefqkw) z{J8`lh0m-)t9ZfwxlyVO40 zApTksGRmCcs-2$RZxzR#4R&QXmN2xH;l}rhP8a{b^@aYs)9^N&ff<;EcVG?*@UGo| J_q{L9{|%%I2sZ!# delta 1322 zcmZ|OPiz!b90&0IJN-9rrlm?tDY976itIS=&3p4ttu4APt<{bNx?TScDA?N4u2`T{ zTDFqi9=x;$n1ct2CVDcSaJ(3eCqqmi9zY?|)WjQ+7|$err!^E}Oy)D0dB6F+_j`Y) zeEy?U85Y|T9WzVqyKtZPD}KD zJvouFKa6dXXJcec{+zUvZ{)v8PM%fr%BZqkNs<+HS^ZXRR{l~yR!=CGlrPnSD##i6 zlCl_dmt-yQO0pDAl;pD{Secbu8bpQ)*U(*ESMM|!c*CWvHUxc#<%ZR#Mv>9~4au=s zEFE81oRh=FInq|#$uqi$vbd=+VK|PcWjYgCO0)WEh*H;Jn#C>3S#aelxfx|xF8ZUk zW;zx#^?Ncbmm01iG%mPF&EU^p$e}31adqZWuG!SGxU=u>F%aUeE;Oc_x~&K0U&)y) z&rp4Ba+*#B<5s-yu9PUoT#iAQg<^xAYh*h3@j8(+wj-FcUXPJs)D@=7bj`9Xo6_)) zYosL^6-3vT3f&_@*HhL)%oRctwlHlLblxB*k+EKoZVMs)uOQnL!Q~sIw84n>2Q$O! zF-9%MYl82tlZ`21Q4x$UlY>zeX7mL$G|ElE@2$dgDT@};!KQF?;r22C1ypE+CfESY za39!mXf2e=&B;#X~QzIkAfx#gw zJGy6haCbg8m_I(=*E3Z(I$S99Pv!3H0}ddL4UhK0v^X6SAPey;hy6o6(jFmQ(C<>#exDmx@LfcXp@4B8Bi489Cu4A~4-3=+KeWQwv6_S9*lvEL5#_aIgGiCMU2G|1DHUL1pzq-1tS@2 ffGiG%9EN;`^vSCPxi)7A`!G+u;<=gK;4eD>V-Y&* delta 95 zcmV-l0HFVbaD;G>Sqp9eWB_RZZUAR&XOYn(lQ1*{1pxp600fh;C?c`4Sq}k2v(hND z0kbA9GXV*1Z*FA?BS2w*lVUGivtcY<1Cf&&vkeeE2>~aw3?QZmv+)sC2eSt-{Rf0~ B9k2iZ