889 Commits

Author SHA1 Message Date
c484c643f4 Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-16 09:10:01 +07:00
85b61e2d4c update tambah column diagnosis request log 2024-01-16 09:09:53 +07:00
Linksehat Staging Server
ce9c6b198f Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-15 14:14:49 +07:00
Linksehat Staging Server
17b1ac678c Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-15 14:12:57 +07:00
ivan-sim
0c5cab5904 Update TTD 2024-01-15 14:06:24 +07:00
ivan-sim
7f031e3a48 Update TTD 2024-01-15 13:38:00 +07:00
Linksehat Staging Server
4ef4f47d85 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-15 13:10:09 +07:00
ivan-sim
74b109ee58 Update TTD 2024-01-15 12:58:55 +07:00
248456881d tambah item benefit total 2024-01-15 12:02:18 +07:00
546534e5cc hide menu Claim Submit dan Claim Report 2024-01-15 11:13:44 +07:00
Linksehat Staging Server
d125d1bb38 [Production] Build 2024-01-14 12:06:54 +07:00
Muhammad Fajar
62d5dce772 [Clien Portal] Alarm Center - Service Monitoring 2024-01-14 11:35:44 +07:00
ivan-sim
d5d5584ffa Update 2024-01-14 01:48:07 +07:00
ivan-sim
092bc6188f Update ttd 2024-01-14 01:35:31 +07:00
Linksehat Staging Server
d659e8fd4e [Client Portal] - tambah feild item benefit di service monitoring (tb fajri) 2024-01-13 19:28:42 +07:00
Linksehat Staging Server
50fbdc02bc Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-13 18:19:21 +07:00
Linksehat Staging Server
0bda72da48 [Client Portal] Penyesuaian get data alarm center 2024-01-13 18:19:12 +07:00
Muhammad Fajar
26ac5c4cc7 [Client Portal] Fix Alarm Center Query 2024-01-13 15:01:37 +07:00
Linksehat Staging Server
30cfcce4af Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-13 14:49:36 +07:00
Muhammad Fajar
1661dfc123 [Client Portal] Fix Corporate Manage 2024-01-13 14:39:50 +07:00
Linksehat Staging Server
5baa18bf5f Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-13 14:27:12 +07:00
Muhammad Fajar
30fc2201bd [Client Portal] Fix Alarm Center Query 2024-01-13 14:26:31 +07:00
Linksehat Staging Server
bc7225e8cd Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-13 14:11:56 +07:00
Muhammad Fajar
e85c62de06 [Client Portal] Fix Alarm Center 2024-01-13 14:11:44 +07:00
Linksehat Staging Server
bf82c7e83a Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-13 14:00:05 +07:00
Muhammad Fajar
a42d444b82 [Client Portal] Alarm Center 2024-01-13 13:58:49 +07:00
Linksehat Staging Server
48f74d4d1a Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-13 10:54:51 +07:00
Linksehat Staging Server
f16e1510d8 update import benefit 2024-01-12 16:02:47 +07:00
Linksehat Staging Server
118aae8e6d update import request log 2024-01-12 15:23:32 +07:00
Linksehat Staging Server
d1465ae554 update bugs fix 2024-01-12 14:19:17 +07:00
Linksehat Staging Server
bb63e3c0c0 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-12 10:36:02 +07:00
13699a3f03 bugs fix request log 2024-01-12 09:34:15 +07:00
4fe9d768b2 update 2024-01-12 08:00:33 +07:00
86d68ae43b update bugs fix import request log 2024-01-12 06:56:54 +07:00
81fb10fbf0 fitur import request log dan final log 2024-01-12 06:46:10 +07:00
Muhammad Fajar
627b038e23 [Client Portal] Cleanup Corporate 2024-01-12 02:39:03 +07:00
Muhammad Fajar
e58290dbb7 [Client Portal] Fix Dashboard change url & first default corporate & table loading 2024-01-12 01:41:38 +07:00
Linksehat Staging Server
46eda07625 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-11 14:25:57 +07:00
Linksehat Staging Server
2bd20a5742 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-11 14:00:45 +07:00
Linksehat Staging Server
1d927c0ae6 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-11 13:41:00 +07:00
52f7cacfd8 update 2024-01-11 12:54:59 +07:00
339da7f136 update 2024-01-11 12:33:53 +07:00
2318a9d844 optimize 2024-01-11 12:01:02 +07:00
Linksehat Staging Server
dc3b79430e Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-11 10:22:17 +07:00
ec6b6679bb optimize import member 2024-01-11 10:20:32 +07:00
ivan-sim
209df80458 Update 2024-01-10 15:32:44 +07:00
ivan-sim
82f66151fc Update 2024-01-10 11:59:06 +07:00
Linksehat Staging Server
f53c47f277 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-10 11:37:26 +07:00
ivan-sim
0a2c617581 Update 2024-01-10 11:22:10 +07:00
a8686c07a7 update default 2024-01-10 10:54:14 +07:00
Linksehat Staging Server
d1fcc868a9 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-10 10:46:49 +07:00
322ee1501a update no identitas 2024-01-10 10:40:41 +07:00
Linksehat Staging Server
8860f83ec9 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-10 09:46:37 +07:00
Linksehat Staging Server
cb9a9f0c71 update 2024-01-10 09:45:15 +07:00
38d6abbd99 delete no identitas 2024-01-10 09:43:09 +07:00
Linksehat Staging Server
45ecad258d Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-10 08:50:07 +07:00
4b4611c9cc Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-10 08:47:32 +07:00
66f13fe134 comment auto approve request log 2024-01-10 08:47:17 +07:00
ivan-sim
3bf77ff6e4 Update Hospital Portal TTD 2024-01-09 13:34:19 +07:00
Linksehat Staging Server
57bdfb9727 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-09 11:21:59 +07:00
ba4aa586b3 update 2024-01-09 11:16:45 +07:00
Linksehat Staging Server
147b2619c4 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-09 09:32:05 +07:00
3a60aa5206 update 2024-01-09 09:24:16 +07:00
e2be94f0d0 tambah kolom provider di final log dan request log 2024-01-09 09:15:16 +07:00
Linksehat Staging Server
095a9212e3 update request log pdf 2024-01-08 17:13:32 +07:00
Linksehat Staging Server
88baf6be3d Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 17:04:16 +07:00
ivan-sim
b5862650cb Update Hospital portal 2024-01-08 16:49:45 +07:00
Linksehat Staging Server
834c6c9c0f Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 14:45:21 +07:00
ivan-sim
1afbcdfcb3 Update 2024-01-08 14:08:04 +07:00
Linksehat Staging Server
c148b6ebb5 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 13:27:32 +07:00
Linksehat Staging Server
046193d9e2 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 11:49:23 +07:00
Linksehat Staging Server
c02b2a80cc Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 11:48:15 +07:00
ivan-sim
ac6589e424 Update 2024-01-08 11:48:10 +07:00
Linksehat Staging Server
2de59a24c4 logo request log 2024-01-08 11:47:31 +07:00
ivan-sim
8f45808078 Update Hospital 2024-01-08 11:34:09 +07:00
Linksehat Staging Server
4a6454f88c Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-08 11:06:06 +07:00
ivan-sim
55f4aafadb Update Hospital Portal 2024-01-08 09:04:05 +07:00
2de9372308 update 2024-01-07 22:51:07 +07:00
2d3e482b76 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-07 22:47:21 +07:00
ivan-sim
390352d255 Update 2024-01-08 13:26:49 +07:00
e2f9efe952 update hide foto 2024-01-07 22:47:10 +07:00
2ae0f2d19b Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-07 22:26:01 +07:00
f05716756b update fix listing final log 2024-01-07 22:25:52 +07:00
Linksehat Staging Server
2d0ff3a5cb Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-07 13:04:11 +07:00
Linksehat Staging Server
3a394c8800 Merge remote-tracking branch 'origin' into origin/production 2024-01-07 13:01:31 +07:00
5c26076806 update request log 2024-01-07 12:03:55 +07:00
0bc965f96e update field pdf request log 2024-01-07 09:20:30 +07:00
Linksehat Staging Server
474ee19f2a update bugs fix detail final log 2024-01-07 09:08:00 +07:00
43991c1069 update bugs final log 2024-01-07 08:14:38 +07:00
Linksehat Staging Server
d057021ef9 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-07 07:51:45 +07:00
ivan-sim
7ae5775919 Update 2024-01-06 17:23:25 +07:00
Linksehat Staging Server
899f1436e5 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-06 16:31:30 +07:00
Linksehat Staging Server
4b412fa5d2 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-06 16:29:27 +07:00
c99bb1cc91 bugs fix filter 2024-01-06 16:03:02 +07:00
c7ca83bd57 update 2024-01-06 15:58:13 +07:00
8e8b123f08 update bux service monitoring 2024-01-06 15:52:27 +07:00
Linksehat Staging Server
887fa4aa71 typo 2024-01-06 15:49:04 +07:00
ed10e2ad4a bugs fix alarm center 2024-01-06 15:48:06 +07:00
ae9a1f70fc bugs fix tanggal start end date alarm center 2024-01-06 15:40:33 +07:00
Linksehat Staging Server
931245cae9 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-06 15:05:32 +07:00
7db0af3bef update fix member detail 2024-01-06 14:13:13 +07:00
Linksehat Staging Server
ece4e796da Client Portal Build 2024-01-06 13:58:03 +07:00
Muhammad Fajar
aacd93fe6a Fix Member name 2024-01-06 13:52:52 +07:00
Muhammad Fajar
eb662f7c34 Fix SQL & Member Eloquent 2024-01-06 13:52:41 +07:00
Muhammad Fajar
494c13aea8 test sql 2024-01-06 13:09:15 +07:00
Muhammad Fajar
46adf39a4a commit 2024-01-06 12:39:03 +07:00
Muhammad Fajar
8d0dd6fa38 Fix SQL User Profile Client Portal 2024-01-06 12:36:29 +07:00
5c5ad8bae7 update ecard dan enrolment 2 2024-01-06 12:35:58 +07:00
Muhammad Fajar
6c83a43696 Fix Getting Family 2024-01-06 12:33:45 +07:00
Muhammad Fajar
577be2ea63 Test Sql 2024-01-06 12:23:16 +07:00
Muhammad Fajar
b865802806 Client Portal - Fix Employee Data 2024-01-06 12:17:39 +07:00
Muhammad Fajar
562f3121c5 Fix Employee Data - Client Portal 2024-01-06 11:54:34 +07:00
Linksehat Staging Server
2e852f7203 Merge branch 'origin/production' of https://dev.sismedika.online/febio/aso into origin/production 2024-01-06 11:44:12 +07:00
Muhammad Fajar
23081382ce Client Portal - Employee Data 2024-01-06 11:40:40 +07:00
Linksehat Staging Server
fe71286728 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-06 11:38:35 +07:00
a9c48f63a4 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-06 11:24:19 +07:00
eb1f215bdb fixing recode mode 2, history member plan dan register 2024-01-06 11:24:11 +07:00
Linksehat Staging Server
37b8229fc2 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-06 09:59:46 +07:00
Linksehat Staging Server
214bf5b116 update ecard 2024-01-06 09:56:23 +07:00
ivan-sim
55d5d006e3 Update 2024-01-05 17:38:12 +07:00
ivan-sim
a9c68fffc9 Update 2024-01-05 17:28:49 +07:00
c899c40ef1 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-05 17:11:59 +07:00
ivan-sim
efdc0853d8 Update 2024-01-05 17:14:19 +07:00
f410b547db update 2024-01-05 17:11:50 +07:00
ivan-sim
63e684f363 Update 2024-01-05 17:08:42 +07:00
ivan-sim
9a14690bd7 Update 2024-01-05 17:06:45 +07:00
ivan-sim
38c94a32da Update 2024-01-05 17:04:15 +07:00
ivan-sim
f6d69b8e6f Update 2024-01-05 17:03:06 +07:00
ivan-sim
bc0d29f42a Update 2024-01-05 17:01:26 +07:00
251c8509be Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-05 16:48:14 +07:00
ivan-sim
f9075b2bd2 Update Revisi Hospital Portal 2024-01-05 16:55:07 +07:00
e45a4b6f7b update bugs fix record mode 2 2024-01-05 16:48:03 +07:00
7d729f295b Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-05 12:23:05 +07:00
87f2788cdd update bugs fix medicine, user record update-delete, user login 2024-01-05 12:22:56 +07:00
ivan-sim
723d4030ab Update insert 2024-01-04 15:34:39 +07:00
ivan-sim
cf3280cd7a Update add provider 2024-01-04 14:15:17 +07:00
Muhammad Fajar
f208f0b133 fix employee data export 2024-01-04 08:39:53 +07:00
Linksehat Staging Server
3580c93c02 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-04 06:36:47 +07:00
Linksehat Staging Server
2e7ab0e1a1 update ecard dan index claim submit 2024-01-04 06:33:32 +07:00
7c820547c0 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-03 17:06:15 +07:00
baabebe9ed update 2024-01-03 17:05:25 +07:00
82b155fd70 update 2024-01-03 17:03:49 +07:00
ivan-sim
b5afefd71d Update Export Members dan Hide client portal 2024-01-03 16:57:28 +07:00
Linksehat Staging Server
a157c41462 update client 2024-01-03 14:58:25 +07:00
ivan-sim
a9a342f6dd Update Add Provider 2024-01-03 14:37:15 +07:00
Linksehat Staging Server
0b79c76428 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-03 11:48:35 +07:00
Linksehat Staging Server
c68b1f3e61 update composer 2024-01-03 11:48:28 +07:00
Linksehat Staging Server
bdf1c664c5 update 2024-01-03 11:46:52 +07:00
700dbff199 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2024-01-03 11:41:32 +07:00
4e096715c5 update 2024-01-03 11:41:24 +07:00
Muhammad Fajar
290a18737d up 2024-01-03 10:42:22 +07:00
Linksehat Staging Server
2800da9255 Merge remote-tracking branch 'origin/staging' into origin/production 2024-01-03 15:02:22 +07:00
Linksehat Staging Server
f6258fb0df update 2024-01-03 10:27:15 +07:00
Muhammad Fajar
2839d537bd client portal update 2024-01-02 23:29:05 +07:00
ivan-sim
519c8e5ed8 Update FINAL LOG 2024-01-02 16:23:23 +07:00
ivan-sim
3a0c7fc06a Update LOG Awal 2024-01-02 15:47:10 +07:00
Linksehat Staging Server
4e988200b2 update 2024-01-02 14:05:48 +07:00
Muhammad Fajar
df4bd6946f hide notification dashboard & add search employee data 2024-01-02 11:31:39 +07:00
Muhammad Fajar
b7ff05bc87 hide notification 2024-01-02 08:56:26 +07:00
Linksehat Staging Server
4135da3103 client portal build 2024-01-01 01:58:18 +07:00
Muhammad Fajar
64ca019c2c remove client portal 2024-01-01 00:07:35 +07:00
Muhammad Fajar
96034d069a fix cleint portal employee-data, dashboard, hide notification 2023-12-31 23:44:43 +07:00
Linksehat Staging Server
ae884f8cd0 Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-30 09:32:07 +07:00
1660db5123 update 2023-12-30 09:29:41 +07:00
Linksehat Staging Server
9a011beb8c Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-30 08:29:31 +07:00
98233656d5 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-30 08:24:21 +07:00
2b2fae44fc update 2023-12-30 08:24:03 +07:00
9db32ef482 update 2023-12-30 08:23:01 +07:00
Linksehat Staging Server
2d7a5aba1b composer 2023-12-30 07:23:48 +07:00
Linksehat Staging Server
8741f4344f Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-30 07:21:43 +07:00
Linksehat Staging Server
dc3ee65f34 merge 2023-12-30 07:21:14 +07:00
7e836bd9f3 update dokumen log dan final log 2023-12-30 07:17:09 +07:00
Linksehat Staging Server
1aa984b7eb update 2023-12-29 17:47:11 +07:00
Linksehat Staging Server
6b57919bba Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-29 16:06:48 +07:00
ivan-sim
31baf87202 Update alamat users 2023-12-29 15:22:17 +07:00
37558d0198 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-29 14:51:57 +07:00
fe9101a881 update composer 2023-12-29 14:51:42 +07:00
Linksehat Staging Server
e7911cb7d5 Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-29 13:57:34 +07:00
ivan-sim
7c2df15a9f Update cetak final LOG 2023-12-29 13:35:06 +07:00
Linksehat Staging Server
f85f002a8e Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-29 09:09:23 +07:00
ivan-sim
2134de863a Update 2023-12-29 08:58:31 +07:00
62270b6847 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-28 15:51:11 +07:00
19e9e334e2 update ecard dan daily monitoring 2023-12-28 15:50:56 +07:00
ivan-sim
770da6c1f3 Update req log 2023-12-28 13:35:53 +07:00
ivan-sim
9dc60b9141 Update Req LOG Template 2023-12-27 16:11:07 +07:00
ivan-sim
841b319aeb test update2 2023-12-26 16:41:45 +07:00
ivan-sim
b5c8d8c3b6 test update1 2023-12-26 11:51:07 +07:00
ivan-sim
a2a65ec353 test update 2023-12-26 11:43:33 +07:00
ivan-sim
fd49cd9a12 Detail Claim 2023-12-26 10:44:12 +07:00
10f702f2f0 report dan design ecard 2023-12-25 09:54:15 +07:00
c3a4d948a6 Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-25 09:52:13 +07:00
5a439922d9 send email dan daily monitoring 2023-12-25 09:52:03 +07:00
Linksehat Staging Server
fd15e4f377 Merge remote-tracking branch 'origin/staging' into origin/production 2023-12-25 09:43:39 +07:00
ivan-sim
89f879cfcc Update image 2023-12-20 19:05:01 +07:00
ivan-sim
5702ea7a15 Add Column in Claim Request 2023-12-20 18:49:52 +07:00
Linksehat Staging Server
b48b6bfa3e Merge branch 'staging' of https://dev.sismedika.online/febio/aso into staging 2023-12-20 16:44:47 +07:00
ivan-sim
4defd4fa2f Update Claim, Final LOG, Request LOG 2023-12-20 16:27:57 +07:00
40371bd53a Update customer service 2023-12-19 08:56:18 +07:00
e76c480ce9 update final log 2023-12-12 14:35:12 +07:00
Linksehat Staging Server
f4f83b3c7b build 2023-12-07 10:44:41 +07:00
Linksehat Staging Server
f9b970fbd1 tb 2023-12-07 09:31:41 +07:00
Link Medis Sehat
6edf7311f3 tb 2023-12-07 09:29:02 +07:00
ivan-sim
c7d67467a2 Update Request LOG 2023-11-30 11:38:10 +07:00
91b7a10f86 update request log service 2023-11-30 09:05:49 +07:00
dc582244a5 update import/export excel request log 2023-11-29 16:22:00 +07:00
a208d5f11e update requst dan final log 2023-11-29 14:18:35 +07:00
Linksehat Staging Server
a04153fa2a bugs fix forget password 2023-11-23 11:20:08 +07:00
49afc1d28d forget password, reset password 2023-11-23 09:38:59 +07:00
ivan-sim
6d72b1b789 Update notifikasi send email 2023-11-21 12:07:51 +07:00
ivan-sim
0b211e12a4 Update Notification 2023-11-20 17:28:16 +07:00
ivan-sim
676e541385 Notification Hospital Portal 2023-11-20 16:36:27 +07:00
ivan-sim
13ef733010 Update Hospital Portal 2023-11-17 17:16:47 +07:00
Linksehat Staging Server
00b8fa763e Update Final LOG 2023-11-17 08:57:48 +07:00
Linksehat Staging Server
e3aacbb5d5 update import 2023-11-16 10:26:22 +07:00
8be552c141 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-16 10:24:20 +07:00
f5ebb303c6 update improvement 2023-11-16 10:24:17 +07:00
ivan-sim
77fdb46c46 Update pengecekan hospital corporate 2023-11-16 09:24:31 +07:00
0dc10587a8 cek all spesialis 2023-11-15 14:18:05 +07:00
ivan-sim
643fd2b6cd Update 2023-11-14 17:26:26 +07:00
ivan-sim
a1a235f1bb Update 2023-11-14 17:15:50 +07:00
ivan-sim
8f77d8bec0 Update service hospital dan prime center 2023-11-14 16:53:12 +07:00
Linksehat Staging Server
c3b140d1f8 improvement api mobile 2023-11-14 15:06:28 +07:00
c5e103fc57 improvement uat 1 2023-11-14 13:57:33 +07:00
7284354f47 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-13 15:21:48 +07:00
Linksehat Staging Server
d6831f3bfa update 2023-11-13 15:29:00 +07:00
d3c5bfb527 update 2023-11-13 15:21:45 +07:00
Linksehat Staging Server
db275c152d autolinking dan manual linking 2023-11-13 10:23:45 +07:00
Linksehat Staging Server
3a83f90ee3 update error message 2023-11-13 09:00:13 +07:00
Linksehat Staging Server
6bd48241f0 bugs fix avatar 2023-11-10 15:36:15 +07:00
Linksehat Staging Server
bc73088e4a bugs fix relation 2023-11-10 14:06:13 +07:00
Linksehat Staging Server
0c9f69aaad manual linking apps 2023-11-10 11:23:20 +07:00
134caa2d2c manual linking 2023-11-10 09:21:18 +07:00
2587650c2e autocomplete inactive 2023-11-10 09:16:21 +07:00
10e1dc72d7 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-09 17:25:21 +07:00
cea8b476e0 update fitur delete all import 2023-11-09 17:25:16 +07:00
Linksehat Staging Server
b8b308a89f update user model linksehat 2023-11-09 15:36:33 +07:00
Linksehat Staging Server
28fefd82e5 update bugs fix api mobile 2023-11-09 15:27:53 +07:00
3100a1a1b2 update 2023-11-09 14:30:16 +07:00
9a147f32da Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-09 14:30:07 +07:00
1fde7999a5 update 2023-11-09 14:29:58 +07:00
ivan-sim
7cd4f2c929 Update Hospitals Corporate Bisa Import 2023-11-09 11:36:10 +07:00
a9929ad7a2 update api dan template corporate 2023-11-09 11:32:09 +07:00
9c2677771c api update profile 2023-11-09 11:08:29 +07:00
1fcdc6a4b9 update bugs fix 2023-11-08 10:39:25 +07:00
ead5ac35f4 push 2023-11-08 10:19:32 +07:00
e3087e7cbb update origin cros 2023-11-08 09:43:54 +07:00
089fd62bf3 update cross origin 2023-11-08 09:23:36 +07:00
6176b21386 add user manager 2023-11-08 08:31:01 +07:00
8908400d50 bugs fix import claim 2023-11-07 13:18:58 +07:00
c329df499f bugs fix 2023-11-07 12:24:31 +07:00
16454d32cc typo status pernikahan 2023-11-07 12:13:57 +07:00
40ac4feeaa update change profile 2023-11-06 17:03:55 +07:00
1389875c8b Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-06 16:32:12 +07:00
e65c017685 update autocomplete 2023-11-06 16:32:06 +07:00
ivan-sim
754f2ab336 Update Edit History Hospital Care 2023-11-06 16:08:44 +07:00
f4e17d4aec update API profile member 2023-11-06 15:13:41 +07:00
4aa6eaa889 update api user dan export alamr center client 2023-11-06 13:19:05 +07:00
ivan-sim
23886c52d2 Update Claim Request Files 2023-11-03 15:42:56 +07:00
ivan-sim
ec3327b5af Update Upload File Request Dashboard PrimeCenter 2023-11-03 13:57:26 +07:00
korospace
79c8e475e8 finishing benefit configuration 2023-11-03 11:32:09 +07:00
sangpenciptajs
bc429b6d52 import rhf and reusable components from his v3 2023-11-03 08:49:18 +07:00
korospace
16449bd18b fix bug upload file claim request 2023-11-03 08:38:22 +07:00
korospace
186312bb6a Merge branch 'feature/dashboard-create-claim-request' into staging 2023-11-02 20:05:41 +07:00
korospace
bf8bb86857 finishing feature/dashboard-create-claim-request 2023-11-02 20:05:12 +07:00
korospace
22e3061564 progress 2 feature/dashboard-create-claim-request 2023-11-02 17:40:33 +07:00
cff928409d update 2023-11-01 22:47:17 +07:00
e24cb39ff3 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-11-01 22:47:06 +07:00
ivan-sim
c9a2acff35 Update Timeline 2023-11-02 13:17:11 +07:00
ivan-sim
d2e1bb93f0 Update Re-Open Claims 2023-11-02 11:37:35 +07:00
ivan-sim
5384f3ecf2 Update Claims 2023-11-02 11:19:59 +07:00
ivan-sim
01fcaf7181 Update Approve Claim 2023-11-02 10:35:58 +07:00
5b3cddf5fe merge claim detail 2023-11-01 22:46:59 +07:00
korospace
b934fb0727 progress 1 dashboard-create-claim-request 2023-10-31 18:29:05 +07:00
ivan-sim
cd1835d836 Update Claim Services 2023-10-31 12:01:59 +07:00
Linksehat Staging Server
924131534c Update claim services 2023-10-31 10:31:37 +07:00
Linksehat Staging Server
c6940ee83d Update Claims Services 2023-10-31 09:58:53 +07:00
ivan-sim
c38167a50a Claim Services 2023-10-31 09:28:29 +07:00
korospace
de476ad3be finishing slicing ui client benefit config 2023-10-30 18:32:50 +07:00
korospace
e34ec97d27 Merge branch 'feature/laboratorium-result' into staging 2023-10-30 11:02:59 +07:00
korospace
557b8713dd membuat rhf datepicker v2 2023-10-30 11:01:32 +07:00
4fec5df5e6 master formularium 2023-10-30 10:04:54 +07:00
019f4ae066 Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-10-30 10:02:19 +07:00
759e692465 add update function to master formularium 2023-10-30 09:59:03 +07:00
korospace
f625d4225f target blank untuk list dokumen laboratorium 2023-10-28 19:07:04 +07:00
korospace
b76a9b56f0 finishing part 1 2023-10-28 19:00:04 +07:00
korospace
b6095f1301 progress feature/laboratorium-result 2023-10-27 18:09:27 +07:00
korospace
08cf8b5c9b Merge branch 'feature/daily-monitoring' into staging 2023-10-27 16:05:02 +07:00
korospace
4ec2ca9bb2 memperbaiki handle error front end feature/daily-monitoring 2023-10-27 16:04:38 +07:00
korospace
1da3884fee Merge branch 'feature/daily-monitoring' into staging 2023-10-27 15:43:46 +07:00
korospace
0eff99c456 finishing part 2 2023-10-27 15:43:32 +07:00
korospace
f44e50c52b Merge branch 'feature/daily-monitoring' into staging 2023-10-27 15:30:08 +07:00
korospace
670f62328b membuat endpoint daily monitoring 2023-10-27 15:28:02 +07:00
korospace
0585f9f5f0 finishing part 1 2023-10-27 15:23:16 +07:00
239e95f5df add kolom active 2023-10-27 13:57:24 +07:00
495a73770e Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-27 09:31:28 +07:00
63af52cb85 update backend claim history hospital 2023-10-27 09:28:08 +07:00
ivan-sim
0c5960275c Update 2023-10-27 09:07:29 +07:00
adibwp
87864a496c Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-10-26 17:44:55 +07:00
adibwp
010e971b69 add list master formularium 2023-10-26 17:43:47 +07:00
ivan-sim
1c71edd3ed Detail Claim Management 2023-10-26 17:24:41 +07:00
ivan-sim
bf0001ced6 Update Logs Claim 2023-10-26 11:48:42 +07:00
a53a546f1f Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-26 11:35:32 +07:00
8d94ebf524 update bugs fix 2023-10-26 11:35:29 +07:00
ivan-sim
9188e0c882 Update 2023-10-26 11:08:17 +07:00
3ec7727981 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-26 10:33:53 +07:00
adcb4e508d update listing dan edit claim management 2023-10-26 10:32:43 +07:00
korospace
435afb6b61 Merge branch 'ui/master-diagnosis' into staging 2023-10-26 10:18:57 +07:00
korospace
995f1f76f8 finishing UI adjustment - 1 2023-10-26 10:17:17 +07:00
ivan-sim
39486af45c Update Claim Request 2023-10-26 10:09:57 +07:00
ivan-sim
053ef5f8e3 Detail Claim Request 2023-10-26 09:54:40 +07:00
adibwp
0abcaea006 Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-10-25 10:31:31 +07:00
adibwp
f91a8de670 update status function 2023-10-25 10:31:01 +07:00
fb099b352f Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-25 08:48:16 +07:00
2d5c870527 update 2023-10-25 08:47:13 +07:00
5265aecd05 tuning import. listing, edit 2023-10-25 08:46:42 +07:00
ivan-sim
06c4bf6930 Drug Update 2023-10-24 17:12:22 +07:00
ivan-sim
115c284f85 Drug Update 2023-10-24 16:47:30 +07:00
ivan-sim
134cdb072d Drug 2023-10-24 16:10:53 +07:00
adibwp
d7e1cc0a98 add create formularium func 2023-10-24 15:17:05 +07:00
adibwp
33d3bdab37 rebase 2023-10-23 17:12:05 +07:00
adibwp
14427c2d7f integrate data api to detail table 2023-10-23 17:10:55 +07:00
f53945e4a0 backend filter plan 2023-10-23 14:39:24 +07:00
78765225bc update status benefit dan exlusion 2023-10-21 12:04:24 +07:00
8a9870d7ae Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-21 11:09:07 +07:00
9c1f682adf update 2023-10-21 11:07:56 +07:00
ivan-sim
77175e979e Update Member & Hospital 2023-10-20 18:29:34 +07:00
ivan-sim
4708cb3cf8 Typo add hospital 2023-10-20 16:54:27 +07:00
ivan-sim
f8a7e3b2b9 Update Member & Hospital 2023-10-20 16:52:15 +07:00
korospace
9962f160f8 solve conflict 2023-10-20 15:47:18 +07:00
korospace
a1362b5362 finishing - tuning Diagnosis Exclusion 2023-10-20 15:40:30 +07:00
8373885df8 update 2023-10-20 12:31:14 +07:00
e0d68aa01a Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-20 11:22:13 +07:00
614156bbe7 update 2023-10-20 11:22:11 +07:00
ivan-sim
257af7ca9c Member & Hospital 2023-10-20 11:05:42 +07:00
Linksehat Staging Server
51deb0f810 update 2023-10-20 11:03:22 +07:00
Linksehat Staging Server
c380eccc56 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-20 10:54:41 +07:00
Linksehat Staging Server
64fcebdad0 package-lock 2023-10-20 10:54:03 +07:00
03afed696e update 2023-10-20 10:51:29 +07:00
f330607f14 backend formularium 2023-10-20 10:50:10 +07:00
adibwp
aa6df1bdae Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-10-20 09:20:18 +07:00
adibwp
39f7e16fa4 add create corporate formularium 2023-10-20 09:20:11 +07:00
d10b7da080 update 2023-10-20 09:05:02 +07:00
d75638df86 update 2023-10-20 09:04:02 +07:00
8df8269512 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-20 08:58:09 +07:00
853cb334ca update 2023-10-20 08:55:06 +07:00
a08aa05d1e Slicing service dan benefit 2023-10-20 08:51:41 +07:00
korospace
8a3b0f3d11 progress - membuat update activate 2023-10-19 15:12:08 +07:00
korospace
7134f0ff86 progress - membuat update activate 2023-10-19 15:09:14 +07:00
ivan-sim
031291b1f0 Update Devisions pada Prime Center 2023-10-18 08:25:47 +07:00
ivan-sim
7bd574db7d LMSN-218
Improve Slicing bagian detail dashboard di Corporate Prime Center
2023-10-17 10:49:51 +07:00
ivan-sim
f2e5a22c64 LMSN-217
Update slicing hospital portal
2023-10-16 16:21:47 +07:00
ivan-sim
827ce472ba LMSN-217
Improve Slicing tampilan pada hospital portal (List Claim, Detail, Search Member)
2023-10-16 09:55:24 +07:00
c3b745e23b update componen label 2023-10-13 16:15:52 +07:00
a694bc03f3 update claim submit 2023-10-13 10:57:42 +07:00
3e908471cf Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-13 10:47:26 +07:00
54019e998d update fitur alarm center 2023-10-13 10:47:22 +07:00
ivan-sim
44b1a153b1 LMSN-212
Update
2023-10-13 08:35:14 +07:00
ivan-sim
740d113bd0 LMSN-212
Update remove card employee data
2023-10-12 15:43:36 +07:00
ivan-sim
909231a697 LMSN-212
Update image not load
2023-10-12 15:07:15 +07:00
ivan-sim
c9cb5c20e2 LMSN-212
Update render error
2023-10-12 14:56:22 +07:00
ivan-sim
101056ead0 LMSN-212
Update sql
2023-10-12 14:51:54 +07:00
ivan-sim
b77c1e2c74 LMSN-212
Update sql
2023-10-12 14:48:04 +07:00
ivan-sim
6b931a904d LMSN-212
Client/User dapat melihat Claim Report di client portal
2023-10-12 14:38:16 +07:00
ivan-sim
c767c676f4 Update familymember 2023-10-10 13:29:42 +07:00
ivan-sim
ffdf5013fc LMSN-213
Update disbrusment hide dulu
2023-10-10 11:28:51 +07:00
Linksehat Staging Server
b1a109cc89 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-10 10:37:02 +07:00
Linksehat Staging Server
7f4901163c update name dokumen 2023-10-10 10:34:31 +07:00
ivan-sim
49dfb0d02b LMSN-213
Client/User dapat melihat List Claim dan Total Claim
2023-10-10 10:14:12 +07:00
a9e6a750ad Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-10 07:31:23 +07:00
b76739a86b update package json 2023-10-10 07:27:39 +07:00
lasteinsa
1700e8ebfb implement claim submit 2023-10-09 17:25:16 +07:00
b49f78858f update name 2023-10-09 16:12:11 +07:00
1a182aaf9e update bugs fix corporate 2023-10-09 14:10:03 +07:00
a8828b2d79 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-09 13:18:42 +07:00
d69b610c5f pengajuan claim 2023-10-09 13:18:38 +07:00
ivan-sim
4fc196e226 LMSN-191
hapus console log
2023-10-09 10:20:08 +07:00
ivan-sim
55b2945154 LMSN-191
Update
2023-10-09 10:16:23 +07:00
ivan-sim
7e917222aa LMSN-191
Update
2023-10-09 10:04:37 +07:00
ivan-sim
dcc25a02ce LMSN-191
Update
2023-10-09 09:59:46 +07:00
ivan-sim
1527d64033 LMSN-191
Update sort untuk end date
2023-10-09 09:27:29 +07:00
ivan-sim
9a5eb0e74b LMSN-191
Data corporate & member linking ke client portal
2023-10-09 09:15:35 +07:00
84cf41dba8 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-10-06 14:58:36 +07:00
5376873552 update 2023-10-06 14:57:33 +07:00
ivan-sim
271c8610e3 Update request date 2023-09-29 17:13:22 +07:00
1d11e06178 update 2023-09-29 14:41:34 +07:00
bb8ab6e9e4 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-29 14:40:05 +07:00
50762a0581 typo 2023-09-29 14:40:02 +07:00
Muhammad Fajar
f2414e6577 Update Claim Request 2023-09-29 14:17:38 +07:00
ivan-sim
c8afe73c46 Update text date 2023-09-29 14:04:09 +07:00
ivan-sim
e0b2dec912 Update tanggal claim report 2023-09-29 13:53:45 +07:00
ivan-sim
9df7c68ea5 Update Search Member Family 2023-09-29 11:29:09 +07:00
ivan-sim
2673f6fc8b LMSN-191
Update code yang kosong
2023-09-29 09:01:50 +07:00
601a8e5aff update claim management 2023-09-28 17:28:22 +07:00
0fd79b8284 update requeset 2023-09-28 16:00:36 +07:00
Muhammad Fajar
9b4579e8f1 fix claim report 2023-09-27 19:18:31 +07:00
Muhammad Fajar
52783b191a commit 2023-09-27 17:49:36 +07:00
ivan-sim
544eb32a81 LMSN-191
Data corporate & member linking ke client portal
2023-09-27 17:37:46 +07:00
Muhammad Fajar
1abb9b2539 add pdf custom file 2023-09-27 15:54:00 +07:00
Muhammad Fajar
c8dd135558 update uploading file claim report client portal 2023-09-27 15:48:59 +07:00
Muhammad Fajar
2f7a450d28 commit client portal 2023-09-27 15:39:20 +07:00
3f54e07fb5 update package 2023-09-27 15:10:52 +07:00
a83115ea65 update 2023-09-27 15:08:23 +07:00
a916dc4a44 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-27 15:04:37 +07:00
975c5169e3 update bugs upload file 2023-09-27 15:04:34 +07:00
Linksehat Staging Server
927700b528 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-27 12:07:56 +07:00
Linksehat Staging Server
5d614d604a update 2023-09-27 12:07:30 +07:00
23ce443b52 update input transaksi 2023-09-27 12:04:59 +07:00
4a6d11f5d3 update 2023-09-26 17:24:34 +07:00
8ef4de1157 penyesuiaan data claim 2023-09-26 17:23:00 +07:00
48ba75ffe3 update log 2023-09-26 11:16:39 +07:00
314c4ec5a2 update table 2023-09-26 10:10:28 +07:00
3059a4ae0e debug aso 2023-09-26 09:42:50 +07:00
78ad8d1538 update 2023-09-25 17:27:51 +07:00
cfb2943ed2 update code 2023-09-25 16:59:21 +07:00
3ddf40a608 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-25 16:40:29 +07:00
551bea37a1 update 2023-09-25 16:40:24 +07:00
Linksehat Staging Server
6c800bb716 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-25 16:25:28 +07:00
Linksehat Staging Server
b3188f0ca7 update 2023-09-25 16:25:10 +07:00
738392c143 Update Master Formularium dan Corporate formularium 2023-09-25 16:21:38 +07:00
72958019f1 update history corporate 2023-09-22 10:53:03 +07:00
969eb93509 update rename 2023-09-21 18:23:28 +07:00
e8c2396442 Update exclusion corporate setting 2023-09-21 18:06:34 +07:00
ae1b213ff0 update name 2023-09-21 11:54:40 +07:00
9fb0cc3eb6 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-21 11:33:03 +07:00
c262919449 update name 2023-09-21 11:32:59 +07:00
Linksehat Staging Server
7b2223545f Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-21 11:03:10 +07:00
Linksehat Staging Server
bddd076db0 update 2023-09-21 11:02:58 +07:00
0b354dcf22 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-21 10:56:09 +07:00
0f60176c35 update master icd 2023-09-21 10:55:57 +07:00
ivan-sim
c5043d56f0 LMSN-188
Update text T&C
2023-09-19 17:07:17 +07:00
ivan-sim
c03b628735 Bug case 2023-09-19 17:04:02 +07:00
ivan-sim
3224804424 Bug case 2023-09-19 17:01:11 +07:00
3ef29c1de6 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-19 16:27:32 +07:00
26fca92966 update active 2023-09-19 16:27:28 +07:00
Linksehat Staging Server
848ddb4d8a Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-19 15:01:26 +07:00
Linksehat Staging Server
fffd02d600 update 2023-09-19 15:01:17 +07:00
219aa35693 Merge branches 'staging' and 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-09-19 14:54:29 +07:00
7ee4a3ef38 Update fitur impor dan history exlusion 2023-09-19 14:54:19 +07:00
ivan-sim
25cb97250b LMSN-188
Update model files doc
2023-09-19 14:12:22 +07:00
ivan-sim
21e146da7e LMSN-188
LMS dapat upload dokumen TC corporate
2023-09-19 13:42:05 +07:00
ivan-sim
ed2d5ee90a Update logo 2023-09-18 09:04:33 +07:00
ivan-sim
6ed5983175 Update setBirthDate 2023-09-18 08:49:49 +07:00
ivan-sim
9c2956c733 Update locale language json 2023-09-18 08:23:23 +07:00
ivan-sim
08cd475d90 'update' 2023-09-15 13:29:24 +07:00
e8f90772de update 2023-09-15 11:25:23 +07:00
4a155b2b70 update exclusion 2023-09-15 11:20:27 +07:00
Linksehat Staging Server
c365e6b021 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-14 13:46:26 +07:00
9f3b59a634 bugs end chat 2023-09-14 13:45:12 +07:00
Linksehat Staging Server
450cf57339 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-14 13:31:34 +07:00
c0322eac3b update range report livechat 2023-09-14 13:30:35 +07:00
Linksehat Staging Server
a7c7a961c7 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-11 09:02:13 +07:00
e8fb41a57d update 2023-09-11 09:00:28 +07:00
Linksehat Staging Server
a64ed344ee Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-10 19:12:55 +07:00
5e8bcab6ac update time request 2023-09-10 19:06:17 +07:00
Linksehat Staging Server
fdb382f90b Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-10 07:22:43 +07:00
45d52ed655 update fix 2023-09-10 07:19:50 +07:00
afda88cea7 update 2023-09-10 07:16:12 +07:00
03e33fb375 update 2023-09-10 07:15:11 +07:00
115dfbda4d update 2023-09-10 07:14:02 +07:00
78e3211bdd update data 2023-09-10 07:11:10 +07:00
Linksehat Staging Server
690d2b2ed7 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-09 16:16:51 +07:00
f021d672a0 update time 2023-09-09 16:16:00 +07:00
23685cd87c update time 2023-09-09 15:56:57 +07:00
Linksehat Staging Server
ee20c120e2 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-09 15:46:28 +07:00
8287bff759 Update metode pembayaran 2023-09-09 15:42:51 +07:00
375a22ef69 report update 2023-09-09 14:01:59 +07:00
Linksehat Staging Server
4f33f2258a Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-09 12:36:30 +07:00
25b668ad2b update name 2023-09-09 10:42:43 +07:00
cff5dba314 Update Report Livechat 2023-09-09 10:36:01 +07:00
Linksehat Staging Server
4df8409e60 merge 2023-09-04 15:28:21 +07:00
Linksehat Staging Server
8011d117d6 Merge remote-tracking branch 'origin/staging' into origin/production 2023-09-04 15:07:09 +07:00
Linksehat Staging Server
4a8079e667 Merge commit ' into origin/production 2023-09-04 15:02:15 +07:00
Muhammad Fajar
ab194600c2 comment nIDAppointment 2023-09-04 14:22:56 +07:00
Lasteinsa
565c6cbbfc Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-09-04 13:34:35 +07:00
Lasteinsa
7051758b12 several changes 2023-09-04 13:34:04 +07:00
Muhammad Fajar
05f26145f8 update appointmentDetail null export 2023-09-04 11:15:41 +07:00
Muhammad Fajar
510269c9ee export excel livechat 2023-09-04 11:07:12 +07:00
Linksehat Staging Server
f7777954a4 corporate export 2023-09-01 16:02:54 +07:00
Linksehat Staging Server
df6b3f5c59 bugs fixs 2023-09-01 15:12:45 +07:00
Linksehat Staging Server
e0f3a38be0 report livechat 2023-08-31 16:39:03 +07:00
Muhammad Fajar
26b82db77b datetime to date filter 2023-08-31 15:54:01 +07:00
Lasteinsa
290de81ee8 list date 2023-08-31 14:28:37 +07:00
Lasteinsa
83de998900 format time 2023-08-31 14:27:37 +07:00
Lasteinsa
5db9121a16 Merge branch 'staging' of http://itcorp.primaya.id:3000/rajif/aso into staging 2023-08-31 13:45:58 +07:00
Lasteinsa
96ee80f681 several detail changes 2023-08-31 13:45:49 +07:00
Linksehat Staging Server
18d46f09c7 Update livechat 2023-08-31 13:42:04 +07:00
8f74be633e update 2023-08-31 11:36:10 +07:00
7df5586258 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-08-31 09:59:27 +07:00
42a116e9ac bugs fix division 2023-08-31 09:58:44 +07:00
Linksehat Staging Server
07589caba1 Merge remote-tracking branch 'refs/remotes/origin/staging' into staging 2023-08-30 17:43:19 +07:00
Linksehat Staging Server
fc52c7ece6 update 2023-08-30 17:41:59 +07:00
d3fb049c97 Update Bugs Fix Import 2023-08-30 17:39:35 +07:00
a5dd6dfca3 Merge branch 'staging' of itcorp.primaya.id:ra 2023-08-30 11:09:12 +07:00
2f336955ab merge 2023-08-30 11:08:01 +07:00
Linksehat Staging Server
a54708abb5 updated 2023-08-14 16:57:46 +07:00
Linksehat Staging Server
9057e5d00f update 2023-08-14 16:56:18 +07:00
kevin
db4b0193dd rating 2023-08-14 16:55:34 +07:00
kevin
f05a2c879e Merge remote-tracking branch 'refs/remotes/origin/staging' into staging 2023-08-09 09:40:49 +07:00
kevin
137b0a5fb6 test 2023-08-09 09:39:15 +07:00
kevin
3bfe8547a7 test 2023-08-09 09:34:40 +07:00
Linksehat Staging Server
0c673a4cfb Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:57:29 +07:00
ivan
8ecbcb1a5c Update 2023-07-31 16:56:50 +07:00
Linksehat Staging Server
cf4ce17ffc Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:46:08 +07:00
ivan
9327c6b45f update 2023-07-31 16:45:01 +07:00
Linksehat Staging Server
53bacd1397 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:25:49 +07:00
ivan
c1f34dcb26 Update 2023-07-31 16:25:22 +07:00
Linksehat Staging Server
b11829bc7e Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:15:46 +07:00
ivan
cfa44187c1 update 2023-07-31 16:12:24 +07:00
Linksehat Staging Server
73b9834fe9 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:10:09 +07:00
ivan
6b52078dc9 Update 2023-07-31 16:09:52 +07:00
Linksehat Staging Server
baf5fe7f89 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:07:40 +07:00
ivan
73416c3e46 Update 2023-07-31 16:07:05 +07:00
Linksehat Staging Server
7250d13455 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 16:03:53 +07:00
ivan
e87d7e334f Update 2023-07-31 16:02:39 +07:00
Linksehat Staging Server
6b6b0e5059 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 15:42:57 +07:00
ivan
b770de761a Update 2023-07-31 15:40:41 +07:00
Linksehat Staging Server
13315465b9 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 12:01:58 +07:00
ivan
c23defa5fc Update 2023-07-31 12:01:02 +07:00
Linksehat Staging Server
fce14eeb14 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 11:57:08 +07:00
ivan
2e78d99b5a Update 2023-07-31 11:56:52 +07:00
Linksehat Staging Server
62f57e8161 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 11:54:44 +07:00
ivan
d9ac3bfd60 Update 2023-07-31 11:54:31 +07:00
Linksehat Staging Server
3d2b08c104 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 11:51:35 +07:00
ivan
460e2e6c03 Update 2023-07-31 11:51:16 +07:00
Linksehat Staging Server
58ce71c561 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 11:48:23 +07:00
ivan
318d4437a6 Update 2023-07-31 11:47:35 +07:00
Linksehat Staging Server
4f0daaceff Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-31 11:34:01 +07:00
ivan
0a214723cb Update hospital-portal 2023-07-31 11:32:25 +07:00
Linksehat Staging Server
49fe9864cd Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 16:22:12 +07:00
ivan
786a0a24b3 update 2023-07-28 16:09:34 +07:00
Linksehat Staging Server
ba93c9cba6 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 16:00:47 +07:00
ivan
886d8e6321 Update 2023-07-28 16:00:25 +07:00
Linksehat Staging Server
3e9bba2941 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 15:34:54 +07:00
ivan
1b15a7428c Test language 2023-07-28 15:34:22 +07:00
Linksehat Staging Server
9c0109fd89 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 15:30:13 +07:00
ivan
d8e7ea771b Test load flag 2023-07-28 15:28:43 +07:00
Linksehat Staging Server
3cf302abe8 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 10:30:59 +07:00
c858b20028 delete debug firstname 2023-07-28 10:29:45 +07:00
Linksehat Staging Server
7e2cd73536 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-28 10:24:42 +07:00
dccd4f70b9 update real-time ke lms 2023-07-28 10:23:28 +07:00
Linksehat Staging Server
6201fbe2c8 update edit member 2023-07-27 11:32:09 +07:00
Linksehat Staging Server
bff6c1bc61 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 11:30:09 +07:00
24a4710318 actived comment 2023-07-27 11:29:55 +07:00
Linksehat Staging Server
6ced3a0f9f Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 11:21:50 +07:00
b763a2bec0 update 2023-07-27 11:21:08 +07:00
Linksehat Staging Server
5092569f48 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 10:47:22 +07:00
ivan
bcf801fdf1 update plan id 2023-07-27 10:46:39 +07:00
b2ae4a63c4 update plan id 2023-07-27 10:45:19 +07:00
ivan
51c5fe813f Search pada member belum bisa 2023-07-27 10:42:49 +07:00
Linksehat Staging Server
aed9d5d4ad Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 10:38:44 +07:00
ivan
d58ad05cbd Search pada member belum bisa 2023-07-27 10:38:30 +07:00
Linksehat Staging Server
0a8a8c94f3 Merge remote-tracking branch 'origin/staging' 2023-07-27 09:45:54 +07:00
Linksehat Staging Server
0eaae544d1 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 09:32:57 +07:00
cb7e0bb484 update bugs listing member 2023-07-27 09:32:17 +07:00
Linksehat Staging Server
055b0d234d Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-27 09:12:37 +07:00
ivan
bc949dcea7 Update where corporat_id yang terkomen 2023-07-27 09:11:34 +07:00
Linksehat Staging Server
396c05a4d2 update 2023-07-26 18:03:02 +07:00
Linksehat Staging Server
7240e9803e Merge branch 'master' of itcorp.primaya.id:rajif/aso 2023-07-26 17:58:02 +07:00
Linksehat Staging Server
4ff72d3819 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:47:40 +07:00
ivan
5127d8a73b Update 2023-07-26 17:47:28 +07:00
Linksehat Staging Server
7e21e20d0d Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:44:01 +07:00
ivan
2c3e720c83 update 2023-07-26 17:43:49 +07:00
Linksehat Staging Server
f26b5d2e9b Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:42:55 +07:00
ivan
ec5ef5eb87 Update 2023-07-26 17:42:44 +07:00
Linksehat Staging Server
4e6d4abb06 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:40:50 +07:00
ivan
8ea3a1d2e5 Update 2023-07-26 17:40:40 +07:00
Linksehat Staging Server
c011fc3c0d Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:38:52 +07:00
ivan
13d4fac65c Update 2023-07-26 17:38:33 +07:00
Linksehat Staging Server
bc1c209b07 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:35:29 +07:00
ivan
af9864d89f Update 2023-07-26 17:35:08 +07:00
eb3e3fa981 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:30:45 +07:00
Linksehat Staging Server
ebf2dc8c0f Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:29:39 +07:00
ivan
6f7e94e901 Update 2023-07-26 17:29:28 +07:00
875a932c23 update member 2023-07-26 17:28:28 +07:00
Linksehat Staging Server
af7dc0e122 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:28:17 +07:00
ivan
aa85d03ba8 Update 2023-07-26 17:28:07 +07:00
Linksehat Staging Server
8f4827efc0 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:27:06 +07:00
ivan
cae869f326 Update 2023-07-26 17:26:55 +07:00
Linksehat Staging Server
40aab73ca0 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:23:24 +07:00
ivan
621ce08924 Update 2023-07-26 17:22:57 +07:00
Linksehat Staging Server
6f1bba1c33 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:15:22 +07:00
ivan
0f3ab9d6b5 Update 2023-07-26 17:14:59 +07:00
Linksehat Staging Server
f89bd8423b Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-26 17:04:17 +07:00
ivan
96ed61c0b6 Update group by person_id 2023-07-26 17:02:40 +07:00
Linksehat Staging Server
b7a897a1c0 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-20 17:55:59 +07:00
ivan
e25f313b58 Update reload dataTable 2023-07-20 17:34:11 +07:00
ivan
23d75000b9 Update api url hospital-portal 2023-07-20 17:03:35 +07:00
ivan
59c56ae90f Update histori file MCU 2023-07-20 16:52:08 +07:00
Linksehat Staging Server
3726513af7 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-20 13:42:48 +07:00
ivan
4c8570b542 Update validation, dll Hospital-Portal 2023-07-20 11:51:44 +07:00
Linksehat Staging Server
033625c34e Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-18 14:56:18 +07:00
Muhammad Fajar
5632e9ff29 LMSN-36
Request - Fitur attachment MCU di Prime Center
2023-07-18 11:58:55 +07:00
Linksehat Staging Server
45661cdc78 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-07-11 11:57:07 +07:00
pajri
40da45c9ff update data di service monitoring, dan alarm center benefit summary 2023-07-07 10:30:17 +07:00
Linksehat Staging Server
7e9c6cf028 merger 2023-07-04 10:05:53 +07:00
Linksehat Staging Server
ae8925be0a merge 2023-07-04 10:05:05 +07:00
kevin
2157c14f8d Merge remote-tracking branch 'refs/remotes/origin/staging' into staging 2023-07-04 09:42:37 +07:00
kevin
c942856933 Prescription 2023-07-04 09:35:33 +07:00
Ivan Julian
46416cb6ac commit permission 2023-07-03 11:39:08 +07:00
12f8828f9f env local 2023-07-03 11:32:41 +07:00
ff89f2ac8b update aso 2023-06-19 10:50:29 +07:00
kevin
b05f052848 request 2023-06-16 10:26:56 +07:00
Linksehat Staging Server
2ffb62b564 Merge remote-tracking branch 'origin/staging' 2023-06-15 14:56:11 +07:00
b550349835 update 2023-06-15 14:55:23 +07:00
Linksehat Staging Server
5410404141 update 2023-06-15 11:38:47 +07:00
Linksehat Staging Server
dcd97386b0 Merge remote-tracking branch 'origin/staging' 2023-06-15 11:37:41 +07:00
914b9b0c94 update 2023-06-14 14:35:37 +07:00
4c59fd21b5 update 2023-06-14 11:10:04 +07:00
569d356b6b automatic linking 2023-06-14 10:47:11 +07:00
554d0048e7 update 2023-06-13 14:15:01 +07:00
dbdeed0d5b update 2023-06-13 13:42:06 +07:00
d49ef7d99e update 2023-06-13 13:31:35 +07:00
Linksehat Staging Server
1e8fa839f4 Merge remote-tracking branch 'origin/staging' 2023-06-13 11:39:11 +07:00
Linksehat Staging Server
6ab1adce5e add 2023-06-13 11:37:15 +07:00
8f532e655f update 2023-06-13 11:33:42 +07:00
cbc7dfdb99 update colom service code, policy id dan claim reques 2023-06-09 15:17:39 +07:00
40d4500651 tambah field payment type 2023-06-09 15:11:44 +07:00
kevin
3a8a7438ba update banyak 2023-06-09 13:52:54 +07:00
684e63cd6f update reason 2023-06-09 12:54:59 +07:00
1cebcdb8f8 update 2023-06-09 12:32:18 +07:00
1db1c20531 update claim 2023-06-09 12:29:29 +07:00
7182b0107c update 2023-06-09 12:26:34 +07:00
01727bd02b add export report 2023-06-09 12:00:51 +07:00
20c2bea127 claim request 2023-06-08 13:35:58 +07:00
f7e8cd550b Update limit dashboard 2023-06-08 13:03:37 +07:00
778d2b5bb5 Update Claim 2023-06-08 11:41:19 +07:00
afafed11d5 update kolom center 2023-06-07 09:32:44 +07:00
ff3ac11071 update icon history 2023-06-07 09:27:02 +07:00
7a83409028 Update reason benefit 2023-06-06 09:28:22 +07:00
4cc2ae24b8 add reason in corporate, plan, service 2023-06-05 09:01:43 +07:00
Linksehat Staging Server
4fb2bab64e build 2023-05-26 09:35:23 +07:00
10af60c4b4 update validasi 2023-05-25 11:04:48 +07:00
Fajar
d17513da44 build 2023-05-24 17:14:37 +07:00
Fajar
57125b06af disable show.tsx src/pages/claims 2023-05-24 17:10:26 +07:00
root
d999d86959 update 2023-05-24 16:55:56 +07:00
Linksehat Staging Server
fff9b7cb18 merge 2023-05-24 10:06:46 +07:00
Linksehat Staging Server
cb87cffbb5 merge 2023-05-24 10:02:13 +07:00
f7838352b0 update validasi benefit & plan 2023-05-24 09:56:47 +07:00
6f49e54631 update messsage 2023-05-22 16:30:34 +07:00
7c40b61a3c update lagi 2023-05-22 16:28:53 +07:00
726cf2e192 update validasi member 2023-05-22 15:00:35 +07:00
9f49f0e825 update bugs fixing doble log 2023-05-22 09:14:38 +07:00
a56182aed1 add column recode mode in data member list 2023-05-17 16:10:54 +07:00
e29e635cb6 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-17 15:43:10 +07:00
cde3ced75b download membership 2023-05-17 15:42:36 +07:00
Linksehat Staging Server
ed3474ac47 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-17 15:38:47 +07:00
Linksehat Staging Server
cf05966f96 merge 2023-05-17 15:38:07 +07:00
c82475da2f update 2023-05-17 15:35:24 +07:00
e057de3f62 update enrollment 2023-05-17 15:32:07 +07:00
b377625805 update 2023-05-17 15:22:07 +07:00
31423c255e Update 2023-05-17 15:19:24 +07:00
a10fa9db21 update validasi date terminated 2023-05-17 11:35:40 +07:00
3f40170043 update 2023-05-17 11:29:02 +07:00
da68ae3e05 add validasi import member ship 2023-05-17 09:16:42 +07:00
a454461449 update member 2023-05-15 14:31:39 +07:00
ca9ebdb3a1 update 2023-05-15 14:25:56 +07:00
02e84b262f update enrollment 2023-05-15 11:28:39 +07:00
414d9de369 update 2023-05-15 11:15:47 +07:00
ee0db6d2ab update 2023-05-15 11:12:54 +07:00
51fd8f57b3 migration 2023-05-15 11:11:58 +07:00
342725ebcc Update Validasi 2023-05-15 11:10:16 +07:00
Linksehat Staging Server
7d8e5800d1 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-10 16:33:02 +07:00
Linksehat Staging Server
a2eac07c67 Build 2023-05-10 16:32:58 +07:00
5042cd7800 Merge branch 'staging' 2023-05-10 11:50:22 +07:00
70b0d880fc update harga 2023-05-10 11:50:02 +07:00
Linksehat Staging Server
079641e87b Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-10 11:04:12 +07:00
6c65b58481 update enrolement benefit 2023-05-10 11:02:00 +07:00
Linksehat Staging Server
e2d64faf55 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-08 11:20:06 +07:00
6a94e46f52 update harga 2023-05-08 11:19:30 +07:00
b3e78850d3 Merge branch 'staging' 2023-05-08 08:59:43 +07:00
Linksehat Staging Server
2016ba1726 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-05-08 08:51:08 +07:00
Linksehat Staging Server
ce024c2bcd merge 2023-05-08 08:50:15 +07:00
5df1a85e7c add filter ketika klik all 2023-05-08 08:47:36 +07:00
pajri
c8b06f67d1 Table Component Alarm Center 2023-05-05 17:02:40 +07:00
pajri
49f3a8558d view table alarm-center 2023-05-04 16:59:18 +07:00
12fbef2a12 update biaya 2023-05-04 09:19:47 +07:00
e455fbfbea update 2023-05-04 09:14:37 +07:00
a55b7f4148 update tarif rs awal bros 2023-05-04 08:43:28 +07:00
4f8745d726 Merge branch 'staging' 2023-05-02 14:43:09 +07:00
f5de316768 add filter corporate benefit active 2023-05-02 14:41:10 +07:00
Linksehat Staging Server
d22fa1848f merge 2023-05-02 09:21:30 +07:00
Linksehat Staging Server
cc5201ca3e merge with staging 2023-05-02 09:12:26 +07:00
bb925503f0 Merge branch 'staging' 2023-05-02 09:04:09 +07:00
be5e8950c1 update limit go 2023-05-02 09:03:30 +07:00
Linksehat Staging Server
aefddcbff2 build dashboard fronted & config wkhtmltopdf 2023-04-28 16:16:12 +07:00
5333a65495 Merge branch 'staging' 2023-04-28 14:24:01 +07:00
91be43263a add image di log 2023-04-28 14:23:09 +07:00
947952340d Merge branch 'staging' 2023-04-28 11:04:12 +07:00
affb54b62d update deskripsi 2023-04-28 11:01:56 +07:00
67cd7cdce0 Merge branch 'staging' 2023-04-28 10:08:59 +07:00
27c1bfd6e3 update composer 2023-04-28 09:54:08 +07:00
5c6e7f3122 update 2023-04-26 15:15:19 +07:00
pajri
83e3ff6345 fix bugs Card Policy 2023-04-25 14:47:22 +07:00
3e2c9015ed update validasi 2023-04-20 08:52:59 +07:00
3a5fd67778 update import plans and benefit 2023-04-18 16:15:07 +07:00
0d73222a04 menambah validasi saat input corporate 2023-04-18 15:28:54 +07:00
85f7eeda18 add endpoint member alarm center 2023-04-13 14:17:26 +07:00
R
e91304bb4b Merge branch 'master' of itcorp.primaya.id:rajif/aso 2023-04-06 17:23:46 +07:00
R
da87a53623 Sementara Fix Filter Date 2023-04-06 17:23:25 +07:00
Fajar
70a2cbff9e Merge remote-tracking branch 'origin/master' into feature/client-portal 2023-04-06 15:31:34 +07:00
Fajar
85039893a8 Change Permission & WIP Dashboard Client Portal 2023-04-06 15:30:22 +07:00
R
7d198583a4 Fix Commision 2023-04-06 07:32:47 +07:00
R
3ff0cc1b29 Fix Komisi 2023-04-06 06:49:04 +07:00
R
97486da90f Fix Komisi 2023-04-06 06:25:52 +07:00
R
53075d0ce8 Add Accounting dummy password 2023-04-06 05:06:35 +07:00
R
a2cbc0a270 Merge branch 'master' of itcorp.primaya.id:rajif/aso 2023-04-06 05:04:18 +07:00
R
cca2310f54 [WIP] Add Linksehat Payment Report 2023-04-06 05:03:38 +07:00
R
d54288106b Remove Unused Files 2023-04-04 16:41:59 +07:00
Fajar
4a7c3ebdda [WIP] Claim Report & Dashboard 2023-03-25 16:15:26 +07:00
Fajar
59e7394d13 Merge branch 'feature/client-portal-dashboard' into staging 2023-03-24 15:25:05 +07:00
Fajar
127cdf8708 fixing table filter and search on dashboard 2023-03-24 15:23:41 +07:00
R
c2d084b4ea Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-03-24 14:41:29 +07:00
R
7b9a341ccd [WIP] Claim Encounters 2023-03-24 14:41:02 +07:00
Fajar
606b3c871a refactoring member model 2023-03-24 10:33:59 +07:00
Fajar
5fd33b3784 Merge branch 'feature/client-portal-claim-reports' into staging 2023-03-24 09:23:27 +07:00
Fajar
588b66c050 Merge branch 'feature/client-portal-dashboard' into staging 2023-03-24 09:22:32 +07:00
Fajar
86bb5860f3 create table for claim report from component 2023-03-24 09:20:03 +07:00
Fajar
677a349d4c remove old table dashboard 2023-03-24 09:15:37 +07:00
Fajar
3c5f06ef26 create table component & connect api for dashboard 2023-03-24 09:14:49 +07:00
Fajar
d5dfc7d36c update package and install pusher-js 2023-03-24 09:11:14 +07:00
R
229908e492 [WIP] Encounter 2023-03-16 14:27:53 +07:00
R
f65b28107c [WIP] Encounter 2023-03-16 14:27:25 +07:00
R
e06447bf00 [WIP] Add Diagnosa 2023-03-14 18:19:57 +07:00
R
c35442e652 Add Remove User Insurance 2023-03-12 18:50:07 +07:00
R
26290912ef [WIP] Hotfix Claim Coverage Limit 2023-03-12 14:25:56 +07:00
R
53b35e86c2 [WIP] Copy Claims Pages from Dashboard 2023-03-08 03:13:13 +07:00
R
254420bdae [Hotfix] Date Parsing 2023-03-08 02:23:57 +07:00
R
8c86794340 [Hotfix] Handle undefined relation 2023-03-08 02:22:41 +07:00
R
2b1f5c97df [Hotfix] Final LOG Gender 2023-03-08 02:19:59 +07:00
R
b587178c85 [WIP] Update Dashboard Claim Final LOG 2023-03-08 02:02:15 +07:00
R
ed96878dda [WIP] Update Show Hide Button 2023-03-06 02:22:11 +07:00
R
35119ee8ec [WIP] Update Claim 2023-03-06 02:10:08 +07:00
R
91ba718a50 [WIP] Update 2023-03-03 08:44:08 +07:00
R
9e322c4ee5 Change LOG Detail Benefit 2023-03-01 14:50:07 +07:00
R
5741789ddb Change LOG Detail Benefit 2023-03-01 14:48:51 +07:00
R
d0ee09a6e4 [Hotfix] Create Claim 2023-03-01 12:16:27 +07:00
R
89cd2a9d37 [WIP] A 2023-03-01 12:07:03 +07:00
R
ce0fde18dc Ingest Providers 2023-03-01 12:04:25 +07:00
R
acf9fa348e Change Benefit Display 2023-02-24 11:59:22 +07:00
R
74dd65efde Fix Wrong Loading 2023-02-24 10:56:05 +07:00
R
edc5ba9822 Change 999999999 to As Charge 2023-02-24 10:52:01 +07:00
R
8902718523 Add Dummy Notification Data 2023-02-24 10:45:03 +07:00
R
1c4f03ea83 Separate Invoice Upload 2023-02-24 09:47:35 +07:00
R
627904abba Update Show Claim Request 2023-02-24 09:40:37 +07:00
R
bd3f53b596 Fix Upload Files 2023-02-23 16:18:44 +07:00
R
69919878fa Fix Claim Request Null 2023-02-23 10:13:16 +07:00
R
f3bdf12bc4 Merge branch 'staging' of itcorp.primaya.id:rajif/aso into staging 2023-02-23 09:42:05 +07:00
R
eb1211cde7 Add Plan Limit & Usage 2023-02-23 09:41:58 +07:00
Linksehat Staging Server
b8ed27f2ff [Server Build] Rebuild Dashboard Staging 2023-02-22 08:51:59 +00:00
R
74cfcfa16b Ignore Build Folder 2023-02-22 13:36:15 +07:00
R
9f95e89a9a Merge branch 'feature/aso-digital-card' into staging 2023-02-22 13:21:50 +07:00
R
e51068b0a6 Fix Generate LOG 2023-02-22 12:30:02 +07:00
R
5cd23ff343 [Build] Dashboard Staging 2023-02-21 17:07:28 +07:00
R
615330bb46 Merge branch 'feature/generate-log' into staging 2023-02-21 17:02:53 +07:00
R
bcf6662db6 Update Generate Log 2023-02-21 17:01:57 +07:00
R
be43f8a4a4 Merge branch 'feature/aso-digital-card' into staging 2023-02-20 15:03:14 +07:00
R
dba421ad0b Update Digital Card Get Member Detail 2023-02-20 15:03:05 +07:00
R
c3a78f8a40 [Build] Dashboard Staging 2023-02-17 14:39:12 +07:00
R
6c6a7c3919 Merge branch 'feature/aso-digital-card' into staging 2023-02-17 14:31:02 +07:00
R
5c71b556a0 Update Linking With ASO 2023-02-17 14:29:50 +07:00
R
63c53d18d1 [Build] Staging Dashboard & Hospital Portal 2023-02-15 12:54:43 +07:00
R
a5db01bd25 Fix Download LOG 2023-02-15 12:50:46 +07:00
R
5d4033a9ca Display Uploaded Files 2023-02-15 12:30:35 +07:00
R
912edcdae7 [Build] Dashboard Production 2023-02-15 10:47:39 +07:00
R
5a7695b404 Add Appointment Type 2023-02-15 10:46:37 +07:00
R
5f05f191c6 [Build] Dashboard Prod 2023-02-15 10:14:20 +07:00
R
46af57b17c Show additional patient information in Dashboard Appointment 2023-02-15 10:13:07 +07:00
R
016bd3f605 [Hotfix] No PaymentDetail 2023-02-15 10:02:49 +07:00
R
093f8160d2 [Build] Additional Information 2023-02-15 10:00:53 +07:00
R
d8f493103c Add Additional Information 2023-02-15 09:57:00 +07:00
R
7f77deb09e Order Appointment & Livechat by newset 2023-02-15 09:10:22 +07:00
R
d38bc8dbfc [Build] Dashboard 2023-02-15 09:07:33 +07:00
R
b225084991 Update OLDLMS Appointment & Livechat Status 2023-02-15 09:03:13 +07:00
R
d8a98f4648 Merge remote-tracking branch 'origin/feature/appointment' 2023-02-15 08:08:51 +07:00
R
27523b8cce [WIP] Fix Upload Document from Hospital Portal 2023-02-15 08:00:14 +07:00
R
f6117743ad Fix Filter 2023-02-14 16:32:38 +07:00
R
8c97df9fc4 Remove Dummy Notifications 2023-02-14 15:31:57 +07:00
R
4f2bb19d8a [Build] Dashboard & Hospital Portal 2023-02-14 13:48:59 +07:00
R
13764a3766 [Build] Staging - Hospital Portal 2023-02-14 13:31:49 +07:00
R
ed273fdafa Merge branch 'feature/hospital-portal' 2023-02-14 13:09:14 +07:00
R
d706bf0623 [WIP] Add Approve Button 2023-02-14 13:07:17 +07:00
R
13542cd3c0 [WIP] Add Claim Request 2023-02-14 12:39:51 +07:00
pajri
f309f4039c list dan show appointment 2023-02-10 16:55:24 +07:00
pajri
387658a992 CRUD Doctor Hospital 2023-02-09 13:15:45 +07:00
R
6491f4d3e3 Add corporate Manager soft delete 2023-02-04 08:48:52 +07:00
R
5028b2d82b Fix Division by Zero 2023-02-04 08:46:44 +07:00
R
5d56434aa2 [Build] Client Portal 2023-02-04 08:38:46 +07:00
R
8e05280b7d Fix Name & User Avatar 2023-02-04 08:36:59 +07:00
R
e3de0a3c04 Hide Burger 2023-02-04 08:14:51 +07:00
R
c3a425c93d Fix Error on opening Add Claim Modal 2023-02-04 08:12:53 +07:00
R
431070efc3 Fix OTP Client Portal to 4444 2023-02-04 08:05:03 +07:00
R
e8c3decf85 Change Title 2023-02-01 20:27:53 +07:00
R
99c488baf3 Update Guaranted Letter 2023-02-01 20:21:03 +07:00
R
0b50e4c980 Update Guaranted Letter Styling 2023-02-01 20:17:32 +07:00
R
ba310a21c1 [Build] Both 2023-02-01 19:39:33 +07:00
R
5a0136acf8 Fix Download Blob Pdf 2023-02-01 19:35:30 +07:00
R
75c9781a22 [Build] Staging 2023-02-01 19:20:09 +07:00
R
2a1f0c854a [Build] Production 2023-02-01 19:16:50 +07:00
R
f0c787fede Add Download LOG 2023-02-01 19:15:31 +07:00
pajri
a7e688a52c hospital portal 2023-02-01 16:22:03 +07:00
R
8d5f4bb0bd Fix Import Benefit selecting wrong plan from another corporate 2023-02-01 01:37:53 +07:00
R
248047006e [Build] Staging 2023-02-01 01:16:44 +07:00
R
2c535b4021 [Build] Production 2023-02-01 00:56:17 +07:00
R
59dd63a78f Add name,dob linking tools 2023-02-01 00:51:14 +07:00
R
21282be7b3 Merge remote-tracking branch 'origin/feature/prices' 2023-02-01 00:42:44 +07:00
pajri
8cbfb1929b update csv 2023-02-01 11:52:19 +07:00
R
b8152e6b3f Fix Date Time Write 2023-01-30 12:40:04 +07:00
R
cfbe108629 Remove error sting 2023-01-30 12:20:14 +07:00
R
a8821dfb3c Fix Seeder 2023-01-30 12:08:49 +07:00
pajri
1ce2655b65 update schedule dokter 2023-01-28 09:44:14 +07:00
pajri
335e24b17c add biaya admin 2023-01-27 13:26:42 +07:00
pajri
4776eb5b0a seeder prices jadwal dokter 2023-01-27 09:52:31 +07:00
R
17daf20167 Add MCU 2023-01-26 14:51:32 +07:00
R
18ace75fc7 Add OLDLMS .env.example 2023-01-26 07:35:08 +07:00
R
ad743de98d Fix Bug Member Import 2023-01-19 15:09:32 +07:00
R
96a40842bd [Build] Import Loading Button 2023-01-19 14:43:16 +07:00
R
137fd07a28 Add Loading Button when Import 2023-01-19 14:41:56 +07:00
R
21dc0b1fc1 [Build] Frontend Dashboard 2023-01-19 10:15:55 +07:00
R
f56361de62 [Build] Frontend Dashboard 2023-01-19 10:15:00 +07:00
R
85f319878a Fix Regex Kode Corporate 2023-01-19 10:09:53 +07:00
R
23436164c2 Fix Corporate Create & Update Validation remove allow spaces 2023-01-17 12:40:15 +07:00
R
b19e0876e5 Change Specialities Button 2023-01-15 12:19:31 +07:00
R
704c5ecc44 [Bug Fix] Update Validation : Is there laravel validation update ? 2023-01-15 12:07:44 +07:00
R
9087580138 Add File Import Example Download 2023-01-15 11:28:07 +07:00
R
7ff199a3c1 [Fix] Member Benefit Specific 2023-01-13 14:48:15 +07:00
R
08a2502fb1 Enable Claim Softdeletes 2023-01-13 12:19:00 +07:00
R
65c9153fee [Build] Frontend 2023-01-13 12:14:00 +07:00
R
775f471a07 [WIP] Update Postponed 2023-01-13 12:08:57 +07:00
R
f09eaef5ad [Fix] Display Claim Postponed 2023-01-13 11:50:31 +07:00
R
e116fb814a [WIP] Fix Medicine 2023-01-13 08:19:43 +07:00
R
2f10f913c0 [WIP] Change Check Coverage Appointment 2023-01-13 00:43:58 +07:00
R
3a2dd84500 Fix Breadcrumbs Links 2023-01-12 15:10:59 +07:00
R
7d1872ef1e [Build] Update 2023-01-11 14:49:16 +07:00
R
552a2367f5 [WIP] Cashless 2023-01-11 14:29:02 +07:00
R
804ac883fa [WIP] ASO Payment 2023-01-05 18:28:45 +07:00
pajri
0fdad5a6c2 rubah tampilan menu profile 2022-12-29 11:52:09 +07:00
pajri
40ad4a22c7 forget password 2022-12-29 11:38:55 +07:00
R
0781e1ea00 [WIP] Move Listener to Boot 2022-12-29 09:56:03 +07:00
pajri
cb834d10bb WIP email notification 2022-12-29 09:22:28 +07:00
pajri
77f67fca1e Profile Admin 2022-12-28 17:09:35 +07:00
pajri
1884d32c4b delete diagnosis exclusion 2022-12-28 10:42:21 +07:00
pajri
55ae0efc66 add exclusion diagnosis done 2022-12-27 15:55:21 +07:00
pajri
9400145990 form exclusion specialities done 2022-12-24 15:10:13 +07:00
pajri
e15dda0955 bugs checked, exclusin age, masih ada bugs value 2022-12-23 17:16:31 +07:00
pajri
3c49b98721 Merge branch 'master' into pajri 2022-12-23 14:12:44 +07:00
R
9fe12b5948 add Corporate Context Provider 2022-12-23 11:53:27 +07:00
pajri
2321e708c5 add config msc (belum kelar) 2022-12-22 19:13:24 +07:00
pajri
b1c908a6f6 upload foto, dan bugs import 2022-12-21 17:22:45 +07:00
pajri
88ad144921 table member dan table benefit 2022-12-20 17:48:28 +07:00
pajri
da14589328 perbaili list table corporate, dan table plan 2022-12-19 18:00:24 +07:00
pajri
2bf3ae7b2b Merge branch 'master' into pajri 2022-12-19 11:21:48 +07:00
R
7c4886d57f Change Benefit Table Structure 2022-12-19 09:33:34 +07:00
pajri
0d6c2ab30b Data Docter dan Hospital dnegan Filter di dashboard 2022-12-16 15:57:40 +07:00
pajri
1857653ce0 list dokter, list RS 2022-12-15 17:10:25 +07:00
R
1baaf80b2b Calc Limit 2022-12-14 13:16:01 +07:00
R
74aa5f0486 Auto Assign to manager one 2022-12-14 13:03:26 +07:00
R
ad46f5a2f0 ReBuild Client Portal 2022-12-14 12:15:42 +07:00
R
9ae069718e Fix Benefit Import 2022-12-14 12:13:54 +07:00
R
ad090112eb Add Default Service when create corporate 2022-12-14 09:45:58 +07:00
R
96dc557a59 Release Dashboard 2022-12-13 13:34:27 +07:00
R
c67026413f Merge branch 'master' of http://itcorp.primaya.id:3000/rajif/aso 2022-12-13 12:49:46 +07:00
R
9d261d4dfc Merge branch 'master' of http://itcorp.primaya.id:3000/rajif/aso 2022-12-13 12:49:27 +07:00
R
37b1b24551 Merge branch 'master' of http://itcorp.primaya.id:3000/rajif/aso 2022-12-13 12:47:26 +07:00
R
6a4447a549 [WIP] Claims 2022-12-13 12:47:12 +07:00
Muhammad Fajar
6d6439cc94 Merge remote-tracking branch 'origin/master' into mhmfajar 2022-12-12 08:46:02 +07:00
Muhammad Fajar
a3760b8757 fixing auth, switching corporate, table member 2022-12-12 08:41:53 +07:00
R
23468df422 Disable Division Creation 2022-12-08 14:44:48 +07:00
R
5100a72bbd Fix API Check Membership 2022-12-08 14:34:24 +07:00
R
cd77ed8c3b Corporate Division 2022-12-08 14:17:01 +07:00
R
ab7f19dc17 Fix Duplicate Division 2022-12-08 14:14:46 +07:00
R
3d9dab502b Merge remote-tracking branch 'origin/mhmfajar' 2022-12-08 12:44:47 +07:00
R
83408f4431 Merge branch 'master' of http://itcorp.primaya.id:3000/rajif/aso 2022-12-08 12:27:25 +07:00
Muhammad Fajar
f164317b58 remove unused 2022-12-08 09:00:05 +07:00
Muhammad Fajar
7a421e0619 remove import & create button dashboard 2022-12-08 08:59:42 +07:00
Muhammad Fajar
9526092860 Merge remote-tracking branch 'origin/mhmfajar' 2022-12-08 08:53:58 +07:00
Muhammad Fajar
0c9362334c add switch corporate & fix table & fix policy 2022-12-08 08:51:25 +07:00
R
df34c3919d Merge branch 'mhmfajar' of http://itcorp.primaya.id:3000/rajif/aso into mhmfajar 2022-12-07 11:17:06 +07:00
Muhammad Fajar
5840a311e0 fix dashboard table 2022-12-07 11:15:33 +07:00
R
8d6b6e41d7 [WIP] Change Api to currentCorporate 2022-12-07 11:13:07 +07:00
R
3c18ae2852 Add Prefix on URL 2022-12-07 11:05:21 +07:00
Muhammad Fajar
f20cb5b44c fix table dashboard 2022-12-07 03:10:02 +07:00
Muhammad Fajar
52633f438f Merge remote-tracking branch 'origin/master' into mhmfajar 2022-12-07 02:48:59 +07:00
Muhammad Fajar
e13b99a34a fix login & logout again 2022-12-07 02:46:24 +07:00
Muhammad Fajar
2bac2bfeb7 fix login & fix logout 2022-12-07 02:37:18 +07:00
Muhammad Fajar
723c9f1895 create api for dashboard client portal 2022-12-06 18:48:31 +07:00
Muhammad Fajar
b26ccdd0e6 fix division when member import 2022-12-06 18:48:17 +07:00
Muhammad Fajar
405ca24c6a Merge remote-tracking branch 'origin/master' into mhmfajar 2022-12-05 16:30:10 +07:00
Muhammad Fajar
f18e7126d3 fix dashboard 2022-12-05 10:23:24 +07:00
Muhammad Fajar
86076ff1d7 fix notification login 2022-12-05 08:54:24 +07:00
2498 changed files with 177039 additions and 41799 deletions

