File size: 114,393 Bytes
8557b04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cfe8f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dược Lâm Sàng | Clinical Pharmacy Tools</title>
<link href="https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@300;400;500;600;700&family=DM+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
:root{--bg:#0a0f1e;--bg2:#0f1628;--bg3:#151d35;--surface:#1a2340;--surface2:#1f2a4a;--border:#2a3860;--accent:#3b82f6;--accent2:#60a5fa;--accent3:#93c5fd;--green:#10b981;--yellow:#f59e0b;--red:#ef4444;--text:#e2e8f0;--text2:#94a3b8;--text3:#64748b;--mono:'DM Mono',monospace;--sans:'Be Vietnam Pro',sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;display:flex;flex-direction:column}
.sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:var(--bg2);border-right:1px solid var(--border);overflow-y:auto;z-index:100;transition:transform .3s}
.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
.sidebar-logo{padding:20px 16px 12px;border-bottom:1px solid var(--border)}
.sidebar-logo .logo-icon{font-size:22px;margin-bottom:4px}
.sidebar-logo .logo-title{font-size:13px;font-weight:700;letter-spacing:.5px}
.sidebar-logo .logo-sub{font-size:11px;color:var(--text3);margin-top:2px}
.nav-group{padding:12px 8px 4px}
.nav-group-label{font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:1px;padding:0 8px 6px}
.nav-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--text2);transition:all .15s;margin-bottom:1px}
.nav-item:hover{background:var(--surface);color:var(--text)}
.nav-item.active{background:rgba(59,130,246,.15);color:var(--accent2);font-weight:500}
.nav-item .nav-icon{font-size:14px;min-width:18px;text-align:center}
.main{margin-left:260px;flex:1;min-height:100vh}
.topbar{position:sticky;top:0;background:rgba(10,15,30,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;gap:12px;z-index:50}
.topbar-title{font-size:14px;font-weight:600}
.topbar-badge{font-size:11px;background:rgba(59,130,246,.15);color:var(--accent2);padding:3px 10px;border-radius:20px;border:1px solid rgba(59,130,246,.3)}
.topbar-warning{margin-left:auto;font-size:11px;color:var(--text3)}
.content{padding:24px;max-width:900px}
.section{display:none}.section.active{display:block}
.section-header{margin-bottom:24px}
.section-title{font-size:22px;font-weight:700;display:flex;align-items:center;gap:10px}
.section-desc{font-size:13px;color:var(--text3);margin-top:6px;line-height:1.6}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px}
.card-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:4px}
.card-sub{font-size:12px;color:var(--text3);margin-bottom:16px}
.tabs{display:flex;gap:4px;margin-bottom:20px;background:var(--bg3);padding:4px;border-radius:10px;border:1px solid var(--border)}
.tab-btn{flex:1;padding:8px 10px;border:none;background:transparent;color:var(--text3);font-family:var(--sans);font-size:11px;font-weight:500;border-radius:7px;cursor:pointer;transition:all .15s}
.tab-btn.active{background:var(--surface2);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.3)}
.tab-content{display:none}.tab-content.active{display:block}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-label{font-size:12px;font-weight:500;color:var(--text2)}
.form-control{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:9px 12px;color:var(--text);font-family:var(--sans);font-size:13px;outline:none;transition:border .15s;width:100%}
.form-control:focus{border-color:var(--accent)}
.form-control option{background:var(--bg2)}
.input-group{display:flex}
.input-group .form-control{border-radius:8px 0 0 8px}
.input-unit{background:var(--bg2);border:1px solid var(--border);border-left:none;border-radius:0 8px 8px 0;padding:9px 12px;font-size:12px;color:var(--text3);display:flex;align-items:center;white-space:nowrap}
.unit-toggle{display:flex;gap:4px;margin-bottom:6px}
.unit-btn{padding:3px 10px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text3);font-size:11px;cursor:pointer;transition:all .15s;font-family:var(--sans)}
.unit-btn.active{background:rgba(59,130,246,.2);border-color:var(--accent);color:var(--accent2)}
.btn-row{display:flex;gap:8px;margin-top:16px}
.btn{padding:10px 20px;border-radius:8px;border:none;font-family:var(--sans);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:6px}
.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#2563eb}
.btn-ghost{background:transparent;color:var(--text3);border:1px solid var(--border)}.btn-ghost:hover{background:var(--surface2);color:var(--text)}
.result-box{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:16px;margin-top:16px}
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.result-item{text-align:center}
.result-label{font-size:11px;color:var(--text3);margin-bottom:4px}
.result-val{font-family:var(--mono);font-size:20px;font-weight:500;color:var(--accent2)}
.result-unit{font-size:11px;color:var(--text3);margin-top:2px}
.interpret{margin-top:12px;padding:12px;border-radius:8px;font-size:12.5px;line-height:1.6}
.interpret.green{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2);color:#6ee7b7}
.interpret.yellow{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.2);color:#fcd34d}
.interpret.red{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);color:#fca5a5}
.interpret.blue{background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.2);color:var(--accent3)}
.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.home-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;transition:all .2s}
.home-card:hover{border-color:var(--accent);transform:translateY(-2px);background:var(--surface2)}
.home-card .hc-icon{font-size:24px;margin-bottom:8px}
.home-card .hc-title{font-size:13px;font-weight:600;margin-bottom:4px}
.home-card .hc-desc{font-size:11px;color:var(--text3);line-height:1.5}
.hc-group-title{grid-column:1/-1;font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:1px;padding-top:8px}
.disclaimer{background:rgba(245,158,11,.05);border:1px solid rgba(245,158,11,.2);border-radius:10px;padding:14px 16px;font-size:12px;color:#fcd34d;line-height:1.6;margin-bottom:20px}
.disclaimer strong{color:#f59e0b}
.table-wrap{overflow-x:auto;margin-top:12px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{background:var(--bg3);padding:8px 12px;text-align:left;color:var(--text3);font-weight:500;border-bottom:1px solid var(--border)}
td{padding:8px 12px;border-bottom:1px solid rgba(42,56,96,.5);color:var(--text2)}
tr:last-child td{border-bottom:none}
.ref{font-size:11px;color:var(--text3);margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-style:italic}
.hamburger{display:none;background:none;border:none;color:var(--text);font-size:20px;cursor:pointer}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}
  .sidebar-overlay.open{display:block}.main{margin-left:0}.hamburger{display:block}
  .form-grid,.form-grid-3{grid-template-columns:1fr}.content{padding:16px}
  .home-grid{grid-template-columns:1fr 1fr}}
</style>
</head>
<body>
<div class="sidebar-overlay" id="overlay" onclick="toggleSidebar()"></div>
<nav class="sidebar" id="sidebar">
  <div class="sidebar-logo">
    <div class="logo-icon">💊</div>
    <div class="logo-title">Dược Lâm Sàng</div>
    <div class="logo-sub">Clinical Pharmacy Tools</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Tổng quan</div>
    <div class="nav-item active" onclick="showSection('home')"><span class="nav-icon">🏠</span>Trang chủ</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Chức năng thận &amp; Nhân trắc</div>
    <div class="nav-item" onclick="showSection('kidney')"><span class="nav-icon">🫘</span>CrCl / eGFR / IBW / ABW</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Kháng sinh đặc biệt</div>
    <div class="nav-item" onclick="showSection('vanco')"><span class="nav-icon">💉</span>Vancomycin PK</div>
    <div class="nav-item" onclick="showSection('amino')"><span class="nav-icon">🔬</span>Aminoglycoside</div>
    <div class="nav-item" onclick="showSection('colistin')"><span class="nav-icon">🧪</span>Colistin (CMS)</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Tính liều thuốc khác</div>
    <div class="nav-item" onclick="showSection('levo')"><span class="nav-icon">🦋</span>Levothyroxine</div>
    <div class="nav-item" onclick="showSection('anesthetic')"><span class="nav-icon">🩺</span>Thuốc gây tê tối đa</div>
    <div class="nav-item" onclick="showSection('heparin')"><span class="nav-icon">💧</span>Heparin UFH</div>
    <div class="nav-item" onclick="showSection('insulin')"><span class="nav-icon">🩸</span>Insulin</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Chuyển đổi liều</div>
    <div class="nav-item" onclick="showSection('opioid')"><span class="nav-icon">🔄</span>Opioid (MEDD)</div>
    <div class="nav-item" onclick="showSection('cortico')"><span class="nav-icon">🔁</span>Corticosteroid</div>
    <div class="nav-item" onclick="showSection('benzo')"><span class="nav-icon">🔃</span>Benzodiazepine</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Thang điểm lâm sàng</div>
    <div class="nav-item" onclick="showSection('sofa')"><span class="nav-icon">📊</span>SOFA / APACHE II / GCS</div>
    <div class="nav-item" onclick="showSection('chads')"><span class="nav-icon">❤️</span>CHA₂DS₂-VASc / CURB-65</div>
    <div class="nav-item" onclick="showSection('news2')"><span class="nav-icon">📉</span>NEWS2</div>
    <div class="nav-item" onclick="showSection('dapt')"><span class="nav-icon">💊</span>DAPT / HAS-BLED</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Dinh dưỡng &amp; Chuyên biệt</div>
    <div class="nav-item" onclick="showSection('tpn')"><span class="nav-icon">🍽️</span>TPN / EN Calculator</div>
    <div class="nav-item" onclick="showSection('phenytoin')"><span class="nav-icon">🧠</span>Phenytoin TDM</div>
    <div class="nav-item" onclick="showSection('warfarin')"><span class="nav-icon">🩸</span>Warfarin &amp; INR</div>
  </div>
  <div class="nav-group">
    <div class="nav-group-label">Dịch truyền &amp; Điện giải</div>
    <div class="nav-item" onclick="showSection('iv')"><span class="nav-icon">🧴</span>Dịch truyền IV</div>
    <div class="nav-item" onclick="showSection('electrolyte')"><span class="nav-icon">⚗️</span>Bù điện giải</div>
  </div>
</nav>
<div class="main">
  <div class="topbar">
    <button class="hamburger" onclick="toggleSidebar()"></button>
    <div class="topbar-title" id="topbar-title">🏠 Trang chủ</div>
    <div class="topbar-badge">Clinical Pharmacy</div>
    <div class="topbar-warning">⚕️ Chỉ dành cho chuyên gia y tế</div>
  </div>
  <div class="content">
<!-- HOME -->
<div class="section active" id="sec-home">
  <div class="section-header">
    <div class="section-title">⚕ Công cụ Hỗ trợ Dược Lâm Sàng</div>
    <div class="section-desc">Hệ thống tính toán dược động học, liều thuốc và thang điểm lâm sàng — chuẩn mực bằng chứng y văn.</div>
  </div>
  <div class="disclaimer">⚠️ <strong>Tuyên bố trách nhiệm:</strong> Công cụ này hỗ trợ quyết định lâm sàng, không thay thế đánh giá chuyên môn. Mọi kết quả cần được bác sĩ/dược sĩ xem xét trong bối cảnh lâm sàng cụ thể.</div>
  <div class="home-grid">
    <div class="hc-group-title">🫘 Chức năng thận &amp; Nhân trắc</div>
    <div class="home-card" onclick="showSection('kidney')"><div class="hc-icon">🫘</div><div class="hc-title">CrCl / eGFR / IBW / ABW</div><div class="hc-desc">Cockcroft-Gault · CKD-EPI 2021 · Cân nặng lý tưởng</div></div>
    <div class="hc-group-title">💉 Kháng sinh đặc biệt</div>
    <div class="home-card" onclick="showSection('vanco')"><div class="hc-icon">💉</div><div class="hc-title">Vancomycin PK</div><div class="hc-desc">Liều khởi đầu · AUC/MIC · TDM 2-điểm</div></div>
    <div class="home-card" onclick="showSection('amino')"><div class="hc-icon">🔬</div><div class="hc-title">Aminoglycoside</div><div class="hc-desc">Traditional · Extended-interval (Hartford)</div></div>
    <div class="home-card" onclick="showSection('colistin')"><div class="hc-icon">🧪</div><div class="hc-title">Colistin (CMS)</div><div class="hc-desc">Loading dose · Maintenance · Suy thận · CRRT</div></div>
    <div class="hc-group-title">💊 Tính liều thuốc khác</div>
    <div class="home-card" onclick="showSection('levo')"><div class="hc-icon">🦋</div><div class="hc-title">Levothyroxine</div><div class="hc-desc">Suy giáp · Ức chế TSH · Cao tuổi</div></div>
    <div class="home-card" onclick="showSection('anesthetic')"><div class="hc-icon">🩺</div><div class="hc-title">Thuốc gây tê tối đa</div><div class="hc-desc">Lidocain · Bupivacain · Ropivacain</div></div>
    <div class="home-card" onclick="showSection('heparin')"><div class="hc-icon">💧</div><div class="hc-title">Heparin UFH</div><div class="hc-desc">Weight-based · Điều chỉnh aPTT</div></div>
    <div class="home-card" onclick="showSection('insulin')"><div class="hc-icon">🩸</div><div class="hc-title">Insulin</div><div class="hc-desc">Sliding scale · IV ICU · Chuyển IV→SC</div></div>
    <div class="hc-group-title">🔄 Chuyển đổi liều tương đương</div>
    <div class="home-card" onclick="showSection('opioid')"><div class="hc-icon">🔄</div><div class="hc-title">Opioid (MEDD)</div><div class="hc-desc">Morphine · Fentanyl · Oxycodone · Tramadol</div></div>
    <div class="home-card" onclick="showSection('cortico')"><div class="hc-icon">🔁</div><div class="hc-title">Corticosteroid</div><div class="hc-desc">Hydrocortisone · Dexamethasone · Methylpred</div></div>
    <div class="home-card" onclick="showSection('benzo')"><div class="hc-icon">🔃</div><div class="hc-title">Benzodiazepine</div><div class="hc-desc">Diazepam · Lorazepam · Midazolam</div></div>
    <div class="hc-group-title">📊 Thang điểm lâm sàng</div>
    <div class="home-card" onclick="showSection('sofa')"><div class="hc-icon">📊</div><div class="hc-title">SOFA / APACHE II / GCS</div><div class="hc-desc">Đánh giá nặng ICU · Suy tạng · Ý thức</div></div>
    <div class="home-card" onclick="showSection('chads')"><div class="hc-icon">❤️</div><div class="hc-title">CHA₂DS₂-VASc / CURB-65</div><div class="hc-desc">Nguy cơ đột quỵ rung nhĩ · Viêm phổi CAP</div></div>
    <div class="home-card" onclick="showSection('news2')"><div class="hc-icon">📉</div><div class="hc-title">NEWS2</div><div class="hc-desc">Phát hiện sớm bệnh nặng · Sepsis</div></div>
    <div class="home-card" onclick="showSection('dapt')"><div class="hc-icon">💊</div><div class="hc-title">DAPT / HAS-BLED</div><div class="hc-desc">Kháng kết tập tiểu cầu kép · Nguy cơ chảy máu</div></div>
    <div class="hc-group-title">🍽️ Dinh dưỡng &amp; Chuyên biệt</div>
    <div class="home-card" onclick="showSection('tpn')"><div class="hc-icon">🍽️</div><div class="hc-title">TPN / EN Calculator</div><div class="hc-desc">Năng lượng · Đạm · Lipid · Dịch</div></div>
    <div class="home-card" onclick="showSection('phenytoin')"><div class="hc-icon">🧠</div><div class="hc-title">Phenytoin TDM</div><div class="hc-desc">Hiệu chỉnh albumin · Loading dose</div></div>
    <div class="home-card" onclick="showSection('warfarin')"><div class="hc-icon">🩸</div><div class="hc-title">Warfarin &amp; INR</div><div class="hc-desc">Điều chỉnh liều · Fennerty Algorithm</div></div>
    <div class="hc-group-title">🧴 Dịch truyền &amp; Điện giải</div>
    <div class="home-card" onclick="showSection('iv')"><div class="hc-icon">🧴</div><div class="hc-title">Dịch truyền IV</div><div class="hc-desc">Tốc độ · Thể tích · Thời gian · Giọt/phút</div></div>
    <div class="home-card" onclick="showSection('electrolyte')"><div class="hc-icon">⚗️</div><div class="hc-title">Bù điện giải</div><div class="hc-desc">Na⁺ · K⁺ · Tốc độ K⁺ IV · HCO₃⁻</div></div>
  </div>
</div>

<!-- KIDNEY -->
<div class="section" id="sec-kidney">
  <div class="section-header"><div class="section-title">🫘 Chức năng thận &amp; Nhân trắc</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'ktab-crcl')">CrCl Cockcroft-Gault</button>
    <button class="tab-btn" onclick="switchTab(this,'ktab-egfr')">eGFR CKD-EPI 2021</button>
    <button class="tab-btn" onclick="switchTab(this,'ktab-ibw')">IBW / ABW</button>
  </div>
  <div class="tab-content active" id="ktab-crcl">
    <div class="card">
      <div class="card-title">🫘 Độ thanh thải Creatinine — Cockcroft-Gault</div>
      <div class="card-sub">Công thức chuẩn cho hiệu chỉnh liều thuốc theo chức năng thận</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="cg-age" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="cg-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group"><label class="form-label">Cân nặng thực tế (kg)</label><input class="form-control" type="number" id="cg-wt" placeholder="60"></div>
        <div class="form-group">
          <label class="form-label">Creatinine huyết thanh</label>
          <div class="unit-toggle">
            <button class="unit-btn active" id="cg-u1" onclick="setU('cg','mgdl')">mg/dL</button>
            <button class="unit-btn" id="cg-u2" onclick="setU('cg','mmol')">mmol/L</button>
          </div>
          <div class="input-group"><input class="form-control" type="number" id="cg-cr" step="0.01" placeholder="1.0"><div class="input-unit" id="cg-lbl">mg/dL</div></div>
        </div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcCrCl()">⚡ Tính CrCl</button><button class="btn btn-ghost" onclick="clr('res-crcl','cg-age cg-wt cg-cr')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-crcl" style="display:none"></div>
      <div class="ref">Cockcroft DW, Gault MH. Nephron. 1976;16(1):31-41.</div>
    </div>
  </div>
  <div class="tab-content" id="ktab-egfr">
    <div class="card">
      <div class="card-title">🧬 eGFR — CKD-EPI 2021 (race-free)</div>
      <div class="card-sub">Phân loại bệnh thận mạn theo KDIGO 2022</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="eg-age" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="eg-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group" style="grid-column:1/-1">
          <label class="form-label">Creatinine huyết thanh</label>
          <div class="unit-toggle">
            <button class="unit-btn active" id="eg-u1" onclick="setU('eg','mgdl')">mg/dL</button>
            <button class="unit-btn" id="eg-u2" onclick="setU('eg','mmol')">mmol/L</button>
          </div>
          <div class="input-group"><input class="form-control" type="number" id="eg-cr" step="0.01" placeholder="1.0"><div class="input-unit" id="eg-lbl">mg/dL</div></div>
        </div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcEGFR()">⚡ Tính eGFR</button><button class="btn btn-ghost" onclick="clr('res-egfr','eg-age eg-cr')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-egfr" style="display:none"></div>
      <div class="ref">Inker LA et al. N Engl J Med. 2021;385:1737-1749.</div>
    </div>
  </div>
  <div class="tab-content" id="ktab-ibw">
    <div class="card">
      <div class="card-title">⚖️ Cân nặng lý tưởng IBW &amp; Hiệu chỉnh ABW</div>
      <div class="card-sub">Công thức Devine · ABW béo phì · BMI</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="ibw-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group"><label class="form-label">Chiều cao (cm)</label><input class="form-control" type="number" id="ibw-ht" placeholder="165"></div>
        <div class="form-group"><label class="form-label">Cân nặng thực tế (kg)</label><input class="form-control" type="number" id="ibw-wt" placeholder="70"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcIBW()">⚡ Tính IBW / ABW</button><button class="btn btn-ghost" onclick="clr('res-ibw','ibw-ht ibw-wt')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-ibw" style="display:none"></div>
      <div class="ref">Devine BJ. Drug Intell Clin Pharm. 1974;8:650-655.</div>
    </div>
  </div>
