@sasindi/samplecollection 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,36 +1,22 @@
1
1
  import React, { useState, useEffect } from 'react';
2
- import { useNavigate } from 'react-router-dom';
3
2
  import { useTranslation } from 'react-i18next';
4
- import {
5
- Tile,
6
- TextInput,
7
- Select,
8
- SelectItem,
9
- TextArea,
10
- Button,
11
- Table,
12
- TableHead,
13
- TableRow,
14
- TableHeader,
15
- TableBody,
16
- TableCell,
17
- Checkbox,
18
- Loading,
19
- InlineNotification
20
- } from '@carbon/react';
21
3
  import styles from './samplecollection.scss';
22
4
 
23
5
  const UserAvatar = () => (
24
- <svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ borderRadius: '50%', border: '3px solid #009384' }}>
6
+ <svg width="60" height="60" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" style={{ borderRadius: '16px', border: '3px solid #20e5bf' }}>
25
7
  <circle cx="50" cy="50" r="50" fill="#E0F2F1"/>
26
8
  <circle cx="50" cy="40" r="18" fill="#009384"/>
27
9
  <path d="M18 78C18 62.536 32.3269 50 50 50C67.6731 50 82 62.536 82 78" stroke="#009384" strokeWidth="8" strokeLinecap="round"/>
28
10
  </svg>
29
11
  );
30
12
 
13
+ const navigateTo = (url: string) => {
14
+ window.history.pushState({}, '', url);
15
+ window.dispatchEvent(new PopStateEvent('popstate'));
16
+ };
17
+
31
18
  const SamplecollectionRoom: React.FC = () => {
32
19
  const { t } = useTranslation();
33
- const navigate = useNavigate();
34
20
 
35
21
  // Route state read from localstorage
36
22
  const phnNo = localStorage.getItem('phnNo') || '';
@@ -269,7 +255,7 @@ const SamplecollectionRoom: React.FC = () => {
269
255
  // Ported JSP behavior: Just show success and redirect/reload
270
256
  setSuccessMsg('Status saved successfully as Not Done!');
271
257
  setTimeout(() => {
272
- navigate('/samplecollection');
258
+ navigateTo('/openmrs/spa/samplecollection');
273
259
  }, 1500);
274
260
  return;
275
261
  }
@@ -416,223 +402,253 @@ const SamplecollectionRoom: React.FC = () => {
416
402
  }
417
403
  };
418
404
 
419
- if (loading) return <Loading description="Loading page details..." withOverlay={true} />;
405
+ if (loading) {
406
+ return (
407
+ <div className={styles.container} style={{ textAlign: 'center', padding: '50px' }}>
408
+ Loading patient details...
409
+ </div>
410
+ );
411
+ }
420
412
 
421
413
  return (
422
414
  <div className={styles.container}>
423
- <Tile className={styles.tile}>
424
- {/* Header */}
425
- <div className={styles.headerRow}>
426
- <h1 className={styles.heading}>
427
- {t('samplecollectionRoomHeading', 'Sample Collection Room')}
428
- </h1>
429
- <div className={styles.locationBadge}>
430
- <span className="icon-hospital" />
431
- <span>{locationName}</span>
432
- </div>
415
+ {/* Clinic/Hospital Header */}
416
+ <div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: '10px' }}>
417
+ <div className={styles.locationBadge} style={{ background: '#e9ecef', color: '#495057' }}>
418
+ <span className="icon-hospital" />
419
+ <span id="lblInstituteName" style={{ fontWeight: 'bold' }}>{locationName}</span>
433
420
  </div>
421
+ </div>
434
422
 
