From cc730223e0b46435d11ac3d6c632c8f5dca8394f Mon Sep 17 00:00:00 2001 From: yaso-meth Date: Thu, 20 Jun 2024 12:52:35 +0200 Subject: [PATCH] Create Delete patient API & add functionality to delete patient on edit screen --- .../lib/pages/patientEdit.dart | 69 ++++++++++++++++-- .../__pycache__/patients.cpython-310.pyc | Bin 4659 -> 5242 bytes backend/routers/patients.py | 25 ++++++- database/#ib_16384_0.dblwr | Bin 196608 -> 196608 bytes database/#innodb_redo/#ib_redo10 | Bin 3276800 -> 3276800 bytes database/binlog.000014 | Bin 7365 -> 8514 bytes database/ibdata1 | Bin 12582912 -> 12582912 bytes database/mysql.ibd | Bin 32505856 -> 32505856 bytes database/patient_manager/patients.ibd | Bin 131072 -> 131072 bytes database/undo_001 | Bin 16777216 -> 16777216 bytes database/undo_002 | Bin 16777216 -> 16777216 bytes 11 files changed, 88 insertions(+), 6 deletions(-) diff --git a/Frontend/patient_manager/lib/pages/patientEdit.dart b/Frontend/patient_manager/lib/pages/patientEdit.dart index 575b3a97..e622cb1b 100644 --- a/Frontend/patient_manager/lib/pages/patientEdit.dart +++ b/Frontend/patient_manager/lib/pages/patientEdit.dart @@ -32,7 +32,8 @@ class _EditPatientState extends State { final medSchemeController = TextEditingController(); final addressController = TextEditingController(); final docOfficeIdApiUrl = "http://localhost:80/docOffices/user/"; - final apiUrl = "http://localhost:80/patients/update/"; + final apiUrlEdit = "http://localhost:80/patients/update/"; + final apiUrlDelete = "http://localhost:80/patients/delete/"; late int futureDocOfficeId; late String userEmail; @@ -60,7 +61,7 @@ class _EditPatientState extends State { print(futureDocOfficeId.toString()); print("Here3"); var response = await http.put( - Uri.parse(apiUrl), + Uri.parse(apiUrlEdit), headers: { "Content-Type": "application/json; charset=UTF-8" }, @@ -89,6 +90,37 @@ class _EditPatientState extends State { } } + Future deletePatientApiCall() async { + print("Here1"); + //userEmail = getLoginUserEmail() as String; + print(userEmail); + print("Here2"); + await getOfficeIdByUser(docOfficeIdApiUrl + userEmail); + print("Office ID: ${futureDocOfficeId.toString()}"); + print("OPatient ID No: ${idController.text}"); + print("Here3"); + var response = await http.delete( + Uri.parse(apiUrlDelete), + headers: { + "Content-Type": "application/json; charset=UTF-8" + }, + body: jsonEncode({ + "id_no": idController.text, + "doc_office_id": futureDocOfficeId, + }), + ); + print("Here4"); + print(response.statusCode); + if (response.statusCode == 200) { + Navigator.of(context).pushNamed('/patient-manager', arguments: userEmail); + String message = + "${fnameController.text} ${lnameController.text} Successfully Deleted"; + messagePopUp(message); + } else { + messagePopUp("error ${response.statusCode}"); + } + } + Future getLoginUserEmail() async { userEmail = (await Supabase.instance.client.auth.currentUser?.email.toString())!; @@ -156,9 +188,36 @@ class _EditPatientState extends State { icon: const Icon(Icons.delete), alignment: Alignment.topRight, onPressed: () { - // Navigator.of(context).pushNamed( - // '/patient-manager/patient/edit', - // arguments: widget.selectedPatient); + showDialog( + context: context, + builder: (context) => AlertDialog( + title: const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.warning), + Text("Warning"), + ], + ), + content: Text( + "You are trying to delete the patient ${fnameController.text} ${lnameController.text}.\n\n" + + "Please note that this patient will be deleted permenantly and can not be retored\n\n" + + "Would you like to delete patient?"), + actions: [ + TextButton( + onPressed: () { + deletePatientApiCall(); + }, + child: const Text("Yes"), + ), + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: const Text("No"), + ) + ], + ), + ); }, ) ], diff --git a/backend/routers/__pycache__/patients.cpython-310.pyc b/backend/routers/__pycache__/patients.cpython-310.pyc index cd0a9bc83d4aaedbffc298a6ec34306330840147..d14d565b490389c67efffbadbaabf85f21e6fb05 100644 GIT binary patch delta 1284 zcma)5&2L*p5Z~GN;b;5VeNL0QNgU_p!)Xjj?4*R!Dn)GwEl{{tDcmxW0LwiI|A*FcFvbJ)`8x=xRc^A|aByTpW_g zG8djm?U?tVbSUJy+T7ug>lQsB=Y`ynHkTGhcNj*bLThi^+80Lji%b~Nh1_9rZ2-xv z7~D04FJrjakQff>Zlrs}NITS*apXotF653Nmlk6k&PDE+7!SFl0zP2*d}9i>x$ZZ5 zPgk>eYRO6U2|rjq@OrBU5HuwFX!9I zH;6q+Kx?Q|9Vt}%Nu5L3B;mCFF8XTvO%(Iy!L-Dk(f>qqa7TNwL73OY*wg=;`I}be zGx5nxnAuWqk>$XyTj{@uAA>LTkMTiR(0|0Uwom4f#`F0107H5&F#yB*r^Ix$b0_+W zF~ilgo=j%abRUmxb&g^VWY!-gXW<9^Rq`xcZ2X;k2(Yj3db#l-^xIFLTUuF@!VfC` z)pfBHNPkf-SCml0l;u3R=wH17`yEm*=x5##{H7DBw`Z=Pp_VGNi=kQ&VL23*0qrlp zRuwSz3mU3h+INRH*{V@zt7e&Rm^G))A6RvxZtihl*VxT2lLhvj0rJ#84Z7ju=Gw^cm`@H9znfvopC#BW{0og^L zZ=ajhz37%25q`V2Ms7Z}rBwyX*pHRAfCF}*Dqt0B8=hxqS>-I)V>)MjIK-L8nbBkY zIK1Ja9YOAzJ@**zIF1K+hfY}^9;7USqir{i*)rWV9LE;NA&L#0=(WadKZQwrg0p^% zmRy-sXBn*voqL`i2#rHYoIpuZ{V_H zTi5JLonVq+}Ipts?{F!QuuG|5{q4iZ9ReZ;e$ReE>a^ChUcM`Y}b9; zc8JLmlT2orTwpRsrR!R1_6Th9MZ} E4}DFu*#H0l diff --git a/backend/routers/patients.py b/backend/routers/patients.py index f345cce4..8ac344e8 100644 --- a/backend/routers/patients.py +++ b/backend/routers/patients.py @@ -29,6 +29,10 @@ class patientUpdateRequest(BaseModel): address: str doc_office_id: int +class patientDeleteRequest(BaseModel): + id_no: str + doc_office_id: int + # Get Patient By ID Number @router.get("/patients/{id_no}", tags="patients") @@ -225,4 +229,23 @@ async def UpdatePatient(itemRequest : patientUpdateRequest): db.commit() cursor.close() db.close() - return {"message": "Successfully Updated Record"} \ No newline at end of file + return {"message": "Successfully Updated Record"} + +# delete Patient on table +@router.delete("/patients/delete/", tags="patients") +async def DeletePatient(itemRequest : patientDeleteRequest): + db = dbConnection.dbConnect() + cursor = db.cursor() + query = "delete from patients " + query += "where id_no=%s and doc_office_id=%s" + patientData = (itemRequest.id_no, + itemRequest.doc_office_id) + try: + cursor.execute(query, patientData) + except Exception as error: + raise HTTPException(status_code=404, detail="Failed to delete Record") + #return {"query": query, "message": error} + db.commit() + cursor.close() + db.close() + return {"message": "Successfully delete Record"} \ No newline at end of file diff --git a/database/#ib_16384_0.dblwr b/database/#ib_16384_0.dblwr index 1c66f5617d1ca291bd50db158b23bead365faa03..96d2c5fb349fa478cae96b91598a5602a6e146c9 100644 GIT binary patch literal 196608 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 literal 196608 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 delta 29500 zcmeIuF-ikb5C-79=O&I(7c9lb+#rR8onFIIu(Y+6)nZZyl-y#8jj3!y4&e>FgbTq- z$XCoT{69?bb=|IX!>rp{ukJTz+xk<+ql^CQe19+Jvu0=(f6eXN^Yv?Fl#H5jkkMp} zGbR~_8AE=QG0iy6ILSEujJA2Gqs40S*uH$so=VgAcQ^Z2o6BweE;a!I1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly WK!5-N0t5&UAV7e?e-&8H-+uvlP^tL< diff --git a/database/binlog.000014 b/database/binlog.000014 index 8b985b3dbf03c0e8b069515c82faa8c3dc58d64b..07028e438ffdf70aed24057383a905bb6f7a108e 100644 GIT binary patch delta 545 zcmX?VdB|zQQ5pVyY$a(*j0_A6{y;1uJNY8BoVg&72?9b8ilOD?v)BI8Y=1f#*H|(# z$ozAE1=7U?(iH*3IkF5491K~ElMgW23p*FHh=OE=L9)p}d|q}kBU^y5%cMi`AaMnd zcmfdX%S|>E7M}c$#mZ<8=bQ$RoB&8p9*F(qfCR%MP7uk!aK|WV=Xanq+?jLbz|Mp@ zPZ*+%L8K$}J;<3=U}s9_{+b8U1$X9GprITLxe#ZDYn(3z$-YnUpte~WFfgoGAF>vt8t(8DAlEZ|hdO+Y*k;uVP9%qm zD}WsicQDi_hn*dw0dR*eI=qboqzmrwdU?(wNEYt!OA26z$2zTO1Brvf l7vykdMTEnR(H-6yc-I}I8t!l>MUY#1xIiQ@#19*K0RW#obxHsL delta 7 OcmX@)bkuUgQ5gUaR0EU% diff --git a/database/ibdata1 b/database/ibdata1 index 2db0c7392e99d9e33aa0a3f7e60bd646c42a9b51..41b6a88b5fc71b1285ebe7a238cb1e5a21d9ad50 100644 GIT binary patch delta 638 zcmX|%XIqT{06_11DcR$qo0U!W-nut3Dl)T^?7jEu2*=)%jI2bqLNfAGeD*K6U!3PT zpUwf2Nmv!cqrYnlQ$wLp(m($b4(I);kH&*YW{_Q197KZhSV_>3l2{W-0trhKX(~yQ zEX^cEnoA35DXpZnw2`*bPTETciAYE3B%LKyqLLSt`q9xvY?tvPueNwG_!3DVDXePS(o?*(jT2 zvuu&AvQ4(j4%sQYWVh^*y|PdC%K`!-DJ6oOl2SP>XXLCX=j6Ox zkc)CjF3T0UD%a$?+>o1cOKwY<+>vs*D;082?#lytD3$U^9?KJXD$k@!o=dg7ke5;; oujIA7k+)0fQBko43~W@yyz^l^K7{Oz zbIx4Ncl7~D#H|Wq(cgdmR)#{M#76%U4yPB?M`J-GGsvhb2qHm6R#DK99G}LM1QM16 zX(EY|Buyn*nn`nMAuXkqw3ar~R@zB>iAV?OD4nFUM5T*#m2T2qdPq-6kzUeU`bb~t zC;erB43t4KSW;z(q{&bjCc|ZfjFeF_TGC~VjFoXRUNU5YOq5A7Su!O{Vv;RWWU5S) z=`urR$}E{Jb7Zc}llihha%7<_l3ZCVOJu1mljX8PR!W|%l6+Y$Yh9FT)@NDj*pIV#8GxSWuaa!QH>IW5I* diff --git a/database/mysql.ibd b/database/mysql.ibd index a5004352b7b0cbc49a48f224f983d1e3c41ff56d..7b47a00b0cded48ed525c1779db53faf5c8ce0e0 100644 GIT binary patch delta 2145 zcmY+=1yGcG6a{d;r4i~GmSI7SZo9a+xPM7``gSpyf-gEOp~e@Jk=0?T zVLYnh?;LZM>qop9qY01Hr$ zL0`}h%m8KtGl6C>GnfU;3R=KyV0JJEm=nwe<_7bC{$O4(ADABu01JQx!9rkRun1Tb zECv<_OMoT8QebH?5G(_h1wtB^dSHDp9BcqK1RH^k!6sl+uo>7Ki~w7JEx}e`Yp@O27HkK$2Rncr!A@XjunX7~ z>;^`H-N7iZ2iOzr1@;E}fPKM!V1IA`I1n5J4hDyS(cn;U7&sgp0gePmfuq4O;8<`R zI3Cn_Cx9{FM9>CK0s&42r+`zzY2b8l1{e#@1ZRP>!8zbua2_}xTmUWv?cgGCF}MU= z3N8begDb$5;3{x6xCUGc#)0d=_233@Be)6N3~m9pg4@9D;0|ynxC`73#)Esnz2H93 z0qzG6fCs@t;9>9xcoaMa5K*N+;^^FPTT_sQ>@~ delta 2145 zcmY+=1yGe~7zN<_UqL`GU?5(xP%*F&yT$JAE(E(f5wFMYxVEC$ih+6!)MFQ52L^Tr zyX$tj=PJ9id^69?Kj(Y@GxNO>5%i95iZ(*5pReAJF_}!RUs8|0O=fe^LJn()@x^TT zI;^#gCsqBOW6pRP`j*v1`n2PDQXJL@GRlFy07CjWa}j zjia6#0d}7RqfTm^an;v2G{NYZ+H7&8X--NoLQ`iwlmBflW*?boR8Eb(-v8I^NKQ2T zg58}jFq;FzZDw0Kn~TlWmfq%ObGLceGT1UkTOzC-KF58~3rnYYp>ZR-c4S##_VG2e zqg?5{oXgQMhYjB}%ziA=Qo+aS+@7Dui*FYu7w1jvRF^pcu?t;#Sv`lEl1#mwaZU}i82m=*K^vw^;#W~^Wi&=1TB<^pqrdBD7&KbQ~94;BCez=B{QurOEz z31eOAW!O~zEuq;>(EDu%yD}t54%3u|+Dp(Dy4%Prez?xt!ur^o+ ztP9oy>w^uzhF~MGG1vrb3N{0qgDt?8U@NdS*amD1wgcOP9l(xYC$KZv1?&oT1G|Gg zz@A_)us0YA_5s7daIi1f59|*P00)ADz`@`Ua40wo91e~EM}nik(cl;1n7F-9e2RDFG;6`v07!7U)w}4y0ZQyor2e=d51?~o8z&+qza38oIj0F#X z2f;(213U~K0gr;mz&P+Ycmg~L5PVR?=G9NLy(q?WKcslupuFx=2^)Cf%in^psxGTSBFegh{ycm44D+ z2FO4eB!gv$43%LrTt>)986~4-jEt3WGF~RgM42R$Wr{?|REd;nVw33tnISV}mdutp zGFRrwd|4n1WsxkFC9+hO$#SvF3Rx+uWVNi3wX#mu%La*(jj~CiWwUINt+GwF%MRHo zyJWY-$R61%`((ew$^khjhr}U=<%k@WV-hFF<%FCR$|*T5XXLD$lk;*xF3KgjELS96 z5+qTs$~CzzH{_<=lG}1e?#ew$lKb*N9?Bz0mdEl$p2{6MtAe(`S$w$|9KZpedtPCt{Y7L^yx{Q%P5mq1;*lNLe zo+&H0fq{V=q)1-6iGhKUi&3C~!N3wEzybmc3qh(fqi=+Gh@4r2gtb~=joSUS_+h5MRm6K4|HcUrZosNTw>q@ zsRd#IAO-??hv^OujLqUQAX^$hUI4n2fdR@BpMJ}MQJax{JDVfpOS|cB>lryXlR*|T TF?s*kc+gv8;{_Wiwq*wZsKZkn delta 331 zcmZo@;Aj9M3-xV!dJGHBstpVb+#p5r(oGBuj9iQY4GadBtjsJdK*YiVl5t@0XkcLA0Wsy}K#HUp1xiwj zOVBZrP-<~X3CJ9f9uQz-VBpwZ$jsPo;{kFm$a%UcSLJ{*tfrgjVUQ7w zaSTjAmkNT|K!@l}cW_{A7Uu)m(g5-T3(%b~9?$e!4vgB2EZf-}8DH877BD(7axq+D XNCw%-#3b{1<3VqYjTda7*p?jt`d&<4 diff --git a/database/undo_001 b/database/undo_001 index d401acdeb84953b241bdf3d2430ac6de7d2e7d50..c9fa71e036daf32f8751c41206481c162475155c 100644 GIT binary patch delta 1627 zcmZ9L37A%66vywq^ELC8)TlIH>(`=Yw3v~!Ow;tA8dF4!H43GLNP9_zQ^rq`G)6v3 zqB4aPC1cGfOUP1|BxwbF`iL&`2db(4N;NWpyO6gOARRqx%M^ zz`A76#!Wt;-tp+(+nvNpOIcaj0e>H>`1Y^jW;heeW#IGeUh+y`&IoKJ`Q{y|S(ILu z|j-8Cvz-nU2*eO^otTt8$I~A*orC<@P9#$V~ zfHlM#VU4jU)&y&cHN%=?r(rFymRKs5hMkVJ!dhc(u(sG4SUQ%0or$%>&cfPbXJZ|( zj#wwGGnR>U!LqQfST@$J*kqC0>dtHJ-zrqui$Di2wK|eBpo!(?baFm0(qaMY|wXEq2HrMx));>OI<{`(cw8Y!$rS46u zfZR6RU}E+5Zk{lH_h8swaE2W zv`VYf$8ieM1821Hj%j}V25xf59H+Wd!-?zazRc*Hy4QcS-6`RKWH3zy=M>}>^jzG_ zvg+-b)YcDc=KOC36Lcc&goO!*kEiYJiDg-@P9blPv4f$!8MPA*_jjCHfj1gi>ldwGb$2YMdtTGV)rJioHE`UpAtT0(^%BDs zOhQSap<@<}PFUzu4`qb|q5&~Vdr^8WrRNow_Ewv1*>lJHnKCM3;wqTR6Y0D8?&Me- zC0e66<1EQhvWKaCpO&j+Iusr#ry0|{;$v7f<8Ob%ln*C(dU%% zKD+ro*&|(xl0Cu!wfGOB^U(#U54sRtg!0kF=n`}(x(r>8u0Va!mFOze5A{b^qifK$ zXaE|Bu0w;+U^D~`Mc1Pn&@gl(x(N+OH=_|~BpQWAqcLbK8i&TC3FsCy5#5R=p~+|p zx((fq?m&j7qG{+(RDkY6pu5p@Gy~m(?nN`veP|ZCAI(OE=mAuO9z=7{LnwwGMvtJm zXdZeL%}0-+1?X|~1X_p|p~dJ)RE(COrRXX2GJ&#tRRp$(D&#EvJv4iT*-I(ckDFbgWoqrT+rKwjgf+ delta 17491 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 P|2TWh*^>>duJ-=`GT9B5 diff --git a/database/undo_002 b/database/undo_002 index 29b07173c60ce59e47201de740c0f9bcba9277da..20f47e2cee50a45f4fa826e74e776515862f7a7e 100644 GIT binary patch delta 1872 zcmZ9M30M_X6vyw(o40}BLwJfMJw+-@b0Jg`#6PHwVDDvRyIES%s->3gc1-%`o@6+t zP?|(!WtkN%T3{4bmbO}%7G_pjmMv(R(hLvyp55=e%bfo`zkBZa?imsBiPKB861~J# zVpO_oQxJrF#0+n6++iKo8}vo1j(q^Eq1`snUbI#!WNo?fqTb zee8vv@N+-F4D6NEmtY4am1*lRv452 z&oQf#_56rZF2^3~w^1prmv^r<(_?nECe1a|f?AVa5muV3yQAmZx}DOd7Cl)vjN)kt zo83O!=(Hr2X07#@-BR*hDG{X`j;$5x+u*oN4C)oG^00Cl-5n`P(<>aQueD;HX(ZS< zZ#&LfJI~Atx>Ahfh%#bn{`J9EvDU zEF*5Eb8HVQu)rJ;G)mpYVdafw7^SUxLZQC})EHOPCukgUABZSlEGT}N)ws|cY#m-; z4hy=AJ+s2f9}999NA*x*p}PfyMP`=Of1w!{bRY00MpRrZtwW8odwS3_%ey+P;$uOc zS&o#Qq0NCdNGQr}3o9?^ z8|W{HsKi+J#C^`Oy{$2&W=_!8;I9v>j^sZgh`Ad3W*|OG;tOYCL+Yy#2Dfn;#}f9Vk~h! zaRG55aS?GbaS3rLF^;&57*AYITtQ4ACK6W?R}ohe#l$tlwZwJA^~4Rtjl?8kGI0}e zGckpjN=zeeA#Nq66Son!6L%1I5_b`I6Za4^h?F_)M} z%qJEQ3yBAbMMNp_5V4qem?$Hb5EikNc!XF+EGNo|3gS`XF=7R=l6ah0MN|?`5LLvJ zL^bggv6^_Ac!qeESVKHVJWs48ULe*HFA^^iFB3JyE5xhBYsBlsdSV0d2Jt3QOVkk? ziMNP);%(v`qJh{%yi2@CyiaTDL~{7(Eq{7L*pG!X}h VL&V?2Kg40;U*ZUHvDQoRnsTZ45crG8QI57F|tkLnaq?udm%Bl5DD3-7voWOt0wWhIFOO!;WM=Yq!ojqk4kVS=a8#7T-maQ$#r2154$J7o@wUkb; zPsTSE&93R$);}qoS6!L6COPSd^umgqed;n1IpBiSlAX@Z&W?gqQj}CRmQj*vtfh2d zcH-cs#^RdNL9JtxY1PvwBm>gPguQDF=; z1{s?en;MnIX2xJ+b7Ko*OJgfzYop2-VpJR37#KCiP-EMcsEx9QZZoIlUcUDd()^tN zqyMv~I&$nanQU#{f9P$+N!|P;$KG{FIvPe%WMA1&M$7&(Mh=hzrCtt_gXIu8R1TA|a=08JN6I)kN{*KCa*Rxn zW92wGUM9*3a-y6hC(9{vs+=aL%Na6BCQHbfa+aJe4RVes=gJhBD(A`ha)DeZ7s