</div>
<!-- VANCOMYCIN -->
<div class="section" id="sec-vanco">
  <div class="section-header"><div class="section-title">💉 Vancomycin — PK/TDM Calculator</div><div class="section-desc">Tính liều khởi đầu và AUC/MIC theo ASHP/IDSA/SIDP 2020.</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'vtab-init')">Liều khởi đầu</button>
    <button class="tab-btn" onclick="switchTab(this,'vtab-tdm')">TDM / AUC 2-điểm</button>
  </div>
  <div class="tab-content active" id="vtab-init">
    <div class="card">
      <div class="card-title">💉 Liều Vancomycin Khởi đầu</div>
      <div class="card-sub">Matzke 1984 · Rybak ASHP/IDSA 2020 · Mục tiêu AUC₂₄/MIC = 400–600</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Cân nặng thực tế (kg)</label><input class="form-control" type="number" id="v-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="v-age" placeholder="50"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="v-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group">
          <label class="form-label">Creatinine huyết thanh</label>
          <div class="unit-toggle">
            <button class="unit-btn active" id="v-u1" onclick="setU('v','mgdl')">mg/dL</button>
            <button class="unit-btn" id="v-u2" onclick="setU('v','mmol')">mmol/L</button>
          </div>
          <div class="input-group"><input class="form-control" type="number" id="v-cr" step="0.01" placeholder="1.0"><div class="input-unit" id="v-lbl">mg/dL</div></div>
        </div>
        <div class="form-group"><label class="form-label">Chỉ định</label><select class="form-control" id="v-ind"><option value="severe">Nhiễm trùng nặng / MRSA xâm lấn</option><option value="mild">Da mô mềm nhẹ-vừa</option><option value="endo">Viêm nội tâm mạc</option></select></div>
        <div class="form-group"><label class="form-label">MIC dự kiến (mg/L)</label><select class="form-control" id="v-mic"><option value="1">≤1 mg/L</option><option value="2">2 mg/L</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcVanco()">⚡ Tính liều Vancomycin</button><button class="btn btn-ghost" onclick="clr('res-vanco','v-wt v-age v-cr')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-vanco" style="display:none"></div>
      <div class="ref">Rybak MJ et al. Am J Health Syst Pharm. 2020;77(11):835-864.</div>
    </div>
  </div>
  <div class="tab-content" id="vtab-tdm">
    <div class="card">
      <div class="card-title">📈 TDM &amp; AUC₂₄ (2-điểm)</div>
      <div class="card-sub">Tính Ke, Vd, t½ từ Peak &amp; Trough thực tế</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Liều đang dùng (mg)</label><input class="form-control" type="number" id="tdm-dose" placeholder="1000"></div>
        <div class="form-group"><label class="form-label">Khoảng cách liều (h)</label><input class="form-control" type="number" id="tdm-interval" placeholder="12"></div>
        <div class="form-group"><label class="form-label">Thời gian truyền (h)</label><input class="form-control" type="number" id="tdm-infusion" step="0.5" placeholder="1"></div>
        <div class="form-group"><label class="form-label">MIC (mg/L)</label><select class="form-control" id="tdm-mic"><option value="1">1 mg/L</option><option value="2">2 mg/L</option></select></div>
        <div class="form-group"><label class="form-label">Trough (mg/L) — trước liều kế</label><input class="form-control" type="number" id="tdm-trough" step="0.1" placeholder="8"></div>
        <div class="form-group"><label class="form-label">Peak (mg/L) — 1h sau kết thúc</label><input class="form-control" type="number" id="tdm-peak" step="0.1" placeholder="25"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcTDM()">⚡ Tính AUC</button><button class="btn btn-ghost" onclick="clr('res-tdm','tdm-dose tdm-interval tdm-infusion tdm-trough tdm-peak')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-tdm" style="display:none"></div>
    </div>
  </div>
</div>

<!-- AMINOGLYCOSIDE -->
<div class="section" id="sec-amino">
  <div class="section-header"><div class="section-title">🔬 Aminoglycoside Calculator</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'atab-mdd')">Liều truyền thống (MDD)</button>
    <button class="tab-btn" onclick="switchTab(this,'atab-eid')">Giãn cách mở rộng (EID)</button>
  </div>
  <div class="tab-content active" id="atab-mdd">
    <div class="card">
      <div class="card-title">🔬 Aminoglycoside — Truyền thống</div>
      <div class="card-sub">Gentamicin · Tobramycin · Amikacin</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Thuốc</label><select class="form-control" id="ag-drug"><option value="genta">Gentamicin</option><option value="tobra">Tobramycin</option><option value="amika">Amikacin</option></select></div>
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="ag-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="ag-age" placeholder="50"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="ag-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group">
          <label class="form-label">Creatinine huyết thanh</label>
          <div class="unit-toggle">
            <button class="unit-btn active" id="ag-u1" onclick="setU('ag','mgdl')">mg/dL</button>
            <button class="unit-btn" id="ag-u2" onclick="setU('ag','mmol')">mmol/L</button>
          </div>
          <div class="input-group"><input class="form-control" type="number" id="ag-cr" step="0.01" placeholder="1.0"><div class="input-unit" id="ag-lbl">mg/dL</div></div>
        </div>
        <div class="form-group"><label class="form-label">Chỉ định</label><select class="form-control" id="ag-ind"><option value="uti">Nhiễm trùng tiết niệu</option><option value="severe">Nhiễm khuẩn huyết / Nặng</option><option value="cf">Xơ nang (CF)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcAmino()">⚡ Tính liều</button><button class="btn btn-ghost" onclick="clr('res-amino','ag-wt ag-age ag-cr')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-amino" style="display:none"></div>
      <div class="ref">Avent ML et al. Intern Med J. 2011;41(6):441-449.</div>
    </div>
  </div>
  <div class="tab-content" id="atab-eid">
    <div class="card">
      <div class="card-title">⏰ Extended-Interval Dosing — Hartford Nomogram</div>
      <div class="disclaimer" style="margin-top:0">⚠️ <strong>Chống chỉ định EID:</strong> Mang thai · Viêm nội tâm mạc · Bỏng nặng · Cổ trướng · Lọc máu · Sốt giảm bạch cầu</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Thuốc</label><select class="form-control" id="eid-drug"><option value="genta">Gentamicin (7 mg/kg)</option><option value="tobra">Tobramycin (7 mg/kg)</option><option value="amika">Amikacin (15–20 mg/kg)</option></select></div>
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="eid-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="eid-age" placeholder="50"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="eid-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
        <div class="form-group" style="grid-column:1/-1">
          <label class="form-label">Creatinine huyết thanh</label>
          <div class="unit-toggle">
            <button class="unit-btn active" id="eid-u1" onclick="setU('eid','mgdl')">mg/dL</button>
            <button class="unit-btn" id="eid-u2" onclick="setU('eid','mmol')">mmol/L</button>
          </div>
          <div class="input-group"><input class="form-control" type="number" id="eid-cr" step="0.01" placeholder="1.0"><div class="input-unit" id="eid-lbl">mg/dL</div></div>
        </div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcEID()">⚡ Tính liều EID</button><button class="btn btn-ghost" onclick="clr('res-eid','eid-wt eid-age eid-cr')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-eid" style="display:none"></div>
      <div class="ref">Nicolau DP et al. Antimicrob Agents Chemother. 1995;39(3):650-655.</div>
    </div>
  </div>
</div>

<!-- COLISTIN -->
<div class="section" id="sec-colistin">
  <div class="section-header"><div class="section-title">🧪 Colistin (CMS) Calculator</div></div>
  <div class="card">
    <div class="card-title">🧪 Colistin — Loading &amp; Maintenance Dose</div>
    <div class="card-sub">IBW-based · Hiệu chỉnh CrCl · HD · CRRT</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">IBW (kg)</label><input class="form-control" type="number" id="col-ibw" placeholder="55"></div>
      <div class="form-group"><label class="form-label">CrCl (mL/phút)</label><input class="form-control" type="number" id="col-crcl" placeholder="60"></div>
      <div class="form-group"><label class="form-label">Tình trạng thận thay thế</label><select class="form-control" id="col-rrt"><option value="none">Không lọc máu</option><option value="hd">Chạy thận nhân tạo (HD)</option><option value="crrt">CRRT</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcColistin()">⚡ Tính liều Colistin</button><button class="btn btn-ghost" onclick="clr('res-colistin','col-ibw col-crcl')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-colistin" style="display:none"></div>
    <div class="ref">Nation RL et al. Clin Infect Dis. 2016;62(5):552-558.</div>
  </div>