0
.editorconfig Executable file → Normal file
View File

83
.env-example Normal file
View File

@@ -0,0 +1,83 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:axfmcy3qUMuukm8emaW6G0x/7SS3wWcLITXo+YAyCps=
APP_DEBUG=true
APP_URL=http://localhost:8000
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=aso_two
DB_USERNAME=mysql
DB_PASSWORD=password
OLDLMS_DB_CONNECTION=mysql
OLDLMS_DB_HOST=127.0.0.1
OLDLMS_DB_PORT=3306
OLDLMS_DB_DATABASE=linksehat
OLDLMS_DB_USERNAME=mysql
OLDLMS_DB_PASSWORD=password
BROADCAST_DRIVER=pusher
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
#MAIL_DRIVER=smtp
#MAIL_HOST=smtp.gmail.com
#MAIL_PORT=587
#MAIL_USERNAME=tumbaltumbal11@gmail.com
#MAIL_PASSWORD="pxrrksphndlvkgca"
#MAIL_USERNAME=noreply@primayahospital.com
#MAIL_PASSWORD="eqplciswxchsaart"
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=b488d13fde4349
MAIL_PASSWORD=63b64761d270ba
MAIL_ENCRYPTION=tls
MAIL_ENCRYPTION=TLS
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID="app-id"
PUSHER_APP_KEY="app-key"
PUSHER_APP_SECRET="app-secret"
PUSHER_HOST=localhost
PUSHER_PORT=6001
PUSHER_SCHEME=http
# PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
LMS_API_URL="http://lmsapi.primaya.id"
DUITKU_MERCHANT_KEY=
DUITKU_MERCHANT_CODE=
DUITKU_IS_SANDBOX=TRUE
WKHTML_PDF_BINARY=/var/www/aso/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64
WKHTML_IMG_BINARY=