435
- {/* Notifications */}
436
- {errorMsg && (
437
- <InlineNotification
438
- kind="error"
439
- title="Error"
440
- subtitle={errorMsg}
441
- onClose={() => setErrorMsg('')}
442
- style={{ marginBottom: '1rem' }}
443
- />
444
- )}
445
- {successMsg && (
446
- <InlineNotification
447
- kind="success"
448
- title="Success"
449
- subtitle={successMsg}
450
- onClose={() => setSuccessMsg('')}
451
- style={{ marginBottom: '1rem' }}
452
- />
453
- )}
454
-
455
- {/* Patient Profile Card */}
456
- <div className={styles.patientCard}>
457
- <div className={styles.patientGrid}>
458
- <div className={styles.patientField}>
459
- <span className={styles.fieldLabel}>Full Name</span>
460
- <span className={styles.fieldValue}>{patientName || 'N/A'}</span>
461
- </div>
462
- <div className={styles.patientField}>
463
- <span className={styles.fieldLabel}>Section</span>
464
- <span className={styles.fieldValue}>{initialSection || 'N/A'}</span>
423
+ <div className={styles.card}>
424
+ <div className={styles.cardBody}>
425
+
426
+ {/* Section title */}
427
+ <div className={styles.col12} style={{ marginBottom: '1rem', padding: 0 }}>
428
+ <h2 className={styles.heading} style={{ margin: 0 }}>
429
+ {t('samplecollectionRoomHeading', 'Sample Collection Room')}
430
+ </h2>
431
+ </div>
432
+
433
+ {/* Messages */}
434
+ {errorMsg && (
435
+ <div style={{ padding: '8px', color: '#721c24', backgroundColor: '#f8d7da', border: '1px solid #f5c6cb', borderRadius: '4px', marginBottom: '10px' }}>
436
+ {errorMsg}
465
437
  </div>
466
- <div className={styles.patientField}>
467
- <span className={styles.fieldLabel}>PHN No</span>
468
- <span className={styles.fieldValue}>{phnNo || 'N/A'}</span>
438
+ )}
439
+ {successMsg && (
440
+ <div style={{ padding: '8px', color: '#155724', backgroundColor: '#d4edda', border: '1px solid #c3e6cb', borderRadius: '4px', marginBottom: '10px' }}>
441
+ {successMsg}
469
442
  </div>
470
- <div className={styles.patientField}>
471
- <span className={styles.fieldLabel}>Age</span>
472
- <span className={styles.fieldValue}>{patientAge ? `${patientAge} years` : 'N/A'}</span>
443
+ )}
444
+
445
+ {/* Patient Card Grid (Col-10 fields, Col-2 avatar) */}
446
+ <div className={styles.row} style={{ marginBottom: '1.5rem' }}>
447
+ <div className={styles.col10}>
448
+ <div className={styles.row}>
449
+
450
+ <div className={styles.formGroupCol}>
451
+ <label className={styles.labelCompact}>Full Name</label>
452
+ <input type="text" className={styles.formControl} value={patientName} readOnly />
453
+ </div>
454
+
455
+ <div className={styles.formGroupCol}>
456
+ <label className={styles.labelCompact}>Section</label>
457
+ <input type="text" className={styles.formControl} value={initialSection} readOnly />
458
+ </div>
459
+
460
+ <div className={styles.formGroupCol}>
461
+ <label className={styles.labelCompact}>PHN No</label>
462
+ <input type="text" className={styles.formControl} value={phnNo} readOnly />
463
+ </div>
464
+
465
+ <div className={styles.formGroupCol}>
466
+ <label className={styles.labelCompact}>Age</label>
467
+ <input type="text" className={styles.formControl} value={patientAge} readOnly />
468
+ </div>
469
+
470
+ <div className={styles.formGroupCol}>
471
+ <label className={styles.labelCompact}>Gender</label>
472
+ <input type="text" className={styles.formControl} value={patientGender} readOnly />
473
+ </div>
474
+
475
+ </div>
473
476
  </div>
474
- <div className={styles.patientField}>
475
- <span className={styles.fieldLabel}>Gender</span>
476
- <span className={styles.fieldValue}>{patientGender || 'N/A'}</span>
477
+
478
+ <div className={styles.col2}>
479
+ <div className={styles.avatarContainer}>
480
+ {profileImgName ? (
481
+ <img
482
+ src={`${window.location.origin}/openmrs/owa/PatientImagesUploaded/${profileImgName}`}
483
+ alt="Patient avatar"
484
+ className={styles.uploadImg}
485
+ onError={(e) => {
486
+ (e.target as HTMLElement).style.display = 'none';
487
+ }}
488
+ />
489
+ ) : (
490
+ <UserAvatar />
491
+ )}
492
+ </div>
477
493
  </div>
478
494
  </div>
479
- <div className={styles.avatarContainer}>
480
- {profileImgName ? (
481
- <img
482
- src={`${window.location.origin}/openmrs/owa/PatientImagesUploaded/${profileImgName}`}
483
- alt="Patient profile"
484
- className={styles.avatarImg}
485
- onError={(e) => {
486
- // Fallback if image not found
487
- (e.target as HTMLElement).style.display = 'none';
488
- }}
489
- />
490
- ) : (
491
- <UserAvatar />
492
- )}
495
+
496
+ {/* Pending Tests Table */}
497
+ <div className={styles.tableResponsive} style={{ maxHeight: '200px', overflowY: 'auto', border: '1px solid #dee2e6', marginBottom: '1.5rem' }}>
498
+ <table className={`${styles.table} ${styles.tableBordered} ${styles.tableHover} ${styles.tableStriped}`}>
499
+ <thead>
500
+ <tr>
501
+ <th style={{ width: '50px' }}>No</th>
502
+ <th style={{ whiteSpace: 'nowrap' }}>Test Name</th>
503
+ <th style={{ whiteSpace: 'nowrap' }}>Order By</th>
504
+ <th style={{ whiteSpace: 'nowrap' }}>Order Date/Time</th>
505
+ <th style={{ width: '40px' }}></th>
506
+ </tr>
507
+ </thead>
508
+ <tbody>
509
+ {testList.length === 0 ? (
510
+ <tr>
511
+ <td colSpan={5} style={{ textAlign: 'center', padding: '10px' }}>
512
+ No active tests pending collection.
513
+ </td>
514
+ </tr>
515
+ ) : (
516
+ testList.map((row, index) => {
517
+ const id = row[8];
518
+ const testName = row[2];
519
+ const orderBy = row[5];
520
+ const orderDateTime = row[6];
521
+ const urgent = row[9];
522
+ const isChecked = selectedIds.includes(String(id));
523
+
524
+ return (
525
+ <tr key={id || index}>
526
+ <td>{index + 1}</td>
527
+ <td>{testName}</td>
528
+ <td>{orderBy}</td>
529
+ <td>{orderDateTime}</td>
530
+ <td style={{ textAlign: 'center' }}>
531
+ <input
532
+ type="checkbox"
533
+ className={styles.formControl}
534
+ style={{ width: '16px', height: '16px', margin: 0 }}
535
+ checked={isChecked}
536
+ onChange={(e) =>
537
+ handleCheckboxChange(e.target.checked, String(id), testName, String(urgent), row)
538
+ }
539
+ />
540
+ </td>
541
+ </tr>
542
+ );
543
+ })
544
+ )}
545
+ </tbody>
546
+ </table>
493
547
  </div>