</div>

<!-- LEVOTHYROXINE -->
<div class="section" id="sec-levo">
  <div class="section-header"><div class="section-title">🦋 Liều Levothyroxine</div></div>
  <div class="card">
    <div class="card-title">🦋 Levothyroxine Dosing — ATA 2014 &amp; ETA 2019</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Cân nặng thực tế (kg)</label><input class="form-control" type="number" id="levo-wt" placeholder="60"></div>
      <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="levo-age" placeholder="50"></div>
      <div class="form-group"><label class="form-label">Chỉ định</label><select class="form-control" id="levo-ind"><option value="full">Suy giáp hoàn toàn (trẻ, khỏe)</option><option value="elderly">Suy giáp (người cao tuổi / tim mạch)</option><option value="sub">Suy giáp dưới lâm sàng</option><option value="suppress">Ức chế TSH (ung thư giáp)</option><option value="postthyroid">Sau cắt toàn bộ tuyến giáp</option></select></div>
      <div class="form-group"><label class="form-label">Tim mạch</label><select class="form-control" id="levo-cardiac"><option value="normal">Bình thường</option><option value="risk">Bệnh tim / nguy cơ cao</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcLevo()">⚡ Tính liều Levothyroxine</button><button class="btn btn-ghost" onclick="clr('res-levo','levo-wt levo-age')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-levo" style="display:none"></div>
  </div>
</div>

<!-- ANESTHETIC -->
<div class="section" id="sec-anesthetic">
  <div class="section-header"><div class="section-title">🩺 Thuốc gây tê — Liều tối đa</div></div>
  <div class="card">
    <div class="card-title">🩺 Local Anesthetic Maximum Dose — NYSORA 2020</div>
    <div class="disclaimer" style="margin-top:0">🚨 Luôn chuẩn bị <strong>Intralipid 20%</strong> để xử lý độc tính toàn thân (LAST). Tiêm thử liều trước.</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Thuốc gây tê</label><select class="form-control" id="an-drug"><option value="4.5">Lidocain (4.5 mg/kg)</option><option value="7">Lidocain + Epinephrine (7 mg/kg)</option><option value="2">Bupivacain (2 mg/kg)</option><option value="2.5">Bupivacain + Epinephrine (2.5 mg/kg)</option><option value="3">Ropivacain (3 mg/kg)</option><option value="4">Mepivacain (4 mg/kg)</option></select></div>
      <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="an-wt" placeholder="60"></div>
      <div class="form-group"><label class="form-label">Nồng độ dung dịch (%)</label><select class="form-control" id="an-conc"><option value="0.25">0.25%</option><option value="0.5" selected>0.5%</option><option value="1.0">1.0%</option><option value="2.0">2.0%</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcAnesthetic()">⚡ Tính liều tối đa</button><button class="btn btn-ghost" onclick="clr('res-anesthetic','an-wt')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-anesthetic" style="display:none"></div>
  </div>
</div>

<!-- HEPARIN -->
<div class="section" id="sec-heparin">
  <div class="section-header"><div class="section-title">💧 Heparin UFH — Weight-Based Protocol</div><div class="section-desc">Phác đồ Raschke 1993 · Mục tiêu aPTT 60–100s.</div></div>
  <div class="card">
    <div class="card-title">💧 UFH Weight-Based Dosing</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Cân nặng thực tế (kg)</label><input class="form-control" type="number" id="hep-wt" placeholder="70"></div>
      <div class="form-group"><label class="form-label">Chỉ định</label><select class="form-control" id="hep-ind"><option value="dvtpe">DVT/PE (80 U/kg bolus + 18 U/kg/h)</option><option value="acs">ACS (60 U/kg bolus + 12 U/kg/h)</option><option value="bridge">Cầu nối (không bolus + 15 U/kg/h)</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcHeparin()">⚡ Tính liều Heparin</button><button class="btn btn-ghost" onclick="clr('res-heparin','hep-wt')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-heparin" style="display:none"></div>
    <div class="table-wrap"><table><thead><tr><th>aPTT (giây)</th><th>Hành động</th><th>Thay đổi tốc độ</th><th>Kiểm tra lại</th></tr></thead><tbody>
      <tr><td>&lt;40</td><td>Bolus 80 U/kg</td><td>↑ 4 U/kg/h</td><td>6h</td></tr>
      <tr><td>40–59</td><td>Bolus 40 U/kg</td><td>↑ 2 U/kg/h</td><td>6h</td></tr>
      <tr><td style="color:#10b981;font-weight:600">60–100 ✓</td><td>Không thay đổi</td><td></td><td>6h</td></tr>
      <tr><td>101–120</td><td></td><td>↓ 2 U/kg/h</td><td>6h</td></tr>
      <tr><td>&gt;120</td><td>Ngưng 60 phút</td><td>↓ 3 U/kg/h</td><td>6h sau truyền lại</td></tr>
    </tbody></table></div>
    <div class="ref">Raschke RA et al. Ann Intern Med. 1993;119(9):874-881.</div>
  </div>
</div>
<!-- INSULIN -->
<div class="section" id="sec-insulin">
  <div class="section-header"><div class="section-title">🩸 Insulin — Liều &amp; Phác đồ</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'itab-sliding')">Sliding Scale</button>
    <button class="tab-btn" onclick="switchTab(this,'itab-iv')">Truyền IV ICU</button>
    <button class="tab-btn" onclick="switchTab(this,'itab-sc')">IV → SC</button>
  </div>
  <div class="tab-content active" id="itab-sliding">
    <div class="card">
      <div class="card-title">💉 Insulin Regular SC — Sliding Scale</div>
      <div class="card-sub">Mục tiêu đường huyết nội trú: 7.8–10.0 mmol/L (ADA 2024)</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Đường huyết (mmol/L)</label><input class="form-control" type="number" id="ins-bg" step="0.1" placeholder="12.0"></div>
        <div class="form-group"><label class="form-label">Độ nhạy insulin</label><select class="form-control" id="ins-sens"><option value="low">Thấp (steroid, béo phì, nhiễm trùng)</option><option value="normal" selected>Bình thường</option><option value="high">Cao (gầy, suy thận, suy thượng thận)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcInsulinSliding()">⚡ Xem phác đồ</button><button class="btn btn-ghost" onclick="clr('res-insulin-sliding','ins-bg')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-insulin-sliding" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="itab-iv">
    <div class="card">
      <div class="card-title">🏥 Truyền Insulin IV — ICU</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">BG hiện tại (mmol/L)</label><input class="form-control" type="number" id="iiv-bg" step="0.1" placeholder="14.0"></div>
        <div class="form-group"><label class="form-label">BG trước đó (mmol/L)</label><input class="form-control" type="number" id="iiv-prev" step="0.1" placeholder="16.0"></div>
        <div class="form-group"><label class="form-label">Tốc độ truyền hiện tại (U/h)</label><input class="form-control" type="number" id="iiv-rate" step="0.5" placeholder="2"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcInsulinIV()">⚡ Tính điều chỉnh</button><button class="btn btn-ghost" onclick="clr('res-iiv','iiv-bg iiv-prev iiv-rate')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-iiv" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="itab-sc">
    <div class="card">
      <div class="card-title">🔄 Chuyển đổi Insulin IV → SC Basal-Bolus</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tổng insulin IV/24h (U)</label><input class="form-control" type="number" id="isc-total" placeholder="40"></div>
        <div class="form-group"><label class="form-label">BN ăn được?</label><select class="form-control" id="isc-eating"><option value="yes">Có ăn</option><option value="no">Không (NPO)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcInsulinSC()">⚡ Tính liều SC</button><button class="btn btn-ghost" onclick="clr('res-isc','isc-total')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-isc" style="display:none"></div>
    </div>
  </div>
</div>

<!-- OPIOID -->
<div class="section" id="sec-opioid">
  <div class="section-header"><div class="section-title">🔄 Opioid Tương đương (MEDD)</div></div>
  <div class="card">
    <div class="card-title">🔄 Opioid Equianalgesic Converter — CDC 2022</div>
    <div class="disclaimer" style="margin-top:0">⚠️ Khi chuyển đổi: giảm <strong>25–50%</strong> do dung nạp chéo không hoàn toàn.</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Opioid nguồn</label><select class="form-control" id="op-from"><option value="morphine_po">Morphine uống (PO)</option><option value="morphine_iv">Morphine tiêm (IV/IM)</option><option value="oxycodone">Oxycodone uống</option><option value="hydromorphone_po">Hydromorphone uống</option><option value="hydromorphone_iv">Hydromorphone tiêm</option><option value="fentanyl_iv">Fentanyl tiêm (mcg/h)</option><option value="fentanyl_patch">Fentanyl dán (mcg/h)</option><option value="codeine">Codeine uống</option><option value="tramadol">Tramadol uống</option><option value="pethidine_iv">Pethidine tiêm</option></select></div>
      <div class="form-group"><label class="form-label">Liều (mg/ngày hoặc mcg/h)</label><input class="form-control" type="number" id="op-dose" placeholder="60"></div>
      <div class="form-group"><label class="form-label">Chuyển sang</label><select class="form-control" id="op-to"><option value="morphine_po">Morphine uống (PO)</option><option value="morphine_iv">Morphine tiêm (IV/IM)</option><option value="oxycodone">Oxycodone uống</option><option value="hydromorphone_po">Hydromorphone uống</option><option value="fentanyl_iv">Fentanyl tiêm (mcg/h)</option><option value="tramadol">Tramadol uống</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcOpioid()">⚡ Chuyển đổi liều</button><button class="btn btn-ghost" onclick="clr('res-opioid','op-dose')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-opioid" style="display:none"></div>
  </div>
</div>

<!-- CORTICO -->
<div class="section" id="sec-cortico">
  <div class="section-header"><div class="section-title">🔁 Corticosteroid Tương đương</div></div>
  <div class="card">
    <div class="card-title">🔁 Corticosteroid Equivalence Converter</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Corticoid nguồn</label><select class="form-control" id="cs-from"><option value="20">Hydrocortisone (eq=20)</option><option value="25">Cortisone (eq=25)</option><option value="5">Prednisolone/Prednisone (eq=5)</option><option value="4">Methylprednisolone (eq=4)</option><option value="0.75">Dexamethasone (eq=0.75)</option><option value="0.6">Betamethasone (eq=0.6)</option></select></div>
      <div class="form-group"><label class="form-label">Liều (mg/ngày)</label><input class="form-control" type="number" id="cs-dose" placeholder="40"></div>
      <div class="form-group"><label class="form-label">Chuyển sang</label><select class="form-control" id="cs-to"><option value="20">Hydrocortisone</option><option value="5">Prednisolone</option><option value="4">Methylprednisolone</option><option value="0.75">Dexamethasone</option><option value="0.6">Betamethasone</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcCortico()">⚡ Chuyển đổi</button><button class="btn btn-ghost" onclick="clr('res-cortico','cs-dose')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-cortico" style="display:none"></div>
  </div>
</div>

<!-- BENZO -->
<div class="section" id="sec-benzo">
  <div class="section-header"><div class="section-title">🔃 Benzodiazepine Tương đương</div></div>
  <div class="card">
    <div class="card-title">🔃 Benzodiazepine Equivalence Converter — Ashton Manual 2002</div>
    <div class="disclaimer" style="margin-top:0">⚠️ Khi cai BZD: giảm không quá <strong>10%/2 tuần</strong>. Không ngưng đột ngột.</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">BZD nguồn</label><select class="form-control" id="bz-from"><option value="1">Diazepam (1mg=1mg diaz)</option><option value="0.25">Lorazepam (0.25→1mg diaz)</option><option value="2.5">Midazolam (2.5→1mg diaz)</option><option value="0.125">Alprazolam (0.125→1mg diaz)</option><option value="0.5">Clonazepam (0.5→1mg diaz)</option><option value="10">Oxazepam (10→1mg diaz)</option></select></div>
      <div class="form-group"><label class="form-label">Liều (mg/ngày)</label><input class="form-control" type="number" id="bz-dose" placeholder="10"></div>
      <div class="form-group"><label class="form-label">Chuyển sang</label><select class="form-control" id="bz-to"><option value="1">Diazepam</option><option value="0.25">Lorazepam</option><option value="0.5">Clonazepam</option><option value="2.5">Midazolam</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcBenzo()">⚡ Chuyển đổi</button><button class="btn btn-ghost" onclick="clr('res-benzo','bz-dose')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-benzo" style="display:none"></div>
  </div>
</div>