View File

@@ -1,52 +0,0 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

0
.gitattributes vendored Executable file → Normal file
View File

3
.gitignore vendored Executable file → Normal file
View File

@@ -12,3 +12,6 @@ npm-debug.log
yarn-error.log
/.idea
/.vscode
/public/dashboard
/public/dashboard-staging

0
.styleci.yml Executable file → Normal file
View File

0
Modules/Client/Config/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Config/config.php Executable file → Normal file
View File

0
Modules/Client/Console/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Database/Migrations/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Database/Seeders/.gitkeep Executable file → Normal file
View File

View File

0
Modules/Client/Database/factories/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Entities/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Http/Controllers/.gitkeep Executable file → Normal file
View File

6
Modules/Client/Http/Controllers/Api/AuthController.php Executable file → Normal file
View File

@@ -35,13 +35,13 @@ class AuthController extends Controller
if (filter_var($request->phoneOrEmail, FILTER_VALIDATE_EMAIL)) {
User::query()->find($user->id)->update([
'email' => $request->phoneOrEmail,
'otp' => rand(1000, 9999),
'otp' => 4444, //rand(1000, 9999),
'otp_created_at' => now()
]);
} else {
User::query()->find($user->id)->update([
'phone' => $request->phoneOrEmail,
'otp' => rand(1000, 9999),
'otp' => 4444,//rand(1000, 9999),
'otp_created_at' => now()
]);
}
@@ -81,7 +81,7 @@ class AuthController extends Controller
);
}
return Helper::responseJson(message: 'OTP yang anda masukan salah!');
return Helper::responseJson(status: 'error', message: 'OTP yang anda masukan salah!');
}
public function logout(Request $request)