494
- </div>
495
548
 
496
- {/* Tests List Table */}
497
- <div style={{ maxHeight: '250px', overflowY: 'auto', marginBottom: '2rem' }}>
498
- <Table>
499
- <TableHead>
500
- <TableRow>
501
- <TableHeader>No</TableHeader>
502
- <TableHeader>Test Name</TableHeader>
503
- <TableHeader>Order By</TableHeader>
504
- <TableHeader>Order Date/Time</TableHeader>
505
- <TableHeader className={styles.checkboxCell} />
506
- </TableRow>
507
- </TableHead>
508
- <TableBody>
509
- {testList.length === 0 ? (
510
- <TableRow>
511
- <TableCell colSpan={5} style={{ textAlign: 'center' }}>
512
- No active tests pending collection.
513
- </TableCell>
514
- </TableRow>
515
- ) : (
516
- testList.map((row, index) => {
517
- const id = row[8];
518
- const testName = row[2];
519
- const orderBy = row[5];
520
- const orderDateTime = row[6];
521
- const urgent = row[9]; // 'true' or 'false'
522
- const isChecked = selectedIds.includes(String(id));
523
-
524
- return (
525
- <TableRow key={id || index}>
526
- <TableCell>{index + 1}</TableCell>
527
- <TableCell>{testName}</TableCell>
528
- <TableCell>{orderBy}</TableCell>
529
- <TableCell>{orderDateTime}</TableCell>
530
- <TableCell className={styles.checkboxCell}>
531
- <Checkbox
532
- id={`chk-${id}`}
533
- labelText=""
534
- checked={isChecked}
535
- onChange={(e, { checked }) =>
536
- handleCheckboxChange(checked, String(id), testName, String(urgent), row)
537
- }
538
- />
539
- </TableCell>
540
- </TableRow>
541
- );
542
- })
543
- )}
544
- </TableBody>
545
- </Table>
546
- </div>
549
+ {/* Test Detail Display inputs */}
550
+ <div className={styles.row} style={{ marginBottom: '1rem' }}>
551
+
552
+ <div className={styles.formGroupCol}>
553
+ <label className={styles.labelCompact}>Test Name</label>
554
+ <input type="text" className={styles.formControl} value={displayTestNames} readOnly />
555
+ </div>
547
556
 
548
- {/* Detail Panel */}
549
- <div className={styles.roomFormSection}>
550
- <div className={styles.formGrid}>
551
- <TextInput
552
- id="txttestname"
553
- labelText="Test Name"
554
- value={displayTestNames}
555
- readOnly
556
- />
557
- <TextInput
558
- id="txtorderby"
559
- labelText="Order By"
560
- value={displayOrderBy}
561
- readOnly
562
- />
563
- <TextInput
564
- id="txtorderdate"
565
- labelText="Order Date"
566
- value={displayOrderDate}
567
- readOnly
568
- />
569
- <TextInput
570
- id="txtordertime"
571
- labelText="Order Time"
572
- value={displayOrderTime}
573
- readOnly
574
- />
575
- </div>
557
+ <div className={styles.formGroupCol}>
558
+ <label className={styles.labelCompact}>Order By</label>
559
+ <input type="text" className={styles.formControl} value={displayOrderBy} readOnly />
560
+ </div>
561
+
562
+ <div className={styles.formGroupCol}>
563
+ <label className={styles.labelCompact}>Order Date</label>
564
+ <input type="text" className={styles.formControl} value={displayOrderDate} readOnly />
565
+ </div>
566
+
567
+ <div className={styles.formGroupCol}>
568
+ <label className={styles.labelCompact}>Order Time</label>
569
+ <input type="text" className={styles.formControl} value={displayOrderTime} readOnly />
570
+ </div>
576
571
 
577
- <hr style={{ border: 'none', height: '1px', backgroundColor: '#e0e0e0', margin: '20px 0' }} />
578
-
579
- {/* User inputs */}
580
- <div className={styles.formGrid}>
581
- <TextInput
582
- id="txtdate"
583
- labelText="Date"
584
- type="date"
585
- value={saveDate}
586
- onChange={(e) => setSaveDate(e.target.value)}
587
- />
588
- <TextInput
589
- id="txttime"
590
- labelText="Time"
591
- type="time"
592
- value={saveTime}
593
- onChange={(e) => setSaveTime(e.target.value)}
594
- />
595
- <Select
596
- id="drpstatus"
597
- labelText="Collection Status"
598
- value={saveStatus}
599
- onChange={(e) => setSaveStatus(e.target.value)}
600
- >
601
- <SelectItem value="0" text="--Select--" />
602
- <SelectItem value="Done" text="Done" />
603
- <SelectItem value="Not Done" text="Not Done" />
604
- </Select>
605
572
  </div>