<!-- SOFA -->
<div class="section" id="sec-sofa">
  <div class="section-header"><div class="section-title">📊 SOFA / APACHE II / GCS</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'stab-sofa')">SOFA</button>
    <button class="tab-btn" onclick="switchTab(this,'stab-apache')">APACHE II</button>
    <button class="tab-btn" onclick="switchTab(this,'stab-gcs')">GCS</button>
  </div>
  <div class="tab-content active" id="stab-sofa">
    <div class="card">
      <div class="card-title">🏥 SOFA Score — Sepsis-3 (Singer 2016)</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Hô hấp — PaO₂/FiO₂</label><select class="form-control" id="sofa-resp"><option value="0">≥400 (0đ)</option><option value="1">300–399 (1đ)</option><option value="2">200–299 (2đ)</option><option value="3">100–199 + thở máy (3đ)</option><option value="4">&lt;100 + thở máy (4đ)</option></select></div>
        <div class="form-group"><label class="form-label">Đông máu — Tiểu cầu (×10³/µL)</label><select class="form-control" id="sofa-coag"><option value="0">≥150 (0đ)</option><option value="1">100–149 (1đ)</option><option value="2">50–99 (2đ)</option><option value="3">20–49 (3đ)</option><option value="4">&lt;20 (4đ)</option></select></div>
        <div class="form-group"><label class="form-label">Gan — Bilirubin (mg/dL)</label><select class="form-control" id="sofa-liver"><option value="0">&lt;1.2 (0đ)</option><option value="1">1.2–1.9 (1đ)</option><option value="2">2.0–5.9 (2đ)</option><option value="3">6.0–11.9 (3đ)</option><option value="4">≥12.0 (4đ)</option></select></div>
        <div class="form-group"><label class="form-label">Tim mạch</label><select class="form-control" id="sofa-cv"><option value="0">MAP ≥70 (0đ)</option><option value="1">MAP &lt;70 (1đ)</option><option value="2">Dopamine ≤5 / Dobutamine (2đ)</option><option value="3">Dopamine 5–15 / NE ≤0.1 (3đ)</option><option value="4">Dopamine &gt;15 / NE &gt;0.1 (4đ)</option></select></div>
        <div class="form-group"><label class="form-label">Thần kinh — GCS</label><select class="form-control" id="sofa-neuro"><option value="0">15 (0đ)</option><option value="1">13–14 (1đ)</option><option value="2">10–12 (2đ)</option><option value="3">6–9 (3đ)</option><option value="4">&lt;6 (4đ)</option></select></div>
        <div class="form-group"><label class="form-label">Thận — Creatinine (mg/dL)</label><select class="form-control" id="sofa-renal"><option value="0">&lt;1.2 (0đ)</option><option value="1">1.2–1.9 (1đ)</option><option value="2">2.0–3.4 (2đ)</option><option value="3">3.5–4.9 / NT &lt;500mL/ngày (3đ)</option><option value="4">≥5.0 / NT &lt;200mL/ngày (4đ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcSOFA()">⚡ Tính SOFA</button></div>
      <div class="result-box" id="res-sofa" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="stab-apache">
    <div class="card">
      <div class="card-title">📈 APACHE II — Knaus 1985</div>
      <div class="form-grid-3">
        <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="ap-age" placeholder="50"></div>
        <div class="form-group"><label class="form-label">Nhiệt độ hậu môn (°C)</label><input class="form-control" type="number" id="ap-temp" step="0.1" placeholder="37.5"></div>
        <div class="form-group"><label class="form-label">MAP (mmHg)</label><input class="form-control" type="number" id="ap-map" placeholder="90"></div>
        <div class="form-group"><label class="form-label">Nhịp tim (/phút)</label><input class="form-control" type="number" id="ap-hr" placeholder="80"></div>
        <div class="form-group"><label class="form-label">Nhịp thở (/phút)</label><input class="form-control" type="number" id="ap-rr" placeholder="18"></div>
        <div class="form-group"><label class="form-label">PaO₂ (mmHg)</label><input class="form-control" type="number" id="ap-pao2" placeholder="80"></div>
        <div class="form-group"><label class="form-label">pH máu ĐM</label><input class="form-control" type="number" id="ap-ph" step="0.01" placeholder="7.40"></div>
        <div class="form-group"><label class="form-label">Na⁺ (mmol/L)</label><input class="form-control" type="number" id="ap-na" placeholder="140"></div>
        <div class="form-group"><label class="form-label">K⁺ (mmol/L)</label><input class="form-control" type="number" id="ap-k" step="0.1" placeholder="4.0"></div>
        <div class="form-group"><label class="form-label">Creatinine (mg/dL)</label><input class="form-control" type="number" id="ap-cr" step="0.1" placeholder="1.0"></div>
        <div class="form-group"><label class="form-label">Hematocrit (%)</label><input class="form-control" type="number" id="ap-hct" placeholder="40"></div>
        <div class="form-group"><label class="form-label">WBC (×10³/µL)</label><input class="form-control" type="number" id="ap-wbc" placeholder="10"></div>
      </div>
      <div class="form-grid" style="margin-top:12px">
        <div class="form-group"><label class="form-label">GCS (thực tế)</label><input class="form-control" type="number" id="ap-gcs" min="3" max="15" placeholder="15"></div>
        <div class="form-group"><label class="form-label">Bệnh mãn tính nặng</label><select class="form-control" id="ap-chronic"><option value="0">Không</option><option value="2">Có (nhập viện thường)</option><option value="5">Có (phẫu thuật cấp cứu)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcAPACHE()">⚡ Tính APACHE II</button><button class="btn btn-ghost" onclick="clr('res-apache','ap-age ap-temp ap-map ap-hr ap-rr ap-pao2 ap-ph ap-na ap-k ap-cr ap-hct ap-wbc ap-gcs')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-apache" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="stab-gcs">
    <div class="card">
      <div class="card-title">🧠 Glasgow Coma Scale (GCS)</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Mở mắt (E)</label><select class="form-control" id="gcs-e"><option value="4">4 — Tự nhiên</option><option value="3">3 — Theo lời nói</option><option value="2">2 — Theo đau</option><option value="1">1 — Không mở mắt</option></select></div>
        <div class="form-group"><label class="form-label">Lời nói (V)</label><select class="form-control" id="gcs-v"><option value="5">5 — Định hướng tốt</option><option value="4">4 — Lú lẫn</option><option value="3">3 — Từng từ</option><option value="2">2 — Âm không nghĩa</option><option value="1">1 — Không đáp ứng</option></select></div>
        <div class="form-group"><label class="form-label">Vận động (M)</label><select class="form-control" id="gcs-m"><option value="6">6 — Làm theo lệnh</option><option value="5">5 — Định vị đau</option><option value="4">4 — Rút chi</option><option value="3">3 — Gấp bất thường</option><option value="2">2 — Duỗi bất thường</option><option value="1">1 — Không đáp ứng</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcGCS()">⚡ Tính GCS</button></div>
      <div class="result-box" id="res-gcs" style="display:none"></div>
    </div>
  </div>
</div>

<!-- CHADS/CURB -->
<div class="section" id="sec-chads">
  <div class="section-header"><div class="section-title">❤️ CHA₂DS₂-VASc / CURB-65</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'chtab-chads')">CHA₂DS₂-VASc</button>
    <button class="tab-btn" onclick="switchTab(this,'chtab-curb')">CURB-65</button>
  </div>
  <div class="tab-content active" id="chtab-chads">
    <div class="card">
      <div class="card-title">❤️ CHA₂DS₂-VASc — ESC 2020</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">C — Suy tim / rối loạn CN LV</label><select class="form-control" id="ch-c"><option value="0">Không (0)</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">H — Tăng huyết áp</label><select class="form-control" id="ch-h"><option value="0">Không (0)</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">A₂ — Tuổi ≥75</label><select class="form-control" id="ch-a2"><option value="0">Không (0)</option><option value="2">Có (2đ)</option></select></div>
        <div class="form-group"><label class="form-label">D — Đái tháo đường</label><select class="form-control" id="ch-d"><option value="0">Không (0)</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">S₂ — Tiền sử đột quỵ/TIA</label><select class="form-control" id="ch-s2"><option value="0">Không (0)</option><option value="2">Có (2đ)</option></select></div>
        <div class="form-group"><label class="form-label">V — Bệnh mạch máu</label><select class="form-control" id="ch-v"><option value="0">Không (0)</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">A — Tuổi 65–74</label><select class="form-control" id="ch-a"><option value="0">Không (0)</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Sc — Giới nữ</label><select class="form-control" id="ch-sc"><option value="0">Nam (0)</option><option value="1">Nữ (1đ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcCHADS()">⚡ Tính CHA₂DS₂-VASc</button></div>
      <div class="result-box" id="res-chads" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="chtab-curb">
    <div class="card">
      <div class="card-title">🫁 CURB-65 — British Thoracic Society 2003</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">C — Rối loạn ý thức mới</label><select class="form-control" id="curb-c"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">U — Ure &gt;7 mmol/L</label><select class="form-control" id="curb-u"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">R — Nhịp thở ≥30/phút</label><select class="form-control" id="curb-r"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">B — HATT &lt;90 hoặc HATTr ≤60</label><select class="form-control" id="curb-b"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">65 — Tuổi ≥65</label><select class="form-control" id="curb-65"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcCURB()">⚡ Tính CURB-65</button></div>
      <div class="result-box" id="res-curb" style="display:none"></div>
    </div>
  </div>
</div>

<!-- NEWS2 -->
<div class="section" id="sec-news2">
  <div class="section-header"><div class="section-title">📉 NEWS2</div><div class="section-desc">Royal College of Physicians 2017.</div></div>
  <div class="card">
    <div class="card-title">📉 NEWS2 Calculator</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">SpO₂ (%)</label><select class="form-control" id="n2-spo2"><option value="0">≥96 (0đ)</option><option value="1">94–95 (1đ)</option><option value="2">92–93 (2đ)</option><option value="3">≤91 (3đ)</option></select></div>
      <div class="form-group"><label class="form-label">Thở oxy bổ sung</label><select class="form-control" id="n2-o2"><option value="0">Không (0đ)</option><option value="2">Có (2đ)</option></select></div>
      <div class="form-group"><label class="form-label">Nhịp thở (/phút)</label><select class="form-control" id="n2-rr"><option value="3">≤8 (3đ)</option><option value="1">9–11 (1đ)</option><option value="0">12–20 (0đ)</option><option value="2">21–24 (2đ)</option><option value="3b">≥25 (3đ)</option></select></div>
      <div class="form-group"><label class="form-label">Nhiệt độ (°C)</label><select class="form-control" id="n2-temp"><option value="3">≤35.0 (3đ)</option><option value="1">35.1–36.0 (1đ)</option><option value="0">36.1–38.0 (0đ)</option><option value="1b">38.1–39.0 (1đ)</option><option value="2">≥39.1 (2đ)</option></select></div>
      <div class="form-group"><label class="form-label">HA tâm thu (mmHg)</label><select class="form-control" id="n2-sbp"><option value="3">≤90 (3đ)</option><option value="2">91–100 (2đ)</option><option value="1">101–110 (1đ)</option><option value="0">111–219 (0đ)</option><option value="3b">≥220 (3đ)</option></select></div>
      <div class="form-group"><label class="form-label">Nhịp tim (/phút)</label><select class="form-control" id="n2-hr"><option value="3">≤40 (3đ)</option><option value="1">41–50 (1đ)</option><option value="0">51–90 (0đ)</option><option value="1b">91–110 (1đ)</option><option value="2">111–130 (2đ)</option><option value="3b">≥131 (3đ)</option></select></div>
      <div class="form-group"><label class="form-label">Ý thức (AVPU)</label><select class="form-control" id="n2-avpu"><option value="0">A — Tỉnh táo (0đ)</option><option value="3">C — Lú lẫn mới (3đ)</option><option value="3b">V/P/U — Giảm ý thức (3đ)</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcNEWS2()">⚡ Tính NEWS2</button></div>
    <div class="result-box" id="res-news2" style="display:none"></div>
  </div>
</div>