View File

@@ -0,0 +1,264 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use Illuminate\Support\Facades\DB;
use App\Helpers\Helper;
use App\Models\Claim;
use App\Models\CorporateEmployee;
use App\Models\Icd;
use App\Models\ClaimHistoryCare;
use App\Models\Corporate;
use App\Services\ClaimService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Client\Transformers\ClaimShowResource;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use Illuminate\Support\Facades\Storage;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
class ClaimController extends Controller
{
public function __construct(public ClaimService $claimService)
{
}
public function status($corporate_id)
{
$claims = $this->claimService->getCountClaimRequestPerStatus($corporate_id);
// dd($claims);
return Helper::responseJson([
'count_requested' => 0,
'count_approval' => 0,
'count_disbrushment' => 0,
'count_rejected' => 0,
]);
}
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request, $corporate_id)
{
$claims = Claim::query()
->when($request->search ?? null, function ($query, $search) {
$query->where('code', 'LIKE', '%' . $search . '%');
})
->with([
'member',
'diagnoses' => function ($diagnosis) {
return $diagnosis->where('type', 'primary');
},
'diagnoses.icd',
'plan',
'benefit',
'claimRequest',
'claimRequest.service'
])
->paginate(10);
return Helper::responseJson($claims);
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('client::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
$claim = Claim::query()
->with([
'member',
'member.currentPlan',
'member.currentPlan.benefits',
'member.currentCorporate',
'member.currentPolicy',
'diagnosis',
'diagnoses',
'benefit',
'files',
'claimRequest',
'claimRequest.files',
'items',
'items.claim_itemable',
])
->findOrFail($id);
return Helper::responseJson(ClaimShowResource::make($claim));
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('client::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
public function export($corporate_id){
$corporate = Corporate::where('id', $corporate_id)->with(['currentPolicy'])->first();
$member_id = CorporateEmployee::where('corporate_id', $corporate_id)->get('member_id')->toArray();
// dd($member_id);
$claim = Claim::whereIn('member_id', $member_id)->with(['member', 'member.plans'])->get();
$data = [];
if (count( $claim) > 0){
$temp = [];
foreach($claim as $c) {
$diagnosis = ClaimHistoryCare::where('claim_id', 34)->with('icd')->get();
$diagnosisName = '';
if (count($diagnosis) > 0){
$tempDiagnosis = [];
foreach($diagnosis as $key => $d){
$diagnosis = Icd::where('id', $d['main_diagnosis_id'])->first();
array_push($tempDiagnosis, $diagnosis->name);
}
$diagnosisName = implode(", ", $tempDiagnosis);
}
$temp['id'] = $c['id'];
$temp['plan_id'] = $c['member']['plans'][0]['code'];
$temp['payor_id'] = $c['member']['payor_id'];
$temp['corporate_id'] = $corporate->name;
$temp['policy_number'] = $corporate->currentPolicy->code;
$temp['member_id'] = $c['member']['member_id'];
$temp['benefit_code'] = $c['benefit_code'];
$temp['benefit_desc'] = $c['benefit_desc'];
$temp['amount_incurred'] = $c['amount_incurred'];
$temp['amount_approved'] = $c['amount_approved'];
$temp['amount_not_approved'] = $c['amount_not_approved'];
$temp['excess_paid'] = $c['excess_paid'];
$temp['diganosis'] = $diagnosisName;
array_push($data, $temp);
}
$headers = [
['value' => 'Plan ID', 'cell' => 'A1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Payor ID', 'cell' => 'B1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Corporate ID', 'cell' => 'C1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Policy Number', 'cell' => 'D1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Member ID', 'cell' => 'E1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Benefit Code', 'cell' => 'F1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Benefit Desc', 'cell' => 'G1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Amt Incurred', 'cell' => 'H1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Amt Approved', 'cell' => 'I1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Amt Not Approved', 'cell' => 'J1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Excess Paid', 'cell' => 'K1', 'mergeCell' => false, 'mergeToCell' => ''],
['value' => 'Diagnosis', 'cell' => 'L1', 'mergeCell' => false, 'mergeToCell' => 'J2'],
];
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
foreach ($headers as $header) {
$sheet->setCellValue($header['cell'], $header['value']);
if ($header['mergeCell'] === true) {
$sheet->mergeCells($header['cell'] . ':' . $header['mergeToCell']);
}
$sheet->getStyle($header['cell'])->getFont()->setBold(true);
$sheet->getStyle($header['cell'])->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER)->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
}
$startFrom = 2;
foreach($data as $i => $d){
$sheet->setCellValue('A' . $startFrom, $d['plan_id'] ?? '-');
$sheet->setCellValue('B' . $startFrom, $d['payor_id'] ?? '-');
$sheet->setCellValue('C' . $startFrom, $d['corporate_id'] ?? '-');
$sheet->setCellValue('D' . $startFrom, $d['policy_number'] ?? '-');
$sheet->setCellValue('E' . $startFrom, $d['member_id'] ?? '-');
$sheet->setCellValue('F' . $startFrom, $d['benefit_code'] ?? '-');
$sheet->setCellValue('G' . $startFrom, $d['benefit_desc'] ?? '-');
$sheet->setCellValue('H' . $startFrom, $d['amount_incurred'] ?? '-');
$sheet->setCellValue('I' . $startFrom, $d['amount_approved'] ?? '-');
$sheet->setCellValue('J' . $startFrom, $d['amount_not_approved'] ?? '-');
$sheet->setCellValue('K' . $startFrom, $d['excess_paid'] ?? '-');
$sheet->setCellValue('L' . $startFrom, $d['diganosis'] ?? '-');
$startFrom++;
}
foreach (['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K'] as $header) {
if ($header === 'A') {
$spreadsheet->getActiveSheet()->getColumnDimension($header)->setWidth(35, 'px');
} elseif ($header === 'H' || $header === 'I') {
$spreadsheet->getActiveSheet()->getColumnDimension($header)->setWidth(100, 'px');
} else {
$spreadsheet->getActiveSheet()->getColumnDimension($header)->setAutoSize(true);
}
}
$spreadsheet->getActiveSheet()->getStyle('A2:A' . $startFrom)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER)->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
$sheet->getDefaultRowDimension()->setRowHeight(-1);
$sheet->setTitle('Alarm Center Report');
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$content = ob_get_contents();
ob_end_clean();
$fileName = 'result-' . now()->getPreciseTimestamp(3) . '-alarm-center-report.xlsx';
Storage::disk('public')->put('temp/' . $fileName, $content);
$fileUrl = url('storage/temp/' . $fileName);
return Helper::responseJson([
"file_url" => $fileUrl
]);
}
}
}

View File