606
573
 
607
- <div style={{ marginBottom: '2rem' }}>
608
- <TextArea
609
- id="txtnote"
610
- labelText="Remark"
611
- rows={3}
612
- value={saveRemark}
613
- onChange={(e) => setSaveRemark(e.target.value)}
614
- />
574
+ <hr style={{ border: 'none', height: '1px', backgroundColor: '#000', margin: '20px 0' }} />
575
+
576
+ {/* Date, Time, Status fields */}
577
+ <div className={styles.row} style={{ marginBottom: '1rem' }}>
578
+
579
+ <div className={styles.formGroupCol}>
580
+ <label className={styles.labelCompact}>Date</label>
581
+ <input
582
+ type="date"
583
+ className={styles.formControl}
584
+ value={saveDate}
585
+ onChange={(e) => setSaveDate(e.target.value)}
586
+ />
587
+ </div>
588
+
589
+ <div className={styles.formGroupCol}>
590
+ <label className={styles.labelCompact}>Time</label>
591
+ <input
592
+ type="time"
593
+ className={styles.formControl}
594
+ value={saveTime}
595
+ onChange={(e) => setSaveTime(e.target.value)}
596
+ />
597
+ </div>
598
+
599
+ <div className={styles.formGroupCol}>
600
+ <label className={styles.labelCompact}>Collection Status</label>
601
+ <select
602
+ className={styles.formControl}
603
+ value={saveStatus}
604
+ onChange={(e) => setSaveStatus(e.target.value)}
605
+ >
606
+ <option value="0">--Select--</option>
607
+ <option value="Done">Done</option>
608
+ <option value="Not Done">Not Done</option>
609
+ </select>
610
+ </div>
611
+
615
612
  </div>
616
613
 
617
- {/* Action buttons */}
618
- <div className={styles.actionsContainer}>
619
- <Button
620
- kind="danger"
621
- onClick={() => navigate('/samplecollection')}
622
- disabled={saving}
623
- >
624
- Back
625
- </Button>
626
- <Button
627
- kind="primary"
628
- onClick={handleSave}
629
- disabled={saving || testList.length === 0}
630
- >
631
- {saving ? 'Saving...' : 'Save'}
632
- </Button>
614
+ {/* Remark text box and Action buttons row */}
615
+ <div className={styles.row}>
616
+
617
+ <div className={styles.formGroupCol} style={{ flex: '0 0 66.6666%', maxWidth: '66.6666%', alignItems: 'flex-start' }}>
618
+ <label className={styles.labelCompact}>Remark</label>
619
+ <textarea
620
+ className={`${styles.formControl} ${styles.textareaControl}`}
621
+ rows={3}
622
+ value={saveRemark}
623
+ onChange={(e) => setSaveRemark(e.target.value)}
624
+ />
625
+ </div>
626
+
627
+ <div className={`${styles.formGroupCol} ${styles.justifyContentEnd}`} style={{ flex: '0 0 33.3333%', maxWidth: '33.3333%', alignSelf: 'flex-end' }}>
628
+ <button
629
+ type="button"
630
+ className={`${styles.btn} ${styles.btnSuccess} ${styles.mx2}`}
631
+ style={{ height: '40px', width: '100px' }}
632
+ disabled={saving || testList.length === 0}
633
+ onClick={handleSave}
634
+ >
635
+ {saving ? 'Saving...' : 'Save'}
636
+ </button>
637
+ <button
638
+ type="button"
639
+ className={`${styles.btn} ${styles.btnDanger}`}
640
+ style={{ height: '40px', width: '100px' }}
641
+ disabled={saving}
642
+ onClick={() => navigateTo('/openmrs/spa/samplecollection')}
643
+ >
644
+ Back
645
+ </button>
646
+ </div>
647
+
633
648
  </div>
649
+
634
650
  </div>
635
- </Tile>
651
+ </div>
636
652
  </div>
637
653
  );
638
654
  };