<!-- DAPT/HAS-BLED -->
<div class="section" id="sec-dapt">
  <div class="section-header"><div class="section-title">💊 DAPT / HAS-BLED</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'dtab-dapt')">DAPT Score</button>
    <button class="tab-btn" onclick="switchTab(this,'dtab-bled')">HAS-BLED</button>
  </div>
  <div class="tab-content active" id="dtab-dapt">
    <div class="card">
      <div class="card-title">❤️ DAPT Score — Yeh et al. NEJM 2016</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tuổi</label><select class="form-control" id="dapt-age"><option value="-2">≥75 (−2đ)</option><option value="-1">65–74 (−1đ)</option><option value="0">&lt;65 (0đ)</option></select></div>
        <div class="form-group"><label class="form-label">Hút thuốc lá</label><select class="form-control" id="dapt-smoke"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Đái tháo đường</label><select class="form-control" id="dapt-dm"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">NMCT tại nhập viện</label><select class="form-control" id="dapt-mi"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Tiền sử PCI hoặc NMCT</label><select class="form-control" id="dapt-prior"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Stent paclitaxel-eluting</label><select class="form-control" id="dapt-paclitaxel"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Đường kính stent &lt;3mm</label><select class="form-control" id="dapt-small"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">Suy tim / EF &lt;30%</label><select class="form-control" id="dapt-hf"><option value="0">Không</option><option value="2">Có (2đ)</option></select></div>
        <div class="form-group"><label class="form-label">Stent tĩnh mạch graft (SVG)</label><select class="form-control" id="dapt-svg"><option value="0">Không</option><option value="2">Có (2đ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcDAPT()">⚡ Tính DAPT Score</button></div>
      <div class="result-box" id="res-dapt" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="dtab-bled">
    <div class="card">
      <div class="card-title">🩸 HAS-BLED — Pisters et al. Chest 2010</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">H — THA không kiểm soát</label><select class="form-control" id="bled-h"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">A — Suy thận / suy gan nặng</label><select class="form-control" id="bled-a"><option value="0">Không</option><option value="1">Một (1đ)</option><option value="2">Cả hai (2đ)</option></select></div>
        <div class="form-group"><label class="form-label">S — Tiền sử đột quỵ</label><select class="form-control" id="bled-s"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">B — Chảy máu / thiếu máu</label><select class="form-control" id="bled-b"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">L — INR không ổn định</label><select class="form-control" id="bled-l"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">E — Tuổi &gt;65</label><select class="form-control" id="bled-e"><option value="0">Không</option><option value="1">Có (1đ)</option></select></div>
        <div class="form-group"><label class="form-label">D — Aspirin/NSAID hoặc rượu</label><select class="form-control" id="bled-d"><option value="0">Không</option><option value="1">Một (1đ)</option><option value="2">Cả hai (2đ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcBLED()">⚡ Tính HAS-BLED</button></div>
      <div class="result-box" id="res-bled" style="display:none"></div>
    </div>
  </div>
</div>

<!-- TPN -->
<div class="section" id="sec-tpn">
  <div class="section-header"><div class="section-title">🍽️ Dinh dưỡng TPN / EN</div><div class="section-desc">ASPEN 2022 &amp; ESPEN 2019.</div></div>
  <div class="card">
    <div class="card-title">🍽️ Parenteral &amp; Enteral Nutrition — Mifflin-St Jeor</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="tpn-wt" placeholder="60"></div>
      <div class="form-group"><label class="form-label">Chiều cao (cm)</label><input class="form-control" type="number" id="tpn-ht" placeholder="160"></div>
      <div class="form-group"><label class="form-label">Tuổi (năm)</label><input class="form-control" type="number" id="tpn-age" placeholder="50"></div>
      <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="tpn-sex"><option value="male">Nam</option><option value="female">Nữ</option></select></div>
      <div class="form-group"><label class="form-label">Tình trạng lâm sàng</label><select class="form-control" id="tpn-stress"><option value="1.2">Bình thường / Sau PT nhỏ</option><option value="1.35">Nhiễm trùng nhẹ–vừa</option><option value="1.5">PT lớn / Sepsis</option><option value="1.8">Bỏng &gt;30% / Đa chấn thương</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcTPN()">⚡ Tính nhu cầu dinh dưỡng</button><button class="btn btn-ghost" onclick="clr('res-tpn','tpn-wt tpn-ht tpn-age')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-tpn" style="display:none"></div>
  </div>
</div>

<!-- PHENYTOIN -->
<div class="section" id="sec-phenytoin">
  <div class="section-header"><div class="section-title">🧠 Phenytoin TDM</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'ptab-corr')">Hiệu chỉnh albumin</button>
    <button class="tab-btn" onclick="switchTab(this,'ptab-load')">Loading dose</button>
  </div>
  <div class="tab-content active" id="ptab-corr">
    <div class="card">
      <div class="card-title">🧠 Phenytoin Correction — Winter-Tozer</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Phenytoin đo được (mg/L)</label><input class="form-control" type="number" id="ph-measured" step="0.1" placeholder="10"></div>
        <div class="form-group"><label class="form-label">Albumin huyết thanh (g/dL)</label><input class="form-control" type="number" id="ph-alb" step="0.1" placeholder="3.5"></div>
        <div class="form-group"><label class="form-label">CrCl (mL/phút)</label><input class="form-control" type="number" id="ph-crcl" placeholder="90"></div>
        <div class="form-group"><label class="form-label">Dùng Valproic acid?</label><select class="form-control" id="ph-vpa"><option value="no">Không</option><option value="yes"></option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcPhenytoin()">⚡ Tính Phenytoin hiệu chỉnh</button><button class="btn btn-ghost" onclick="clr('res-phenytoin','ph-measured ph-alb ph-crcl')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-phenytoin" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="ptab-load">
    <div class="card">
      <div class="card-title">⚡ Phenytoin Loading Dose</div>
      <div class="disclaimer" style="margin-top:0">🚨 Tốc độ tối đa: <strong>≤50 mg/phút</strong>. Theo dõi ECG. Không pha trong Dextrose.</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="pl-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Nồng độ hiện tại (mg/L)</label><input class="form-control" type="number" id="pl-current" step="0.1" placeholder="0"></div>
        <div class="form-group"><label class="form-label">Nồng độ mục tiêu</label><select class="form-control" id="pl-target"><option value="20">20 mg/L (chuẩn)</option><option value="25">25 mg/L (khó)</option></select></div>
        <div class="form-group"><label class="form-label">Vd (L/kg)</label><select class="form-control" id="pl-vd"><option value="0.7">0.7 (bình thường)</option><option value="1.2">1.2 (béo phì)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcPhenytoinLoad()">⚡ Tính Loading Dose</button><button class="btn btn-ghost" onclick="clr('res-phenload','pl-wt pl-current')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-phenload" style="display:none"></div>
    </div>
  </div>
</div>

<!-- WARFARIN -->
<div class="section" id="sec-warfarin">
  <div class="section-header"><div class="section-title">🩸 Warfarin &amp; INR Management</div></div>
  <div class="card">
    <div class="card-title">🩸 Warfarin Dose Adjustment — Fennerty Algorithm</div>
    <div class="form-grid">
      <div class="form-group"><label class="form-label">INR hiện tại</label><input class="form-control" type="number" id="wf-inr" step="0.1" placeholder="2.5"></div>
      <div class="form-group"><label class="form-label">Liều warfarin hiện tại (mg/tuần)</label><input class="form-control" type="number" id="wf-dose" step="0.5" placeholder="35"></div>
      <div class="form-group"><label class="form-label">Mục tiêu INR</label><select class="form-control" id="wf-target"><option value="2.5">2.0–3.0 (rung nhĩ, DVT, PE)</option><option value="3.0">2.5–3.5 (van tim cơ học)</option></select></div>
    </div>
    <div class="btn-row"><button class="btn btn-primary" onclick="calcWarfarin()">⚡ Gợi ý điều chỉnh liều</button><button class="btn btn-ghost" onclick="clr('res-warfarin','wf-inr wf-dose')">🗑️ Xoá</button></div>
    <div class="result-box" id="res-warfarin" style="display:none"></div>
  </div>
</div>

<!-- IV -->
<div class="section" id="sec-iv">
  <div class="section-header"><div class="section-title">🧴 Tính toán Dịch truyền IV</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'ivtab-rate')">Tốc độ (mL/h)</button>
    <button class="tab-btn" onclick="switchTab(this,'ivtab-vol')">Thể tích (mL)</button>
    <button class="tab-btn" onclick="switchTab(this,'ivtab-time')">Thời gian (h)</button>
    <button class="tab-btn" onclick="switchTab(this,'ivtab-drop')">Giọt/phút</button>
  </div>
  <div class="tab-content active" id="ivtab-rate">
    <div class="card"><div class="card-title">🧴 Tính tốc độ truyền</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Thể tích (mL)</label><input class="form-control" type="number" id="ivr-vol" placeholder="500"></div>
        <div class="form-group"><label class="form-label">Thời gian (giờ)</label><input class="form-control" type="number" id="ivr-time" step="0.5" placeholder="4"></div>
        <div class="form-group"><label class="form-label">Cân nặng BN (kg) — tùy chọn</label><input class="form-control" type="number" id="ivr-wt" placeholder="60"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcIVRate()">⚡ Tính tốc độ truyền</button><button class="btn btn-ghost" onclick="clr('res-ivrate','ivr-vol ivr-time ivr-wt')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-ivrate" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="ivtab-vol">
    <div class="card"><div class="card-title">🧴 Tính thể tích dịch</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tốc độ (mL/h)</label><input class="form-control" type="number" id="ivv-rate" placeholder="125"></div>
        <div class="form-group"><label class="form-label">Thời gian (giờ)</label><input class="form-control" type="number" id="ivv-time" step="0.5" placeholder="4"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcIVVol()">⚡ Tính thể tích</button><button class="btn btn-ghost" onclick="clr('res-ivvol','ivv-rate ivv-time')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-ivvol" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="ivtab-time">
    <div class="card"><div class="card-title">⏱️ Tính thời gian truyền</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Thể tích (mL)</label><input class="form-control" type="number" id="ivt-vol" placeholder="500"></div>
        <div class="form-group"><label class="form-label">Tốc độ (mL/h)</label><input class="form-control" type="number" id="ivt-rate" placeholder="125"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcIVTime()">⚡ Tính thời gian</button><button class="btn btn-ghost" onclick="clr('res-ivtime','ivt-vol ivt-rate')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-ivtime" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="ivtab-drop">
    <div class="card"><div class="card-title">💧 Tính số giọt/phút</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Thể tích (mL)</label><input class="form-control" type="number" id="ivd-vol" placeholder="500"></div>
        <div class="form-group"><label class="form-label">Thời gian truyền (phút)</label><input class="form-control" type="number" id="ivd-min" placeholder="240"></div>
        <div class="form-group"><label class="form-label">Loại dây truyền</label><select class="form-control" id="ivd-factor"><option value="15">15 g/mL — dây chuẩn</option><option value="20">20 g/mL — micro chuẩn</option><option value="60">60 g/mL — micro (nhi khoa)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcIVDrop()">⚡ Tính giọt/phút</button><button class="btn btn-ghost" onclick="clr('res-ivdrop','ivd-vol ivd-min')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-ivdrop" style="display:none"></div>
    </div>
  </div>
</div>

<!-- ELECTROLYTE -->
<div class="section" id="sec-electrolyte">
  <div class="section-header"><div class="section-title">⚗️ Bổ sung Điện giải</div></div>
  <div class="tabs">
    <button class="tab-btn active" onclick="switchTab(this,'eltab-na')">Bù Na⁺</button>
    <button class="tab-btn" onclick="switchTab(this,'eltab-k')">Bù K⁺</button>
    <button class="tab-btn" onclick="switchTab(this,'eltab-kiv')">Tốc độ K⁺ IV</button>
    <button class="tab-btn" onclick="switchTab(this,'eltab-hco3')">Bù HCO₃⁻</button>
  </div>
  <div class="tab-content active" id="eltab-na">
    <div class="card">
      <div class="card-title">🧂 Tính lượng Natri cần bù — Adrogue-Madias</div>
      <div class="disclaimer" style="margin-top:0">🚨 Hạ Na⁺ mạn: KHÔNG tăng &gt;<strong>6–8 mmol/L/24h</strong> — nguy cơ ODS.</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Na⁺ hiện tại (mmol/L)</label><input class="form-control" type="number" id="na-current" placeholder="125"></div>
        <div class="form-group"><label class="form-label">Na⁺ mục tiêu (mmol/L)</label><input class="form-control" type="number" id="na-target" placeholder="135"></div>
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="na-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">Giới tính</label><select class="form-control" id="na-sex"><option value="0.6">Nam (TBW=0.6×wt)</option><option value="0.5">Nữ (TBW=0.5×wt)</option></select></div>
        <div class="form-group"><label class="form-label">Loại dịch bù</label><select class="form-control" id="na-fluid"><option value="513">NaCl 3% (513 mmol/L)</option><option value="154">NaCl 0.9% (154 mmol/L)</option><option value="77">NaCl 0.45% (77 mmol/L)</option></select></div>
        <div class="form-group"><label class="form-label">Thời gian điều chỉnh (h)</label><input class="form-control" type="number" id="na-time" placeholder="24"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcNa()">⚡ Tính bù Natri</button><button class="btn btn-ghost" onclick="clr('res-na','na-current na-target na-wt na-time')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-na" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="eltab-k">
    <div class="card">
      <div class="card-title">⚡ Tính lượng Kali cần bù</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">K⁺ hiện tại (mmol/L)</label><input class="form-control" type="number" id="k-current" step="0.1" placeholder="3.0"></div>
        <div class="form-group"><label class="form-label">K⁺ mục tiêu (mmol/L)</label><input class="form-control" type="number" id="k-target" step="0.1" placeholder="4.0"></div>
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="k-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">CrCl (mL/phút)</label><input class="form-control" type="number" id="k-crcl" placeholder="80"></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcK()">⚡ Tính bù Kali</button><button class="btn btn-ghost" onclick="clr('res-k','k-current k-target k-wt k-crcl')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-k" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="eltab-kiv">
    <div class="card">
      <div class="card-title">💉 Tốc độ truyền Kali IV an toàn</div>
      <div class="disclaimer" style="margin-top:0">🚨 Tốc độ tối đa: Ngoại vi ≤10 mmol/h · Trung tâm ≤20 mmol/h · ICU ≤40 mmol/h. <strong>Không tiêm KCl trực tiếp IV.</strong></div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">Tổng K⁺ cần truyền (mmol)</label><input class="form-control" type="number" id="kiv-total" placeholder="40"></div>
        <div class="form-group"><label class="form-label">Nồng độ KCl pha (mmol/L)</label><select class="form-control" id="kiv-conc"><option value="20">20 mmol/L — ngoại vi an toàn</option><option value="40" selected>40 mmol/L — ngoại vi chuẩn</option><option value="60">60 mmol/L — trung tâm</option><option value="80">80 mmol/L — CVC ICU</option></select></div>
        <div class="form-group"><label class="form-label">Đường truyền</label><select class="form-control" id="kiv-route"><option value="10">Ngoại vi (max 10 mmol/h)</option><option value="20">CVC / Trung tâm (max 20)</option><option value="40">CVC + ECG liên tục ICU (max 40)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcKIV()">⚡ Tính tốc độ K⁺ IV</button><button class="btn btn-ghost" onclick="clr('res-kiv','kiv-total')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-kiv" style="display:none"></div>
    </div>
  </div>
  <div class="tab-content" id="eltab-hco3">
    <div class="card">
      <div class="card-title">⚗️ Tính lượng Bicarbonate cần bù — Astrup</div>
      <div class="form-grid">
        <div class="form-group"><label class="form-label">HCO₃⁻ hiện tại (mmol/L)</label><input class="form-control" type="number" id="hco-current" placeholder="10"></div>
        <div class="form-group"><label class="form-label">HCO₃⁻ mục tiêu (mmol/L)</label><input class="form-control" type="number" id="hco-target" placeholder="16"></div>
        <div class="form-group"><label class="form-label">Cân nặng (kg)</label><input class="form-control" type="number" id="hco-wt" placeholder="60"></div>
        <div class="form-group"><label class="form-label">pH máu động mạch</label><input class="form-control" type="number" id="hco-ph" step="0.01" placeholder="7.15"></div>
        <div class="form-group"><label class="form-label">Nồng độ NaHCO₃</label><select class="form-control" id="hco-conc"><option value="1">8.4% (1 mmol/mL)</option><option value="0.5" selected>4.2% (0.5 mmol/mL)</option><option value="0.167">1.4% (0.167 mmol/mL)</option></select></div>
        <div class="form-group"><label class="form-label">Chiến lược bù</label><select class="form-control" id="hco-strategy"><option value="0.5">Bù 50% thiếu hụt (an toàn)</option><option value="1">Bù 100% (cấp cứu)</option><option value="0.333">Bù 1/3 (bảo thủ)</option></select></div>
      </div>
      <div class="btn-row"><button class="btn btn-primary" onclick="calcHCO3()">⚡ Tính bù Bicarbonate</button><button class="btn btn-ghost" onclick="clr('res-hco3','hco-current hco-target hco-wt hco-ph')">🗑️ Xoá</button></div>
      <div class="result-box" id="res-hco3" style="display:none"></div>
    </div>
  </div>