@@ -0,0 +1,276 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\ClaimRequest;
use Modules\Client\Transformers\ClaimReport\ShowResources;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
use App\Models\File;
use Illuminate\Http\Request;
class ClaimReportController extends Controller
{
public function claimStatus($corporateId)
{
$requesteds = ClaimRequest::query()
->whereHas('member', function ($query) use ($corporateId) {
$query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) {
$corporateEmployee->where('corporate_id', $corporateId);
});
})
->where('status', 'requested')
->get();
$approveds = ClaimRequest::query()
->whereHas('member', function ($query) use ($corporateId) {
$query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) {
$corporateEmployee->where('corporate_id', $corporateId);
});
})
->whereHas('claim', fn ($query) => $query->where('status', 'approved'))
->where('status', 'approved')
->get();
$rejecteds = ClaimRequest::query()
->whereHas('member', function ($query) use ($corporateId) {
$query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) {
$corporateEmployee->where('corporate_id', $corporateId);
});
})
->whereHas('claim', fn ($query) => $query->where('status', 'declined'))
->where('status', 'approved')
->get();
$disbrusments = ClaimRequest::query()
->whereHas('member', function ($query) use ($corporateId) {
$query->whereHas('employeds', function ($corporateEmployee) use ($corporateId) {
$corporateEmployee->where('corporate_id', $corporateId);
});
})
->whereHas('claim', fn ($query) => $query->where('status', 'disbrusmented'))
->where('status', 'approved')
->get();
return Helper::responseJson([
'requesteds' => count($requesteds),
'approveds' => count($approveds),
'rejecteds' => count($rejecteds),
'disbrusments' => count($disbrusments)
]);
}
public function claimDetail($corporate_id, $claimRequestId)
{
$claimRequestId = Crypt::decrypt($claimRequestId);
$status = DB::table('claim_requests')
->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id')
->where('corporate_employees.corporate_id', '=', $corporate_id)
->where('claim_requests.id', '=', $claimRequestId)
->select(
'claim_requests.submission_date',
DB::raw('
CASE
WHEN claim_requests.status = "requested" THEN "requested"
WHEN claim_requests.status = "approved" AND claims.status = "approved" THEN "approved"
WHEN claim_requests.status = "approved" AND claims.status = "declined" THEN "declined"
WHEN claim_requests.status = "approved" AND claims.status = "disbrusmented" THEN "disbrusmented"
/*WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "pending"*/
WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "reviewed"
ELSE ""
END AS status
')
)
->first();
$results['status'] = $status;
$timeline = DB::table('claim_logs')
->where('claim_logs.claim_request_id', '=', $claimRequestId)
->select(
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "Request"
WHEN claim_logs.status = "reviewed" THEN "Review"
WHEN claim_logs.status = "approved" THEN "Approval"
WHEN claim_logs.status = "declined" THEN "Decline"
ELSE "-"
END AS txt_status
'),
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "#159C9C"
WHEN claim_logs.status = "reviewed" THEN "#0C53B7"
WHEN claim_logs.status = "approved" THEN "#229A16"
WHEN claim_logs.status = "declined" THEN "#FF4842"
ELSE "-"
END AS txt_status_color
'),
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "#00AB5529"
WHEN claim_logs.status = "reviewed" THEN "#1890FF29"
WHEN claim_logs.status = "approved" THEN "#54D62C29"
WHEN claim_logs.status = "declined" THEN "#FF48427A"
ELSE "-"
END AS txt_status_backgroundColor
'),
'claim_logs.date',
'claim_logs.description',
'claim_logs.status'
)
->orderBy('claim_logs.id', 'desc')
->get();
$results['timeline'] = $timeline;
$request_files = DB::table('claim_request_files')
->where('claim_request_files.claim_request_id', '=', $claimRequestId)
->select(
'claim_request_files.*',
DB::raw('(SELECT files.fileable_id FROM files WHERE files.fileable_id = claim_request_files.claim_request_id AND files.type = claim_request_files.type LIMIT 1) AS check_files'),
)
->get();
$results['request_files'] = $request_files;
$documents = DB::table('files')
->where('fileable_type', 'App\Models\ClaimRequest')
->where('fileable_id', $claimRequestId)
->select('original_name', \DB::raw("CONCAT('" . env('APP_URL') . "/storage/', path) as path"), 'type')
->orderBy('id', 'desc')
->get();
$results['documents'] = $documents;
return Helper::responseJson($results);
}
public function requestFiles(Request $request, $corporate_id, $claim_id)
{
$claim_id = Crypt::decrypt($claim_id);
if ($request->hasFile('fileDiagnosis')) {
foreach ($request->fileDiagnosis as $file) {
$pathFile = File::storeFile('claim-diagnosis', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-diagnosis',
'name' => File::getFileName('claim-diagnosis', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('fileKondisis')) {
foreach ($request->fileKondisis as $file) {
$pathFile = File::storeFile('claim-kondisi', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-kondisi',
'name' => File::getFileName('claim-kondisi', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('fileResults')) {
foreach ($request->fileResults as $file) {
$pathFile = File::storeFile('claim-result', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-result',
'name' => File::getFileName('claim-result', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
return Helper::responseJson(data: $request->toArray(), message: 'Invoice Success Uploaded');
}
public function claimDetailHistory($corporate_id, $claimRequestId)
{
$claimRequestId = Crypt::decrypt($claimRequestId);
$member = DB::table('claim_requests')
->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id')
->where('corporate_employees.corporate_id', '=', $corporate_id)
->where('claim_requests.id', '=', $claimRequestId)
->select(
'claim_requests.code','members.member_id', 'members.name'
)
->first();
$results['member'] = $member;
$claim_item = DB::table('claim_items')
->leftJoin('claims','claim_items.claim_id', '=', 'claims.id')
->leftJoin('benefits', 'claim_items.claim_itemable_id', '=', 'benefits.id')
->leftJoin('claim_requests', 'claims.claim_request_id', '=', 'claim_requests.id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->where('corporate_employees.corporate_id', '=', $corporate_id)
->where('claim_requests.id', '=', $claimRequestId)
->select(
'claim_items.nominal_ditagihkan',
'claim_items.nominal_dicover',
'benefits.description',
'claim_requests.submission_date'
)
->orderBy('claim_items.id', 'desc')
->get();
$results['claim_item'] = $claim_item;
$tot_claim_item = DB::table('claim_items')
->leftJoin('claims','claim_items.claim_id', '=', 'claims.id')
->leftJoin('benefits', 'claim_items.claim_itemable_id', '=', 'benefits.id')
->leftJoin('claim_requests', 'claims.claim_request_id', '=', 'claim_requests.id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->where('corporate_employees.corporate_id', '=', $corporate_id)
->where('claim_requests.id', '=', $claimRequestId)
->select(
DB::raw('SUM(claim_items.nominal_ditagihkan) AS nominal_ditagihkan'),
DB::raw('SUM(claim_items.nominal_dicover) AS nominal_dicover'),
DB::raw('(SUM(claim_items.nominal_ditagihkan) - SUM(claim_items.nominal_dicover)) AS difference'),
)
->groupBy('claim_items.id')
->orderBy('claim_items.id', 'desc')
->first();
$results['tot_claim_item'] = $tot_claim_item;
return Helper::responseJson($results);
}
public function show($corporateId, $claimRequestId)
{
$data = ClaimRequest::query()
->with([
'histories:historiable_type,historiable_id,title,description,created_at',
'member:id,person_id,name_prefix,name,name_suffix' => [
'person:id,name_prefix,name,name_suffix,gender'
],
'claim:id,status',
'claimResults',
'claimConditions',
'claimDiagnosis'
])
->find($claimRequestId, ['id', 'submission_date', 'member_id', 'claim_id', 'status']);
return Helper::responseJson(new ShowResources($data));
}
}

View File

@@ -0,0 +1,254 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Events\ClaimRequested;
use App\Helpers\Helper;
use App\Models\File;
use App\Models\Member;
use App\Models\ClaimRequest;
use App\Services\ClaimRequestService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB;
class ClaimRequestController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
private static $code_prefix = 'CP';
public function index()
{
return view('client::index');
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('client::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
$request->validate([
'member_id' => 'required|array',
'member_id.*' => 'required',
'service_code.*' => 'required|in:OP,IP'
]);
if ($request->member_id){
foreach($request->member_id as $key => $member_id){
$code = $this->getNextCode();
$member = Member::find($member_id);
DB::beginTransaction();
try {
$newClaimRequest = ClaimRequestService::storeClaimRequest(
row: [],
code: $code,
member: $member,
paymentType: 'reimbursement',
serviceCode: $request->service_code[$key],
);
// ClaimRequested::dispatch($newClaimRequest);
// Log History
$newClaimRequest->histories()->create([
'title' => 'New Claim Requested',
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'type' => 'info',
'system_origin' => 'client-portal'
]);
// Claim Log
DB::table('claim_logs')
->insert([
'claim_request_id' => $newClaimRequest->id,
'status' => 'requested',
'date' => date('Y-m-d H:i:s'),
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'system_origin' => 'hospital-portal',
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at'=> date('Y-m-d H:i:s'),
]);
$storage_path = storage_path() . "/app/public";
$folder = "claim/";
if (is_dir($storage_path . "/" . $folder) == false) {
mkdir($storage_path . "/" . $folder, 0770, true);
}
if (isset($_FILES['laboratorium'])) {
foreach ($_FILES['laboratorium']['error']["member_" .$member_id] as $key => $value) {
if ($value == 0) {
$new_file_name = "claim-result-" . time() . "-" . uniqid();
$ekstension = "." . explode("/", $_FILES['laboratorium']['type']["member_" .$member_id][$key])[1];
$pathFile = $folder . $new_file_name . $ekstension;
$tmp_name = $_FILES['laboratorium']['tmp_name']["member_" .$member_id][$key];
$full_path = $_FILES['laboratorium']['full_path']["member_" .$member_id][$key];
if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) {
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-result',
'name' => $new_file_name,
'original_name' => $full_path,
'extension' => $ekstension,
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
}
}
if (isset($_FILES['prescription'])) {
foreach ($_FILES['prescription']['error']["member_" .$member_id] as $key => $value) {
if ($value == 0) {
$new_file_name = "claim-diagnosis-" . time() . "-" . uniqid();
$ekstension = "." . explode("/", $_FILES['prescription']['type']["member_" .$member_id][$key])[1];
$pathFile = $folder . $new_file_name . $ekstension;
$tmp_name = $_FILES['prescription']['tmp_name']["member_" .$member_id][$key];
$full_path = $_FILES['prescription']['full_path']["member_" .$member_id][$key];
if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) {
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-diagnosis',
'name' => $new_file_name,
'original_name' => $full_path,
'extension' => $ekstension,
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
}
}
if (isset($_FILES['invoice'])) {
foreach ($_FILES['invoice']['error']["member_" .$member_id] as $key => $value) {
if ($value == 0) {
$new_file_name = "claim-kondisi-" . time() . "-" . uniqid();
$ekstension = "." . explode("/", $_FILES['invoice']['type']["member_" .$member_id][$key])[1];
$pathFile = $folder . $new_file_name . $ekstension;
$tmp_name = $_FILES['invoice']['tmp_name']["member_" .$member_id][$key];
$full_path = $_FILES['invoice']['full_path']["member_" .$member_id][$key];
if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) {
$newClaimRequest->files()->updateOrCreate([
'type' => 'claim-kondisi',
'name' => $new_file_name,
'original_name' => $full_path,
'extension' => $ekstension,
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
}
}
DB::commit();
}
catch (\Throwable $th) {
DB::rollBack();
return Helper::responseJson(status: 'failed', statusCode: 500, message: $th->getMessage());
}
}
}
return Helper::responseJson(data: $request->toArray(), message: 'Claim Request berhasil ajukan!');
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('client::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('client::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
public static function getNextCode()
{
// $last_number = ClaimRequest::max('code');
// $next_number = empty($last_number) ? 1 : ((int) explode('-', $last_number)[2] + 1);
// return self::makeCode($next_number);
$last_numeric_code = ClaimRequest::select(DB::raw('MAX(CAST(SUBSTRING_INDEX(code, "-", -1) AS SIGNED)) as max_numeric_code'))
->whereRaw('SUBSTRING_INDEX(code, "-", -1) REGEXP "^[0-9]+$"')
->value('max_numeric_code');
// $next_number = 1;
if ($last_numeric_code) {
// // Jika ada kode sebelumnya, pecah kode dan tambahkan 1 ke angka terakhir
// $parts = explode('-', $last_code);
// $last_number = (int) end($parts);
$next_number = $last_numeric_code + 1;
}
return self::makeCode($next_number);
}
public static function makeCode($next_number)
{
// Pastikan $next_number adalah integer positif
$next_number = max(1, (int) $next_number);
// Menghasilkan kode dengan format yang diinginkan
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT);
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Member;
use App\Models\Corporate;
use App\Models\File;
use App\Services\CorporateMemberService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Client\Transformers\ClaimReport\MemberResources as ClaimReportMemberResources;
use Modules\Client\Transformers\Dashboard\MemberResources as ClaimSubmitMemberResources;
use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources;
use Modules\Client\Transformers\Dashboard\MemberAlarmCenterResources as DashboardMemberAlarmResources;
use Modules\Client\Transformers\DataMemberResource;
use Illuminate\Support\Facades\DB;
class CorporateCurrentController extends Controller
{
public function __construct(public CorporateMemberService $corporateMemberService)
{
}
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request, $id)
{
$corporates = Corporate::query()
->with('currentPolicy', 'subCorporates')
->withCount([
'employees',
'corporateBenefits',
'corporatePlans',
// 'claims'
])
// ->where('type', 'corporate')
->where('id', $id)
->paginate(1);
return $corporates;
}
public function update(Request $request, $id)
{
$validate = $request->validate([
'reason' => 'required',
]);
try {
DB::beginTransaction();
//karena pake formdata
$linkingRules = $request->linking_rules;
$linkingRules = explode(',', $linkingRules);
$corporate = Corporate::findOrFail($id);
$corporate->fill($request->all());
$corporate->linking_rules = $linkingRules;
$corporate->save();
if ($request->hasFile('logo')) {
$pathFileAvatar = File::storeFile('avatar', $corporate->id, $request->file('logo'));
$corporate->files()->updateOrCreate([
'type' => 'avatar',
'name' => File::getFileName('avatar', $corporate->id, $request->file('logo')),
'extension' => $request->file('logo')->getClientOriginalExtension(),
'path' => $pathFileAvatar,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
throw $e;
}
return $corporate;
}
}

View File

@@ -0,0 +1,116 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Models\CorporateDivision;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class CorporateDivisionController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request, $corporate_id)
{
$division = CorporateDivision::query()
->where('corporate_id', $corporate_id)
->get(['id', 'name']);
return response()->json($division);
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('internal::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request, $corporate_id)
{
$request->validate([
'code' => [
'required',
],
'name' => 'required'
]);
$newCorporatePlan = CorporateDivision::create([
'corporate_id' => $corporate_id,
'code' => $request->code,
'name' => $request->name,
]);
return $newCorporatePlan;
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('internal::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($corporate_id, $id)
{
$corporatePlan = CorporateDivision::findOrFail($id);
return $corporatePlan;
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $corporate_id, $id)
{
$corporatePlan = CorporateDivision::findOrFail($id);
$request->validate([
'code' => [
'required',
Rule::unique('corporate_plans')->where('corporate_id', $corporate_id)->ignore($corporatePlan->id)
],
'name' => 'required'
]);
$corporatePlan->fill([
'code' => $request->code,
'name' => $request->name,
'active' => $request->active,
])->save();
return $corporatePlan;
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,76 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
class CorporateManageController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request)
{
$userLogin = Auth::user();
$corporate = $userLogin->managedCorporates()->select(['corporates.id', 'corporates.name'])->get();
return response()->json($corporate);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($corporate_id)
{
$userLogin = Auth::user();
$corporate = $userLogin->managedCorporates()->where('corporates.id', $corporate_id)->first();
return response()->json($corporate);
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('client::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,245 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Member;
use App\Models\Claim;
use App\Models\ClaimRequest;
use App\Models\RequestLog;
use App\Services\CorporateMemberService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Client\Transformers\ClaimReport\MemberResources as ClaimReportMemberResources;
use Modules\Client\Transformers\AlarmCenter\DataListClaimMemberResource;
use Modules\Client\Transformers\AlarmCenter\DataServiceMonitoring;
use Modules\Client\Transformers\Dashboard\MemberResources as ClaimSubmitMemberResources;
use Modules\Client\Transformers\Dashboard\MemberResources as DashboardMemberResources;
use Modules\Client\Transformers\Dashboard\MemberAlarmCenterResources as DashboardMemberAlarmResources;
use Modules\Client\Transformers\Dashboard\MemberEmployeeDataResources as DashboardMemberEmployeeDataResources;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use Modules\Client\Transformers\EmployeeData\UserProfile\DataMemberResource as EmployeeDataProfileMemberResource;
use Modules\Internal\Services\MemberEnrollmentService;
class CorporateMemberController extends Controller
{
public $memberEnrollmentService;
public function __construct(public CorporateMemberService $corporateMemberService, MemberEnrollmentService $memberEnrollmentService)
{
$this->memberEnrollmentService = $memberEnrollmentService;
}
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request, $corporate_id)
{
switch ($request->input('type')) {
case 'employee-data':
$members = $this->corporateMemberService->getAllMemberEmployeeData($corporate_id, $request);
return response()->json(Helper::paginateResources(DashboardMemberEmployeeDataResources::collection($members)));
case 'claim-report':
$members = $this->corporateMemberService->getAllMemberClaimReports($corporate_id, $request);
return response()->json(Helper::paginateResources(ClaimReportMemberResources::collection($members)));
case 'claim-submit':
$members = $this->corporateMemberService->getAllMemberClaimSubmits($corporate_id, $request);
return response()->json(Helper::paginateResources(ClaimSubmitMemberResources::collection($members)));
case 'alarm-center':
$members = $this->corporateMemberService->getAllMemberAlarmCenter($corporate_id, $request);
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
case 'service-monitoring':
$members = $this->corporateMemberService->getAllEncounter($corporate_id, $request);
return response()->json(Helper::paginateResources(DashboardMemberAlarmResources::collection($members)));
default:
$members = $this->corporateMemberService->getAllMemberDashboards($corporate_id, $request);
return response()->json(Helper::paginateResources(DashboardMemberResources::collection($members)));
}
}
public function show($corporate_id, $person_id)
{
$data = Member::query()
->with(['person'])
->where('person_id', $person_id)
->whereHas('currentCorporate', function ($query) use ($corporate_id) {
$query->where('corporate_id', $corporate_id);
})
->firstOrFail();
// Get Families
$data->families = Member::query()
->with(['person'])
->where('principal_id', $data->member_id)
->get();
return response()->json(EmployeeDataProfileMemberResource::make($data));
}
public function generateMemberList($corporate_id)
{
// Mendapatkan data yang akan diekspor (misalnya, dari database)
$data = Member::with(['currentPlan', 'currentCorporate', 'division', 'employeds', 'currentPolicy'])
// ->filter($request->all())
// ->where('corporate_id', $corporate_id)
->whereHas('employeds', function ($employeds) use ($corporate_id) {
$employeds->where('corporate_id', $corporate_id);
})->get()->toArray();
// Membuat penulis entitas Spout
$writer = WriterEntityFactory::createXLSXWriter();
// Membuka penulis untuk menulis ke file
$writer->openToFile(public_path('files/CorporateMembershipList.xlsx'));
// Menulis header kolom
$headers_map_to_table_fields = $this->memberEnrollmentService->listing_doc_headers;
$headerRow = WriterEntityFactory::createRowFromArray($headers_map_to_table_fields);
$writer->addRow($headerRow);
// Menulis data
if (!empty($data)) {
foreach ($data as $item) {
$rowData = [
$item['record_mode'], // Recode Mode
$item['record_type'], // Recode Type
$item['payor_id'], // Payor ID
$item['member_id'], // Member ID
$item['principal_id'], // Mapping ID
NULL, // Link Medis Member ID
$item['current_corporate']['code'] ?? null, // Corporate ID
$item['employeds'][0]['nik'] ?? null, // NIK
$item['division']['code'] ?? null, // Devision
$item['employeds'][0]['branch_code'] ?? null, // Branch Code
$item['bank_info'], // Bank Info
$item['language'], // Language
null, // Type of Work
$item['race'], // Race
$item['current_policy']['code'] ?? null, // Policy Number
$item['marital_status'], // Marital Status
$item['relation_with_principal'], // Relationship
str_replace('-', '', $item['members_effective_date']), // Member effective date
str_replace('-', '', $item['members_expire_date']), // Member expiry date
NULL, // Faskes FKTP (First Level Provider) or Individual preferred provider
NULL, // Faskes FKRTL (Next Level Provider) or Individual group preferred provider
$item['bpjs_class'], // The Right Classes Room of BPJS Participants
NULL, // Name of Faskes
NULL, // Rule BPJSK
NULL, // Internal Use
$item['full_name'], // Member Name
$item['address1'], // Address1
$item['address2'], // Address2
$item['address3'], // Address3
$item['address4'], // Address4
$item['city'], // City
NULL, // State
$item['postal_code'], // Post Code
NULL, // Telephone - Mobile
NULL, // Telephone - Res
NULL, // Telephone - Office
$item['nric'], // NRIC
$item['passport_no'], // Passport No
$item['passport_country'], // Passport Country
$item['email'], // Email
$item['identification_code'], // Identification Code
$item['birth_date'], // Date of Birth
$item['gender_code'], // Sex
NULL, // Internal Use
$item['current_plan']['code'] ?? null, // Plan-ID
NULL, // Employment-Status
NULL, // Internal Use
NULL, // Internal Use
NULL, // Internal Use
str_replace('-', '', $item['terminated_date']), // Date Terminated
$item['pre_existing'], // Pre Existing
$item['bpjs_id'], // BPJS ID
$item['endorsement_date'], // Endorsement Date
$item['remarks'], // Remarks
NULL, // Internal Use
NULL, // Member Since
NULL, // Internal Use
$item['policy_in_force'], // Policy Inforce
NULL, // Member Suspended
str_replace('-', '', $item['activation_date']), // Activation Date
NULL, // Internal Use
$item['start_no_claim'], // StartNoClaim
$item['end_no_claim'], // EndNoClaim
NULL, // Option Mode
];
$row = WriterEntityFactory::createRowFromArray($rowData);
$writer->addRow($row);
}
}
// Menutup penulis
$writer->close();
// dd('test');
// Mengembalikan response untuk mengunduh file
$filePath = public_path('files/CorporateMembershipList.xlsx');
// dd($filePath);
// Mengembalikan response untuk mengunduh file
return Helper::responseJson([
'file_name' => "Corporate Plan & Benefit List " . date('Y-m-d h:i:s'),
"file_url" => url('files/CorporateMembershipList.xlsx')
]);
}
public function showPerMember(Request $request, $corporate_id, $member_id)
{
$per_page = $request->has('per_page') ? $request->input('per_page') : 10;
$data = Member::query()
->with(['requestLogs'])
->whereHas('currentCorporate', function ($query) use ($corporate_id) {
$query->where('corporate_id', $corporate_id);
})
->find($member_id);
return response()->json(['full_name' => $data->full_name ?? null, 'paginations' => Helper::paginateResources(DataListClaimMemberResource::collection($data->requestLogs()->paginate($per_page)))]);
}
public function serviceMonitoring(int $corporate_id, int $request_log_id)
{
$data = RequestLog::query()
->with([
'member:id,member_id,person_id,birth_date,email,name_prefix,name,name_suffix' => [
'currentCorporate',
'person:id,email,name_prefix,name,name_suffix,phone'
],
'organization:id,name',
'requestLogBenefits:id,request_log_id,benefit_id,amount_incurred,amount_approved,amount_not_approved,excess_paid,keterangan' => [
'benefit'
],
'requestLogDailyMonitorings:id,request_log_id,created_at,subject,body_temperature,sistole,diastole,respiration_rate,analysis,lab_date,provider,examination' => [
'requestLogMedicalPlans:request_log_daily_monitoring_id,plan,type'
],
'service:code,name',
])
->find($request_log_id, ['id', 'submission_date', 'discharge_date', 'member_id', 'service_code', 'organization_id']);
$dataBenefit = [];
if (count($data->requestLogBenefits) > 0) {
$totalIncurred = 0;
$totalApprove = 0;
$totalNotApporve = 0;
$totalExcess = 0;
foreach ($data->requestLogBenefits as $itemBenefit) {
$totalIncurred += $itemBenefit->amount_incurred;
$totalApprove += $itemBenefit->amount_approved;
$totalNotApporve += $itemBenefit->amount_not_approved;
$totalExcess += $itemBenefit->excess_paid;
}
$dataBenefit['totalIncurred'] = $totalIncurred;
$dataBenefit['totalApprove'] = $totalApprove;
$dataBenefit['totalNotApprove'] = $totalNotApporve;
$dataBenefit['totalExcess'] = $totalExcess;
}
$data->benefitTotal = $dataBenefit;
return Helper::responseJson(DataServiceMonitoring::make($data));
}
}

View File

@@ -0,0 +1,79 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Client\Transformers\Dashboard\LimitResources;
class CorporatePolicyController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index($corporate_id)
{
$currentCorporate = Auth::user()->managedCorporates()
->with(['currentPolicy'])
->find($corporate_id);
$data = LimitResources::make($currentCorporate);
return Helper::responseJson($data);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('client::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('client::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Models\Person;
use App\Models\Member;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class DataController extends Controller
{
public function show($id)
{
try {
$data = Person::findOrFail($id);
return response()->json($data);
} catch (\Exception $e) {
return response()->json(['error' => 'Member not found'], 404);
}
}
public function update(Request $request, $id)
{
try {
$data = Person::findOrFail($id);
$data->update($request->all());
return response()->json(['message' => 'Data updated successfully']);
} catch (\Exception $e) {
return response()->json(['error' => 'Failed to update data'], 500);
}
}
public function updateFamily(Request $request)
{
try {
// Ambil data keluarga dari payload
$familyData = $request->json()->all();
// Loop melalui data keluarga
foreach ($familyData as $familyMember) {
// Ambil ID anggota keluarga dari payload
$person_id = $familyMember['person_id'];
// Perbarui data anggota keluarga sesuai dengan payload
Member::where('person_id', $person_id)->update([
'name' => $familyMember['name'],
'email' => $familyMember['email'],
'relation_with_principal' => $familyMember['relation_with_principal'],
'birth_date' => $familyMember['birth_date'],
]);
Person::where('id', $person_id)->update([
'name' => $familyMember['name'],
'email' => $familyMember['email'],
'phone' => $familyMember['phone'],
'birth_date' => $familyMember['birth_date']
]);
}
// Respon sukses jika pembaruan berhasil
return response()->json([$person_id => 'Data keluarga berhasil diperbarui'], 200);
} catch (\Exception $e) {
// Tangani kesalahan jika ada yang terjadi
return response()->json(['error' => 'Gagal memperbarui data keluarga: ' . $e->getMessage()], 500);
}
}
}

View File

@@ -2,7 +2,6 @@
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Member;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
@@ -16,27 +15,13 @@ class MemberController extends Controller
*/
public function index(Request $request)
{
$user = auth()->user();
$corporate = $user->managedCorporates()->first();
// $plans =
$members = Member::query()
->whereHas('employeds', function($corporateEmployee) use ($corporate) {
$corporateEmployee->where('corporate_id', $corporate->id);
});
if ($request->has('search')) {
$members
->where('member_id', 'like', "%" . $request->search . "%")
->orWhere('payor_id', 'like', "%" . $request->search . "%")
->orWhere('name', 'like', "%" . $request->search . "%");
}
$members = $members->paginate();
return response()->json([
'members' => Helper::paginateResources($members)
]);
return Member::query()
->when($request->search, function ($query, $search) {
return $query->where('name', 'LIKE', '%' . $search . '%')
->orWhere('member_id', 'LIKE', '%' . $search . '%');
})
->with('currentPlan', 'currentCorporate')
->paginate();
}
/**
@@ -45,7 +30,7 @@ class MemberController extends Controller
*/
public function create()
{
return view('client::create');
return view('internal::create');
}
/**
@@ -65,7 +50,7 @@ class MemberController extends Controller
*/
public function show($id)
{
return view('client::show');
return view('internal::show');
}
/**
@@ -75,7 +60,7 @@ class MemberController extends Controller
*/
public function edit($id)
{
return view('client::edit');
return view('internal::edit');
}
/**
@@ -98,4 +83,11 @@ class MemberController extends Controller
{
//
}
public function benefits($member_id)
{
$member = Member::findOrFail($member_id);
return response()->json($member->currentPlan->benefits()->select(['description', 'code', 'id'])->get());
}
}

View File

@@ -0,0 +1,102 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\CorporatePolicy;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Client\Transformers\Dashboard\TopUpLimitResources;
class TopUpController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index($corporate_id)
{
$data = Auth::user()
->managedCorporates()
->with(['currentPolicy'])
->withCount(['employees', 'claims' => function ($query) {
$query->where('claims.status', 'paid');
}])
->find($corporate_id);
return Helper::responseJson(TopUpLimitResources::make($data));
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request, $corporate_id)
{
$data = $request->validate([
'topup' => 'required|numeric',
]);
$corporatePolicy = CorporatePolicy::query()->where('corporate_id', $corporate_id)->firstOrFail();
if (!$corporatePolicy) {
return response()->json(['message' => 'Corporate policy not found'], 404);
}
$corporatePolicy->total_premi += $data['topup'];
$corporatePolicy->save();
return response()->json(['message' => 'Amount added to total_premi successfully'], 200);
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('client::show');
}
public function get($corporate_id)
{
$data = CorporatePolicy::query()
->where('corporate_id', $corporate_id)
->with(['currentPolicy', 'employees'])
->withCount(['employees', 'claims' => function ($query) {
$query->where('claims.status', 'paid');
}])
->first();
if (!$data) {
return response()->json(['message' => 'Corporate policy not found'], 404);
}
return Helper::responseJson(TopUpLimitResources::make($data));
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

6
Modules/Client/Http/Controllers/Api/UserController.php Executable file → Normal file
View File

@@ -5,6 +5,7 @@ namespace Modules\Client\Http\Controllers\Api;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
class UserController extends Controller
{
@@ -14,7 +15,10 @@ class UserController extends Controller
*/
public function index()
{
return response()->json(auth()->user());
$userLogin = Auth::user();
$corporateSelected = $userLogin->managedCorporates()->select('corporates.id')->where('active', 1)->first();
return response()->json(['user' => $userLogin, 'corporate' => $corporateSelected]);
}
/**

0
Modules/Client/Http/Controllers/ClientController.php Executable file → Normal file
View File

0
Modules/Client/Http/Middleware/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Http/Requests/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Providers/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Providers/ClientServiceProvider.php Executable file → Normal file
View File

0
Modules/Client/Providers/RouteServiceProvider.php Executable file → Normal file
View File

0
Modules/Client/Resources/assets/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Resources/assets/js/app.js Executable file → Normal file
View File

0
Modules/Client/Resources/assets/sass/app.scss Executable file → Normal file
View File

0
Modules/Client/Resources/lang/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Resources/views/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Resources/views/index.blade.php Executable file → Normal file
View File

View File

0
Modules/Client/Routes/.gitkeep Executable file → Normal file
View File

50
Modules/Client/Routes/api.php Executable file → Normal file
View File

@@ -1,9 +1,19 @@
<?php
use Modules\Client\Http\Controllers\Api\AuthController;
use Modules\Client\Http\Controllers\Api\DashboardController;
use Modules\Client\Http\Controllers\Api\CorporateDivisionController;
use Modules\Client\Http\Controllers\Api\CorporateManageController;
use Modules\Client\Http\Controllers\Api\CorporateMemberController;
use Modules\Client\Http\Controllers\Api\CorporateCurrentController;
use Modules\Client\Http\Controllers\Api\MemberController;
use Modules\Client\Http\Controllers\Api\CorporatePolicyController;
use Modules\Client\Http\Controllers\Api\UserController;
use Modules\Client\Http\Controllers\Api\ClaimController;
use Modules\Client\Http\Controllers\Api\TopUpController;
use Modules\Internal\Http\Controllers\ClaimEncounterController;
use Modules\Client\Http\Controllers\Api\ClaimReportController;
use Modules\Client\Http\Controllers\Api\ClaimRequestController;
use Modules\Client\Http\Controllers\Api\DataController;
/*
|--------------------------------------------------------------------------
@@ -24,11 +34,41 @@ Route::prefix('client')->group(function () {
});
Route::middleware('auth:sanctum')->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
Route::get('/user', [UserController::class, 'index']);
Route::get('user', [UserController::class, 'index']);
Route::get('data/{id}', [DataController::class, 'show']);
Route::put('data/{id}', [DataController::class, 'update']);
Route::post('update-family', [DataController::class, 'updateFamily']);
Route::get('dashboard', [DashboardController::class, 'index']);
Route::get('members', [MemberController::class, 'index']);
Route::get('corporate-manage', [CorporateManageController::class, 'index']);
Route::get('corporate-manage/{corporate_id}', [CorporateManageController::class, 'show']);
Route::prefix('{corporate_id}')->group(function () {
Route::post('search-member', [MemberController::class, 'index']);
Route::get('policy', [CorporatePolicyController::class, 'index']);
Route::get('division', [CorporateDivisionController::class, 'index']);
Route::get('members', [CorporateMemberController::class, 'index']);
Route::get('members/{id}', [CorporateMemberController::class, 'show']);
Route::get('export-members/list', [CorporateMemberController::class, 'generateMemberList']);
Route::get('alarm-center-members/{id}', [CorporateMemberController::class, 'showPerMember']);
Route::get('service-monitoring/{request_log_id}', [CorporateMemberController::class, 'serviceMonitoring']);
Route::get('claims/status', [ClaimController::class, 'status']);
Route::get('claims', [ClaimController::class, 'index']);
Route::get('claims/export', [ClaimController::class, 'export']);
Route::get('claims/{claim_id}/encounters', [ClaimEncounterController::class, 'getEncounterData']);
Route::get('topup', [TopUpController::class, 'index']);
// Route::get('topup', [TopUpController::class, 'get']);
Route::post('topup', [TopUpController::class, 'store']);
Route::get('claim-report/claim-status', [ClaimReportController::class, 'claimStatus']);
Route::get('claim-report/detail/{id}', [ClaimReportController::class, 'claimDetail']);
Route::get('claim-report/detail-history/{id}', [ClaimReportController::class, 'claimDetailHistory']);
Route::post('claim-report/{id}/request-files', [ClaimReportController::class, 'requestFiles']);
Route::get('corporate', [CorporateCurrentController::class, 'index']);
Route::put('corporate-update', [CorporateCurrentController::class, 'update']);
});
Route::get('claims/{id}', [ClaimController::class, 'show']);
Route::post('claim-requests', [ClaimRequestController::class, 'store'])->name('claim-requests.store');
Route::post('claim-requests/{id}', [ClaimRequestController::class, 'show'])->name('claim-requests.show');
});
});

0
Modules/Client/Routes/web.php Executable file → Normal file
View File

0
Modules/Client/Tests/Feature/.gitkeep Executable file → Normal file
View File

0
Modules/Client/Tests/Unit/.gitkeep Executable file → Normal file
View File

View File

@@ -0,0 +1,41 @@
<?php
namespace Modules\Client\Transformers\AlarmCenter;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Models\Service;
class DataListClaimMemberResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$serviceData = Service::where('code', $this->service_code)->first();
if ($serviceData) {
$serviceName = $serviceData->name;
} else {
$serviceName = $this->service_cod;
}
if ($this->status == 'approved' && $this->status_final_log ){
$status = 'Done';
} else if ($this->status == 'declined' || $this->status_final_log == 'declined') {
$status = 'Declined';
} else {
$status = 'Ongoing';
}
return [
'id' => $this->id,
'admission_date' => $this->submission_date ?? null,
'discharge_date' => $this->discharge_date ?? null,
'code' => $this->code ?? null,
'service_type' => $serviceName,
'status' => $status,
];
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace Modules\Client\Transformers\AlarmCenter;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Carbon;
class DataServiceMonitoring extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'companyName' => $this->member->currentCorporate->name ?? null,
'serviceCode' => $this->service_code ?? null,
'memberId' => $this->member->member_id ?? null,
'fullName' => $this->member->full_name ?? null,
'dateOfBirth' => $this->member->birth_date ?? null,
'phoneNumber' => $this->person->phone ?? null,
'email' => $this->member->email ?? ($this->member->person->email ?? null),
'serviceName' => $this->service->name ?? ($this->service_code ?? null),
'benefits' => collect($this->requestLogBenefits)->map(function ($requestLogBenefit) {
return [
'amountIncurred' => $requestLogBenefit->amount_incurred,
'amountApproved' => $requestLogBenefit->amount_approved,
'amountNotAprroved' => $requestLogBenefit->amount_not_approved,
'excessPaid' => $requestLogBenefit->excess_paid,
'description' => $requestLogBenefit->keterangan,
'name' => $requestLogBenefit->benefit->description,
];
})->all() ?? null,
'benefitTotal' => $this->benefitTotal ?? null,
'hospital' => $this->organization->name ?? null,
'admissionDate' => $this->submission_date ?? null,
'dischargeDate' => $this->discharge_date ?? null,
'dailyMonitorings' => $this->when($this->service_code === 'IP', collect($this->requestLogDailyMonitorings)
->groupBy(function ($requestLogDailyMonitoring) {
return $requestLogDailyMonitoring->created_at->format('d M Y');
})
->map(function ($groupedItems) {
return collect($groupedItems)
->map(function ($requestLogDailyMonitoring) {
return [
'time' => $requestLogDailyMonitoring->created_at->format('H:i') ?? null,
'status' => 'Done' ?? null,
'subject' => $requestLogDailyMonitoring->subject ?? null,
'bodyTemperature' => $requestLogDailyMonitoring->body_temperature ?? null,
'sistole' => $requestLogDailyMonitoring->sistole . 'mm[Hg]' ?? null,
'diastole' => $requestLogDailyMonitoring->diastole . 'mm[Hg]' ?? null,
'respirationRate' => $requestLogDailyMonitoring->respiration_rate . '/min' ?? null,
'analysis' => $requestLogDailyMonitoring->analysis ?? null,
'complaints' => $requestLogDailyMonitoring->complaints ?? null,
'plans' => $this->when($requestLogDailyMonitoring->requestLogMedicalPlans, collect($requestLogDailyMonitoring->requestLogMedicalPlans)
->map(function ($requestLogMedicalPlan) {
return [
'type' => $requestLogMedicalPlan->type,
'plan' => $requestLogMedicalPlan->plan
];
})
->sortBy('type')
->all()) ?? null,
];
})
->sortByDesc(function ($item) {
return $item['time'];
})
->values();
})
->sortByDesc(function ($groupedItems, $date) {
return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d');
})
->all()) ?? null,
'laboratoriumResults' => $this->whenLoaded('requestLogDailyMonitorings', collect($this->requestLogDailyMonitorings)
->groupBy(function ($requestLogDailyMonitoring) {
return Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y');
})
->map(function ($groupedItems) {
return collect($groupedItems)
->map(function ($requestLogDailyMonitoring) {
return [
'code' => $requestLogDailyMonitoring->code,
'date' => Carbon::parse($requestLogDailyMonitoring->lab_date)->format('d M Y') ?? null,
'examination' => $requestLogDailyMonitoring->examination ?? null,
'location' => $requestLogDailyMonitoring->provider ?? null,
];
})
->sortByDesc(function ($item) {
return $item['code'];
})
->values();
})
->sortByDesc(function ($groupedItems, $date) {
return Carbon::createFromFormat('d M Y', $date)->format('Y-m-d');
})
->all()) ?? null
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Client\Transformers\ClaimReport;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
class ClaimReportFileShowResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'fileName' => $this->name,
'fileUrl' => url(Storage::url($this->path))
];
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Client\Transformers\ClaimReport;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Crypt;
class MemberResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'code' => $this->code,
'member_id' => $this->member_id,
'full_name' => $this->full_name,
'division_name' => $this->division_name ?? '',
'status' => $this->status,
'claimRequestId' => Crypt::encrypt($this->claim_request_id),
'submission_date' => $this->submission_date,
];
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Modules\Client\Transformers\ClaimReport;
use Illuminate\Http\Resources\Json\JsonResource;
class ShowResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'claimRequestId' => $this->id,
'claimId' => $this->claim_id,
'submissionDate' => $this->submission_date,
'histories' => $this->whenLoaded('histories'),
'fullName' => $this->whenLoaded('member', $this->member->full_name),
'status' => $this->status,
'files' => [
'claimResults' => ClaimReportFileShowResources::collection($this->whenLoaded('claimResults')),
'claimConditions' => ClaimReportFileShowResources::collection($this->whenLoaded('claimConditions')),
'claimDiagnosis' => ClaimReportFileShowResources::collection($this->whenLoaded('claimDiagnosis'))
]
];
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace Modules\Client\Transformers;
use Illuminate\Http\Resources\Json\JsonResource;
class ClaimShowResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$data = parent::toArray($request);
// $data['']
$data['benefit_items'] = $this->items
->filter(function ($item) {
return $item->claim_itemable_type == Benefit::class;
})
->map(function ($item) {
$itemData = $item->claim_itemable->toArray();
$itemData['nominal_dicover'] = $item['nominal_dicover'] ?? 0;
$itemData['nominal_ditagihkan'] = $item['nominal_ditagihkan'] ?? 0;
$itemData['nominal_total'] = $item['nominal_total'] ?? 0;
// For React Frotnend
$itemData['biaya_diajukan'] = $itemData['nominal_ditagihkan'];
$itemData['biaya_disetujui'] = $itemData['nominal_dicover'];
return $itemData;
});
$data['primary_diagnosis'] = $this->diagnoses->filter(function ($diagnosis) {
return $diagnosis->type == 'primary';
})->values();
$data['secondary_diagnosis'] = $this->diagnoses->filter(function ($diagnosis) {
return $diagnosis->type == 'secondary';
})->values();
return $data;
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\Client\Transformers\Dashboard;
use Illuminate\Http\Resources\Json\JsonResource;
class LimitResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
$myLimitBalance = (int)$this->currentPolicy->limit_balance;
$myLimitTotal = (int)$this->currentPolicy->total_premi;
$lockBalance = (int)$this->currentPolicy->minimal_stop_service_net;
$lockPercentage = (int)$this->currentPolicy->minimal_stop_service_percentage;
return [
'myLimit' => [
'balance' => $myLimitBalance,
'total' => $myLimitTotal,
'percentage' => $myLimitTotal ? round(($myLimitBalance / $myLimitTotal) * 100, 2) : 0,
],
'lockLimit' => [
'balance' => $lockBalance,
'percentage' => $lockPercentage
]
];
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\Client\Transformers\Dashboard;
use Illuminate\Http\Resources\Json\JsonResource;
class MemberAlarmCenterResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'personId' => $this->person_id,
'memberId' => $this->member_id,
'fullName' => $this->full_name,
'service' => $this->service_code,
'start_date' => $this->members_effective_date,
'end_date' => $this->members_expire_date,
'status' => $this->active,
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Modules\Client\Transformers\Dashboard;
use Illuminate\Http\Resources\Json\JsonResource;
class MemberEmployeeDataResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'personId' => $this->person_id,
'memberId' => $this->member_id,
'fullName' => $this->full_name,
// 'service' => $this->service_code,
'start_date' => $this->start_date,
'end_date' => $this->end_date,
'status' => $this->active,
];
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Client\Transformers\Dashboard;
use Illuminate\Http\Resources\Json\JsonResource;
class MemberResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
// dd($this->currentPlans);
return [
'id' => $this->id,
'memberId' => $this->member_id,
'fullName' => $this->full_name,
'division' => $this->division_name ?? '',
'limit' => [
'current' => $this->claims_sum_total_claim ?? 0,
'total' => $this->currentPlan->limit_rules ?? 0,
'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->claims_sum_total_claim / $this->currentPlan->limit_rules) * 100) : 0
],
'status' => $this->active,
// 'service_type' => $this->currentPlans,
];
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Modules\Client\Transformers\Dashboard;
use Illuminate\Http\Resources\Json\JsonResource;
class TopUpLimitResources extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$myLimitBalance = (int)$this->currentPolicy->limit_balance;
$myLimitTotal = (int)$this->currentPolicy->total_premi;
return [
'companyName' => $this->name,
'policyNumber' => $this->currentPolicy->code,
'totalMembers' => $this->employees_count,
'totalCases' => $this->claims_count,
'myLimit' => [
'balance' => $myLimitBalance,
'total' => $myLimitTotal,
'percentage' => $myLimitTotal ? round(($myLimitBalance / $myLimitTotal) * 100, 2) : 0,
],
'maxTopUp' => ($myLimitTotal - $myLimitBalance)
];
}
}

View File

@@ -0,0 +1,92 @@
<?php
namespace Modules\Client\Transformers;
use Illuminate\Http\Resources\Json\JsonResource;
class DataMemberResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
// return parent::toArray($request);
$data = [
'id' => $this->id,
'person_id' => $this->person_id,
'user_id' => $this->user_id,
'member_id' => $this->member_id,
'payor_id' => $this->payor_id,
'name_prefix' => $this->name_prefix,
'name' => $this->name,
'name_suffix' => $this->name_suffix,
'birth_date' => $this->birth_date,
'birth_place' => $this->person->birth_place,
'last_weight_kg' => $this->person->last_weight_kg,
'last_height_cm'=> $this->person->last_height_cm,
'phone' => $this->person->phone,
'nik' => $this->person->nik,
'religion' => $this->person->religion,
'marital_status' => $this->person->marital_status,
'last_education' => $this->person->last_education,
'current_employment' => $this->person->current_employment,
'main_address_id' => $this->person->currentAddress->text,
'family' => $this->family,
'claim_history' => $this->claim_history,
'gender' => $this->gender,
'language' => $this->language,
'race' => $this->race,
'record_type' => $this->record_type,
'principal_id' => $this->principal_id,
'relation_with_principal' => $this->relation_with_principal,
'bpjs_class' => $this->bpjs_class,
'nric' => $this->nric,
'email' => $this->email,
'bank_info' => $this->bank_info,
'agent_code' => $this->agent_code,
'address1' => $this->address1,
'address2' => $this->address2,
'address3' => $this->address3,
'address4' => $this->address4,
'city' => $this->city,
'state' => $this->state,
'postal_code' => $this->postal_code,
'record_mode' => $this->record_mode,
'telephone_mobile' => $this->telephone_mobile,
'telephone_res' => $this->telephone_res,
'telephone_office' => $this->telephone_office,
'passport_no' => $this->passport_no,
'passport_country' => $this->passport_country,
'identification_code' => $this->identification_code,
'pre_existing' => $this->pre_existing,
'bpjs_id' => $this->bpjs_id,
'endorsement_date' => $this->endorsement_date,
'members_effective_date' => $this->members_effective_date,
'members_expire_date' => $this->members_expire_date,
'activation_date' => $this->activation_date,
'terminated_date' => $this->terminated_date,
'remarks' => $this->remarks,
'policy_in_force' => $this->policy_in_force,
'start_no_claim' => $this->start_no_claim,
'end_no_claim' => $this->end_no_claim,
'active' => $this->active,
'reason' => $this->reason,
'total_claims' => $this->total_claims,
'full_name' => $this->full_name,
'age' => $this->age,
'gender_code' => $this->gender_code,
'limit' => [
'current' => $this->total_claims ?? 0,
'total' => (int)$this->currentPlan->limit_rules ?? 0,
'percentage' => (!empty($this->currentPlan->limit_rules ?? 0)) ? (($this->total_claims / $this->currentPlan->limit_rules) * 100) : 0
],
'benefits' => $this->currentPlan->benefits,
];
return $data;
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Modules\Client\Transformers\EmployeeData\UserProfile;
use Illuminate\Http\Resources\Json\JsonResource;
class DataMemberResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
return [
'person' => [
'name' => $this->full_name ?? null,
'weight' => $this->person->last_weight_kg ?? null,
'height' => $this->person->last_height_kg ?? null,
'placeOfBirth' => ucwords($this->person->birth_place) ?? null,
'dateOfBirth' => $this->birth_date ?? $this->person->birth_date,
'gender' => ucwords(strtolower($this->gender ?? $this->person->gender)),
'phoneNumber' => $this->person->phone ?? null,
'email' => $this->email ?? ($this->person->email ?? null),
'address' => $this->person->last_height_kg ?? null,
'idNumber' => $this->person->nik ?? null,
'religion' => ucwords(strtolower($this->person->religion)) ?? null,
'maritalStatus' => $this->marital_status,
'education' => ucwords(strtolower($this->person->last_education)) ?? null,
'occupation' => null,
],
'families' => collect($this->families)->map(function ($family) {
return [
'name' => $family->full_name ?? null,
'relationship' => $family->relationship ?? null,
'dateOfBirth' => $family->birth_date ?? $family->person->birth_date,
'email' => $this->email ?? ($this->person->email ?? null),
'phoneNumber' => $this->person->phone ?? null,
'status' => $this->status ?? null
];
})->all()
];
}
}

0
Modules/Client/composer.json Executable file → Normal file
View File

0
Modules/Client/module.json Executable file → Normal file
View File

0
Modules/Client/package.json Executable file → Normal file
View File

0
Modules/Client/webpack.mix.js Executable file → Normal file
View File

View File

View File

@@ -0,0 +1,5 @@
<?php
return [
'name' => 'HospitalPortal'
];

View File

View File

@@ -0,0 +1,21 @@
<?php
namespace Modules\HospitalPortal\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class HospitalPortalDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
// $this->call("OthersTableSeeder");
}
}

View File

View File

@@ -0,0 +1,21 @@
<?php
namespace Modules\HospitalPortal\Helpers;
class ApiResponse
{
public static function apiResponse(string $status, array|object $data = null, string|array|object $message = null, int $statusCode)
{
if ($message instanceof \Illuminate\Support\MessageBag) {
$message = $message->first();
}
return response()->json([
'meta' => [
'status' => $status,
'code' => $statusCode,
'message' => $message
],
'data' => $data,
], $statusCode);
}
}

View File

@@ -0,0 +1,143 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\User;
use Crypt;
use Error;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Modules\Internal\Emails\SendVerifyEmail;
use Modules\Internal\Events\ForgetPassword;
use Illuminate\Support\Facades\Validator;
use Modules\HospitalPortal\Helpers\ApiResponse;
class AuthController extends Controller
{
public function login(Request $request)
{
$data = [
'email' => $request->email,
'password' => $request->password
];
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required'
], [
'email.required' => trans('validation.required',['attribute' => 'Email']),
'email.email' => trans('validation.email'),
'password.required' => trans('validation.required',['attribute' => 'Password']),
]);
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
$user = User::where('email', $request->email)->first();
if (!$user) {
return ApiResponse::apiResponse('Not Found', $data, trans('message.not_found'), 404);
}
if (!Hash::check($request->password, $user->password)) {
return ApiResponse::apiResponse('Bad Request', $data, trans('message.password'), 400);
}
$res_data = [
'user' => $user,
'token' => $user->createToken('app')->plainTextToken
];
return ApiResponse::apiResponse("Success", $res_data, trans('message.success'), 200);
}
}
public function logout(Request $request)
{
$token = $request->bearerToken();
Auth::user()->tokens()->where('id', $token)->delete();
return response(['message' => 'Berhasil Logout.']);
}
public function resetPassword(Request $request)
{
$user = Auth::user();
$request->validate([
'old_password' => 'required',
'new_password' => 'required',
'confirm_new_password' => 'required'
]);
if (!Hash::check($request['old_password'], $user->password)) {
return response(['message' => 'Password Salah'], 403);
}
if ($request["new_password"] != $request["confirm_new_password"]) {
return response([
'message' => "Password Tidak Sama"
]);
}
$user->update([
'password' => Hash::make($request->confirm_new_password),
]);
return response()->json($user);
}
public function verifyEmail(Request $request)
{
$request->validate([
'email' => 'required|email',
]);
$user = User::query()
->where('email', $request->email)
->first();
if (!$user) {
return response(['message' => 'User Tidak Ditemukan'], 404);
}
Event(new ForgetPassword($user));
// Mail::to($user->email)->send(new SendVerifyEmail($user));
return response()->json($user);
}
public function forgetPassword(Request $request)
{
$request->validate([
'new_password' => 'required',
'confirm_new_password' => 'required'
]);
$token = Crypt::decryptString($request->token);
$email = explode('|', $token)[0];
$user = User::query()
->where('email', $email)
->first();
if (!$user) {
return response(['message' => 'User Tidak Ditemukan'], 404);
}
if ($request["new_password"] != $request["confirm_new_password"]) {
return response([
'message' => "Password Tidak Sama"
], 404);
}
$user->update([
'password' => Hash::make($request->confirm_new_password),
]);
return response()->json($user);
}
}

View File

@@ -0,0 +1,465 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers\Api;
use App\Events\ClaimRequested;
use App\Helpers\Helper;
use App\Models\ClaimRequest;
use App\Models\File;
use App\Models\Member;
use App\Services\ClaimRequestService;
use App\Services\ClaimService;
use Exception;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\HospitalPortal\Transformers\ClaimRequestResource;
use Modules\HospitalPortal\Transformers\ClaimRequestShowResource;
use PDF;
use Illuminate\Support\Facades\DB;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\Validator;
class ClaimRequestController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
private static $code_prefix = 'CRQ-H';
public function index(request $request)
{
$claimRequests = ClaimRequest::query()
->when($request->search, function ($q, $search) {
$q->where('code', 'LIKE', "%".$search."%");
})
->when($request->orderBy, function ($q, $orderBy) use ($request) {
if (in_array($orderBy, ['submission_date', 'code'])) {
$q->orderBy($orderBy, $request->order);
}
})
->when($request->status, function($q, $status) {
$q->where('status', $status);
})
->with(['member'])
->orderBy('created_at', 'DESC')
->paginate();
return Helper::responseJson($claimRequests);
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('hospitalportal::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
$data = [
'request_logs_id' => $request->request_logs_id,
'member_id' => $request->member_id,
'service_code' => $request->service_code
];
$validator = Validator::make($request->all(), [
'request_logs_id' => 'required',
'member_id' => 'required',
'service_code' => 'required'
], [
'request_logs_id.required' => trans('Validation.required',['attribute' => 'Request Log ID']),
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code'])
]);
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
$check_claim_requests = DB::table('claim_requests')
->where('claim_requests.request_log_id', '=', $request->request_logs_id)
->first();
if(!$check_claim_requests)
{
try {
DB::beginTransaction();
$code = $this->getNextCode();
$member = Member::find($request->member_id);
$newClaimRequest = ClaimRequestService::storeClaimRequest(
row: [],
code: $code,
member: $member,
paymentType: 'reimbursement',
serviceCode: $request->service_code,
requestLogID: $request->request_logs_id,
);
// Log History
$newClaimRequest->histories()->create([
'title' => 'New Claim Requested',
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'type' => 'info',
'system_origin' => 'hospital-portal'
]);
// Claim Log
DB::table('claim_logs')
->insert([
'claim_request_id' => $newClaimRequest->id,
'status' => 'requested',
'date' => date('Y-m-d H:i:s'),
'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})",
'system_origin' => 'hospital-portal',
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at'=> date('Y-m-d H:i:s'),
]);
if ($request->hasFile('additional_files')) {
foreach ($request->additional_files as $file) {
$pathFile = File::storeFile('additional-files', $newClaimRequest->id, $file);
$newClaimRequest->files()->updateOrCreate([
'type' => 'additional-files',
'name' => File::getFileName('additional-files', $newClaimRequest->id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
DB::commit();
return ApiResponse::apiResponse('Success', $data, trans('Message.success'), 200);
}
catch (\Exception $e) {
DB::rollback();
return ApiResponse::apiResponse("Error", $data, $e->getMessage(), 500);
}
}
else
{
return ApiResponse::apiResponse("Error", $data, trans('Message.already_exists'), 409);
}
}
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
$claimRequest = ClaimRequest::findOrFail($id);
$claimRequest->load([
'histories' => function ($history) {
$history->latest();
},
'files',
]);
return Helper::responseJson(data: ClaimRequestShowResource::make($claimRequest));
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('hospitalportal::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
public function generateLog($claim_request_id)
{
$claimRequest = ClaimRequest::findOrFail($claim_request_id);
$service_code = $claimRequest->service_code;
if ($claimRequest->status != 'approved') {
throw new Exception("Belum Teverifikasi", 1);
}
$member = Member::findOrFail($claimRequest->member_id)
->load([
// 'currentPlan',
'currentPlan' => function ($plan) use ($claim_request_id, $service_code) {
$plan->where('plans.service_code', $service_code);
},
'currentPolicy',
'currentPlan.corporateBenefits',
'currentPlan.corporateBenefits.benefit'
]);
$pdf = PDF::loadView('pdf.guaranted_leter', compact('member', 'claimRequest'));
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
return $claimRequest;
}
public static function getNextCode()
{
$last_number = ClaimRequest::withTrashed()->max('code');
$last_number_parts = explode('-', $last_number);
$next_number = count($last_number_parts) < 3 ? 1 : ((int) $last_number_parts[2] + 1);
return self::makeCode($next_number);
}
public static function makeCode($next_number)
{
// Pastikan $next_number adalah integer positif
$next_number = max(1, (int) $next_number);
// Menghasilkan kode dengan format yang diinginkan
return self::$code_prefix . '-' . str_pad($next_number, 5, '0', STR_PAD_LEFT);
}
public function get_claim_requests(Request $request)
{
$limit = $request->has('per_page') ? $request->input('per_page') : 10;
$results = DB::table('claim_requests')
->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('claim_requests.code', 'like', "%" . ($search == 'outpatient' || $search == 'Outpatient' ? 'OP' : 'IP') . "%")
->orWhere('members.member_id', 'like', "%" . $search . "%")
->orWhere('members.name', 'like', "%" . $search . "%")
->orWhere('corporate_divisions.name', 'like', "%" . $search . "%")
->orWhere('claim_requests.status', 'like', "%" . $search . "%")
->orWhere('claim_requests.submission_date', 'like', "%" . $search . "%")
->orWhere('claims.status', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction);
})
->when($request->input('start_date') && !$request->input('end_date'), function ($query, $start_date) {
$query->where(function ($query) use ($start_date) {
$query->where('claim_requests.submission_date', '<', $start_date);
});
})
->when($request->input('status'), function ($query, $status) {
$query->where(function ($query) use ($status) {
if ($status === 'requested') {
$query->where('claim_requests.status', '=', 'requested');
}
if ($status === 'reviewed') {
$query->where('claim_requests.status', '=', 'approved');
$query->where('claims.status', '=', 'received');
}
if ($status === 'approved') {
$query->where('claim_requests.status', '=', 'approved');
$query->where('claims.status', '=', 'approved');
}
if ($status === 'declined') {
$query->where('claim_requests.status', '=', 'approved');
$query->where('claims.status', '=', 'declined');
}
});
})
->select(
'members.id',
'claim_requests.code',
'members.member_id',
'members.name as full_name',
'corporate_divisions.name AS division_name',
DB::raw('
CASE
WHEN claim_requests.status = "requested" THEN "requested"
WHEN claim_requests.status = "approved" AND claims.status = "approved" THEN "approved"
WHEN claim_requests.status = "approved" AND claims.status = "declined" THEN "declined"
WHEN claim_requests.status = "approved" AND claims.status = "disbrusmented" THEN "disbrusmented"
/*WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "pending"*/
WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "reviewed"
ELSE ""
END AS status
'),
'claim_requests.id AS claim_request_id',
'claim_requests.submission_date',
DB::raw('
CASE
WHEN service_code = "OP" THEN "Outpatient"
WHEN service_code = "IP" THEN "Inpatient"
ELSE ""
END AS service_type
')
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function detail_claim_requests($claimRequestId)
{
$status = DB::table('claim_requests')
->leftJoin('claims', 'claim_requests.id', '=', 'claims.claim_request_id')
->leftJoin('members', 'claim_requests.member_id', '=', 'members.id')
->leftJoin('corporate_employees', 'members.id', '=', 'corporate_employees.member_id')
->leftJoin('corporate_divisions', 'corporate_employees.division_id', '=', 'corporate_divisions.id')
->where('claim_requests.id', '=', $claimRequestId)
->select(
'claim_requests.submission_date',
DB::raw('
CASE
WHEN claim_requests.status = "requested" THEN "requested"
WHEN claim_requests.status = "approved" AND claims.status = "approved" THEN "approved"
WHEN claim_requests.status = "approved" AND claims.status = "declined" THEN "declined"
WHEN claim_requests.status = "approved" AND claims.status = "disbrusmented" THEN "disbrusmented"
/*WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "pending"*/
WHEN claim_requests.status = "approved" AND claims.status = "received" THEN "reviewed"
ELSE ""
END AS status
')
)
->first();
$results['status'] = $status;
$timeline = DB::table('claim_logs')
->where('claim_logs.claim_request_id', '=', $claimRequestId)
->select(
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "Request"
WHEN claim_logs.status = "reviewed" THEN "Review"
WHEN claim_logs.status = "approved" THEN "Approval"
WHEN claim_logs.status = "declined" THEN "Decline"
ELSE "-"
END AS txt_status
'),
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "#159C9C"
WHEN claim_logs.status = "reviewed" THEN "#0C53B7"
WHEN claim_logs.status = "approved" THEN "#229A16"
WHEN claim_logs.status = "declined" THEN "#FF4842"
ELSE "-"
END AS txt_status_color
'),
DB::raw('
CASE
WHEN claim_logs.status = "requested" THEN "#00AB5529"
WHEN claim_logs.status = "reviewed" THEN "#1890FF29"
WHEN claim_logs.status = "approved" THEN "#54D62C29"
WHEN claim_logs.status = "declined" THEN "#FF48427A"
ELSE "-"
END AS txt_status_backgroundColor
'),
'claim_logs.date',
'claim_logs.description',
'claim_logs.status'
)
->orderBy('claim_logs.id', 'desc')
->get();
$results['timeline'] = $timeline;
$request_files = DB::table('claim_request_files')
->where('claim_request_files.claim_request_id', '=', $claimRequestId)
->select(
'claim_request_files.*',
DB::raw('(SELECT files.fileable_id FROM files WHERE files.fileable_id = claim_request_files.claim_request_id AND files.type = claim_request_files.type LIMIT 1) AS check_files'),
)
->get();
$results['request_files'] = $request_files;
return Helper::responseJson($results);
}
public function requestFiles(Request $request, $claim_id)
{
if ($request->hasFile('fileDiagnosis')) {
foreach ($request->fileDiagnosis as $file) {
$pathFile = File::storeFile('claim-diagnosis', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-diagnosis',
'name' => File::getFileName('claim-diagnosis', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('fileKondisis')) {
foreach ($request->fileKondisis as $file) {
$pathFile = File::storeFile('claim-kondisi', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-kondisi',
'name' => File::getFileName('claim-kondisi', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('fileResults')) {
foreach ($request->fileResults as $file) {
$pathFile = File::storeFile('claim-result', $claim_id, $file);
File::updateOrCreate([
'fileable_type'=>'App\Models\ClaimRequest',
'fileable_id' => $claim_id,
'type' => 'claim-result',
'name' => File::getFileName('claim-result', $claim_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
return Helper::responseJson(data: $request->toArray(), message: 'Invoice Success Uploaded');
}
}

View File

@@ -0,0 +1,121 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Member;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Validator;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\DB;
class MemberController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function search(Request $request)
{
$data = [
'no_polis' => $request->no_polis,
'birth_date' => $request->birth_date
];
$validator = Validator::make($request->all(), [
'no_polis' => 'required',
'birth_date' => 'required'
], [
'no_polis.required' => trans('Validation.required',['attribute' => 'Member ID']),
'birth_date.required' => trans('Validation.required',['attribute' => 'Birth Date']),
]);
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
$members = DB::table('members')
->leftJoin('member_policies', 'member_policies.member_id','=', 'members.member_id')
->leftJoin('persons', 'persons.id', '=', 'members.person_id')
->where('members.member_id', '=', $request->no_polis)
->where('members.birth_date', '=', $request->birth_date)
->select(
'members.id',
'members.name',
'members.member_id',
'member_policies.policy_id',
'persons.nik',
'members.email',
'members.birth_date',
'members.gender',
'members.marital_status',
'members.language',
'members.race',
'members.relation_with_principal')
->first();
if($members)
{
$res_data['members'] = $members;
$benefits = DB::table('member_plans')
->leftJoin('corporate_benefits','corporate_benefits.plan_id', '=', 'member_plans.plan_id')
->leftJoin('benefits', 'benefits.id', '=', 'corporate_benefits.benefit_id')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->leftJoin('services', 'services.code', '=', 'plans.service_code')
->where('member_plans.member_id', '=', $members->id)
->select(
'benefits.description',
'benefits.code',
'corporate_benefits.corporate_id',
'plans.service_code'
)
->get();
$res_data['benefits'] = $benefits;
$services = DB::table('member_plans')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->leftJoin('services', 'services.code', '=', 'plans.service_code')
->where('member_plans.member_id', $members->id)
->whereNull('member_plans.deleted_at')
->select('plans.service_code', 'services.name')
->get();
$res_data['services'] = $services;
// Group Services
$groupServices = [];
foreach ($res_data['benefits'] as $benefit) {
$serviceCode = $benefit->service_code;
$groupServices[$serviceCode][] = [
'description' => $benefit->description,
'code' => $benefit->code,
];
}
$res_data['groupServices'] = $groupServices;
$res_data['type'] = $request->type;
// Provider
$providers = DB::table('organizations')
->where('organizations.type', '=', 'hospital')
->select(
'organizations.id',
'organizations.name'
)
->get();
$res_data['providers'] = $providers;
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
}
else
{
return ApiResponse::apiResponse("Data Not Found", $data, trans('Message.not_found'), 404);
}
}
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Claim;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
class NotificationController extends Controller
{
public function getNotifications(Request $request, $user_id)
{
$data = [
'user_id' => $user_id,
];
if (!$user_id)
{
return ApiResponse::apiResponse('Not Found', $data, trans('Message.not_found'), 404);
}
else
{
try {
$notifications = DB::table('notifications')
->join('notification_types', 'notification_types.id', '=', 'notifications.type')
->select(
'notifications.id',
'notifications.title',
'notifications.description',
'notifications.avatar',
'notification_types.type',
DB::raw('DATE_FORMAT(notifications.created_at, "%Y-%m-%dT%H:%i:%s.000+07:00") as createdAt'),
'notifications.isUnRead',
)
->where('user_id', '=', $user_id)
->orderBy('id', 'DESC')
->get();
$res_data['notifications'] = $notifications;
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
}
catch (\Exception $e) {
return ApiResponse::apiResponse("Error", $data, $e->getMessage(), 500);
}
}
}
public function setReadNotification(Request $request)
{
$data = [
'user_id' => $request->user_id,
'id' => $request->id,
'isUnRead'=> 0,
];
$validator = Validator::make($request->all(), [
'user_id' => 'required',
'id' => 'required'
], [
'user_id.required' => trans('Validation.required',['attribute' => 'Hospital ID']),
'id.required' => trans('Validation.required',['attribute' => 'ID']),
]);
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
try {
DB::beginTransaction();
DB::table('notifications')
->where('notifications.id', '=', $request->id)
->update($data);
DB::commit();
return ApiResponse::apiResponse("Success", $data, trans('Message.read_notification'), 200);
}
catch (\Exception $e) {
DB::rollback();
return ApiResponse::apiResponse("Error", $data, $e->getMessage(), 500);
}
}
}
}

View File

@@ -0,0 +1,754 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers\Api;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Validator;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\DB;
use Modules\Internal\Http\Controllers\Api\RequestLogController as primeCenterRequestLog;
use App\Helpers\Helper;
use App\Models\File;
use Dompdf\Dompdf;
use Dompdf\Options;
use Illuminate\Support\Facades\View;
class RequestLogController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function requestLog(Request $request)
{
$data = [
'member_id' => $request->member_id,
'service_code' => $request->service_code,
'organization_id' => $request->organization_id,
'organization_name' => $request->organization_name,
'address_provider' => $request->address_provider
];
$validator = Validator::make($request->all(), [
'member_id' => 'required',
'service_code' => 'required'
], [
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
]);
if($request->organization_id)
{
$validator = Validator::make($request->all(), [
'organization_id' => 'required',
'member_id' => 'required',
'service_code' => 'required'
], [
'organization_id.required' => trans('Validation.required',['attribute' => 'Provider ID']),
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
]);
}
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
//insert data to organization
try {
if(!$request->organization_id)
{
// Memulai transaksi
DB::beginTransaction();
// Membuat singkatan dari nama rumah sakit
$singkatan = "";
$words = explode(' ', $request->organization_name);
foreach ($words as $word) {
$singkatan .= strtoupper(substr($word, 0, 1));
}
// Membuat kode organisasi
$kodeOrganisasi = "ORG000" . $singkatan;
// Insert data ke tabel organizations
$organization_id = DB::table('organizations')
->insertGetId([
'name' => $request->organization_name,
'code' => $kodeOrganisasi,
'type' => 'hospital',
'created_at' => now(),
'created_by' => auth()->user()->id
]);
// Insert data ke tabel addresses
$address_id = DB::table('addresses')
->insertGetId([
'text'=> $request->address_provider,
'addressable_type' => 'App\Models\Organization',
'addressable_id' => $organization_id,
'type' => 'hospital',
'created_at' => now(),
'created_by' => auth()->user()->id
]);
// Update main_address_id di tabel organizations
DB::table('organizations')
->where('organizations.id', '=', $organization_id)
->update(['main_address_id' => $address_id]);
// Commit transaksi
DB::commit();
$request->merge(['organization_id' => $organization_id]);
}
$requestLogControllerInstance = new PrimeCenterRequestLog();
$response = $requestLogControllerInstance->createNew($request);
if($response->original['statusCode'] == 200)
{
//send email
// Insert data notifications
$emailTo = 'alarm.center@linksehat.com';
$dataNotif = [
'email' => $emailTo,
'title' => 'Request LOG',
'description' => 'Request LOG from Hospital Portal',
'type' => 1,
'isUnRead' => true,
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
$sendNotif = Helper::insertNotification($dataNotif);
// Send Email after insert notifications
if($sendNotif)
{
//send to alarm
$nameTo = 'Admin LinkSehat';
$dataEmail = [
'email' => $emailTo,
'name' => $nameTo,
'subject' => 'Request LOG from Hospital Portal'. ' '.date('Y-m-d H:i:s'),
'body' => View::make('email/notif_email', ['name' => $nameTo, 'link' => 'https://primecenter.linksehat.com/'])->render(),
];
Helper::sendEmail($dataEmail);
}
return ApiResponse::apiResponse("Success", $data, trans('Message.success'), 200);
}
else
{
return ApiResponse::apiResponse('Server Error', $data, trans('Message.server_error'), 500);
}
} catch (\Exception $e) {
// Rollback transaksi jika terjadi kesalahan
DB::rollBack();
// Handle error, bisa di-log atau dikembalikan sebagai response
return ApiResponse::apiResponse('Server Error', $data, $e->getMessage(), 500);
}
}
}
public function getRequestLog(Request $request)
{
$limit = $request->has('per_page') ? $request->input('per_page') : 10;
$results = DB::table('request_logs')
->leftJoin('members', 'request_logs.member_id', '=', 'members.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('request_logs.code', 'like', "%" . $search . "%")
->orWhere('members.name', 'like', "%" . $search . "%")
->orWhere('request_logs.submission_date', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction);
})
->when($request->input('start_date') && !$request->input('end_date'), function ($query, $start_date) {
$query->where(function ($query) use ($start_date) {
$query->where('request_logs.submission_date', '<', $start_date);
});
})
->when($request->input('status'), function ($query, $status) {
$query->where(function ($query) use ($status) {
if ($status === 'requested') {
$query->where('request_logs.status', '=', 'requested');
}
if ($status === 'reviewed') {
$query->where('request_logs.status', '=', 'approved');
}
if ($status === 'approved') {
$query->where('request_logs.status', '=', 'approved');
}
if ($status === 'declined') {
$query->where('request_logs.status', '=', 'declined');
}
});
})
->select(
'request_logs.id',
'request_logs.member_id',
'request_logs.final_log',
'request_logs.code',
'members.name as full_name',
'members.member_id as no_polis',
'members.birth_date',
DB::raw('
CASE
WHEN request_logs.status = "requested" THEN "requested"
WHEN request_logs.status = "approved" THEN "approved"
WHEN request_logs.status = "declined" THEN "declined"
WHEN request_logs.status = "reviewed" THEN "reviewed"
ELSE ""
END AS status
'),
DB::raw('
(SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider
'),
'request_logs.submission_date')
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function getFinalLog(Request $request)
{
$limit = $request->has('per_page') ? $request->input('per_page') : 10;
$results = DB::table('request_logs')
->leftJoin('members', 'request_logs.member_id', '=', 'members.id')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('request_logs.code', 'like', "%" . $search . "%")
->orWhere('members.name', 'like', "%" . $search . "%")
->orWhere('request_logs.submission_date', 'like', "%" . $search . "%")
->orWhere('request_logs.service_code', 'like', "%" . ($search == 'outpatient' || $search == 'Outpatient' ? 'OP' : 'IP') . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction);
})
->when($request->input('start_date') && !$request->input('end_date'), function ($query, $start_date) {
$query->where(function ($query) use ($start_date) {
$query->where('request_logs.submission_date', '<', $start_date);
});
})
->when($request->input('status'), function ($query, $status) {
$query->where(function ($query) use ($status) {
if ($status === 'requested') {
$query->where('request_logs.status_final_log', '=', 'requested');
}
if ($status === 'reviewed') {
$query->where('request_logs.status_final_log', '=', 'approved');
}
if ($status === 'approved') {
$query->where('request_logs.status_final_log', '=', 'approved');
}
if ($status === 'declined') {
$query->where('request_logs.status_final_log', '=', 'declined');
}
});
})
->where('request_logs.final_log', '=', 1)
->select(
'request_logs.id',
'request_logs.final_log',
'request_logs.code',
'members.name as full_name',
'members.member_id as no_polis',
'members.id AS member_id',
'request_logs.service_code',
'members.birth_date',
DB::raw('
CASE
WHEN request_logs.status_final_log = "requested" THEN "requested"
WHEN request_logs.status_final_log = "approved" THEN "approved"
WHEN request_logs.status_final_log = "declined" THEN "declined"
WHEN request_logs.status_final_log = "reviewed" THEN "reviewed"
ELSE ""
END AS status
'),
'request_logs.submission_date',
DB::raw('
CASE
WHEN service_code = "OP" THEN "Outpatient"
WHEN service_code = "IP" THEN "Inpatient"
ELSE ""
END AS service_type
'),
DB::raw('
(SELECT organizations.name FROM organizations WHERE organizations.id = request_logs.organization_id LIMIT 1) AS provider
'),
DB::raw('
(Select request_log_id FROM claim_requests WHERE claim_requests.request_log_id = request_logs.id LIMIT 1) AS check_claim
')
)
->paginate($limit);
return response()->json(Helper::paginateResources($results));
}
public function requestFinalLog(Request $request)
{
$data = [
'request_logs_id' => $request->request_logs_id
];
$validator = Validator::make($request->all(), [
'request_logs_id' => 'required'
], [
'request_logs_id.required' => trans('Validation.required',['attribute' => 'Request Logs ID'])
]);
if ($validator->fails())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
}
else
{
try {
DB::beginTransaction();
DB::table('request_logs')
->where('request_logs.id', '=', $request->request_logs_id)
->update([
'status_final_log' => 'requested',
'final_log' => 1
]);
if ($request->hasFile('result_files')) {
foreach ($request->result_files as $file) {
$pathFile = File::storeFile('final-log-result', $request->request_logs_id, $file);
File::updateOrCreate([
'fileable_type' => 'App\Models\RequestLog',
'fileable_id' => $request->request_logs_id,
'type' => 'final-log-result',
'name' => File::getFileName('final-log-result', $request->request_logs_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('diagnosa_files')) {
foreach ($request->diagnosa_files as $file) {
$pathFile = File::storeFile('final-log-diagnosis', $request->request_logs_id, $file);
File::updateOrCreate([
'fileable_type' => 'App\Models\RequestLog',
'fileable_id' => $request->request_logs_id,
'type' => 'final-log-diagnosis',
'name' => File::getFileName('final-log-diagnosis', $request->request_logs_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
if ($request->hasFile('kondisi_files')) {
foreach ($request->kondisi_files as $file) {
$pathFile = File::storeFile('final-log-kondisi', $request->request_logs_id, $file);
File::updateOrCreate([
'fileable_type' => 'App\Models\RequestLog',
'fileable_id' => $request->request_logs_id,
'type' => 'final-log-kondisi',
'name' => File::getFileName('final-log-kondisi', $request->request_logs_id, $file),
'original_name' => $file->getClientOriginalName(),
'extension' => $file->getClientOriginalExtension(),
'path' => $pathFile,
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
]);
}
}
DB::commit();
//send email
// Insert data notifications
$emailTo = 'alarm.center@linksehat.com';
$dataNotif = [
'email' => $emailTo,
'title' => 'Request Final LOG',
'description' => 'Request Final LOG from Hospital Portal',
'type' => 1,
'isUnRead' => true,
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
$sendNotif = Helper::insertNotification($dataNotif);
// Send Email after insert notifications
if($sendNotif)
{
//send to alarm
$nameTo = 'Admin LinkSehat';
$dataEmail = [
'email' => $emailTo,
'name' => $nameTo,
'subject' => 'Request Final LOG from Hospital Portal'. ' '.date('Y-m-d H:i:s'),
'body' => View::make('email/notif_email', ['name' => $nameTo, 'link' => 'https://primecenter.linksehat.com/'])->render(),
];
Helper::sendEmail($dataEmail);
}
return ApiResponse::apiResponse('Success', $data, trans('Message.success'), 200);
}
catch (\Exception $e) {
DB::rollback();
return ApiResponse::apiResponse("Error", $data, $e->getMessage(), 500);
}
}
}
public function downlodLog($request_log_id)
{
$dataRequestLog = DB::table('request_logs')
->where('request_logs.id', '=', $request_log_id)
->first();
$data['dataRequestLog'] = $dataRequestLog;
$dataMember = DB::table('members')
->where('members.id', '=', $dataRequestLog->member_id)
->select(
'members.nric',
'members.id',
'members.principal_id',
'members.name',
'members.birth_date',
'members.member_id',
'members.gender',
DB::raw('
(Select persons.nik FROM persons WHERE persons.id = members.person_id LIMIT 1) AS nik
'),
DB::raw('
"LinkSehat" AS penjamin
'),
DB::raw('
(Select corporates.name FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan
'),
DB::raw('
(Select corporates.id FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan
'),
DB::raw('
(Select corporates.code FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan
'),
DB::raw('
(Select services.name FROM services
WHERE services.code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS jenis_perwatan
'),
DB::raw('
(Select member_policies.policy_id FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS no_polis
'),
DB::raw('
(Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis
'),
DB::raw('
(Select plans.code FROM member_plans
LEFT JOIN plans ON plans.id = member_plans.plan_id
WHERE member_plans.member_id = members.id AND plans.service_code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS code_plan
'),
DB::raw('
(Select plans.limit_rules FROM member_plans
LEFT JOIN plans ON plans.id = member_plans.plan_id
WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules
'),
DB::raw('
"IDR" AS mata_uang
'),
'members.members_effective_date AS mulai',
'members.members_expire_date AS akhir'
)
->first();
$data['namaKaryawan'] = '';
if($dataMember->principal_id)
{
$dataNamaKaryawan = DB::table('members')
->where('members.member_id', '=', $dataMember->principal_id)
->select('members.name')
->first();
$data['namaKaryawan'] = $dataNamaKaryawan->name;
}
else{
$data['namaKaryawan'] = $dataMember->name;
}
$data['dataMember'] = $dataMember;
$data['request_logs'] = $dataRequestLog;
$dataRumahSakit = DB::table('organizations')
->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id')
->where('organizations.id', '=', $dataRequestLog->organization_id)
->where('addresses.addressable_type', '=', 'App\Models\Organization')
->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit')
->first();
$data['rumahSakit'] = $dataRumahSakit;
$logoPerusahaan = DB::table('files')
->leftJoin('corporate_employees', 'corporate_employees.corporate_id', '=', 'files.fileable_id')
->leftJoin('corporates', 'corporate_employees.corporate_id', '=', 'corporates.id')
->where('corporate_employees.member_id', '=', $dataMember->id)
->where('files.fileable_type', '=', 'App\Models\Corporate')
->select('files.path', 'corporates.code', 'corporates.name')
->orderBy('files.id', 'desc')
->first();
$data['logoPerusahaan'] = $logoPerusahaan;
$signatureDr = DB::table('signatures')
->leftJoin('corporate_manager', 'corporate_manager.user_id', '=', 'signatures.user_id')
->leftJoin('files', 'files.fileable_id', '=', 'signatures.id')
->where('files.fileable_type', '=', 'App\Models\Signature')
->where('signatures.type', '=', 1)
->where('corporate_manager.corporate_id', '=', $dataMember->id_perusahaan)
->select('files.path')
->first();
$data['signatureDr'] = $signatureDr;
$signatureAd = DB::table('signatures')
->leftJoin('files', 'files.fileable_id', '=', 'signatures.id')
->where('files.fileable_type', '=', 'App\Models\Signature')
->where('signatures.type', '=', 2)
->where('signatures.user_id', '=', $dataRequestLog->approved_by)
->select(
'files.path',
DB::raw('
(Select persons.name FROM users
LEFT JOIN persons ON users.person_id = persons.id
WHERE users.id = "'.$dataRequestLog->approved_by.'" LIMIT 1) AS name_approve
')
)
->first();
$data['signatureAd'] = $signatureAd;
$pdf = new Dompdf();
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isPhpEnabled', true);
$options->set(['isRemoteEnabled' => true]);
$pdf->setOptions($options);
$pdf->setPaper('A4', 'portrait');
// Halaman 1
$html1 = view('pdf.req_log_page_1', $data);
// Halaman 2
// $html2 = view('pdf.req_log_page_2', $data);
// Gabung konten HTML dari dua tampilan
// $htmlCombined = $html1 . $html2;
$htmlCombined = $html1;
$pdf->loadHtml($htmlCombined);
$pdf->render();
$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="file.pdf"',
];
return response($pdf->output(), 200, $headers);
}
public function downlodFinalLog($request_log_id)
{
$dataRequestLog = DB::table('request_logs')
->where('request_logs.id', '=', $request_log_id)
->first();
$data['dataRequestLog'] = $dataRequestLog;
$dataMember = DB::table('members')
->where('members.id', '=', $dataRequestLog->member_id)
->select(
'members.nric',
'members.id',
'members.principal_id',
'members.name',
'members.birth_date',
'members.member_id',
'members.gender',
DB::raw('
(Select persons.nik FROM persons WHERE persons.id = members.person_id LIMIT 1) AS nik
'),
DB::raw('
"LinkSehat" AS penjamin
'),
DB::raw('
(Select corporates.name FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan
'),
DB::raw('
(Select corporates.id FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan
'),
DB::raw('
(Select corporates.code FROM corporates
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan
'),
DB::raw('
(Select services.name FROM services
WHERE services.code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS jenis_perwatan
'),
DB::raw('
(Select member_policies.policy_id FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS no_polis
'),
DB::raw('
(Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis
'),
DB::raw('
(Select plans.code FROM member_plans
LEFT JOIN plans ON plans.id = member_plans.plan_id
WHERE member_plans.member_id = members.id AND plans.service_code = "'.$dataRequestLog->service_code.'" LIMIT 1) AS code_plan
'),
DB::raw('
(Select plans.limit_rules FROM member_plans
LEFT JOIN plans ON plans.id = member_plans.plan_id
WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules
'),
DB::raw('
"IDR" AS mata_uang
'),
'members.members_effective_date AS mulai',
'members.members_expire_date AS akhir'
)
->first();
$data['namaKaryawan'] = '';
if($dataMember->principal_id)
{
$dataNamaKaryawan = DB::table('members')
->where('members.member_id', '=', $dataMember->principal_id)
->select('members.name')
->limit(1)
->first();
$data['namaKaryawan'] = $dataNamaKaryawan->name;
}
else{
$data['namaKaryawan'] = $dataMember->name;
}
$data['dataMember'] = $dataMember;
$data['request_logs'] = $dataRequestLog;
$dataClaimLog = DB::table('request_log_benefits')
->where('request_log_benefits.request_log_id', '=', $request_log_id)
->select(
'*',
DB::raw('
(Select benefits.description FROM benefits
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS benfit
'),
DB::raw('
(Select benefits.code FROM benefits
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS code
')
)
->get();
$data['dataClaimLog'] = $dataClaimLog;
$dataRumahSakit = DB::table('organizations')
->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id')
->where('organizations.id', '=', $dataRequestLog->organization_id)
->where('addresses.addressable_type', '=', 'App\Models\Organization')
->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit')
->first();
$data['rumahSakit'] = $dataRumahSakit;
$logoPerusahaan = DB::table('files')
->leftJoin('corporate_employees', 'corporate_employees.corporate_id', '=', 'files.fileable_id')
->leftJoin('corporates', 'corporate_employees.corporate_id', '=', 'corporates.id')
->where('corporate_employees.member_id', '=', $dataMember->id)
->where('files.fileable_type', '=', 'App\Models\Corporate')
->select('files.path', 'corporates.code', 'corporates.name')
->orderBy('files.id', 'desc')
->first();
$data['logoPerusahaan'] = $logoPerusahaan;
$signatureDr = DB::table('signatures')
->leftJoin('corporate_manager', 'corporate_manager.user_id', '=', 'signatures.user_id')
->leftJoin('files', 'files.fileable_id', '=', 'signatures.id')
->where('files.fileable_type', '=', 'App\Models\Signature')
->where('signatures.type', '=', 1)
->where('corporate_manager.corporate_id', '=', $dataMember->id_perusahaan)
->select('files.path')
->first();
$data['signatureDr'] = $signatureDr;
$signatureAd = DB::table('signatures')
->leftJoin('files', 'files.fileable_id', '=', 'signatures.id')
->where('files.fileable_type', '=', 'App\Models\Signature')
->where('signatures.type', '=', 2)
->where('signatures.user_id', '=', $dataRequestLog->approved_by)
->select(
'files.path',
DB::raw('
(Select persons.name FROM users
LEFT JOIN persons ON users.person_id = persons.id
WHERE users.id = "'.$dataRequestLog->approved_by.'" LIMIT 1) AS name_approve
')
)
->first();
$data['signatureAd'] = $signatureAd;
$pdf = new Dompdf();
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isPhpEnabled', true);
$options->set(['isRemoteEnabled' => true]);
$pdf->setOptions($options);
// Halaman 1
$html1 = view('pdf.final_log_page_1', $data);
// Halaman 2
$html2 = view('pdf.final_log_page_2', $data);
// Gabung konten HTML dari dua tampilan
$htmlCombined = $html1 . $html2;
$pdf->loadHtml($htmlCombined);
$pdf->render();
$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="file.pdf"',
];
return response($pdf->output(), 200, $headers);
}
}

View File

@@ -1,12 +1,14 @@
<?php
namespace Modules\Client\Http\Controllers\Api;
namespace Modules\HospitalPortal\Http\Controllers;
use App\Helpers\Helper;
use App\Models\Claim;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class DashboardController extends Controller
class ClaimController extends Controller
{
/**
* Display a listing of the resource.
@@ -14,16 +16,9 @@ class DashboardController extends Controller
*/
public function index()
{
$user = auth()->user();
$claims = Claim::where('deleted_at', 'ASD')->paginate(5);
$corporate = $user->managedCorporates()
->withCount('employees')
->with(['policies' => function ($policy) {
$policy->limit(1)->latest();
}])
->first();
return response()->json(compact('corporate'));
return Helper::responseJson($claims);
}
/**
@@ -32,7 +27,7 @@ class DashboardController extends Controller
*/
public function create()
{
return view('client::create');
return view('hospitalportal::create');
}
/**
@@ -52,7 +47,7 @@ class DashboardController extends Controller
*/
public function show($id)
{
return view('client::show');
return view('hospitalportal::show');
}
/**
@@ -62,7 +57,7 @@ class DashboardController extends Controller
*/
public function edit($id)
{
return view('client::edit');
return view('hospitalportal::edit');
}
/**

View File

@@ -0,0 +1,79 @@
<?php
namespace Modules\HospitalPortal\Http\Controllers;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class HospitalPortalController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index()
{
return view('hospitalportal::index');
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('hospitalportal::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('hospitalportal::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('hospitalportal::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace Modules\HospitalPortal\Http\Middleware;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\App;
class Authentication
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$acceptHeader = $request->header('Accept');
$contentType = $request->header('Content-Type');
$locale = $request->header('Accept-Language');
// Add language
if(!$locale)
{
return ApiResponse::apiResponse('Unauthorized', null, trans('validation.required', ['attribute' => 'Accept-Language']), 401);
}
if($locale !== 'en-US' && $locale !== 'id-ID')
{
return ApiResponse::apiResponse('Bad Request', null, trans('validation.invalid', ['attribute' => 'Accept-Language']), 400);
}
if ($locale === 'en-US')
{
App::setLocale('en');
} elseif ($locale === 'id-ID')
{
App::setLocale('id');
} else
{
App::setLocale('en');
}
// Validate type accept & content type
if (!$acceptHeader)
{
return ApiResponse::apiResponse('Unauthorized', null, trans('validation.required', ['attribute' => 'Accept']), 401);
}
if (!$contentType)
{
return ApiResponse::apiResponse('Unauthorized', null, trans('validation.required', ['attribute' => 'Content-Type']), 401);
}
if ($acceptHeader !== 'application/json')
{
return ApiResponse::apiResponse('Bad Request', null, trans('validation.invalid', ['attribute' => 'Accept']), 400);
}
if($contentType !== 'application/json')
{
return ApiResponse::apiResponse('Bad Request', null, trans('validation.invalid', ['attribute' => 'Content-Type']), 400);
}
return $next($request);
}
}

View File

@@ -0,0 +1,71 @@
<?php
namespace Modules\HospitalPortal\Http\Middleware;
use Modules\HospitalPortal\Helpers\ApiResponse;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\App;
class Authorization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
$acceptHeader = $request->header('Accept');
$contentType = $request->header('Content-Type');
$locale = $request->header('Accept-Language');
$authorization = $request->header('Authorization');
// Add language
if(!$locale)
{
return ApiResponse::apiResponse('Unauthorized', null, trans('Validation.required', ['attribute' => 'Accept-Language']), 401);
}
if($locale !== 'en-US' && $locale !== 'id-ID')
{
return ApiResponse::apiResponse('Bad Request', null, trans('Validation.invalid', ['attribute' => 'Accept-Language']), 400);
}
if ($locale === 'en-US')
{
App::setLocale('en');
} elseif ($locale === 'id-ID')
{
App::setLocale('id');
} else
{
App::setLocale('en');
}
// Validate authorization
if (empty($authorization) || strpos($authorization, 'Bearer ') !== 0) {
return ApiResponse::apiResponse('Unauthorized', null, trans('Validation.required', ['attribute' => 'Authorization']), 401);
}
// Validate type accept & content type
if (!$acceptHeader)
{
return ApiResponse::apiResponse('Unauthorized', null, trans('Validation.required', ['attribute' => 'Accept']), 401);
}
if (!$contentType && $request->isMethod('post'))
{
return ApiResponse::apiResponse('Unauthorized', null, trans('Validation.required', ['attribute' => 'Content-Type']), 401);
}
if ($acceptHeader !== 'application/json')
{
return ApiResponse::apiResponse('Bad Request', null, trans('Validation.invalid', ['attribute' => 'Accept']), 400);
}
if($contentType !== 'application/json' && $request->isMethod('post'))
{
return ApiResponse::apiResponse('Bad Request', null, trans('Validation.invalid', ['attribute' => 'Content-Type']), 400);
}
return $next($request);
}
}

View File

@@ -0,0 +1,112 @@
<?php
namespace Modules\HospitalPortal\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Factory;
class HospitalPortalServiceProvider extends ServiceProvider
{
/**
* @var string $moduleName
*/
protected $moduleName = 'HospitalPortal';
/**
* @var string $moduleNameLower
*/
protected $moduleNameLower = 'hospitalportal';
/**
* Boot the application events.
*
* @return void
*/
public function boot()
{
$this->registerTranslations();
$this->registerConfig();
$this->registerViews();
$this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->register(RouteServiceProvider::class);
}
/**
* Register config.
*
* @return void
*/
protected function registerConfig()
{
$this->publishes([
module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
], 'config');
$this->mergeConfigFrom(
module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
);
}
/**
* Register views.
*
* @return void
*/
public function registerViews()
{
$viewPath = resource_path('views/modules/' . $this->moduleNameLower);
$sourcePath = module_path($this->moduleName, 'Resources/views');
$this->publishes([
$sourcePath => $viewPath
], ['views', $this->moduleNameLower . '-module-views']);
$this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
}
/**
* Register translations.
*
* @return void
*/
public function registerTranslations()
{
$langPath = resource_path('lang/modules/' . $this->moduleNameLower);
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $this->moduleNameLower);
} else {
$this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
}
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [];
}
private function getPublishableViewPaths(): array
{
$paths = [];
foreach (\Config::get('view.paths') as $path) {
if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
$paths[] = $path . '/modules/' . $this->moduleNameLower;
}
}
return $paths;
}
}

View File

@@ -0,0 +1,69 @@
<?php
namespace Modules\HospitalPortal\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* The module namespace to assume when generating URLs to actions.
*
* @var string
*/
protected $moduleNamespace = 'Modules\HospitalPortal\Http\Controllers';
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*
* @return void
*/
public function boot()
{
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->moduleNamespace)
->group(module_path('HospitalPortal', '/Routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->moduleNamespace)
->group(module_path('HospitalPortal', '/Routes/api.php'));
}
}

View File

@@ -0,0 +1,9 @@
@extends('hospitalportal::layouts.master')
@section('content')
<h1>Hello World</h1>
<p>
This view is loaded from module: {!! config('hospitalportal.name') !!}
</p>
@endsection

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Module HospitalPortal</title>
{{-- Laravel Mix - CSS File --}}
{{-- <link rel="stylesheet" href="{{ mix('css/hospitalportal.css') }}"> --}}
</head>
<body>
@yield('content')
{{-- Laravel Mix - JS File --}}
{{-- <script src="{{ mix('js/hospitalportal.js') }}"></script> --}}
</body>
</html>

View File

View File

@@ -0,0 +1,85 @@
<?php
use Illuminate\Http\Request;
use Modules\HospitalPortal\Http\Controllers\Api\AuthController;
use Modules\HospitalPortal\Http\Controllers\Api\ClaimRequestController;
use Modules\HospitalPortal\Http\Controllers\Api\MemberController;
use Modules\HospitalPortal\Http\Controllers\ClaimController;
use Modules\HospitalPortal\Http\Controllers\Api\NotificationController;
use Modules\HospitalPortal\Http\Controllers\Api\RequestLogController;
use Modules\HospitalPortal\Http\Middleware\Authentication;
use Modules\HospitalPortal\Http\Middleware\Authorization;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::prefix('v1')->group(function() {
Route::prefix('hospitalportal')->group(function () {
Route::middleware(Authentication::class)->group(function () {
Route::controller(AuthController::class)->group(function () {
Route::post('login', 'login');
});
});
//Route::post('forget-password', [AuthController::class, 'forgetPassword'])->name('forget-password');
//Route::post('verify-email', [AuthController::class, 'verifyEmail'])->name('verify-email');
Route::middleware('auth:sanctum')->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
Route::get('/user', function (Request $request) {
return $request->user();
});
Route::put('reset-password', [AuthController::class, 'resetPassword'])->name('resetPassword');
Route::get('claims', [ClaimController::class, 'index']);
Route::middleware(Authorization::class)->group(function () {
//Search Member
Route::controller(MemberController::class)->group(function () {
Route::post('search-member', 'search');
});
// Request LOG
Route::controller(RequestLogController::class)->group(function () {
Route::post('request-log', 'requestLog');
Route::get('get-request-log', 'getRequestLog');
Route::get('get-final-log', 'getFinalLog');
Route::post('request-final-log', 'requestFinalLog');
Route::get('download-log/{request_log_id}', 'downlodLog');
Route::get('download-final-log/{request_log_id}', 'downlodFinalLog');
});
//Notification
Route::controller(NotificationController::class)->group(function() {
//get notifications
Route::get('notifications/{user_id}', 'getNotifications');
//Set read notification
Route::post('set-read-notification', 'setReadNotification');
});
});
// Request Final LOG
Route::controller(RequestLogController::class)->group(function () {
Route::post('request-final-log', 'requestFinalLog');
});
// Claim Submit
Route::controller(ClaimRequestController::class)->group(function () {
Route::post('claim-requests', 'store');
});
Route::get('claim-requests', [ClaimRequestController::class, 'index'])->name('claim-requests.index');
// Route::post('claim-requests', [ClaimRequestController::class, 'store'])->name('claim-requests.store');
Route::get('claim-requests/{claim_request_id}/log', [ClaimRequestController::class, 'generateLog'])->name('claim-requests.generate-log');
Route::get('claim-requests/{id}', [ClaimRequestController::class, 'show'])->name('claim-requests.show');
Route::get('get-claim-requests', [ClaimRequestController::class, 'get_claim_requests'])->name('claim-requests.get_claim_requests');
Route::get('detail-claim-requests/{id}', [ClaimRequestController::class, 'detail_claim_requests'])->name('claim-requests.detail_claim_requests');
Route::post('claim-requests/{id}/request-files', [ClaimRequestController::class, 'requestFiles']);
});
});
});

View File

@@ -0,0 +1,16 @@
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::prefix('hospitalportal')->group(function() {
Route::get('/', 'HospitalPortalController@index');
});

View File

@@ -0,0 +1,31 @@
<?php
namespace Modules\HospitalPortal\Transformers;
use Illuminate\Http\Resources\Json\JsonResource;
class ClaimRequestResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$data = parent::toArray($request);
$historiesGroupByDate = $this->histories->mapToGroups(function($history) {
return [$history->created_at->format('Y-m-d') => $history];
});
$data['histories_by_date'] = [];
foreach ($historiesGroupByDate as $date => $histories) {
$data['histories_by_date'][] = [
'date' => $date,
'histories' => $histories
];
}
return $data; //parent::toArray($request);
}
}

Some files were not shown because too many files have changed in this diff Show More