package/dist/435.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_sasindi_samplecollection=globalThis.webpackChunk_sasindi_samplecollection||[]).push([["435"],{6582(e,t,n){n.r(t),n.d(t,{default:()=>y});var r=n(658),a=n.n(r),l=n(853),o=n(1189),s=n(7080),c=n(2549),i=n(960);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t,n,r,a,l,o){try{var s=e[l](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,a)}function m(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var l=e.apply(t,n);function o(e){d(l,r,a,o,s,"next",e)}function s(e){d(l,r,a,o,s,"throw",e)}o(void 0)})}}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,s=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){s=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(s)throw r}}return l}}(e,t)||h(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}}function v(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),s=Object.defineProperty;return s(o,"next",{value:c(0)}),s(o,"throw",{value:c(1)}),s(o,"return",{value:c(2)}),"function"==typeof Symbol&&s(o,Symbol.iterator,{value:function(){return this}}),o;function c(s){return function(c){var i=[s,c];if(n)throw TypeError("Generator is already executing.");for(;o&&(o=0,i[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&i[0]?r.return:i[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return l.label++,{value:i[1],done:!1};case 5:l.label++,r=i[1],i=[0];continue;case 7:i=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===i[0]||2===i[0])){l=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){l.label=i[1];break}if(6===i[0]&&l.label<a[1]){l.label=a[1],a=i;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(i);break}a[2]&&l.ops.pop(),l.trys.pop();continue}i=t.call(e,l)}catch(e){i=[6,e],r=0}finally{n=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}}var b=function(){return a().createElement("svg",{width:"100",height:"100",viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{borderRadius:"50%",border:"3px solid #009384"}},a().createElement("circle",{cx:"50",cy:"50",r:"50",fill:"#E0F2F1"}),a().createElement("circle",{cx:"50",cy:"40",r:"18",fill:"#009384"}),a().createElement("path",{d:"M18 78C18 62.536 32.3269 50 50 50C67.6731 50 82 62.536 82 78",stroke:"#009384",strokeWidth:"8",strokeLinecap:"round"}))};let g=function(){var e=(0,s.useTranslation)().t,t=(0,l.useNavigate)(),n=localStorage.getItem("phnNo")||"",o=localStorage.getItem("section")||"",u=p((0,r.useState)(""),2),d=u[0],h=u[1],g=p((0,r.useState)(""),2),y=g[0],E=g[1],w=p((0,r.useState)(""),2),S=w[0],N=w[1],x=p((0,r.useState)(""),2),T=x[0],A=x[1],k=p((0,r.useState)(""),2),C=k[0],I=k[1],D=p((0,r.useState)(""),2),O=D[0],j=D[1],P=p((0,r.useState)(""),2),B=P[0],F=P[1],R=p((0,r.useState)(""),2),H=R[0],_=R[1],L=p((0,r.useState)([]),2),M=L[0],Y=L[1],V=p((0,r.useState)(!0),2),G=V[0],U=V[1],z=p((0,r.useState)(""),2),J=z[0],W=z[1],q=p((0,r.useState)(""),2),$=q[0],K=q[1],Q=p((0,r.useState)([]),2),X=Q[0],Z=Q[1],ee=p((0,r.useState)([]),2),et=ee[0],en=ee[1],er=p((0,r.useState)([]),2),ea=er[0],el=er[1],eo=p((0,r.useState)(""),2),es=eo[0],ec=eo[1],ei=p((0,r.useState)(""),2),eu=ei[0],ed=ei[1],em=p((0,r.useState)(""),2),ep=em[0],ef=em[1],eh=p((0,r.useState)(""),2),ev=eh[0],eb=eh[1],eg=p((0,r.useState)(""),2),ey=eg[0],eE=eg[1],ew=p((0,r.useState)(""),2),eS=ew[0],eN=ew[1],ex=p((0,r.useState)("Done"),2),eT=ex[0],eA=ex[1],ek=p((0,r.useState)(""),2),eC=ek[0],eI=ek[1],eD=p((0,r.useState)(!1),2),eO=eD[0],ej=eD[1],eP=function(e,t){return e.toString().padStart(t,"0")},eB=function(){var e=new Date;return e.getFullYear().toString().substr(-2)+eP(e.getMonth()+1,2)+eP(e.getDate(),2)+eP(e.getHours(),2)+eP(e.getMinutes(),2)+eP(e.getSeconds(),2)},eF=function(e){if(!e)return"";var t=new Date,n=new Date(e),r=t.getFullYear()-n.getFullYear(),a=t.getMonth()-n.getMonth();return(a<0||0===a&&t.getDate()<n.getDate())&&r--,r.toString()};(0,r.useEffect)(function(){var e=new Date,t="".concat(e.getFullYear(),"-").concat(eP(e.getMonth()+1,2),"-").concat(eP(e.getDate(),2)),n="".concat(eP(e.getHours(),2),":").concat(eP(e.getMinutes(),2));eE(t),eN(n)},[]),(0,r.useEffect)(function(){if(!n){W("No patient PHN provided"),U(!1);return}m(function(){var e,t,r,a,l,s,c,i,u,d,m,f,b,g,y,w,S,x,T,k;return v(this,function(v){switch(v.label){case 0:return v.trys.push([0,13,14,15]),[4,fetch("/openmrs/ws/rest/v1/session")];case 1:if(!(u=v.sent()).ok)throw Error("Session request failed");return[4,u.json()];case 2:return I((d=v.sent()).user.uuid),m=d.user.person.uuid,[4,fetch("/openmrs/ws/rest/v1/person/".concat(m))];case 3:if(!(f=v.sent()).ok)throw Error("User person details failed");return[4,f.json()];case 4:if(b=v.sent(),g="",b.attributes&&b.attributes.forEach(function(e){if(e.display){var t=p(e.display.split("="),2),n=t[0],r=t[1];n&&r&&"Institute Id"===n.trim()&&(g=r.trim())}}),!g)return[3,7];return j(g),[4,fetch("/openmrs/ws/rest/v1/location/".concat(g))];case 5:if(!(y=v.sent()).ok)return[3,7];return[4,y.json()];case 6:F((w=v.sent()).display||""),w.attributes&&w.attributes.forEach(function(e){if(e.display&&e.display.includes("POI")){var t=e.display.split(":")[1];t&&_(t.split(",")[0].trim())}}),v.label=7;case 7:return[4,fetch("/openmrs/ws/rest/v1/patientexamination/phn/".concat(n))];case 8:if(!(S=v.sent()).ok)throw Error("Patient not found");return[4,S.json()];case 9:if(h((null==(t=(x=v.sent()).person_id)||null==(e=t.person)?void 0:e.display)||""),E((null==(a=x.person_id)||null==(r=a.person)?void 0:r.gender)||""),(null==(s=x.person_id)||null==(l=s.person)?void 0:l.birthdate)&&N(eF(x.person_id.person.birthdate)),(null==(i=x.person_id)||null==(c=i.person)?void 0:c.attributes)&&x.person_id.person.attributes.forEach(function(e){e.display&&"ProfileImage"===e.display.split("=")[0].trim()&&A(e.display.split("=")[1].trim())}),!g)return[3,12];return[4,fetch("/openmrs/ws/rest/v1/samplecollection/loadview/".concat(n,"/").concat(o,"/").concat(g))];case 10:if(!(T=v.sent()).ok)return[3,12];return[4,T.json()];case 11:Y(v.sent()||[]),v.label=12;case 12:return[3,15];case 13:return console.error("Error loading page context details:",k=v.sent()),W(k.message||"Error occurred during data load"),[3,15];case 14:return U(!1),[7];case 15:return[2]}})})()},[n,o]);var eR=function(e,t,n,r,a){var l=f(X),o=f(ea),s=f(et);if(e?(l.push(t),o.push(n),s.push(r)):(l=l.filter(function(e){return e!==t}),o=o.filter(function(e){return e!==n}),s=s.filter(function(e){return e!==r})),Z(l),el(o),en(s),ec(o.join(", ")),0===l.length)ed(""),ef(""),eb("");else{var c=a[5]||"",i=p((a[6]||"").split(" "),2),u=i[0],d=i[1];ed(c),ef(u||""),eb(d||"")}};return G?a().createElement(c.Loading,{description:"Loading page details...",withOverlay:!0}):a().createElement("div",{className:i.A.container},a().createElement(c.Tile,{className:i.A.tile},a().createElement("div",{className:i.A.headerRow},a().createElement("h1",{className:i.A.heading},e("samplecollectionRoomHeading","Sample Collection Room")),a().createElement("div",{className:i.A.locationBadge},a().createElement("span",{className:"icon-hospital"}),a().createElement("span",null,B))),J&&a().createElement(c.InlineNotification,{kind:"error",title:"Error",subtitle:J,onClose:function(){return W("")},style:{marginBottom:"1rem"}}),$&&a().createElement(c.InlineNotification,{kind:"success",title:"Success",subtitle:$,onClose:function(){return K("")},style:{marginBottom:"1rem"}}),a().createElement("div",{className:i.A.patientCard},a().createElement("div",{className:i.A.patientGrid},a().createElement("div",{className:i.A.patientField},a().createElement("span",{className:i.A.fieldLabel},"Full Name"),a().createElement("span",{className:i.A.fieldValue},d||"N/A")),a().createElement("div",{className:i.A.patientField},a().createElement("span",{className:i.A.fieldLabel},"Section"),a().createElement("span",{className:i.A.fieldValue},o||"N/A")),a().createElement("div",{className:i.A.patientField},a().createElement("span",{className:i.A.fieldLabel},"PHN No"),a().createElement("span",{className:i.A.fieldValue},n||"N/A")),a().createElement("div",{className:i.A.patientField},a().createElement("span",{className:i.A.fieldLabel},"Age"),a().createElement("span",{className:i.A.fieldValue},S?"".concat(S," years"):"N/A")),a().createElement("div",{className:i.A.patientField},a().createElement("span",{className:i.A.fieldLabel},"Gender"),a().createElement("span",{className:i.A.fieldValue},y||"N/A"))),a().createElement("div",{className:i.A.avatarContainer},T?a().createElement("img",{src:"".concat(window.location.origin,"/openmrs/owa/PatientImagesUploaded/").concat(T),alt:"Patient profile",className:i.A.avatarImg,onError:function(e){e.target.style.display="none"}}):a().createElement(b,null))),a().createElement("div",{style:{maxHeight:"250px",overflowY:"auto",marginBottom:"2rem"}},a().createElement(c.Table,null,a().createElement(c.TableHead,null,a().createElement(c.TableRow,null,a().createElement(c.TableHeader,null,"No"),a().createElement(c.TableHeader,null,"Test Name"),a().createElement(c.TableHeader,null,"Order By"),a().createElement(c.TableHeader,null,"Order Date/Time"),a().createElement(c.TableHeader,{className:i.A.checkboxCell}))),a().createElement(c.TableBody,null,0===M.length?a().createElement(c.TableRow,null,a().createElement(c.TableCell,{colSpan:5,style:{textAlign:"center"}},"No active tests pending collection.")):M.map(function(e,t){var n=e[8],r=e[2],l=e[5],o=e[6],s=e[9],u=X.includes(String(n));return a().createElement(c.TableRow,{key:n||t},a().createElement(c.TableCell,null,t+1),a().createElement(c.TableCell,null,r),a().createElement(c.TableCell,null,l),a().createElement(c.TableCell,null,o),a().createElement(c.TableCell,{className:i.A.checkboxCell},a().createElement(c.Checkbox,{id:"chk-".concat(n),labelText:"",checked:u,onChange:function(t,a){return eR(a.checked,String(n),r,String(s),e)}})))})))),a().createElement("div",{className:i.A.roomFormSection},a().createElement("div",{className:i.A.formGrid},a().createElement(c.TextInput,{id:"txttestname",labelText:"Test Name",value:es,readOnly:!0}),a().createElement(c.TextInput,{id:"txtorderby",labelText:"Order By",value:eu,readOnly:!0}),a().createElement(c.TextInput,{id:"txtorderdate",labelText:"Order Date",value:ep,readOnly:!0}),a().createElement(c.TextInput,{id:"txtordertime",labelText:"Order Time",value:ev,readOnly:!0})),a().createElement("hr",{style:{border:"none",height:"1px",backgroundColor:"#e0e0e0",margin:"20px 0"}}),a().createElement("div",{className:i.A.formGrid},a().createElement(c.TextInput,{id:"txtdate",labelText:"Date",type:"date",value:ey,onChange:function(e){return eE(e.target.value)}}),a().createElement(c.TextInput,{id:"txttime",labelText:"Time",type:"time",value:eS,onChange:function(e){return eN(e.target.value)}}),a().createElement(c.Select,{id:"drpstatus",labelText:"Collection Status",value:eT,onChange:function(e){return eA(e.target.value)}},a().createElement(c.SelectItem,{value:"0",text:"--Select--"}),a().createElement(c.SelectItem,{value:"Done",text:"Done"}),a().createElement(c.SelectItem,{value:"Not Done",text:"Not Done"}))),a().createElement("div",{style:{marginBottom:"2rem"}},a().createElement(c.TextArea,{id:"txtnote",labelText:"Remark",rows:3,value:eC,onChange:function(e){return eI(e.target.value)}})),a().createElement("div",{className:i.A.actionsContainer},a().createElement(c.Button,{kind:"danger",onClick:function(){return t("/samplecollection")},disabled:eO},"Back"),a().createElement(c.Button,{kind:"primary",onClick:function(){return m(function(){var e,r,a,l,s,c,i,u,m,p,f,h,b,g,y,E,w,N,x,T,A,k,I,D,j;return v(this,function(v){switch(v.label){case 0:if("0"===eT)return W("Please select a valid Collection Status"),[2];if(0===X.length)return W("Please select at least one test to process"),[2];if(!ey||!eS)return W("Please specify both Date and Time of collection"),[2];if(!C)return W("Invalid session. Please login again."),[2];ej(!0),W(""),K(""),v.label=1;case 1:if(v.trys.push([1,22,23,24]),"Not Done"===eT)return K("Status saved successfully as Not Done!"),setTimeout(function(){t("/samplecollection")},1500),[2];e=eB(),r=et.some(function(e){return"true"===e})?"*".concat(e).concat(H):"".concat(e).concat(H),a="Done"===eT?"samplecollected":"samplenotcollected",l=({OPD:"/openmrs/ws/rest/v1/samplecollection/labtestssave",Clinic:"/openmrs/ws/rest/v1/samplecollection/labtestssaveclinic",Ward:"/openmrs/ws/rest/v1/samplecollection/labtestssaveward"})["OPD"===o?"OPD":"Clinic"===o?"Clinic":"Ward"],s=!0,c=!1,i=void 0,v.label=2;case 2:v.trys.push([2,7,8,9]),u=X[Symbol.iterator](),v.label=3;case 3:if(s=(m=u.next()).done)return[3,6];return f={id:p=m.value,collectionstatus:eT,remark:eC,barcodenumber:r,collectiondate:ey,collectiontime:eS,collectioncby:C,status:"processing",progress:a},[4,fetch(l,{method:"POST",body:JSON.stringify(f),headers:{"Content-Type":"application/json"}})];case 4:if(!v.sent().ok)throw Error("Failed to save test record for ID: ".concat(p));v.label=5;case 5:return s=!0,[3,3];case 6:return[3,9];case 7:return h=v.sent(),c=!0,i=h,[3,9];case 8:try{s||null==u.return||u.return()}finally{if(c)throw i}return[7];case 9:K("Sample status updated successfully! Preparing barcode print..."),b=[],g=!0,y=!1,E=void 0,v.label=10;case 10:v.trys.push([10,16,17,18]),w=ea[Symbol.iterator](),v.label=11;case 11:if(g=(N=w.next()).done)return[3,15];return x=N.value,[4,fetch("/openmrs/ws/rest/v1/samplecollection/getshortcode/".concat(encodeURIComponent(x)))];case 12:if(!(T=v.sent()).ok)return[3,14];return[4,T.json()];case 13:(null==(A=v.sent())?void 0:A.shortcode)&&b.push(A.shortcode),v.label=14;case 14:return g=!0,[3,11];case 15:return[3,18];case 16:return h=v.sent(),y=!0,E=h,[3,18];case 17:try{g||null==w.return||w.return()}finally{if(y)throw E}return[7];case 18:return k=b.join(", "),(I=window.open("","_blank"))&&(I.document.write('\n <!DOCTYPE html>\n <html>\n <head>\n <title>Barcode Print</title>\n <script src="https://cdnjs.cloudflare.com/ajax/libs/jsbarcode/3.11.5/JsBarcode.all.min.js"><\/script>\n <style>\n body { \n margin: 0; \n padding: 0; \n text-align: center; \n }\n .container {\n width: 1.96in; /* 5cm */\n height: 0.98in; /* 2.5cm */\n margin: 0 auto;\n position: relative;\n }\n svg {\n width: 100%;\n height: 80%;\n }\n .shortcode {\n font-family: Arial, sans-serif;\n font-size: 10px;\n margin-top: -14px;\n }\n @media print {\n body { margin: 0; padding: 0; }\n }\n </style>\n </head>\n <body>\n <div class="container">\n <svg id="barcode"></svg>\n <div class="shortcode">'.concat(d," (").concat(S,'Y)</div>\n <div style="font-size: 10px; font-family: Arial, sans-serif;">').concat(o,"/").concat(k,'</div>\n </div>\n <script>\n document.addEventListener("DOMContentLoaded", function() {\n JsBarcode("#barcode", "').concat(r,'", {\n width: 2,\n height: 50,\n displayValue: true,\n fontSize: 14,\n margin: 5\n });\n setTimeout(function() {\n window.print();\n window.close();\n }, 800);\n });\n <\/script>\n </body>\n </html>\n ')),I.document.close()),Z([]),el([]),en([]),ec(""),ed(""),ef(""),eb(""),[4,fetch("/openmrs/ws/rest/v1/samplecollection/loadview/".concat(n,"/").concat(o,"/").concat(O))];case 19:if(!(D=v.sent()).ok)return[3,21];return[4,D.json()];case 20:Y(v.sent()||[]),v.label=21;case 21:return[3,24];case 22:return console.error("Error during save process:",j=v.sent()),W(j.message||"Error occurred saving collection data"),[3,24];case 23:return ej(!1),[7];case 24:return[2]}})})()},disabled:eO||0===M.length},eO?"Saving...":"Save")))))},y=function(){return a().createElement(l.BrowserRouter,{basename:window.getOpenmrsSpaBase()},a().createElement(l.Routes,null,a().createElement(l.Route,{path:"samplecollection",element:a().createElement(o.default,null)}),a().createElement(l.Route,{path:"samplecollection/room",element:a().createElement(g,null)})))}}}]);
package/dist/435.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"435.js","sources":["webpack://@sasindi/samplecollection/./src/samplecollectionroom.component.tsx","webpack://@sasindi/samplecollection/./src/root.component.tsx"],"names":["UserAvatar","t","useTranslation","navigate","useNavigate","phnNo","localStorage","initialSection","_useState","patientName","setPatientName","_useState1","patientGender","setPatientGender","_useState2","patientAge","setPatientAge","_useState3","profileImgName","setProfileImgName","_useState4","userUuid","setUserUuid","_useState5","locationUuid","setLocationUuid","_useState6","locationName","setLocationName","_useState7","poi","setPoi","_useState8","testList","setTestList","_useState9","loading","setLoading","_useState10","errorMsg","setErrorMsg","_useState11","successMsg","setSuccessMsg","_useState12","selectedIds","setSelectedIds","_useState13","selectedUrgents","setSelectedUrgents","_useState14","selectedTestnames","setSelectedTestnames","_useState15","displayTestNames","setDisplayTestNames","_useState16","displayOrderBy","setDisplayOrderBy","_useState17","displayOrderDate","setDisplayOrderDate","_useState18","displayOrderTime","setDisplayOrderTime","_useState19","saveDate","setSaveDate","_useState20","saveTime","setSaveTime","_useState21","saveStatus","setSaveStatus","_useState22","saveRemark","setSaveRemark","_useState23","saving","setSaving","padNumber","number","length","getCurrentDateFormatted","now","Date","year","calculateAge","birthdateString","dob","age","monthDiff","useEffect","today","formattedDate","formattedTime","_patientData_person_id_person","_patientData_person_id_person1","_patientData_person_id_person2","_patientData_person_id_person3","sessionRes","sessionData","personUuid","personAttrRes","personAttrData","locUuid","locRes","locData","patientRes","patientData","loadViewRes","err","fetch","Error","attr","_attr_display_split","key","value","val","loadViewData","console","handleCheckboxChange","checked","id","testName","urgent","row","nextIds","nextTestnames","nextUrgents","item","orderby","_timestamp_split","date","time","Loading","styles","Tile","InlineNotification","onClose","window","onError","e","Table","TableHead","TableRow","TableHeader","TableBody","TableCell","index","orderBy","orderDateTime","isChecked","String","Checkbox","onChange","TextInput","Select","SelectItem","TextArea","Button","onClick","currentDate","generatedBarcode","progress","saveEndpoint","_iteratorError","payload","response","shortcodes","_iteratorError1","test","res","shortcodeData","combinedShortcodes","printWindow","err1","setTimeout","hasUrgent","u","JSON","encodeURIComponent","BrowserRouter","Routes","Route","Samplecollection","SamplecollectionRoom"],"mappings":"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"}