</div>

  </div></div>
<script>
const ST={home:'🏠 Trang chủ',kidney:'🫘 Chức năng thận & Nhân trắc',vanco:'💉 Vancomycin PK',amino:'🔬 Aminoglycoside',colistin:'🧪 Colistin (CMS)',levo:'🦋 Levothyroxine',anesthetic:'🩺 Thuốc gây tê tối đa',heparin:'💧 Heparin UFH',insulin:'🩸 Insulin',opioid:'🔄 Opioid (MEDD)',cortico:'🔁 Corticosteroid',benzo:'🔃 Benzodiazepine',sofa:'📊 SOFA / APACHE II / GCS',chads:'❤️ CHA₂DS₂-VASc / CURB-65',news2:'📉 NEWS2',dapt:'💊 DAPT / HAS-BLED',tpn:'🍽️ TPN / EN',phenytoin:'🧠 Phenytoin TDM',warfarin:'🩸 Warfarin & INR',iv:'🧴 Dịch truyền IV',electrolyte:'⚗️ Bù điện giải'};
function showSection(id){document.querySelectorAll('.section').forEach(s=>s.classList.remove('active'));document.querySelectorAll('.nav-item').forEach(n=>n.classList.remove('active'));document.getElementById('sec-'+id).classList.add('active');document.querySelector(`.nav-item[onclick="showSection('${id}')"]`)?.classList.add('active');document.getElementById('topbar-title').textContent=ST[id]||'';if(window.innerWidth<=768)toggleSidebar();}
function toggleSidebar(){document.getElementById('sidebar').classList.toggle('open');document.getElementById('overlay').classList.toggle('open');}
function switchTab(btn,tabId){const sec=btn.closest('.section')||document.body;sec.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active'));btn.classList.add('active');sec.querySelectorAll('.tab-content').forEach(t=>t.classList.remove('active'));document.getElementById(tabId).classList.add('active');}
function clr(rid,fids){const el=document.getElementById(rid);if(el)el.style.display='none';(fids||'').split(' ').forEach(id=>{const f=document.getElementById(id);if(f)f.value='';});}
const CRU={};
function setU(p,u){CRU[p]=u;const lbl=document.getElementById(p+'-lbl');if(lbl)lbl.textContent=u==='mmol'?'mmol/L':'mg/dL';const b1=document.getElementById(p+'-u1'),b2=document.getElementById(p+'-u2');if(b1)b1.classList.toggle('active',u==='mgdl');if(b2)b2.classList.toggle('active',u==='mmol');}
function getCr(p){const v=parseFloat(document.getElementById(p+'-cr').value);if(isNaN(v))return NaN;return CRU[p]==='mmol'?v/88.42:v;}
function SR(id,html){const el=document.getElementById(id);el.innerHTML=html;el.style.display='block';}
function RG(...items){return '<div class="result-grid">'+items.map(i=>'<div class="result-item"><div class="result-label">'+i.l+'</div><div class="result-val">'+i.v+'</div><div class="result-unit">'+(i.u||'')+'</div></div>').join('')+'</div>';}
function IB(c,t){return '<div class="interpret '+c+'">'+t+'</div>';}
function ckdS(g){if(g>=90)return{s:'G1',l:'Bình thường',d:'Có thể có tổn thương thận nhưng GFR bình thường.',c:'green'};if(g>=60)return{s:'G2',l:'Giảm nhẹ',d:'Theo dõi định kỳ.',c:'green'};if(g>=45)return{s:'G3a',l:'Giảm nhẹ-vừa',d:'Hiệu chỉnh liều nhiều nhóm thuốc.',c:'yellow'};if(g>=30)return{s:'G3b',l:'Giảm vừa-nặng',d:'Tránh nhiều thuốc độc thận.',c:'yellow'};if(g>=15)return{s:'G4',l:'Giảm nặng',d:'Chuẩn bị thận nhân tạo.',c:'red'};return{s:'G5',l:'Suy thận giai đoạn cuối',d:'Cần lọc máu hoặc ghép thận.',c:'red'};}

function calcCrCl(){const age=+document.getElementById('cg-age').value,wt=+document.getElementById('cg-wt').value,sex=document.getElementById('cg-sex').value,cr=getCr('cg');if([age,wt,cr].some(isNaN)||cr<=0)return alert('Nhập đầy đủ thông tin!');let v=Math.max(0,((140-age)*wt*(sex==='female'?0.85:1))/(72*cr));const k=ckdS(v);SR('res-crcl',RG({l:'CrCl',v:v.toFixed(1),u:'mL/phút'},{l:'Phân loại CKD',v:k.s,u:''},{l:'Cân nặng tính',v:wt+'kg',u:''})+IB(k.c,'<strong>'+k.s+' — '+k.l+'</strong>: '+k.d));}

function calcEGFR(){const age=+document.getElementById('eg-age').value,sex=document.getElementById('eg-sex').value,cr=getCr('eg');if([age,cr].some(isNaN)||cr<=0)return alert('Nhập đầy đủ!');const ka=sex==='female'?0.7:0.9,al=sex==='female'?-0.241:-0.302,sm=sex==='female'?1.012:1,r=cr/ka,g=142*Math.pow(Math.min(r,1),al)*Math.pow(Math.max(r,1),-1.2)*Math.pow(0.9938,age)*sm,k=ckdS(g);SR('res-egfr',RG({l:'eGFR',v:g.toFixed(1),u:'mL/ph/1.73m²'},{l:'Giai đoạn CKD',v:k.s,u:''})+IB(k.c,'<strong>'+k.s+' — '+k.l+'</strong>: '+k.d));}

function calcIBW(){const sex=document.getElementById('ibw-sex').value,ht=+document.getElementById('ibw-ht').value,wt=+document.getElementById('ibw-wt').value;if([ht,wt].some(isNaN))return alert('Nhập đầy đủ!');const hi=(ht-152.4)/2.54,ibw=sex==='male'?50+2.3*hi:45.5+2.3*hi,bmi=wt/(ht/100)**2;let abw=ibw,note='Dùng IBW cho PK';if(wt>ibw*1.2){abw=ibw+0.4*(wt-ibw);note='Dùng ABW (béo phì)';}else if(wt<ibw){abw=wt;note='Dùng cân thực (nhẹ hơn IBW)';}const bc=bmi<18.5?'yellow':bmi<25?'green':bmi<30?'yellow':'red',bl=bmi<18.5?'Thiếu cân':bmi<25?'Bình thường':bmi<30?'Thừa cân':'Béo phì';SR('res-ibw',RG({l:'IBW',v:ibw.toFixed(1),u:'kg'},{l:'ABW',v:abw.toFixed(1),u:'kg'},{l:'BMI',v:bmi.toFixed(1),u:'kg/m²'},{l:'Cân nặng PK',v:abw.toFixed(1)+'kg',u:note})+IB(bc,'BMI '+bmi.toFixed(1)+' — <strong>'+bl+'</strong>'));}

function calcVanco(){const wt=+document.getElementById('v-wt').value,age=+document.getElementById('v-age').value,sex=document.getElementById('v-sex').value,cr=getCr('v');if([wt,age,cr].some(isNaN)||cr<=0)return alert('Nhập đầy đủ!');const crcl=Math.max(10,((140-age)*wt*(sex==='female'?0.85:1))/(72*cr));let tau=12;if(crcl<10)tau=96;else if(crcl<20)tau=72;else if(crcl<30)tau=48;else if(crcl<50)tau=24;else if(crcl<70)tau=18;const dose=Math.round(wt*17.5/250)*250,daily=dose*(24/tau),cls=crcl<30?'red':crcl<60?'yellow':'green';SR('res-vanco',RG({l:'Liều mỗi lần',v:dose,u:'mg'},{l:'Khoảng cách',v:tau,u:'h'},{l:'Liều ngày',v:daily,u:'mg'},{l:'CrCl',v:crcl.toFixed(0),u:'mL/phút'})+IB(cls,'CrCl: <strong>'+crcl.toFixed(0)+' mL/phút</strong> → q'+tau+'h. Điều chỉnh dựa trên TDM. Mục tiêu AUC₂₄/MIC = 400–600.'));}

function calcTDM(){const dose=+document.getElementById('tdm-dose').value,tau=+document.getElementById('tdm-interval').value,tinf=+document.getElementById('tdm-infusion').value,tr=+document.getElementById('tdm-trough').value,pk=+document.getElementById('tdm-peak').value,mic=+document.getElementById('tdm-mic').value;if([dose,tau,tinf,tr,pk].some(isNaN))return alert('Nhập đầy đủ!');const dt=tau-tinf-1,ke=-Math.log(tr/pk)/dt,t12=0.693/ke,auc=dose*Math.log(pk/tr)/ke*(24/tau);const am=auc/mic,cls=auc>=400&&auc<=600?'green':auc<400?'yellow':'red';SR('res-tdm',RG({l:'AUC₂₄',v:auc.toFixed(0),u:'mg·h/L'},{l:'AUC/MIC',v:am.toFixed(0),u:''},{l:'Ke',v:ke.toFixed(4),u:'h⁻¹'},{l:'t½',v:t12.toFixed(1),u:'h'})+IB(cls,'AUC₂₄: <strong>'+auc.toFixed(0)+'</strong> mg·h/L. '+(auc<400?'⚠️ Dưới mục tiêu — cân nhắc tăng liều.':auc>600?'⚠️ Trên mục tiêu — cân nhắc giảm liều.':'✅ Trong mục tiêu 400–600.')));}

function calcAmino(){const drug=document.getElementById('ag-drug').value,wt=+document.getElementById('ag-wt').value,age=+document.getElementById('ag-age').value,sex=document.getElementById('ag-sex').value,cr=getCr('ag'),ind=document.getElementById('ag-ind').value;if([wt,age,cr].some(isNaN)||cr<=0)return alert('Nhập đầy đủ!');const crcl=((140-age)*wt*(sex==='female'?0.85:1))/(72*cr);const dp={genta:{uti:3,severe:5,cf:10},tobra:{uti:3,severe:5,cf:10},amika:{uti:7.5,severe:7.5,cf:15}},pk={genta:{uti:'5–8',severe:'8–12',cf:'20–30'},tobra:{uti:'5–8',severe:'8–12',cf:'20–30'},amika:{uti:'20–30',severe:'20–30',cf:'55–65'}},tr={genta:'<2',tobra:'<2',amika:'<10'};const dose=Math.round(dp[drug][ind]*wt/10)*10;let tau=8;if(crcl<10)tau=48;else if(crcl<30)tau=24;else if(crcl<60)tau=12;SR('res-amino',RG({l:'Liều',v:dose,u:'mg'},{l:'mg/kg/lần',v:(dose/wt).toFixed(1),u:'mg/kg'},{l:'Khoảng cách',v:tau,u:'h'},{l:'Peak mục tiêu',v:pk[drug][ind],u:'mg/L'},{l:'Trough mục tiêu',v:tr[drug],u:'mg/L'})+IB('blue','CrCl: '+crcl.toFixed(0)+' mL/phút → q'+tau+'h. TDM: Peak sau liều 1, Trough trước liều 3.'));}

function calcEID(){const drug=document.getElementById('eid-drug').value,wt=+document.getElementById('eid-wt').value,age=+document.getElementById('eid-age').value,sex=document.getElementById('eid-sex').value,cr=getCr('eid');if([wt,age,cr].some(isNaN)||cr<=0)return alert('Nhập đầy đủ!');const crcl=((140-age)*wt*(sex==='female'?0.85:1))/(72*cr);if(crcl<20)return SR('res-eid',IB('red','⚠️ CrCl < 20 mL/phút — Không áp dụng EID. Dùng phác đồ truyền thống có TDM.'));const dp={genta:7,tobra:7,amika:17.5},dose=Math.round(dp[drug]*wt/50)*50;let tau=24;if(crcl<40)tau=48;else if(crcl<60)tau=36;SR('res-eid',RG({l:'Liều',v:dose,u:'mg'},{l:'mg/kg',v:(dose/wt).toFixed(1),u:''},{l:'Khoảng cách',v:tau,u:'h'},{l:'CrCl',v:crcl.toFixed(0),u:'mL/phút'})+IB('blue','Hartford Nomogram: Lấy nồng độ ngẫu nhiên 6–14h sau liều để xác định khoảng cách.'));}

function calcColistin(){const ibw=+document.getElementById('col-ibw').value,crcl=+document.getElementById('col-crcl').value,rrt=document.getElementById('col-rrt').value;if(isNaN(ibw))return alert('Nhập IBW!');let maint,tau,note;if(rrt==='hd'){maint=2.5;tau=48;note='Chạy thận HD — truyền sau mỗi buổi lọc';}else if(rrt==='crrt'){maint=3;tau=12;note='CRRT — điều chỉnh theo tốc độ lọc';}else{const c=crcl||30,tot=((1.5*c+30)*ibw)/1000;if(c<10){maint=Math.max(1,tot/2);tau=24;note='Suy thận nặng';}else if(c<30){maint=tot/2;tau=12;note='Suy thận vừa';}else{maint=tot/3;tau=8;note='Chức năng thận bình thường-nhẹ';}}SR('res-colistin',RG({l:'Loading dose',v:9,u:'MIU'},{l:'Maintenance',v:maint.toFixed(1),u:'MIU/lần'},{l:'Khoảng cách',v:tau,u:'h'},{l:'Tổng/ngày',v:(maint*(24/tau)).toFixed(1),u:'MIU/ngày'})+IB('yellow','<strong>'+note+'.</strong> CMS 1 MIU = 80mg. Theo dõi chức năng thận hàng ngày.'));}

function calcLevo(){const wt=+document.getElementById('levo-wt').value,age=+document.getElementById('levo-age').value,ind=document.getElementById('levo-ind').value,c=document.getElementById('levo-cardiac').value;if([wt,age].some(isNaN))return alert('Nhập đầy đủ!');const base={full:[1.6,1.8],elderly:[0.5,1.0],sub:[0.5,1.0],suppress:[2.0,2.5],postthyroid:[1.8,2.0]};let lo=base[ind][0]*wt,hi=base[ind][1]*wt;if(c==='risk'){lo*=0.5;hi*=0.5;}if(age>=65){lo*=0.7;hi*=0.8;}const start=c==='risk'?12.5:age>=65?25:50;SR('res-levo',RG({l:'Liều thấp',v:Math.round(lo),u:'mcg/ngày'},{l:'Liều cao',v:Math.round(hi),u:'mcg/ngày'},{l:'Liều khởi đầu',v:start,u:'mcg'})+IB('blue','Tăng dần 25 mcg mỗi 4–6 tuần. Kiểm tra TSH sau 6 tuần.'));}

function calcAnesthetic(){const mpk=+document.getElementById('an-drug').value,wt=+document.getElementById('an-wt').value,conc=+document.getElementById('an-conc').value/100;if(isNaN(wt))return alert('Nhập cân nặng!');const mg=mpk*wt,vol=mg/(conc*1000);SR('res-anesthetic',RG({l:'mg/kg tối đa',v:mpk,u:'mg/kg'},{l:'Tổng tối đa',v:mg.toFixed(0),u:'mg'},{l:'Thể tích tối đa',v:vol.toFixed(1),u:'mL'})+IB('yellow','⚠️ Đây là liều tối đa tuyệt đối. Chuẩn bị Intralipid 20%.'));}

function calcHeparin(){const wt=+document.getElementById('hep-wt').value,ind=document.getElementById('hep-ind').value;if(isNaN(wt))return alert('Nhập cân nặng!');const p={dvtpe:{bolus:80,rate:18},acs:{bolus:60,rate:12},bridge:{bolus:0,rate:15}}[ind],bolus=Math.round(p.bolus*wt/1000)*1000,rate=p.rate*wt;SR('res-heparin',RG({l:'Bolus',v:p.bolus>0?bolus:'—',u:''},{l:'Tốc độ khởi đầu',v:rate.toFixed(0),u:'U/h'},{l:'mL/h (25kU/250mL)',v:(rate/100).toFixed(1),u:'mL/h'})+IB('blue','Kiểm tra aPTT sau 6h. Điều chỉnh theo bảng phác đồ Raschke.'));}

function calcInsulinSliding(){const bg=+document.getElementById('ins-bg').value,sens=document.getElementById('ins-sens').value;if(isNaN(bg))return alert('Nhập đường huyết!');const sc={low:[[0,7.8,0],[7.8,10,4],[10,13.9,6],[13.9,16.7,8],[16.7,19.4,12],[19.4,999,16]],normal:[[0,7.8,0],[7.8,10,2],[10,13.9,4],[13.9,16.7,6],[16.7,19.4,8],[19.4,999,12]],high:[[0,7.8,0],[7.8,10,1],[10,13.9,2],[13.9,16.7,3],[16.7,19.4,5],[19.4,999,8]]}[sens];let dose=0;for(const r of sc)if(bg>=r[0]&&bg<r[1]){dose=r[2];break;}const cls=bg<3.9?'red':bg<=10?'green':'yellow';SR('res-insulin-sliding',RG({l:'Đường huyết',v:bg.toFixed(1),u:'mmol/L'},{l:'Liều insulin',v:dose,u:'đơn vị'})+IB(cls,(bg<3.9?'🚨 Hạ đường huyết! Điều trị ngay!':'BG '+bg.toFixed(1)+' mmol/L → <strong>'+dose+' đơn vị Insulin Regular SC</strong>. Mục tiêu: 7.8–10.0 mmol/L.')));}

function calcInsulinIV(){const bg=+document.getElementById('iiv-bg').value,prev=+document.getElementById('iiv-prev').value,rate=+document.getElementById('iiv-rate').value;if([bg,prev,rate].some(isNaN))return alert('Nhập đầy đủ!');const trend=bg-prev;let nr=rate,action='Duy trì';if(bg<4){nr=0;action='NGƯNG — Hạ đường huyết nặng!';}else if(bg<6){nr=Math.max(0,rate-2);action='Giảm 2 U/h';}else if(bg<8){nr=Math.max(0,rate-1);action='Giảm 1 U/h';}else if(bg<=10){action='Duy trì tốc độ hiện tại';}else if(bg<=14){nr=rate+1;action='Tăng 1 U/h';}else if(bg<=18){nr=rate+2;action='Tăng 2 U/h';}else{nr=rate+3;action='Tăng 3 U/h';}const cls=bg<4?'red':bg<=10?'green':'yellow';SR('res-iiv',RG({l:'BG hiện tại',v:bg.toFixed(1),u:'mmol/L'},{l:'Xu hướng',v:(trend>0?'+':'')+trend.toFixed(1),u:'mmol/L'},{l:'Tốc độ mới',v:nr.toFixed(1),u:'U/h'})+IB(cls,'→ <strong>'+action+': '+nr.toFixed(1)+' U/h</strong>'));}

function calcInsulinSC(){const total=+document.getElementById('isc-total').value,eating=document.getElementById('isc-eating').value;if(isNaN(total))return alert('Nhập tổng liều!');const sc=total*0.8,basal=sc*0.5,bolus=eating==='yes'?sc*0.5/3:0;SR('res-isc',RG({l:'Tổng SC/ngày',v:Math.round(sc),u:'đơn vị'},{l:'Basal (Glargine)',v:Math.round(basal),u:'U/ngày'},{l:'Bolus/bữa',v:eating==='yes'?Math.round(bolus):'—',u:'U'})+IB('blue','IV '+total+'U → SC = 80% = '+Math.round(sc)+'U. Basal 50% + Bolus 50%. Overlap IV 1–2h.'));}

const OF={morphine_po:1,morphine_iv:3,oxycodone:1.5,hydromorphone_po:5,hydromorphone_iv:20,fentanyl_iv:100,fentanyl_patch:100,codeine:0.15,tramadol:0.1,pethidine_iv:0.1};
function calcOpioid(){const f=document.getElementById('op-from').value,t=document.getElementById('op-to').value,d=+document.getElementById('op-dose').value;if(isNaN(d))return alert('Nhập liều!');const medd=d*OF[f],eq=medd/OF[t];SR('res-opioid',RG({l:'MEDD',v:medd.toFixed(1),u:'mg morphine/ngày'},{l:'Liều tương đương',v:eq.toFixed(1),u:'mg/ngày'},{l:'Liều khuyến nghị (−30%)',v:(eq*0.7).toFixed(1),u:'mg/ngày'})+IB('yellow','⚠️ Giảm 25–50% do dung nạp chéo. Điều chỉnh theo đáp ứng lâm sàng.'));}

function calcCortico(){const from=+document.getElementById('cs-from').value,dose=+document.getElementById('cs-dose').value,to=+document.getElementById('cs-to').value;if(isNaN(dose))return alert('Nhập liều!');const hc=dose/from*20,res=hc/20*to;SR('res-cortico',RG({l:'Liều tương đương',v:res.toFixed(2),u:'mg/ngày'},{l:'Tương đương HC',v:hc.toFixed(0),u:'mg hydrocortisone'})+IB('blue',dose+'mg → '+hc.toFixed(0)+'mg HC = <strong>'+res.toFixed(2)+'mg</strong> thuốc đích.'));}

function calcBenzo(){const from=+document.getElementById('bz-from').value,dose=+document.getElementById('bz-dose').value,to=+document.getElementById('bz-to').value;if(isNaN(dose))return alert('Nhập liều!');const diaz=dose/from,res=diaz*to;SR('res-benzo',RG({l:'Tương đương Diazepam',v:diaz.toFixed(1),u:'mg'},{l:'Liều thuốc đích',v:res.toFixed(2),u:'mg/ngày'})+IB('yellow','⚠️ Cai BZD: giảm tối đa 10%/2 tuần. Không ngưng đột ngột — nguy cơ co giật.'));}

function calcSOFA(){const ids=['sofa-resp','sofa-coag','sofa-liver','sofa-cv','sofa-neuro','sofa-renal'],t=ids.reduce((s,id)=>s+parseInt(document.getElementById(id).value),0);let mort,risk,cls;if(t<7){mort='<10%';risk='Thấp';cls='green';}else if(t<10){mort='15–20%';risk='Trung bình';cls='yellow';}else if(t<13){mort='40–50%';risk='Cao';cls='red';}else{mort='>80%';risk='Rất cao';cls='red';}SR('res-sofa',RG({l:'Tổng SOFA',v:t+'/24',u:''},{l:'Tử vong ICU',v:mort,u:''},{l:'Nguy cơ',v:risk,u:''})+IB(cls,'SOFA '+t+' — '+risk+'. '+(t>=2?'✅ Đáp ứng tiêu chí Sepsis-3.':'Chưa đáp ứng tiêu chí Sepsis.')));}

function sA(v,sc){for(const r of sc)if(v>=r[0]&&v<=r[1])return r[2];return 0;}
function calcAPACHE(){const age=+document.getElementById('ap-age').value,temp=+document.getElementById('ap-temp').value,map=+document.getElementById('ap-map').value,hr=+document.getElementById('ap-hr').value,rr=+document.getElementById('ap-rr').value,pao2=+document.getElementById('ap-pao2').value,ph=+document.getElementById('ap-ph').value,na=+document.getElementById('ap-na').value,k=+document.getElementById('ap-k').value,cr=+document.getElementById('ap-cr').value,hct=+document.getElementById('ap-hct').value,wbc=+document.getElementById('ap-wbc').value,gcs=+document.getElementById('ap-gcs').value,ch=+document.getElementById('ap-chronic').value;if([age,temp,map,hr,rr,ph,na,k,cr,hct,wbc,gcs].some(isNaN))return alert('Nhập đầy đủ!');const aS=age<45?0:age<55?2:age<65?3:age<75?5:6;const tS=sA(temp,[[34,35.9,3],[36,38.4,0],[38.5,38.9,1],[39,40.9,2],[41,99,4],[0,33.9,4]]),mS=sA(map,[[50,69,2],[70,109,0],[110,129,2],[130,159,3],[160,999,4],[0,49,4]]),hS=sA(hr,[[40,54,3],[55,69,2],[70,109,0],[110,139,2],[140,179,3],[180,999,4],[0,39,4]]),rS=sA(rr,[[6,11,2],[12,24,0],[25,34,1],[35,49,3],[50,999,4],[0,5,4]]),pS=sA(pao2,[[61,70,1],[71,999,0],[55,60,3],[0,54,4]]),phS=sA(ph,[[7.33,7.49,0],[7.25,7.32,2],[7.15,7.24,3],[0,7.14,4],[7.5,7.59,1],[7.6,7.69,3],[7.7,99,4]]),naS=sA(na,[[130,149,0],[120,129,2],[111,119,3],[0,110,4],[150,154,1],[155,159,2],[160,179,3],[180,999,4]]),kS=sA(k,[[3.5,5.4,0],[3.0,3.4,1],[2.5,2.9,2],[0,2.4,4],[5.5,5.9,1],[6.0,6.9,3],[7.0,99,4]]),cS=sA(cr,[[0.6,1.4,0],[0,0.59,2],[1.5,1.9,2],[2.0,3.4,3],[3.5,99,4]]),hcS=sA(hct,[[30,45.9,0],[20,29.9,2],[46,49.9,1],[50,59.9,2],[60,999,4],[0,19.9,4]]),wS=sA(wbc,[[3,14.9,0],[1,2.9,2],[15,19.9,1],[20,39.9,2],[40,999,4],[0,0.99,4]]);const phyS=tS+mS+hS+rS+pS+phS+naS+kS+cS+hcS+wS,gcsS=15-gcs,tot=phyS+aS+gcsS+ch;const mort=Math.min(99,Math.round(100/(1+Math.exp(-(-3.517+tot*0.146)))));const cls=tot<10?'green':tot<20?'yellow':'red';SR('res-apache',RG({l:'APACHE II',v:tot,u:'/71'},{l:'Tử vong dự đoán',v:mort+'%',u:''})+IB(cls,'APACHE II: '+tot+'. Tử vong: ~'+mort+'%. '+(tot<10?'Nhẹ':tot<20?'Trung bình':tot<30?'Nặng':'Rất nặng')+'.')); }

function calcGCS(){const e=+document.getElementById('gcs-e').value,v=+document.getElementById('gcs-v').value,m=+document.getElementById('gcs-m').value,t=e+v+m;const cls=t>=13?'green':t>=9?'yellow':'red',lbl=t>=13?'Nhẹ (13–15)':t>=9?'Vừa (9–12)':'Nặng (3–8)';SR('res-gcs',RG({l:'Tổng GCS',v:t+'/15',u:''},{l:'E',v:e,u:''},{l:'V',v:v,u:''},{l:'M',v:m,u:''})+IB(cls,'GCS '+t+'/15 — <strong>'+lbl+'</strong>.'+(t<=8?' 🚨 Xem xét đặt NKQ bảo vệ đường thở.':'')));}

function calcCHADS(){const ids=['ch-c','ch-h','ch-a2','ch-d','ch-s2','ch-v','ch-a','ch-sc'],t=ids.reduce((s,id)=>s+parseInt(document.getElementById(id).value),0);let risk,rec,cls;if(t===0){risk='<1%/năm';rec='Không cần kháng đông';cls='green';}else if(t===1&&document.getElementById('ch-sc').value==='1'){risk='~1%/năm';rec='Không cần kháng đông (yếu tố nữ đơn độc)';cls='green';}else if(t===1){risk='~1.3%/năm';rec='Xem xét kháng đông (NOAC)';cls='yellow';}else{risk='~'+(t*1.5).toFixed(0)+'%/năm';rec='Chỉ định kháng đông (NOAC ưu tiên)';cls='red';}SR('res-chads',RG({l:'CHA₂DS₂-VASc',v:t,u:'/9'},{l:'Nguy cơ đột quỵ/năm',v:risk,u:''})+IB(cls,'<strong>'+rec+'</strong>. NOAC ưu tiên hơn warfarin (ESC 2020).'));}

function calcCURB(){const ids=['curb-c','curb-u','curb-r','curb-b','curb-65'],t=ids.reduce((s,id)=>s+parseInt(document.getElementById(id).value),0);let mort,sev,cls,rec;if(t<=1){mort='<3%';sev='Nhẹ';cls='green';rec='Điều trị ngoại trú';}else if(t===2){mort='9%';sev='Trung bình';cls='yellow';rec='Cân nhắc nhập viện ngắn hạn';}else{mort=t===3?'17%':t===4?'41%':'>57%';sev='Nặng';cls='red';rec='Nhập viện, xem xét ICU nếu ≥4';}SR('res-curb',RG({l:'CURB-65',v:t,u:'/5'},{l:'Tử vong 30 ngày',v:mort,u:''},{l:'Mức độ nặng',v:sev,u:''})+IB(cls,'<strong>'+rec+'</strong>. Tử vong 30 ngày: '+mort+'.'));}

function calcNEWS2(){const vals=['n2-spo2','n2-o2','n2-rr','n2-temp','n2-sbp','n2-hr','n2-avpu'].map(id=>document.getElementById(id).value),t=vals.reduce((s,v)=>s+parseInt(v.replace('b','')),0);let risk,resp,cls;if(t<=4&&!vals.some(v=>parseInt(v.replace('b',''))>=3)){risk='Thấp';resp='Đánh giá mỗi 12h';cls='green';}else if(t<=6||vals.some(v=>parseInt(v.replace('b',''))>=3)){risk='Trung bình';resp='Thông báo bác sĩ — đánh giá mỗi 1h';cls='yellow';}else{risk='Cao';resp='Báo động khẩn — ICU/RRT';cls='red';}SR('res-news2',RG({l:'Tổng NEWS2',v:t,u:''},{l:'Nguy cơ',v:risk,u:''},{l:'Đáp ứng',v:resp,u:''})+IB(cls,'NEWS2: <strong>'+t+'</strong> — '+risk+'. <strong>'+resp+'.</strong>'));}

function calcDAPT(){const ids=['dapt-age','dapt-smoke','dapt-dm','dapt-mi','dapt-prior','dapt-paclitaxel','dapt-small','dapt-hf','dapt-svg'],t=ids.reduce((s,id)=>s+parseInt(document.getElementById(id).value),0);const rec=t>=2?'Kéo dài DAPT >12 tháng':'DAPT 12 tháng tiêu chuẩn';SR('res-dapt',RG({l:'DAPT Score',v:t,u:''})+IB(t>=2?'yellow':'green','Score: '+t+'. <strong>'+rec+'</strong>.'));}

function calcBLED(){const ids=['bled-h','bled-a','bled-s','bled-b','bled-l','bled-e','bled-d'],t=ids.reduce((s,id)=>s+parseInt(document.getElementById(id).value),0);let risk,mort,cls;if(t<=1){risk='Thấp';mort='~1%';cls='green';}else if(t===2){risk='Trung bình';mort='~2%';cls='yellow';}else{risk='Cao';mort='~'+(t*1.5).toFixed(0)+'%';cls='red';}SR('res-bled',RG({l:'HAS-BLED',v:t,u:'/9'},{l:'Nguy cơ CM/năm',v:mort,u:''},{l:'Phân loại',v:risk,u:''})+IB(cls,'HAS-BLED: '+t+' — '+risk+'. Điểm cao không chống chỉ định kháng đông — kiểm soát yếu tố có thể chỉnh được.'));}

function calcTPN(){const wt=+document.getElementById('tpn-wt').value,ht=+document.getElementById('tpn-ht').value,age=+document.getElementById('tpn-age').value,sex=document.getElementById('tpn-sex').value,stress=+document.getElementById('tpn-stress').value;if([wt,ht,age].some(isNaN))return alert('Nhập đầy đủ!');const bmr=sex==='male'?10*wt+6.25*ht-5*age+5:10*wt+6.25*ht-5*age-161,kcal=Math.round(bmr*stress),prot=Math.round(wt*(stress>1.4?1.5:1.2)),gluc=Math.round(kcal*0.6/4),lip=Math.round(kcal*0.4/9),fl=Math.round(wt*30+500),bmi=wt/(ht/100)**2;SR('res-tpn',RG({l:'Năng lượng',v:kcal,u:'kcal/ngày'},{l:'Đạm',v:prot,u:'g/ngày'},{l:'Glucose',v:gluc,u:'g/ngày'},{l:'Lipid',v:lip,u:'g/ngày'},{l:'Dịch',v:fl,u:'mL/ngày'},{l:'BMI',v:bmi.toFixed(1),u:'kg/m²'})+IB('blue','BMR: '+Math.round(bmr)+' kcal × '+stress+' = '+kcal+' kcal/ngày. Đạm '+(prot/wt).toFixed(2)+' g/kg/ngày.'));}

function calcPhenytoin(){const m=+document.getElementById('ph-measured').value,alb=+document.getElementById('ph-alb').value,crcl=+document.getElementById('ph-crcl').value||90,vpa=document.getElementById('ph-vpa').value==='yes';if([m,alb].some(isNaN))return alert('Nhập đầy đủ!');let c;if(vpa||crcl<10)c=m/(0.48*alb/4.4+0.1);else c=m/(0.9*alb/4.4+0.1);const fr=c*0.1,cls=c>=10&&c<=20?'green':c<10?'yellow':'red';SR('res-phenytoin',RG({l:'Phenytoin hiệu chỉnh',v:c.toFixed(1),u:'mg/L'},{l:'Ước tính tự do',v:fr.toFixed(2),u:'mg/L'},{l:'Trạng thái',v:c<10?'Dưới điều trị':c<=20?'Đạt mục tiêu':'Trên điều trị',u:''})+IB(cls,'Hiệu chỉnh: '+c.toFixed(1)+' mg/L (mục tiêu: 10–20 mg/L). Phenytoin tự do mục tiêu: 1–2 mg/L.'));}

function calcPhenytoinLoad(){const wt=+document.getElementById('pl-wt').value,curr=+document.getElementById('pl-current').value||0,tgt=+document.getElementById('pl-target').value,vd=+document.getElementById('pl-vd').value;if(isNaN(wt))return alert('Nhập cân nặng!');const dose=(tgt-curr)*vd*wt;SR('res-phenload',RG({l:'Loading dose',v:Math.round(dose),u:'mg'},{l:'Tốc độ tối đa',v:50,u:'mg/phút'},{l:'Thời gian tối thiểu',v:(dose/50/60).toFixed(1),u:'phút'})+IB('yellow','🚨 Pha trong NaCl 0.9%. Theo dõi ECG liên tục.'));}

function calcWarfarin(){const inr=+document.getElementById('wf-inr').value,dose=+document.getElementById('wf-dose').value,tgt=document.getElementById('wf-target').value;if([inr,dose].some(isNaN))return alert('Nhập đầy đủ!');const r=tgt==='2.5'?[2.0,3.0]:[2.5,3.5];let nd=dose,action='';if(inr<r[0]-0.5){nd=dose*1.15;action='Tăng 15% liều tuần';}else if(inr<r[0]){nd=dose*1.1;action='Tăng 10% liều tuần';}else if(inr<=r[1]){action='Duy trì liều hiện tại';nd=dose;}else if(inr<=r[1]+0.5){nd=dose*0.9;action='Giảm 10% liều tuần';}else if(inr<=4.0){nd=dose*0.85;action='Giảm 15% liều tuần';}else if(inr<=5.0){nd=0;action='Bỏ 1–2 liều, giảm 15–20% sau';}else{nd=0;action='🚨 Ngưng warfarin, xem xét Vitamin K';}const cls=inr>=r[0]&&inr<=r[1]?'green':inr>4?'red':'yellow';SR('res-warfarin',RG({l:'INR hiện tại',v:inr,u:''},{l:'Mục tiêu',v:r[0]+'–'+r[1],u:''},{l:'Liều mới',v:nd>0?nd.toFixed(1):'Ngưng',u:nd>0?'mg/tuần':''})+IB(cls,'INR '+inr+' → <strong>'+action+'</strong>. Kiểm tra INR lại sau 3–7 ngày.'));}

function calcIVRate(){const vol=+document.getElementById('ivr-vol').value,t=+document.getElementById('ivr-time').value,wt=+document.getElementById('ivr-wt').value;if([vol,t].some(isNaN)||t<=0)return alert('Nhập đầy đủ!');const r=vol/t;SR('res-ivrate',RG({l:'Tốc độ',v:r.toFixed(1),u:'mL/h'},{l:'mL/kg/h',v:!isNaN(wt)?(r/wt).toFixed(2):'—',u:''},{l:'Giọt/phút (15)',v:Math.round(vol/t/60*15),u:'gtt/min'},{l:'Giọt/phút (20)',v:Math.round(vol/t/60*20),u:'gtt/min'}));}

function calcIVVol(){const r=+document.getElementById('ivv-rate').value,t=+document.getElementById('ivv-time').value;if([r,t].some(isNaN))return alert('Nhập đầy đủ!');SR('res-ivvol',RG({l:'Thể tích',v:(r*t).toFixed(0),u:'mL'},{l:'Túi 500mL cần',v:Math.ceil(r*t/500),u:'túi'}));}

function calcIVTime(){const vol=+document.getElementById('ivt-vol').value,r=+document.getElementById('ivt-rate').value;if([vol,r].some(isNaN)||r<=0)return alert('Nhập đầy đủ!');const t=vol/r,h=Math.floor(t),m=Math.round((t-h)*60);SR('res-ivtime',RG({l:'Thời gian',v:t.toFixed(1),u:'h'},{l:'Giờ:Phút',v:h+'h '+m+'p',u:''}));}

function calcIVDrop(){const vol=+document.getElementById('ivd-vol').value,min=+document.getElementById('ivd-min').value,f=+document.getElementById('ivd-factor').value;if([vol,min].some(isNaN)||min<=0)return alert('Nhập đầy đủ!');const d=Math.round(vol*f/min);SR('res-ivdrop',RG({l:'Giọt/phút',v:d,u:'gtt/phút'},{l:'Giọt/10 giây',v:Math.round(d/6),u:'gtt'},{l:'Tốc độ',v:(vol/min*60).toFixed(1),u:'mL/h'}));}

function calcNa(){const curr=+document.getElementById('na-current').value,tgt=+document.getElementById('na-target').value,wt=+document.getElementById('na-wt').value,tbwF=+document.getElementById('na-sex').value,fNa=+document.getElementById('na-fluid').value,t=+document.getElementById('na-time').value;if([curr,tgt,wt,t].some(isNaN))return alert('Nhập đầy đủ!');const tbw=wt*tbwF,def=(tgt-curr)*tbw,vol=(def/fNa)*1000,rate=vol/t,chg=def/tbw;const cls=chg>8?'red':chg>6?'yellow':'green';SR('res-na',RG({l:'Thiếu hụt Na⁺',v:def.toFixed(0),u:'mmol'},{l:'Thể tích dịch',v:Math.round(vol),u:'mL'},{l:'Tốc độ',v:rate.toFixed(1),u:'mL/h'},{l:'Tăng Na⁺/24h',v:chg.toFixed(1),u:'mmol'})+IB(cls,'Na⁺ dự kiến tăng '+chg.toFixed(1)+' mmol/L/24h. '+(chg>8?'🚨 Nguy cơ ODS! Giảm tốc độ.':'✅ Trong giới hạn an toàn (≤6–8 mmol/24h).')));}

function calcK(){const curr=+document.getElementById('k-current').value,tgt=+document.getElementById('k-target').value,wt=+document.getElementById('k-wt').value,crcl=+document.getElementById('k-crcl').value||80;if([curr,tgt,wt].some(isNaN))return alert('Nhập đầy đủ!');const def=Math.max(0,(tgt-curr)*wt*2.5),kcl=def/1.34,sess=Math.ceil(def/10);const cls=curr<3?'red':curr<3.5?'yellow':'green';SR('res-k',RG({l:'Tổng K⁺ cần bù',v:Math.round(def),u:'mmol'},{l:'KCl 10% cần',v:Math.round(kcl),u:'mL'},{l:'Số lần bù',v:sess,u:'lần (10mmol/lần)'})+IB(cls,'K⁺ '+curr+' → Bù '+Math.round(def)+' mmol KCl.'+(crcl<30?' ⚠️ Suy thận: bù chậm, theo dõi ECG.':'')));}

function calcKIV(){const total=+document.getElementById('kiv-total').value,conc=+document.getElementById('kiv-conc').value,maxR=+document.getElementById('kiv-route').value;if(isNaN(total))return alert('Nhập tổng K⁺!');const vol=(total/conc)*1000,r=Math.min(maxR,total),t=total/r;SR('res-kiv',RG({l:'Tốc độ tối đa',v:maxR,u:'mmol/h'},{l:'Tốc độ',v:r.toFixed(1),u:'mmol/h'},{l:'Thể tích pha',v:Math.round(vol),u:'mL'},{l:'Thời gian truyền',v:t.toFixed(1),u:'h'})+IB('yellow','Tốc độ '+r.toFixed(1)+' mmol/h trong '+t.toFixed(1)+'h. Theo dõi K⁺ mỗi 2h, ECG nếu tốc độ cao.'));}

function calcHCO3(){const curr=+document.getElementById('hco-current').value,tgt=+document.getElementById('hco-target').value,wt=+document.getElementById('hco-wt').value,ph=+document.getElementById('hco-ph').value,conc=+document.getElementById('hco-conc').value,strat=+document.getElementById('hco-strategy').value;if([curr,tgt,wt,ph].some(isNaN))return alert('Nhập đầy đủ!');const def=(tgt-curr)*wt*0.3,toBu=def*strat,vol=toBu/conc;SR('res-hco3',RG({l:'Thiếu hụt HCO₃⁻',v:def.toFixed(0),u:'mmol'},{l:'Lượng cần bù',v:Math.round(toBu),u:'mmol'},{l:'Thể tích dung dịch',v:Math.round(vol),u:'mL'},{l:'Tốc độ (4h)',v:(vol/4).toFixed(0),u:'mL/h'})+IB(ph<7.1?'red':'yellow','pH '+ph+' — Bù '+(strat*100).toFixed(0)+'% = '+Math.round(toBu)+' mmol. Kiểm tra khí máu sau 1–2h.'));}
</script>
</body>
</html>