@pih/esm-pathology-app 1.0.4 → 1.0.5

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.
package/dist/861.js CHANGED
@@ -1,2 +1,2 @@
1
- (self.webpackChunk_pih_esm_pathology_app=self.webpackChunk_pih_esm_pathology_app||[]).push([[861],{64132:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>G});var o=n(80150),a=n.n(o),r=n(93379),s=n.n(r),l=n(7795),i=n.n(l),c=n(90569),u=n.n(c),d=n(3565),p=n.n(d),m=n(19216),y=n.n(m),g=n(44589),E=n.n(g),f=n(56724),h={};h.styleTagTransform=E(),h.setAttributes=p(),h.insert=u().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=y(),s()(f.Z,h);const b=f.Z&&f.Z.locals?f.Z.locals:void 0;var A=n(91208),v=n(6311),x=n(89707),w=n(78529),C=n(78722),U=n(99758),_=n(19586),S=n(7450),I=n(67188),D=n(8601),B=n(74017),k={};k.styleTagTransform=E(),k.setAttributes=p(),k.insert=u().bind(null,"head"),k.domAPI=i(),k.insertStyleElement=y(),s()(B.Z,k);const O=B.Z&&B.Z.locals?B.Z.locals:void 0;async function F(e){const t=(await(0,A.openmrsFetch)("/ws/rest/v1/session")).data.user.person.uuid,n=(await(0,A.openmrsFetch)(`/ws/rest/v1/person/${t}/attribute`)).data.results.filter((t=>t.attributeType.uuid===e));return n[0]&&n.value.uuid}async function L(e){return(await(0,A.openmrsFetch)(`/ws/rest/v1/concept/${e}?v=full`)).data.answers}var R=n(28251),P=n(21016),T=n(97819);D.Zx.register({family:"GeorgiaBold",src:P}),D.Zx.register({family:"Georgia",src:T});const Z=D.mM.create({page:{flexDirection:"row"},section:{margin:10,padding:20,flexGrow:1},textLabels:{padding:7,fontFamily:"GeorgiaBold",fontSize:16,fontWeight:"bold",paddingBottom:30},sentenceLabels:{paddingTop:7,fontFamily:"GeorgiaBold",fontSize:16,fontWeight:"bold",paddingBottom:3},textAnswers:{margin:10,padding:20,fontFamily:"Georgia",fontSize:14},sentenceAnswers:{marginBottom:10,paddingBottom:20,fontFamily:"Georgia",fontSize:14},logo:{width:61}}),N=e=>a().createElement(D.BB,{title:`Pathology report \n ${e.encounterInfo.family_name} \n ${e.encounterInfo.given_name} \n ${e.encounterInfo.middle_name} `},a().createElement(D.T3,{size:"A4",style:Z.page},a().createElement(D.G7,{style:Z.section},a().createElement(D.Ee,{style:Z.logo,src:R}),a().createElement(D.xv,{style:{fontSize:8}},"Butaro Hospital"),a().createElement(D.xv,{style:{position:"absolute",top:0,left:300,width:300}},a().createElement(D.xv,{style:Z.textAnswers},"Lab phone number:"),a().createElement(D.xv,null," "," ","0784433618")),a().createElement(D.xv,{style:{position:"absolute",top:15,left:300,width:300}},a().createElement(D.xv,{style:Z.textAnswers},"Accession number:"),a().createElement(D.xv,null," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.AccessionNumberconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",borderBottom:"1px",textAlign:"center",fontWeight:1500,marginBottom:30,fontFamily:"GeorgiaBold"}},"Pathology Report"),a().createElement(D.xv,{style:{paddingBottom:10}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Name:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.family_name," "," ",e.encounterInfo.given_name," "," ",e.encounterInfo.middle_name)),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:140,left:335}},a().createElement(D.xv,{style:Z.textAnswers},"Surgery Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.DateBiopsySpecimenTakenconceptUUID&&new Date(t.value).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))))),a().createElement(D.xv,{style:{paddingBottom:10}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Birthday:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",new Date(e.encounterInfo.personBirthdate).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:168,left:335,width:200}},a().createElement(D.xv,{style:Z.textAnswers},"Specimen Reception Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SpecimenSubmissionDateconceptUUID&&new Date(t.value).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))))),a().createElement(D.xv,{style:{paddingBottom:10,borderBottom:"1px"}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Gender:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.personGender)),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:200,left:335,width:250}},a().createElement(D.xv,{style:Z.textAnswers},"Signout Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",new Date(e.encounterInfo.resultsEncounter.encounterDatetime).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Sending Physician:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SendingPhysicianconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Sending Facility:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OtherBiopsyLocationconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,fontFamily:"Georgia"}},"Anatomical location:"),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"i.System:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OrganSystemconceptUUID&&t.value.name.display+", ")))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"ii.Organ:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OrganconceptUUID&&t.value.name.display+", ")))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"iii.Detail:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SpecimenDetailconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Procedure type:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OtherTestsOrProceduresconceptUUID&&t.value)))),a().createElement(D.xv,{style:[Z.sentenceLabels]},"Gross Description:"),a().createElement(D.xv,{style:[Z.sentenceAnswers]},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.GrossDescriptionconceptUUID&&t.value))),a().createElement(D.xv,{style:Z.sentenceLabels},"Microscopic Examination:"),a().createElement(D.xv,{style:Z.sentenceAnswers},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.MacroscopicExaminationconceptUUID&&t.value))),a().createElement(D.xv,{style:Z.sentenceLabels},"Conclusion:"),a().createElement(D.xv,{style:Z.sentenceAnswers},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID&&t.value))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Validated by pathologist:"),a().createElement(D.xv,{style:[Z.textAnswers,{fontWeight:"bold"}]}," "," ",e.encounterInfo.approvedBy))))),$=()=>{const e=(0,A.useConfig)(),[t,n]=a().useState(),[o,r]=a().useState([]),[s,l]=a().useState(""),[i,c]=a().useState([]),[u,d]=a().useState([]),[p,m]=a().useState([]),[y,g]=a().useState(""),[E,f]=a().useState(""),[h,b]=a().useState("");a().useEffect((()=>{F(e.healthCenterAttrTypeUUID).then(n),async function(){return(await(0,A.openmrsFetch)("/ws/rest/v1/location")).data.results}().then(c),L(e.sampleStatusConceptUUID).then(d),L(e.referralStatusConceptUUID).then(m),async function(e,t){const n=await F(e);let o=null;o=n&&n!=t?await(0,A.openmrsFetch)(`/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0?location=${n}`):await(0,A.openmrsFetch)("/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0");const a=o.data.dataSets[0].rows.map((async e=>{if(e.resultsEncounterUuid){o.data.dataSets[0].rows.findIndex((t=>t.encounterUuid==e.encounterUuid));const t=await async function(e){return(await(0,A.openmrsFetch)(`/ws/rest/v1/encounter/${e}?v=full`)).data}(e.resultsEncounterUuid);e.resultsEncounter=t}return e}));return Promise.all(a)}(e.healthCenterAttrTypeUUID,e.pathologyFullAllowedLocationUUID).then(r)}),[]);const B=o.filter((e=>!y||e.sampleStatusObs?.toLowerCase()==y.toLowerCase())).filter((e=>!E||e.referralStatusObs?.toLowerCase()==E.toLowerCase())).filter((e=>!s||e.patientHealthCenter?.toLowerCase()==s.toLowerCase())).filter((e=>{if(h){const t=h.split(/\s+/),n=`${e.family_name} ${e.middle_name} ${e.given_name}`;return t.every((e=>new RegExp("\\b"+e,"i").test(n)))}return!0})).map((n=>({id:n.encounterId,patientNames:a().createElement("a",{"data-testid":"patientNames",href:`/openmrs/patientDashboard.form?patientId=${n.personId}`},n.family_name," ",n.given_name," ",n.middle_name),pathologyRequest:a().createElement("a",{href:`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${n.encounterId}&mode=VIEW`}," ","Link"," "),sendingHospital:n.patientHealthCenter,phoneNumber:n.patientPhoneNumber||"",sampleStatus:a().createElement("select",{onChange:e=>R({uuid:e.target.value,display:e.target.options[e.target.selectedIndex].text},n)},a().createElement("option",{value:""}),u.map((e=>a().createElement("option",{"data-testid":"sampleStatus-option",value:e.uuid,key:e.uuid,selected:!!n.sampleStatusObs&&n.sampleStatusObs===e.display&&!0},e.display)))),dateOfRequest:new Date(n.encounterDatetime).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}),referralStatus:a().createElement("select",{onChange:e=>P({uuid:e.target.value,display:e.target.options[e.target.selectedIndex].text},n)},a().createElement("option",{"data-testid":"referralStatus-option",value:""}),p.map((e=>a().createElement("option",{value:e.uuid,key:e.uuid,selected:n.referralStatusObs&&n.referralStatusObs===e.display},e.display)))),sampleDropOff:a().createElement("input",{"data-testid":"sampleDropOff",type:"checkbox",checked:Boolean(n.sampleDropoffObs),onChange:e=>k(n)}),pathologicDiagnosisObs:n.pathologicDiagnosisObs,resultsEncounter:n.resultsEncounterId?a().createElement("a",{"data-testid":"resultsEncounter",href:`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${n.resultsEncounterId}&mode=VIEW`}," ","Results"," "):(!t||t===e.pathologyFullAllowedLocationUUID)&&a().createElement("a",{href:`/openmrs/module/htmlformentry/htmlFormEntry.form?personId=${n.personId}&patientId=${n.personId}&returnUrl=&formId=${e.pathologyResultsFromID}&uuid=${n.encounterUuid}`}," ","Fill in results"," "),PDFReport:n.resultsEncounterId&&n.approvedBy&&a().createElement(D.WD,{document:a().createElement(N,{encounterInfo:n,config:e}),fileName:"Pathology Report"},(e=>{let{loading:t}=e;return t?"loading...":a().createElement("button",null,"Download")}))}))),k=t=>{const n=(0,v.Z)(o);t.sampleDropoffObs?async function(e){return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${e}`,{method:"POST",headers:{"content-type":"application/json"},body:{voided:!0}})}(t.sampleDropoffObsUuid).then((e=>{if(e.ok){const e=n.findIndex((e=>e.encounterUuid==t.encounterUuid));n[e].sampleDropoffObs="",n[e].sampleDropoffObsUuid="",r(n)}})):async function(e,t,n,o){const a={person:e.patientUuid,obsDatetime:(new Date).toISOString(),concept:t,location:await F(n),encounter:e.encounterUuid,value:o,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,e.sampleDropOffconceptUUID,e.healthCenterAttrTypeUUID,e.yesConceptUUID).then((o=>{if(o.ok){const a=n.findIndex((e=>e.encounterUuid==t.encounterUuid));n[a].sampleDropoffObs=e.yesConceptName,n[a].sampleDropoffObsUuid=o.data.uuid,r(n)}}))},R=(t,n)=>{const a=(0,v.Z)(o);n.sampleStatusObs?async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e.uuid,voided:!e};return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${t.sampleStatusObsUuid}`,{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,n,e.sampleStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].sampleStatusObs=t.display,a[o].sampleStatusObsUuid=e.data.uuid,r(a)}else r(a)})):async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t.uuid,n,e.sampleStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].sampleStatusObs=t.display,a[o].sampleStatusObsUuid=e.data.uuid,r(a)}else r(a)}))},P=(t,n)=>{const a=(0,v.Z)(o);n.referralStatusObs?async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e.uuid,voided:!e};return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${t.referralStatusObsUuid}`,{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,n,e.referralStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].referralStatusObs=t.display,a[o].referralStatusObsUuid=e.data.uuid,r(a)}else r(a)})):async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t.uuid,n,e.referralStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].referralStatusObs=t.display,a[o].referralStatusObsUuid=e.data.uuid,r(a)}else r(a)}))};return a().createElement("div",null,a().createElement("div",{className:O.filtersContainer},a().createElement("label",{htmlFor:"sending-hospital"},"Sending Hospital "),a().createElement("select",{id:"sending-hospital",className:O.dropdown,value:s,onChange:e=>l(e.target.value)},a().createElement("option",{value:""}),i.map((n=>t&&t!==e.pathologyFullAllowedLocationUUID?n.uuid===t?a().createElement("option",{value:n.display,key:n.uuid},n.display):null:a().createElement("option",{value:n.display,key:n.uuid},n.display)))),a().createElement("label",{htmlFor:"sample-status"},"Sample Status "),a().createElement("select",{id:"sample-status",className:O.dropdown,value:y,onChange:e=>g(e.target.value)},a().createElement("option",{value:""}),u.map((e=>a().createElement("option",{value:e.display,key:e.uuid},e.display)))),a().createElement("label",{htmlFor:"referral-status"},"Referral Status "),a().createElement("select",{id:"referral-status",className:O.dropdown,value:E,onChange:e=>f(e.target.value)},a().createElement("option",{value:""}),p.map((e=>a().createElement("option",{value:e.display,key:e.uuid},e.display)))),a().createElement("label",{htmlFor:"patient-name"},"Patient Name "),a().createElement("input",{id:"patient-name",className:O.textBox,type:"text",onChange:e=>b(e.target.value)})),console.log(o),a().createElement("div",{className:O.tableContainer},a().createElement(x.ZP,{rows:B,headers:[{key:"patientNames",header:"Patient name"},{key:"pathologyRequest",header:"pathology request"},{key:"sendingHospital",header:"Sending Hospital"},{key:"phoneNumber",header:"Phone number"},{key:"sampleStatus",header:"Sample status"},{key:"dateOfRequest",header:"Date of Request"},{key:"referralStatus",header:"Referral status"},{key:"sampleDropOff",header:"Sample drop off?"},{key:"pathologicDiagnosisObs",header:"Pathologic diagnosis"},{key:"resultsEncounter",header:"Results"},{key:"PDFReport",header:"Report"}]},(e=>{let{rows:t,headers:n,getTableProps:o,getHeaderProps:r,getRowProps:s}=e;return a().createElement(w.Z,o(),a().createElement(C.Z,null,a().createElement(U.Z,null,n.map((e=>a().createElement(_.Z,r({header:e}),e.header))))),a().createElement(S.Z,null,t.map((e=>a().createElement(U.Z,s({row:e}),e.cells.map((e=>a().createElement(I.Z,{key:e.id},e.value))))))))}))),a().createElement("div",null))},G=()=>a().createElement("div",{className:`omrs-main-content ${b.container}`},a().createElement($,null))},74017:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(94015),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([e.id,".-esm-pathology__ReportComponent__tableContainer___uOmmk {\n height: 500px;\n overflow-x: auto;\n margin: 0 1rem;\n border: 2px solid lightgrey;\n border-radius: 0.25rem;\n}\n\n.-esm-pathology__ReportComponent__filtersContainer___avnpi {\n border-radius: 0.25rem;\n margin: 0 1rem;\n padding-top: 4%;\n}\n\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe {\n width: 10%;\n height: 2rem;\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:disabled {\n opacity: 0.8;\n background: lightgrey;\n cursor: not-allowed;\n}\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:focus {\n border: 2px solid var(--omrs-color-interaction);\n outline: 0;\n}\n.-esm-pathology__ReportComponent__textBox___-gvpP {\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n","",{version:3,sources:["webpack://./src/pathology-report/ReportComponent.css"],names:[],mappings:"AAAA;EACE,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,2BAA2B;EAC3B,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;EACtB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd;AACA;EACE,YAAY;EACZ,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,+CAA+C;EAC/C,UAAU;AACZ;AACA;EACE,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd",sourcesContent:[".tableContainer {\n height: 500px;\n overflow-x: auto;\n margin: 0 1rem;\n border: 2px solid lightgrey;\n border-radius: 0.25rem;\n}\n\n.filtersContainer {\n border-radius: 0.25rem;\n margin: 0 1rem;\n padding-top: 4%;\n}\n\n.dropdown {\n width: 10%;\n height: 2rem;\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n.dropdown:disabled {\n opacity: 0.8;\n background: lightgrey;\n cursor: not-allowed;\n}\n.dropdown:focus {\n border: 2px solid var(--omrs-color-interaction);\n outline: 0;\n}\n.textBox {\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n"],sourceRoot:""}]),s.locals={tableContainer:"-esm-pathology__ReportComponent__tableContainer___uOmmk",filtersContainer:"-esm-pathology__ReportComponent__filtersContainer___avnpi",dropdown:"-esm-pathology__ReportComponent__dropdown___Lr3Fe",textBox:"-esm-pathology__ReportComponent__textBox___-gvpP"};const l=s},56724:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(94015),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([e.id,".-esm-pathology__pathology__container___ny2VS {\n padding: 2em;\n}\n","",{version:3,sources:["webpack://./src/pathology.css"],names:[],mappings:"AAAA;EACE,YAAY;AACd",sourcesContent:[".container {\n padding: 2em;\n}\n"],sourceRoot:""}]),s.locals={container:"-esm-pathology__pathology__container___ny2VS"};const l=s},97819:(e,t,n)=>{"use strict";e.exports=n.p+"5b8bb278fcab4da4972e.ttf"},21016:(e,t,n)=>{"use strict";e.exports=n.p+"a5fad24f075c978ac04b.ttf"},28251:(e,t,n)=>{"use strict";e.exports=n.p+"00ebb57bb20c59433e84.gif"},42480:()=>{},19527:()=>{},69331:()=>{},52361:()=>{},94616:()=>{}}]);
1
+ (self.webpackChunk_pih_esm_pathology_app=self.webpackChunk_pih_esm_pathology_app||[]).push([[861],{64132:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>G});var o=n(80150),a=n.n(o),r=n(93379),s=n.n(r),l=n(7795),i=n.n(l),c=n(90569),u=n.n(c),d=n(3565),p=n.n(d),m=n(19216),y=n.n(m),g=n(44589),E=n.n(g),f=n(56724),h={};h.styleTagTransform=E(),h.setAttributes=p(),h.insert=u().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=y(),s()(f.Z,h);const b=f.Z&&f.Z.locals?f.Z.locals:void 0;var A=n(91208),v=n(6311),x=n(89707),w=n(78529),C=n(78722),U=n(99758),_=n(19586),S=n(7450),I=n(67188),D=n(8601),B=n(74017),k={};k.styleTagTransform=E(),k.setAttributes=p(),k.insert=u().bind(null,"head"),k.domAPI=i(),k.insertStyleElement=y(),s()(B.Z,k);const O=B.Z&&B.Z.locals?B.Z.locals:void 0;async function F(e){const t=(await(0,A.openmrsFetch)("/ws/rest/v1/session")).data.user.person.uuid,n=(await(0,A.openmrsFetch)(`/ws/rest/v1/person/${t}/attribute`)).data.results.filter((t=>t.attributeType.uuid===e));return n[0]&&n[0].value.uuid}async function L(e){return(await(0,A.openmrsFetch)(`/ws/rest/v1/concept/${e}?v=full`)).data.answers}var R=n(28251),P=n(21016),T=n(97819);D.Zx.register({family:"GeorgiaBold",src:P}),D.Zx.register({family:"Georgia",src:T});const Z=D.mM.create({page:{flexDirection:"row"},section:{margin:10,padding:20,flexGrow:1},textLabels:{padding:7,fontFamily:"GeorgiaBold",fontSize:16,fontWeight:"bold",paddingBottom:30},sentenceLabels:{paddingTop:7,fontFamily:"GeorgiaBold",fontSize:16,fontWeight:"bold",paddingBottom:3},textAnswers:{margin:10,padding:20,fontFamily:"Georgia",fontSize:14},sentenceAnswers:{marginBottom:10,paddingBottom:20,fontFamily:"Georgia",fontSize:14},logo:{width:61}}),N=e=>a().createElement(D.BB,{title:`Pathology report \n ${e.encounterInfo.family_name} \n ${e.encounterInfo.given_name} \n ${e.encounterInfo.middle_name} `},a().createElement(D.T3,{size:"A4",style:Z.page},a().createElement(D.G7,{style:Z.section},a().createElement(D.Ee,{style:Z.logo,src:R}),a().createElement(D.xv,{style:{fontSize:8}},"Butaro Hospital"),a().createElement(D.xv,{style:{position:"absolute",top:0,left:300,width:300}},a().createElement(D.xv,{style:Z.textAnswers},"Lab phone number:"),a().createElement(D.xv,null," "," ","0784433618")),a().createElement(D.xv,{style:{position:"absolute",top:15,left:300,width:300}},a().createElement(D.xv,{style:Z.textAnswers},"Accession number:"),a().createElement(D.xv,null," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.AccessionNumberconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",borderBottom:"1px",textAlign:"center",fontWeight:1500,marginBottom:30,fontFamily:"GeorgiaBold"}},"Pathology Report"),a().createElement(D.xv,{style:{paddingBottom:10}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Name:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.family_name," "," ",e.encounterInfo.given_name," "," ",e.encounterInfo.middle_name)),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:140,left:335}},a().createElement(D.xv,{style:Z.textAnswers},"Surgery Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.DateBiopsySpecimenTakenconceptUUID&&new Date(t.value).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))))),a().createElement(D.xv,{style:{paddingBottom:10}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Birthday:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",new Date(e.encounterInfo.personBirthdate).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:168,left:335,width:200}},a().createElement(D.xv,{style:Z.textAnswers},"Specimen Reception Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SpecimenSubmissionDateconceptUUID&&new Date(t.value).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))))),a().createElement(D.xv,{style:{paddingBottom:10,borderBottom:"1px"}},a().createElement(D.xv,{style:Z.textAnswers},"Patient Gender:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.personGender)),a().createElement(D.xv,{style:{paddingBottom:10,position:"absolute",top:200,left:335,width:250}},a().createElement(D.xv,{style:Z.textAnswers},"Signout Date:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",new Date(e.encounterInfo.resultsEncounter.encounterDatetime).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Sending Physician:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SendingPhysicianconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Sending Facility:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OtherBiopsyLocationconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,fontFamily:"Georgia"}},"Anatomical location:"),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"i.System:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OrganSystemconceptUUID&&t.value.name.display+", ")))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"ii.Organ:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OrganconceptUUID&&t.value.name.display+", ")))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10,paddingLeft:10}},a().createElement(D.xv,{style:Z.textLabels},"iii.Detail:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.SpecimenDetailconceptUUID&&t.value)))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Procedure type:"),a().createElement(D.xv,{style:Z.textAnswers}," "," ",e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.OtherTestsOrProceduresconceptUUID&&t.value)))),a().createElement(D.xv,{style:[Z.sentenceLabels]},"Gross Description:"),a().createElement(D.xv,{style:[Z.sentenceAnswers]},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.GrossDescriptionconceptUUID&&t.value))),a().createElement(D.xv,{style:Z.sentenceLabels},"Microscopic Examination:"),a().createElement(D.xv,{style:Z.sentenceAnswers},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.MacroscopicExaminationconceptUUID&&t.value))),a().createElement(D.xv,{style:Z.sentenceLabels},"Conclusion:"),a().createElement(D.xv,{style:Z.sentenceAnswers},e.encounterInfo.resultsEncounter.obs.map((t=>t.concept.uuid==e.config.COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID&&t.value))),a().createElement(D.xv,{style:{backgroundColor:"#E4E4E4",paddingBottom:10}},a().createElement(D.xv,{style:Z.textLabels},"Validated by pathologist:"),a().createElement(D.xv,{style:[Z.textAnswers,{fontWeight:"bold"}]}," "," ",e.encounterInfo.approvedBy))))),$=()=>{const e=(0,A.useConfig)(),[t,n]=a().useState(),[o,r]=a().useState([]),[s,l]=a().useState(""),[i,c]=a().useState([]),[u,d]=a().useState([]),[p,m]=a().useState([]),[y,g]=a().useState(""),[E,f]=a().useState(""),[h,b]=a().useState("");a().useEffect((()=>{F(e.healthCenterAttrTypeUUID).then(n),async function(){return(await(0,A.openmrsFetch)("/ws/rest/v1/location")).data.results}().then(c),L(e.sampleStatusConceptUUID).then(d),L(e.referralStatusConceptUUID).then(m),async function(e,t){const n=await F(e);let o=null;o=n&&n!=t?await(0,A.openmrsFetch)(`/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0?location=${n}`):await(0,A.openmrsFetch)("/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0");const a=o.data.dataSets[0].rows.map((async e=>{if(e.resultsEncounterUuid){o.data.dataSets[0].rows.findIndex((t=>t.encounterUuid==e.encounterUuid));const t=await async function(e){return(await(0,A.openmrsFetch)(`/ws/rest/v1/encounter/${e}?v=full`)).data}(e.resultsEncounterUuid);e.resultsEncounter=t}return e}));return Promise.all(a)}(e.healthCenterAttrTypeUUID,e.pathologyFullAllowedLocationUUID).then(r)}),[]);const B=o.filter((e=>!y||e.sampleStatusObs?.toLowerCase()==y.toLowerCase())).filter((e=>!E||e.referralStatusObs?.toLowerCase()==E.toLowerCase())).filter((e=>!s||e.patientHealthCenter?.toLowerCase()==s.toLowerCase())).filter((e=>{if(h){const t=h.split(/\s+/),n=`${e.family_name} ${e.middle_name} ${e.given_name}`;return t.every((e=>new RegExp("\\b"+e,"i").test(n)))}return!0})).map((n=>({id:n.encounterId,patientNames:a().createElement("a",{"data-testid":"patientNames",href:`/openmrs/patientDashboard.form?patientId=${n.personId}`},n.family_name," ",n.given_name," ",n.middle_name),pathologyRequest:a().createElement("a",{href:`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${n.encounterId}&mode=VIEW`}," ","Link"," "),sendingHospital:n.patientHealthCenter,phoneNumber:n.patientPhoneNumber||"",sampleStatus:a().createElement("select",{onChange:e=>R({uuid:e.target.value,display:e.target.options[e.target.selectedIndex].text},n)},a().createElement("option",{value:""}),u.map((e=>a().createElement("option",{"data-testid":"sampleStatus-option",value:e.uuid,key:e.uuid,selected:!!n.sampleStatusObs&&n.sampleStatusObs===e.display&&!0},e.display)))),dateOfRequest:new Date(n.encounterDatetime).toLocaleString(["en-GB","en-US","en","fr-RW"],{day:"numeric",month:"numeric",year:"numeric"}),referralStatus:a().createElement("select",{onChange:e=>P({uuid:e.target.value,display:e.target.options[e.target.selectedIndex].text},n)},a().createElement("option",{"data-testid":"referralStatus-option",value:""}),p.map((e=>a().createElement("option",{value:e.uuid,key:e.uuid,selected:n.referralStatusObs&&n.referralStatusObs===e.display},e.display)))),sampleDropOff:a().createElement("input",{"data-testid":"sampleDropOff",type:"checkbox",checked:Boolean(n.sampleDropoffObs),onChange:e=>k(n)}),pathologicDiagnosisObs:n.pathologicDiagnosisObs,resultsEncounter:n.resultsEncounterId?a().createElement("a",{"data-testid":"resultsEncounter",href:`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${n.resultsEncounterId}&mode=VIEW`}," ","Results"," "):(!t||t===e.pathologyFullAllowedLocationUUID)&&a().createElement("a",{href:`/openmrs/module/htmlformentry/htmlFormEntry.form?personId=${n.personId}&patientId=${n.personId}&returnUrl=&formId=${e.pathologyResultsFromID}&uuid=${n.encounterUuid}`}," ","Fill in results"," "),PDFReport:n.resultsEncounterId&&n.approvedBy&&a().createElement(D.WD,{document:a().createElement(N,{encounterInfo:n,config:e}),fileName:"Pathology Report"},(e=>{let{loading:t}=e;return t?"loading...":a().createElement("button",null,"Download")}))}))),k=t=>{const n=(0,v.Z)(o);t.sampleDropoffObs?async function(e){return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${e}`,{method:"POST",headers:{"content-type":"application/json"},body:{voided:!0}})}(t.sampleDropoffObsUuid).then((e=>{if(e.ok){const e=n.findIndex((e=>e.encounterUuid==t.encounterUuid));n[e].sampleDropoffObs="",n[e].sampleDropoffObsUuid="",r(n)}})):async function(e,t,n,o){const a={person:e.patientUuid,obsDatetime:(new Date).toISOString(),concept:t,location:await F(n),encounter:e.encounterUuid,value:o,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,e.sampleDropOffconceptUUID,e.healthCenterAttrTypeUUID,e.yesConceptUUID).then((o=>{if(o.ok){const a=n.findIndex((e=>e.encounterUuid==t.encounterUuid));n[a].sampleDropoffObs=e.yesConceptName,n[a].sampleDropoffObsUuid=o.data.uuid,r(n)}}))},R=(t,n)=>{const a=(0,v.Z)(o);n.sampleStatusObs?async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e.uuid,voided:!e};return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${t.sampleStatusObsUuid}`,{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,n,e.sampleStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].sampleStatusObs=t.display,a[o].sampleStatusObsUuid=e.data.uuid,r(a)}else r(a)})):async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t.uuid,n,e.sampleStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].sampleStatusObs=t.display,a[o].sampleStatusObsUuid=e.data.uuid,r(a)}else r(a)}))},P=(t,n)=>{const a=(0,v.Z)(o);n.referralStatusObs?async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e.uuid,voided:!e};return await(0,A.openmrsFetch)(`/ws/rest/v1/obs/${t.referralStatusObsUuid}`,{method:"POST",headers:{"content-type":"application/json"},body:a})}(t,n,e.referralStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].referralStatusObs=t.display,a[o].referralStatusObsUuid=e.data.uuid,r(a)}else r(a)})):async function(e,t,n,o){const a={person:t.patientUuid,obsDatetime:(new Date).toISOString(),concept:n,location:await F(o),encounter:t.encounterUuid,value:e,voided:!1};return await(0,A.openmrsFetch)("/ws/rest/v1/obs",{method:"POST",headers:{"content-type":"application/json"},body:a})}(t.uuid,n,e.referralStatusConceptUUID,e.healthCenterAttrTypeUUID).then((e=>{if(e.ok){const o=a.findIndex((e=>e.encounterUuid==n.encounterUuid));a[o].referralStatusObs=t.display,a[o].referralStatusObsUuid=e.data.uuid,r(a)}else r(a)}))};return a().createElement("div",null,a().createElement("div",{className:O.filtersContainer},a().createElement("label",{htmlFor:"sending-hospital"},"Sending Hospital "),a().createElement("select",{id:"sending-hospital",className:O.dropdown,value:s,onChange:e=>l(e.target.value)},a().createElement("option",{value:""}),i.map((n=>t&&t!==e.pathologyFullAllowedLocationUUID?n.uuid===t?a().createElement("option",{value:n.display,key:n.uuid},n.display):null:a().createElement("option",{value:n.display,key:n.uuid},n.display)))),a().createElement("label",{htmlFor:"sample-status"},"Sample Status "),a().createElement("select",{id:"sample-status",className:O.dropdown,value:y,onChange:e=>g(e.target.value)},a().createElement("option",{value:""}),u.map((e=>a().createElement("option",{value:e.display,key:e.uuid},e.display)))),a().createElement("label",{htmlFor:"referral-status"},"Referral Status "),a().createElement("select",{id:"referral-status",className:O.dropdown,value:E,onChange:e=>f(e.target.value)},a().createElement("option",{value:""}),p.map((e=>a().createElement("option",{value:e.display,key:e.uuid},e.display)))),a().createElement("label",{htmlFor:"patient-name"},"Patient Name "),a().createElement("input",{id:"patient-name",className:O.textBox,type:"text",onChange:e=>b(e.target.value)})),console.log(o),a().createElement("div",{className:O.tableContainer},a().createElement(x.ZP,{rows:B,headers:[{key:"patientNames",header:"Patient name"},{key:"pathologyRequest",header:"pathology request"},{key:"sendingHospital",header:"Sending Hospital"},{key:"phoneNumber",header:"Phone number"},{key:"sampleStatus",header:"Sample status"},{key:"dateOfRequest",header:"Date of Request"},{key:"referralStatus",header:"Referral status"},{key:"sampleDropOff",header:"Sample drop off?"},{key:"pathologicDiagnosisObs",header:"Pathologic diagnosis"},{key:"resultsEncounter",header:"Results"},{key:"PDFReport",header:"Report"}]},(e=>{let{rows:t,headers:n,getTableProps:o,getHeaderProps:r,getRowProps:s}=e;return a().createElement(w.Z,o(),a().createElement(C.Z,null,a().createElement(U.Z,null,n.map((e=>a().createElement(_.Z,r({header:e}),e.header))))),a().createElement(S.Z,null,t.map((e=>a().createElement(U.Z,s({row:e}),e.cells.map((e=>a().createElement(I.Z,{key:e.id},e.value))))))))}))),a().createElement("div",null))},G=()=>a().createElement("div",{className:`omrs-main-content ${b.container}`},a().createElement($,null))},74017:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(94015),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([e.id,".-esm-pathology__ReportComponent__tableContainer___uOmmk {\n height: 500px;\n overflow-x: auto;\n margin: 0 1rem;\n border: 2px solid lightgrey;\n border-radius: 0.25rem;\n}\n\n.-esm-pathology__ReportComponent__filtersContainer___avnpi {\n border-radius: 0.25rem;\n margin: 0 1rem;\n padding-top: 4%;\n}\n\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe {\n width: 10%;\n height: 2rem;\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:disabled {\n opacity: 0.8;\n background: lightgrey;\n cursor: not-allowed;\n}\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:focus {\n border: 2px solid var(--omrs-color-interaction);\n outline: 0;\n}\n.-esm-pathology__ReportComponent__textBox___-gvpP {\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n","",{version:3,sources:["webpack://./src/pathology-report/ReportComponent.css"],names:[],mappings:"AAAA;EACE,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,2BAA2B;EAC3B,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;EACtB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd;AACA;EACE,YAAY;EACZ,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,+CAA+C;EAC/C,UAAU;AACZ;AACA;EACE,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd",sourcesContent:[".tableContainer {\n height: 500px;\n overflow-x: auto;\n margin: 0 1rem;\n border: 2px solid lightgrey;\n border-radius: 0.25rem;\n}\n\n.filtersContainer {\n border-radius: 0.25rem;\n margin: 0 1rem;\n padding-top: 4%;\n}\n\n.dropdown {\n width: 10%;\n height: 2rem;\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n.dropdown:disabled {\n opacity: 0.8;\n background: lightgrey;\n cursor: not-allowed;\n}\n.dropdown:focus {\n border: 2px solid var(--omrs-color-interaction);\n outline: 0;\n}\n.textBox {\n background: transparent;\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\n background-clip: padding-box;\n border-radius: 4px;\n margin: 1rem;\n}\n"],sourceRoot:""}]),s.locals={tableContainer:"-esm-pathology__ReportComponent__tableContainer___uOmmk",filtersContainer:"-esm-pathology__ReportComponent__filtersContainer___avnpi",dropdown:"-esm-pathology__ReportComponent__dropdown___Lr3Fe",textBox:"-esm-pathology__ReportComponent__textBox___-gvpP"};const l=s},56724:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(94015),a=n.n(o),r=n(23645),s=n.n(r)()(a());s.push([e.id,".-esm-pathology__pathology__container___ny2VS {\n padding: 2em;\n}\n","",{version:3,sources:["webpack://./src/pathology.css"],names:[],mappings:"AAAA;EACE,YAAY;AACd",sourcesContent:[".container {\n padding: 2em;\n}\n"],sourceRoot:""}]),s.locals={container:"-esm-pathology__pathology__container___ny2VS"};const l=s},97819:(e,t,n)=>{"use strict";e.exports=n.p+"5b8bb278fcab4da4972e.ttf"},21016:(e,t,n)=>{"use strict";e.exports=n.p+"a5fad24f075c978ac04b.ttf"},28251:(e,t,n)=>{"use strict";e.exports=n.p+"00ebb57bb20c59433e84.gif"},42480:()=>{},19527:()=>{},69331:()=>{},52361:()=>{},94616:()=>{}}]);
2
2
  //# sourceMappingURL=861.js.map
package/dist/861.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"861.js","mappings":"uTAWIA,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKnB,QAAe,KAAW,WAAiB,gBAAiBM,E,0HCf/D,EAAU,GAEd,EAAQL,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKnB,QAAe,KAAW,WAAiB,gBAAiBC,ECsB5DC,eAAeC,EAAgBC,GACpC,MACMC,SADgBC,EAAAA,EAAAA,cAAc,wBACTC,KAAKC,KAAKC,OAAOC,KAItCC,SAHeL,EAAAA,EAAAA,cAClB,sBAAqBD,gBAESE,KAAKK,QAAQC,QAC3CC,GAASA,EAAKC,cAAcL,OAASN,IAExC,OAAOO,EAAkB,IAAMA,EAAkBK,MAAMN,KAGlDR,eAAee,EAAkBC,GAItC,aAHsBZ,EAAAA,EAAAA,cACnB,uBAAsBY,aAEVX,KAAKY,Q,qCCzDtBC,EAAAA,GAAAA,SAAc,CAAEC,OAAQ,cAAeC,IAAKC,IAC5CH,EAAAA,GAAAA,SAAc,CAAEC,OAAQ,UAAWC,IAAKE,IAQxC,MAAMC,EAASC,EAAAA,GAAAA,OAAkB,CAC/BC,KAAM,CACJC,cAAe,OAEjBC,QAAS,CACPC,OAAQ,GACRC,QAAS,GACTC,SAAU,GAEZC,WAAY,CACVF,QAAS,EACTG,WAAW,cACXC,SAAU,GACVC,WAAY,OACZC,cAAc,IAEhBC,eAAgB,CACdC,WAAY,EACZL,WAAW,cACXC,SAAU,GACVC,WAAY,OACZC,cAAc,GAEhBG,YAAa,CACXV,OAAQ,GACRC,QAAS,GACTG,WAAW,UACXC,SAAU,IAEZM,gBAAiB,CACfC,aAAc,GACdL,cAAe,GACfH,WAAW,UACXC,SAAU,IAEZQ,KAAM,CACJC,MAAO,MA0MX,EApMoBC,GAElB,kBAAC,KAAD,CAAUC,MAAQ,wBAChBD,EAAME,cAAcC,mBACpBH,EAAME,cAAcE,mBACpBJ,EAAME,cAAcG,gBAEpB,kBAAC,KAAD,CAAMC,KAAK,KAAKC,MAAO3B,EAAOE,MAE3B,kBAAC,KAAD,CAAMyB,MAAO3B,EAAOI,SACnB,kBAAC,KAAD,CAAOuB,MAAO3B,EAAOkB,KAAMrB,IAAK+B,IAChC,kBAAC,KAAD,CAAMD,MAAO,CAACjB,SAAU,IAAxB,mBACA,kBAAC,KAAD,CAAMiB,MAAO,CAAEE,SAAU,WAAWC,IAAK,EAAEC,KAAM,IAAIZ,MAAO,MAC1D,kBAAC,KAAD,CAAMQ,MAAO3B,EAAOe,aAApB,qBAGA,kBAAC,KAAD,KAAO,IAAK,IAAZ,eAEF,kBAAC,KAAD,CAAMY,MAAO,CAAEE,SAAU,WAAWC,IAAK,GAAGC,KAAM,IAAIZ,MAAO,MAC3D,kBAAC,KAAD,CAAMQ,MAAO3B,EAAOe,aAApB,qBAGA,kBAAC,KAAD,KACC,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOC,4BAA8BH,EAAM5C,UAGhI,kBAAC,KAAD,CAAMoC,MAAO,CAAEY,gBAAiB,UAAUC,aAAa,MAAOC,UAAW,SAAS9B,WAAY,KAAMM,aAAc,GAAGR,WAAW,gBAAhI,oBAGA,kBAAC,KAAD,CAAMkB,MAAO,CAAEf,cAAe,KAC5B,kBAAC,KAAD,CAAMe,MAAO3B,EAAOe,aAApB,iBAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IACHK,EAAME,cAAcC,YAFvB,IAEqC,IAClCH,EAAME,cAAcE,WAHvB,IAGoC,IACjCJ,EAAME,cAAcG,cAIzB,kBAAC,KAAD,CAAME,MAAO,CAAEf,cAAe,GAAIiB,SAAU,WAAWC,IAAK,IAAIC,KAAM,MACpE,kBAAC,KAAD,CAAMJ,MAAO3B,EAAOe,aAApB,iBAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOK,oCACxF,IAAIC,KAAKR,EAAM5C,OACdqD,eAAe,CAAC,QAAQ,QAAQ,KAAK,SAAS,CAACC,IAAK,UAAUC,MAAO,UAAUC,KAAM,gBAK1F,kBAAC,KAAD,CAAMpB,MAAO,CAAEf,cAAe,KAC5B,kBAAC,KAAD,CAAMe,MAAO3B,EAAOe,aAApB,qBAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IAEN,IAAI4B,KAAKvB,EAAME,cAAc0B,iBACxBJ,eAAe,CAAC,QAAQ,QAAQ,KAAK,SAAS,CAACC,IAAK,UAAUC,MAAO,UAAUC,KAAM,cAK5F,kBAAC,KAAD,CAAMpB,MAAO,CAAEf,cAAe,GAAIiB,SAAU,WAAWC,IAAK,IAAIC,KAAM,IAAIZ,MAAO,MAC/E,kBAAC,KAAD,CAAMQ,MAAO3B,EAAOe,aAApB,4BAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOY,mCACxF,IAAIN,KAAKR,EAAM5C,OACdqD,eAAe,CAAC,QAAQ,QAAQ,KAAK,SAAS,CAACC,IAAK,UAAUC,MAAO,UAAUC,KAAM,gBAI1F,kBAAC,KAAD,CAAMpB,MAAO,CAAEf,cAAe,GAAG4B,aAAa,QAC5C,kBAAC,KAAD,CAAMb,MAAO3B,EAAOe,aAApB,mBAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IACHK,EAAME,cAAc4B,eAIzB,kBAAC,KAAD,CAAMvB,MAAO,CAAEf,cAAe,GAAIiB,SAAU,WAAWC,IAAK,IAAIC,KAAM,IAAIZ,MAAO,MAC/E,kBAAC,KAAD,CAAMQ,MAAO3B,EAAOe,aAApB,iBAGA,kBAAC,KAAD,CAAMY,MAAO3B,EAAOe,aACnB,IAAK,IAEF,IAAI4B,KAAKvB,EAAME,cAAcU,iBAAiBmB,mBAC7CP,eAAe,CAAC,QAAQ,QAAQ,KAAK,SAAS,CAACC,IAAK,UAAUC,MAAO,UAAUC,KAAM,cAK5F,kBAAC,KAAD,CAAMpB,MAAO,CAAEY,gBAAiB,UAAU3B,cAAe,KACvD,kBAAC,KAAD,CAAMe,MAAO3B,EAAOQ,YAApB,sBAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOe,6BAA+BjB,EAAM5C,UAGjI,kBAAC,KAAD,CAAMoC,MAAO,CAAEY,gBAAiB,UAAU3B,cAAe,KACvD,kBAAC,KAAD,CAAMe,MAAO3B,EAAOQ,YAApB,qBAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOgB,gCAAkClB,EAAM5C,UAGpI,kBAAC,KAAD,CAAMoC,MAAO,CAACY,gBAAiB,UAAU3B,cAAe,GAAIH,WAAW,YAAvE,wBACA,kBAAC,KAAD,CAAMkB,MAAO,CAACY,gBAAiB,UAAW3B,cAAe,GAAG0C,YAAY,KACtE,kBAAC,KAAD,CAAM3B,MAAO3B,EAAOQ,YAApB,aAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOkB,wBAA2BpB,EAAM5C,MAAMiE,KAAKC,QAAS,UAGjJ,kBAAC,KAAD,CAAM9B,MAAO,CAACY,gBAAiB,UAAW3B,cAAe,GAAG0C,YAAY,KACtE,kBAAC,KAAD,CAAM3B,MAAO3B,EAAOQ,YAApB,aAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOqB,kBAAqBvB,EAAM5C,MAAMiE,KAAKC,QAAS,UAG3I,kBAAC,KAAD,CAAM9B,MAAO,CAACY,gBAAiB,UAAW3B,cAAe,GAAG0C,YAAY,KACtE,kBAAC,KAAD,CAAM3B,MAAO3B,EAAOQ,YAApB,eAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOsB,2BAA6BxB,EAAM5C,UAG/H,kBAAC,KAAD,CAAMoC,MAAO,CAACY,gBAAiB,UAAW3B,cAAe,KACvD,kBAAC,KAAD,CAAMe,MAAO3B,EAAOQ,YAApB,mBAGA,kBAAC,KAAD,CAAMmB,MAAO3B,EAAOe,aACnB,IAAK,IACLK,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOuB,mCAAqCzB,EAAM5C,UAGrI,kBAAC,KAAD,CAAMoC,MAAO,CAAC3B,EAAOa,iBAArB,sBAGA,kBAAC,KAAD,CAAMc,MAAO,CAAC3B,EAAOgB,kBAClBI,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOwB,6BAA+B1B,EAAM5C,SAGjI,kBAAC,KAAD,CAAMoC,MAAO3B,EAAOa,gBAApB,4BAGA,kBAAC,KAAD,CAAMc,MAAO3B,EAAOgB,iBAEjBI,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAOyB,mCAAqC3B,EAAM5C,SAGvI,kBAAC,KAAD,CAAMoC,MAAO3B,EAAOa,gBAApB,eAGA,kBAAC,KAAD,CAAMc,MAAO3B,EAAOgB,iBAEjBI,EAAME,cAAcU,iBAAiBC,IAAIC,KAAKC,GAAUA,EAAMC,QAAQnD,MAAMmC,EAAMiB,OAAO0B,8CAAgD5B,EAAM5C,SAInJ,kBAAC,KAAD,CAAMoC,MAAO,CAACY,gBAAiB,UAAW3B,cAAe,KACxD,kBAAC,KAAD,CAAMe,MAAO3B,EAAOQ,YAApB,6BAGA,kBAAC,KAAD,CAAMmB,MAAQ,CAAC3B,EAAOe,YAAa,CAAEJ,WAAY,UAChD,IAAK,IACHS,EAAME,cAAc0C,gBCkQjC,EArdwB,KACtB,MAAM3B,GAAS4B,EAAAA,EAAAA,cACRC,EAAcC,GAAmBC,IAAAA,YACjCC,EAAgBC,GAAqBF,IAAAA,SAE1C,KACKG,EAAiBC,GAAsBJ,IAAAA,SAAe,KACtDK,EAAiBC,GAAsBN,IAAAA,SAAe,KACtDO,EAAqBC,GAA0BR,IAAAA,SAEpD,KACKS,EAAuBC,GAA4BV,IAAAA,SAExD,KACKW,EAAcC,GAAmBZ,IAAAA,SAAe,KAChDa,EAAgBC,GAAqBd,IAAAA,SAAe,KACpDe,EAAaC,GAAkBhB,IAAAA,SAAe,IAgDrDA,IAAAA,WAAgB,KACd1F,EAAgB2D,EAAO1D,0BAA0B0G,KAAKlB,GFjCnD1F,iBAGL,aAFuBI,EAAAA,EAAAA,cAAc,yBAErBC,KAAKK,QE+BnBmG,GAAeD,KAAKX,GACpBlF,EAAkB6C,EAAOkD,yBAAyBF,KAChDT,GAEFpF,EAAkB6C,EAAOmD,2BAA2BH,KAClDP,GFjCCrG,eACLE,EACA8G,GAEA,MAAMC,QAAyBhH,EAAgBC,GAE/C,IAAIgH,EAAkB,KAKpBA,EAHAD,GACAA,GAAoBD,QAEI5G,EAAAA,EAAAA,cACrB,sFAAqF6G,WAGhE7G,EAAAA,EAAAA,cACrB,6EAIL,MAAM+G,EAAeD,EAAgB7G,KAAK+G,SAAS,GAAGC,KAAK5D,KAAIzD,MAAAA,IAC7D,GAAGsH,EAAUC,qBAAqB,CACfL,EAAgB7G,KAAK+G,SAAS,GAAGC,KAAKG,WACnDC,GAAQA,EAAIC,eAAiBJ,EAAUI,gBAD3C,MAGMC,QAgLL3H,eAA4B0H,GAGjC,aAFwBtH,EAAAA,EAAAA,cAAc,yBAAwBsH,aAE7CrH,KAnLWuH,CAAaN,EAAUC,sBAC/CD,EAAU/D,iBAAmBoE,EAG/B,OAAOL,KAGT,OAAOO,QAAQC,IAAIX,GEGjBY,CACEnE,EAAO1D,yBACP0D,EAAOoD,kCACPJ,KACAf,KAED,IAEH,MAgCMwB,EAhCkBzB,EACrBjF,QACEqH,IACE1B,GACD0B,EAAQC,iBAAiBC,eAAiB5B,EAAa4B,gBAE1DvH,QACEqH,IACExB,GACDwB,EAAQG,mBAAmBD,eAAiB1B,EAAe0B,gBAE9DvH,QACEqH,IACElC,GACDkC,EAAQI,qBAAqBF,eAC3BpC,EAAgBoC,gBAErBvH,QAAQqH,IACP,GAAKtB,EAEE,CAIL,MAAM2B,EAAa3B,EAAY4B,MAAM,OAC/BvD,EAAQ,GAAEiD,EAAQlF,eAAekF,EAAQhF,eAAegF,EAAQjF,aACtE,OAAOsF,EAAWE,OAAOC,GACvB,IAAIC,OAAO,MAAQD,EAAO,KAAKE,KAAK3D,KARtC,OAAO,KAagBtB,KAAKZ,IACzB,CAGL8F,GAAI9F,EAAc+F,YAClBC,aACE,uBACE,cAAY,eACZC,KAAO,4CAA2CjG,EAAckG,YAE/DlG,EAAcC,YACd,KACAD,EAAcE,WACd,KACAF,EAAcG,aAGnBgG,iBACE,uBACEF,KAAO,gEAA+DjG,EAAc+F,yBAEnF,IAHH,OAIO,KAGT9C,gBAAiBjD,EAAcuF,oBAC/Ba,YAAapG,EAAcqG,oBAAsB,GACjD5C,aACE,4BACE6C,SAAWC,GACTC,EACE,CACE7I,KAAM4I,EAAEE,OAAOxI,MACfkE,QAASoE,EAAEE,OAAO7J,QAAQ2J,EAAEE,OAAOC,eAAeC,MAEpD3G,IAIJ,4BAAQ/B,MAAM,KACboF,EAAoBzC,KAAKgG,GACxB,4BACE,cAAY,sBACZ3I,MAAO2I,EAAIjJ,KACXkJ,IAAKD,EAAIjJ,KACTmJ,WACE9G,EAAcoF,iBACVpF,EAAcoF,kBAAoBwB,EAAIzE,UAAW,GAItDyE,EAAIzE,YAKb4E,cAAe,IAAI1F,KAAKrB,EAAc6B,mBAC3BP,eAAe,CAAC,QAAQ,QAAQ,KAAK,SAAS,CAACC,IAAK,UAAUC,MAAO,UAAUC,KAAM,YAChGkC,eACE,4BACE2C,SAAWC,GACTS,EACE,CACErJ,KAAM4I,EAAEE,OAAOxI,MACfkE,QAASoE,EAAEE,OAAO7J,QAAQ2J,EAAEE,OAAOC,eAAeC,MAEpD3G,IAIJ,4BAAQ,cAAY,wBAAwB/B,MAAM,KACjDsF,EAAsB3C,KAAKgG,GAC1B,4BACE3I,MAAO2I,EAAIjJ,KACXkJ,IAAKD,EAAIjJ,KACTmJ,SACE9G,EAAcsF,mBACdtF,EAAcsF,oBAAsBsB,EAAIzE,SAGzCyE,EAAIzE,YAKb8E,cACE,2BACE,cAAY,gBACZC,KAAK,WACLC,QAASC,QAAQpH,EAAcqH,kBAC/Bf,SAAWC,GAAMe,EAAoBtH,KAGzCuH,uBAAwBvH,EAAcuH,uBACtC7G,iBAAkBV,EAAcwH,mBAC9B,uBACE,cAAY,mBACZvB,KAAO,gEAA+DjG,EAAcwH,gCAEnF,IAJH,UAKU,OAGR5E,GACAA,IAAiB7B,EAAOoD,mCACxB,uBACE8B,KAAO,6DAA4DjG,EAAckG,sBAAsBlG,EAAckG,8BAA8BnF,EAAO0G,+BAA+BzH,EAAc6E,iBAEtM,IAHH,kBAIkB,KAItB6C,UACE1H,EAAcwH,oBAEZxH,EAAc0C,YACZ,kBAAC,KAAD,CAAiBiF,SAAU,kBAAC,EAAD,CAAY3H,cAAeA,EAAee,OAAQA,IAAY6G,SAAS,qBAC/F,QAAC,QAACC,GAAF,SAAgBA,EAAU,aAAe,mDAUhDP,EAAuBtH,IAC3B,MAAM8H,GAAcC,EAAAA,EAAAA,GAAUhF,GACzB/C,EAAcqH,iBFhJhBlK,eAAiC6K,GAgBtC,aAXuBzK,EAAAA,EAAAA,cACpB,mBAAkByK,IACnB,CACEC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAXsB,CACxBC,QAAQ,KE+JNC,CAAkBrI,EAAcgI,sBAAsBjE,MAAMuE,IAC1D,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUnB,iBAAmB,GACzCS,EAAYU,GAAUR,qBAAuB,GAE7ChF,EAAkB8E,OFnMrB3K,eACLsL,EACAC,EACArL,EACAsL,GAEA,MAAMC,EAAoB,CACxBlL,OAAQ+K,EAAUI,YAClBC,aAAa,IAAIzH,MAAO0H,cACxBjI,QAAS4H,EACTM,eAAgB5L,EAAgBC,GAChC4L,UAAWR,EAAU5D,cACrB5G,MAAO0K,EACPP,QAAQ,GAUV,aAPuB7K,EAAAA,EAAAA,cAAa,kBAAmB,CACrD0K,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMS,IEsJJM,CACElJ,EACAe,EAAO2H,yBACP3H,EAAO1D,yBACP0D,EAAOoI,gBACPpF,MAAMuE,IACN,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUnB,iBAAmBtG,EAAO4H,eAChDb,EAAYU,GAAUR,qBAAuBM,EAAS9K,KAAKG,KAC3DqF,EAAkB8E,QAmBpBtB,EAAqB,CACzB4C,EACApJ,KAEA,MAAM8H,GAAcC,EAAAA,EAAAA,GAAUhF,GACzB/C,EAAcoF,gBFvIhBjI,eACLiM,EACAX,EACAxE,EACA5G,GAEA,MAAMuL,EAAoB,CACxBlL,OAAQ+K,EAAUI,YAClBC,aAAa,IAAIzH,MAAO0H,cACxBjI,QAASmD,EACT+E,eAAgB5L,EAAgBC,GAChC4L,UAAWR,EAAU5D,cACrB5G,MAAOmL,EAAUzL,KACjByK,QAAQgB,GAcV,aAXuB7L,EAAAA,EAAAA,cACpB,mBAAkBkL,EAAUY,sBAC7B,CACEpB,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMS,IEqINU,CACEF,EACApJ,EACAe,EAAOkD,wBACPlD,EAAO1D,0BACP0G,MAAMuE,IACN,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUpD,gBAAkBgE,EAAUjH,QAClD2F,EAAYU,GAAUa,oBAAsBf,EAAS9K,KAAKG,KAC1DqF,EAAkB8E,QAElB9E,EAAkB8E,MFrMrB3K,eACLoM,EACA5I,EACAsD,EACA5G,GAEA,MAAMmM,EAAW,CACf9L,OAAQiD,EAAIkI,YACZC,aAAa,IAAIzH,MAAO0H,cACxBjI,QAASmD,EACT+E,eAAgB5L,EAAgBC,GAChC4L,UAAWtI,EAAIkE,cACf5G,MAAOsL,EACPnB,QAAQ,GAWV,aARuB7K,EAAAA,EAAAA,cAAa,kBAAmB,CACrD0K,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMqB,IE8IJC,CACEL,EAAUzL,KACVqC,EACAe,EAAOkD,wBACPlD,EAAO1D,0BACP0G,MAAMuE,IACN,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUpD,gBAAkBgE,EAAUjH,QAClD2F,EAAYU,GAAUa,oBAAsBf,EAAS9K,KAAKG,KAE1DqF,EAAkB8E,QAElB9E,EAAkB8E,OA0BpBd,EAAuB,CAAC0C,EAAc1J,KAC1C,MAAM8H,GAAcC,EAAAA,EAAAA,GAAUhF,GACzB/C,EAAcsF,kBF1HhBnI,eACLwM,EACAlB,EACAvE,EACA7G,GAEA,MAAMuL,EAAoB,CACxBlL,OAAQ+K,EAAUI,YAClBC,aAAa,IAAIzH,MAAO0H,cACxBjI,QAASoD,EACT8E,eAAgB5L,EAAgBC,GAChC4L,UAAWR,EAAU5D,cACrB5G,MAAO0L,EAAYhM,KACnByK,QAAQuB,GAcV,aAXuBpM,EAAAA,EAAAA,cACpB,mBAAkBkL,EAAUmB,wBAC7B,CACE3B,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMS,IEuHNiB,CACEH,EACA1J,EACAe,EAAOmD,0BACPnD,EAAO1D,0BACP0G,MAAMuE,IACN,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUlD,kBAAoBoE,EAAavH,QACvD2F,EAAYU,GAAUoB,sBAAwBtB,EAAS9K,KAAKG,KAC5DqF,EAAkB8E,QAElB9E,EAAkB8E,MFvLrB3K,eACL2M,EACArB,EACAvE,EACA7G,GAEA,MAAMuL,EAAoB,CACxBlL,OAAQ+K,EAAUI,YAClBC,aAAa,IAAIzH,MAAO0H,cACxBjI,QAASoD,EACT8E,eAAgB5L,EAAgBC,GAChC4L,UAAWR,EAAU5D,cACrB5G,MAAO6L,EACP1B,QAAQ,GAWV,aARuB7K,EAAAA,EAAAA,cAAa,kBAAmB,CACrD0K,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMS,IEiIJmB,CACEL,EAAa/L,KACbqC,EACAe,EAAOmD,0BACPnD,EAAO1D,0BACP0G,MAAMuE,IACN,GAAIA,EAASC,GAAI,CACf,MAAMC,EAAWV,EAAYnD,WAC1BC,GAAQA,EAAIC,eAAiB7E,EAAc6E,gBAE9CiD,EAAYU,GAAUlD,kBAAoBoE,EAAavH,QACvD2F,EAAYU,GAAUoB,sBAAwBtB,EAAS9K,KAAKG,KAC5DqF,EAAkB8E,QAElB9E,EAAkB8E,OA2B1B,OACE,6BACE,yBAAKkC,UAAWtL,EAAAA,kBACd,2BAAOuL,QAAQ,oBAAf,qBACA,4BACEnE,GAAG,mBACHkE,UAAWtL,EAAAA,SACXT,MAAOgF,EACPqD,SAAWC,GAAMrD,EAAmBqD,EAAEE,OAAOxI,QAE7C,4BAAQA,MAAM,KACbkF,EAAgBvC,KAAKsJ,GACpBtH,GACAA,IAAiB7B,EAAOoD,iCACtB+F,EAAIvM,OAASiF,EACX,4BAAQ3E,MAAOiM,EAAI/H,QAAS0E,IAAKqD,EAAIvM,MAClCuM,EAAI/H,SAEL,KAEJ,4BAAQlE,MAAOiM,EAAI/H,QAAS0E,IAAKqD,EAAIvM,MAClCuM,EAAI/H,YAKb,2BAAO8H,QAAQ,iBAAf,kBACA,4BACEnE,GAAG,gBACHkE,UAAWtL,EAAAA,SACXT,MAAOwF,EACP6C,SAAWC,GAAM7C,EAAgB6C,EAAEE,OAAOxI,QAE1C,4BAAQA,MAAM,KACboF,EAAoBzC,KAAKgG,GACxB,4BAAQ3I,MAAO2I,EAAIzE,QAAS0E,IAAKD,EAAIjJ,MAClCiJ,EAAIzE,YAIX,2BAAO8H,QAAQ,mBAAf,oBACA,4BACEnE,GAAG,kBACHkE,UAAWtL,EAAAA,SACXT,MAAO0F,EACP2C,SAAWC,GAAM3C,EAAkB2C,EAAEE,OAAOxI,QAE5C,4BAAQA,MAAM,KACbsF,EAAsB3C,KAAKgG,GAC1B,4BAAQ3I,MAAO2I,EAAIzE,QAAS0E,IAAKD,EAAIjJ,MAClCiJ,EAAIzE,YAKX,2BAAO8H,QAAQ,gBAAf,iBACA,2BACEnE,GAAG,eACHkE,UAAWtL,EAAAA,QACXwI,KAAK,OACLZ,SAAWC,GAAMzC,EAAeyC,EAAEE,OAAOxI,UAG5CkM,QAAQC,IAAKrH,GACd,yBAAKiH,UAAWtL,EAAAA,gBACd,kBAAC2L,EAAA,GAAD,CAAW7F,KAAMA,EAAM0D,QA9Zb,CACd,CACErB,IAAK,eACLyD,OAAQ,gBAEV,CACEzD,IAAK,mBACLyD,OAAQ,qBAEV,CACEzD,IAAK,kBACLyD,OAAQ,oBAEV,CACEzD,IAAK,cACLyD,OAAQ,gBAEV,CACEzD,IAAK,eACLyD,OAAQ,iBAEV,CACEzD,IAAK,gBACLyD,OAAQ,mBAEV,CACEzD,IAAK,iBACLyD,OAAQ,mBAEV,CACEzD,IAAK,gBACLyD,OAAQ,oBAEV,CACEzD,IAAK,yBACLyD,OAAQ,wBAEV,CACEzD,IAAK,mBACLyD,OAAQ,WAEV,CACEzD,IAAK,YACLyD,OAAQ,aAoXH,QAAC,KAAE9F,EAAF,QAAQ0D,EAAR,cAAiBqC,EAAjB,eAAgCC,EAAhC,YAAgDC,GAAjD,SACC,kBAACC,EAAA,EAAUH,IACT,kBAACI,EAAA,EAAD,KACE,kBAACC,EAAA,EAAD,KACG1C,EAAQtH,KAAK0J,GACZ,kBAACO,EAAA,EAAgBL,EAAe,CAAEF,OAAAA,IAC/BA,EAAOA,YAKhB,kBAACQ,EAAA,EAAD,KACGtG,EAAK5D,KAAKmK,GACT,kBAACH,EAAA,EAAaH,EAAY,CAAEM,IAAAA,IACzBA,EAAIC,MAAMpK,KAAKqK,GACd,kBAACC,EAAA,EAAD,CAAWrE,IAAKoE,EAAKnF,IAAKmF,EAAKhN,kBAS/C,gCCheN,EAPwB,IAEpB,yBAAK+L,UAAY,qBAAoBtL,EAAAA,aACnC,kBAAC,EAAD,Q,iFCJFyM,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOvF,GAAI,whCAAyhC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,wWAAwW,eAAiB,CAAC,myBAAmyB,WAAa,MAEr1EqF,EAAwBG,OAAS,CAChC,eAAkB,0DAClB,iBAAoB,4DACpB,SAAY,oDACZ,QAAW,oDAEZ,W,iFCVIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOvF,GAAI,wEAAyE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iCAAiC,MAAQ,GAAG,SAAW,sBAAsB,eAAiB,CAAC,sCAAsC,WAAa,MAE/RqF,EAAwBG,OAAS,CAChC,UAAa,gDAEd,W","sources":["webpack://@pih/esm-pathology-app/./src/pathology.css?9d3a","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.css?a61d","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.resource.ts","webpack://@pih/esm-pathology-app/./src/Print-to-PDF/Document-Component.tsx","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.tsx","webpack://@pih/esm-pathology-app/./src/PathologySystem.tsx","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.css","webpack://@pih/esm-pathology-app/./src/pathology.css"],"sourcesContent":["\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./pathology.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./pathology.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ReportComponent.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ReportComponent.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { openmrsFetch } from \"@openmrs/esm-framework\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\n\n\nexport interface EncounterResult {\n family_name: string;\n given_name: string;\n middle_name: string;\n patientPhoneNumber: { value: string };\n patientHealthCenter: string;\n patientUuid: string;\n encounterUuid: string;\n encounterId: number;\n personId: number;\n encounterDatetime: Date;\n sampleStatusObs: string;\n referralStatusObs: string;\n sampleDropoffObs: string;\n resultsEncounterId: string;\n resultsEncounterUuid: string;\n resultsEncounter: [];\n approvedBy: string;\n approvalObsUuid: string;\n pathologicDiagnosisObs: string;\n}\nexport interface Patient {\n uuid: string;\n}\nexport interface Concept {\n uuid: string;\n name: string;\n display: string;\n}\n\nexport interface Obs {\n patientUuid: string;\n obsDateTime: string;\n sampleDropoffObsUuid: string;\n referralStatusObsUuid: string;\n sampleStatusObsUuid: string;\n location: string;\n encounterUuid: string;\n valueCodedName: string;\n voided: boolean;\n resultsEncounterUuid: string;\n}\n\n\nexport async function getUserLocation(healthCenterAttrTypeUUID) {\n const session = await openmrsFetch(`/ws/rest/v1/session`);\n const personUuid = session.data.user.person.uuid;\n const person = await openmrsFetch(\n `/ws/rest/v1/person/${personUuid}/attribute`\n );\n const hcPersonAttribute = person.data.results.filter(\n (attr) => attr.attributeType.uuid === healthCenterAttrTypeUUID\n );\n return hcPersonAttribute[0] && hcPersonAttribute.value.uuid;\n}\n\nexport async function getConceptAnswers(conceptUuid) {\n const concept = await openmrsFetch(\n `/ws/rest/v1/concept/${conceptUuid}?v=full`\n );\n return concept.data.answers;\n}\n\nexport async function getLocations() {\n const location = await openmrsFetch(`/ws/rest/v1/location`);\n\n return location.data.results;\n}\n\nexport async function getEncounters(\n healthCenterAttrTypeUUID: string,\n pathologyFullAllowedLocationUUID: string\n): Promise<Array<EncounterResult>> {\n const userLocationUUID = await getUserLocation(healthCenterAttrTypeUUID);\n\n let searchEncounter = null;\n if (\n userLocationUUID &&\n userLocationUUID != pathologyFullAllowedLocationUUID\n ) {\n searchEncounter = await openmrsFetch(\n `/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0?location=${userLocationUUID}`\n );\n } else {\n searchEncounter = await openmrsFetch(\n `/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0`\n );\n }\n\n const EncListClone = searchEncounter.data.dataSets[0].rows.map(async (encObject)=>{\n if(encObject.resultsEncounterUuid){\n const encIndex = searchEncounter.data.dataSets[0].rows.findIndex(\n (enc) => enc.encounterUuid == encObject.encounterUuid\n );\n const resultsEnc =await getEncounter(encObject.resultsEncounterUuid);\n encObject.resultsEncounter = resultsEnc;\n \n }\n return encObject; \n });\n \n return Promise.all(EncListClone);\n}\n\nexport async function postSampleDropoffObs(\n obsObject: Obs,\n sampleDropOffconceptUUID: string,\n healthCenterAttrTypeUUID: string,\n yesConceptName: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleDropOffconceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: yesConceptName,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n });\n return response;\n}\n\nexport async function voidSampleDropoff(sampleDropoffObsUuid: string) {\n const ObsObjectTocreate = {\n voided: true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${sampleDropoffObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\nexport async function postSampleStatusChangeObs(\n newStatusUuid: string,\n obs: Obs,\n sampleStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const postBody = {\n person: obs.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obs.encounterUuid,\n value: newStatusUuid,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: postBody,\n });\n\n return response;\n}\n\nexport async function updateSampleStatusChangeObs(\n newStatus: null | { uuid: string; display: string },\n obsObject: Obs,\n sampleStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: newStatus.uuid,\n voided: newStatus ? false : true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${obsObject.sampleStatusObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\nexport async function postReferralStatusChangeObs(\n targetValueUuid: string,\n obsObject: Obs,\n referralStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: referralStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: targetValueUuid,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n });\n\n return response;\n}\n\nexport async function updateReferralStatusChangeObs(\n targetValue,\n obsObject: Obs,\n referralStatusConceptUUID,\n healthCenterAttrTypeUUID\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: referralStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: targetValue.uuid,\n voided: targetValue ? false : true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${obsObject.referralStatusObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\n\n\nexport async function getUser(userUuid: string) {\n const user = await openmrsFetch(`/ws/rest/v1/user/${userUuid}`);\n\n return user.data;\n}\nexport async function getEncounter(encounterUuid) {\n const encResult = await openmrsFetch(`/ws/rest/v1/encounter/${encounterUuid}?v=full`);\n \n return encResult.data;\n}","import React from \"react\";\nimport { Document, Page, Text,Image, View, StyleSheet,Font } from \"@react-pdf/renderer\";\nimport ButaroLogo from '../images/ButaroHospitalLogo.gif';\nimport GeorgiaFontBold from '../Fonts/georgia/georgia-bold.ttf';\nimport GeorgiaFont from '../Fonts/georgia/Georgia.ttf';\n\n// import { Font } from '@react-pdf/renderer';\nFont.register({ family: 'GeorgiaBold', src: GeorgiaFontBold});\nFont.register({ family: 'Georgia', src: GeorgiaFont});\n\n// Font.register({ family: 'Georgia', src: '../Fonts/georgia/Georgia.ttf', fontStyle: 'normal', fontWeight: 'normal' });\n\n\n\n\n// Create styles\nconst styles = StyleSheet.create({\n page: {\n flexDirection: \"row\",\n },\n section: {\n margin: 10,\n padding: 20,\n flexGrow: 1,\n },\n textLabels: {\n padding: 7,\n fontFamily:\"GeorgiaBold\",\n fontSize: 16,\n fontWeight: 'bold',\n paddingBottom:30,\n },\n sentenceLabels: {\n paddingTop: 7,\n fontFamily:\"GeorgiaBold\",\n fontSize: 16,\n fontWeight: 'bold',\n paddingBottom:3,\n },\n textAnswers: {\n margin: 10,\n padding: 20,\n fontFamily:\"Georgia\",\n fontSize: 14,\n },\n sentenceAnswers: {\n marginBottom: 10,\n paddingBottom: 20,\n fontFamily:\"Georgia\",\n fontSize: 14,\n },\n logo: {\n width: 61,\n\n }\n});\n\n// Create Document Component\nconst MyDocument = (props) => (\n \n <Document title={`Pathology report \n ${props.encounterInfo.family_name} \n ${props.encounterInfo.given_name} \n ${props.encounterInfo.middle_name} `}\n >\n <Page size=\"A4\" style={styles.page}>\n \n <View style={styles.section}>\n <Image style={styles.logo} src={ButaroLogo}/>\n <Text style={{fontSize: 8}}>Butaro Hospital</Text>\n <Text style={{ position: \"absolute\",top: 0,left: 300,width: 300 }}>\n <Text style={styles.textAnswers}>\n Lab phone number:\n </Text>\n <Text>{\" \"}{\" \"}0784433618</Text>\n </Text>\n <Text style={{ position: \"absolute\",top: 15,left: 300,width: 300 }}>\n <Text style={styles.textAnswers}>\n Accession number:\n </Text> \n <Text >\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.AccessionNumberconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{ backgroundColor: \"#E4E4E4\",borderBottom:'1px', textAlign: 'center',fontWeight: 1500, marginBottom: 30,fontFamily:\"GeorgiaBold\" }}> \n Pathology Report \n </Text>\n <Text style={{ paddingBottom: 10 }} > \n <Text style={styles.textAnswers}>\n Patient Name:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.family_name} {\" \"} \n {props.encounterInfo.given_name} {\" \"} \n {props.encounterInfo.middle_name} \n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 140,left: 335 }}>\n <Text style={styles.textAnswers}>\n Surgery Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.DateBiopsySpecimenTakenconceptUUID && \n new Date(obser.value)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n )}\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10 }} > \n <Text style={styles.textAnswers}>\n Patient Birthday:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {\n new Date(props.encounterInfo.personBirthdate)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n }\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 168,left: 335,width: 200 }}> \n <Text style={styles.textAnswers}>\n Specimen Reception Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SpecimenSubmissionDateconceptUUID && \n new Date(obser.value)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n )}\n </Text>\n </Text>\n <Text style={{ paddingBottom: 10,borderBottom:'1px' }} > \n <Text style={styles.textAnswers}>\n Patient Gender:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.personGender}\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 200,left: 335,width: 250 }}> \n <Text style={styles.textAnswers}>\n Signout Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {\n new Date(props.encounterInfo.resultsEncounter.encounterDatetime)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n } \n </Text>\n </Text>\n \n <Text style={{ backgroundColor: \"#E4E4E4\",paddingBottom: 10 }}> \n <Text style={styles.textLabels}>\n Sending Physician:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SendingPhysicianconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{ backgroundColor: \"#E4E4E4\",paddingBottom: 10 }}>\n <Text style={styles.textLabels}>\n Sending Facility: \n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OtherBiopsyLocationconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\",paddingBottom: 10 ,fontFamily:\"Georgia\"}}>Anatomical location:</Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}> \n <Text style={styles.textLabels}>\n i.System:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OrganSystemconceptUUID && (obser.value.name.display+ \", \"))}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}>\n <Text style={styles.textLabels}>\n ii.Organ:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OrganconceptUUID && (obser.value.name.display+ \", \"))} \n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}>\n <Text style={styles.textLabels}>\n iii.Detail:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SpecimenDetailconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10 }}>\n <Text style={styles.textLabels}>\n Procedure type:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OtherTestsOrProceduresconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={[styles.sentenceLabels]}>\n Gross Description: \n </Text> \n <Text style={[styles.sentenceAnswers]}>\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.GrossDescriptionconceptUUID && obser.value)}\n \n </Text>\n <Text style={styles.sentenceLabels}>\n Microscopic Examination:\n </Text> \n <Text style={styles.sentenceAnswers}>\n \n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.MacroscopicExaminationconceptUUID && obser.value)}\n\n </Text>\n <Text style={styles.sentenceLabels}>\n Conclusion:\n </Text> \n <Text style={styles.sentenceAnswers}>\n \n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID && obser.value)}\n \n </Text>\n\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10 }}> \n <Text style={styles.textLabels}>\n Validated by pathologist:\n </Text> \n <Text style= {[styles.textAnswers, { fontWeight: 'bold' }]}>\n {\" \"}{\" \"}\n {props.encounterInfo.approvedBy}\n </Text>\n </Text>\n </View> \n </Page>\n </Document>\n);\n\nexport default MyDocument;\n\n","import React from \"react\";\nimport { useConfig } from \"@openmrs/esm-framework\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport DataTable, {\n Table,\n TableHead,\n TableRow,\n TableHeader,\n TableBody,\n TableCell,\n} from \"carbon-components-react/es/components/DataTable\";\nimport { PDFDownloadLink, PDFViewer } from \"@react-pdf/renderer\";\n\nimport styles from \"./ReportComponent.css\";\nimport {\n getUserLocation,\n getConceptAnswers,\n getLocations,\n getEncounters,\n postSampleDropoffObs,\n voidSampleDropoff,\n postSampleStatusChangeObs,\n updateSampleStatusChangeObs,\n postReferralStatusChangeObs,\n updateReferralStatusChangeObs,\n EncounterResult,\n // postApproval,\n // voidApprovalObs,\n getUser,\n Concept,\n getEncounter,\n} from \"./ReportComponent.resource\";\nimport MyDocument from \"../Print-to-PDF/Document-Component\";\nimport { Config } from \"../config-schema\";\n\nconst ReportComponent = () => {\n const config = useConfig() as Config;\n const [userLocation, setUserLocation] = React.useState();\n const [encountersList, setEncountersList] = React.useState<\n Array<EncounterResult>\n >([]);\n const [sendingHospital, setSendingHospital] = React.useState(\"\");\n const [listOfHospitals, setListOfHospitals] = React.useState([]);\n const [sampleStatusAnswers, setSampleStatusAnswers] = React.useState<\n Array<Concept>\n >([]);\n const [referralStatusAnswers, setReferralStatusAnswers] = React.useState<\n Array<Concept>\n >([]);\n const [sampleStatus, setSampleStatus] = React.useState(\"\");\n const [referralStatus, setReferralStatus] = React.useState(\"\");\n const [patientName, setPatientName] = React.useState(\"\");\n const headers = [\n {\n key: \"patientNames\",\n header: \"Patient name\",\n },\n {\n key: \"pathologyRequest\",\n header: \"pathology request\",\n },\n {\n key: \"sendingHospital\",\n header: \"Sending Hospital\",\n },\n {\n key: \"phoneNumber\",\n header: \"Phone number\",\n },\n {\n key: \"sampleStatus\",\n header: \"Sample status\",\n },\n {\n key: \"dateOfRequest\",\n header: \"Date of Request\",\n },\n {\n key: \"referralStatus\",\n header: \"Referral status\",\n },\n {\n key: \"sampleDropOff\",\n header: \"Sample drop off?\",\n },\n {\n key: \"pathologicDiagnosisObs\",\n header: \"Pathologic diagnosis\",\n },\n {\n key: \"resultsEncounter\",\n header: \"Results\",\n },\n {\n key: \"PDFReport\",\n header: \"Report\",\n },\n ];\n\n React.useEffect(() => {\n getUserLocation(config.healthCenterAttrTypeUUID).then(setUserLocation);\n getLocations().then(setListOfHospitals);\n getConceptAnswers(config.sampleStatusConceptUUID).then(\n setSampleStatusAnswers\n );\n getConceptAnswers(config.referralStatusConceptUUID).then(\n setReferralStatusAnswers\n );\n getEncounters(\n config.healthCenterAttrTypeUUID,\n config.pathologyFullAllowedLocationUUID\n ).then(\n setEncountersList\n );\n }, []);\n\n const filteredEncList = encountersList\n .filter(\n (encList) =>\n !sampleStatus ||\n encList.sampleStatusObs?.toLowerCase() == sampleStatus.toLowerCase()\n )\n .filter(\n (encList) =>\n !referralStatus ||\n encList.referralStatusObs?.toLowerCase() == referralStatus.toLowerCase()\n )\n .filter(\n (encList) =>\n !sendingHospital ||\n encList.patientHealthCenter?.toLowerCase() ==\n sendingHospital.toLowerCase()\n )\n .filter((encList) => {\n if (!patientName) {\n return true;\n } else {\n // Given a patient name filter input, break it up into tokens.\n // Filter to patients for which each token matches.\n // Matching is case-insensitive and matches the beginning of each name.\n const nameTokens = patientName.split(/\\s+/);\n const name = `${encList.family_name} ${encList.middle_name} ${encList.given_name}`;\n return nameTokens.every((token) =>\n new RegExp(\"\\\\b\" + token, \"i\").test(name)\n );\n }\n });\n\n const rows = filteredEncList.map((encounterInfo) => {\n return {\n // rows.push({\n // patientLink: <a href={`/openmrs/patientDashboard.form?patientId=${encounterInfo.personId}`} >Link</a>,\n id: encounterInfo.encounterId,\n patientNames: (\n <a\n data-testid=\"patientNames\"\n href={`/openmrs/patientDashboard.form?patientId=${encounterInfo.personId}`}\n >\n {encounterInfo.family_name}\n {\" \"}\n {encounterInfo.given_name}\n {\" \"}\n {encounterInfo.middle_name}\n </a>\n ),\n pathologyRequest: (\n <a\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${encounterInfo.encounterId}&mode=VIEW`}\n >\n {\" \"}\n Link{\" \"}\n </a>\n ),\n sendingHospital: encounterInfo.patientHealthCenter,\n phoneNumber: encounterInfo.patientPhoneNumber || \"\",\n sampleStatus: (\n <select\n onChange={(e) =>\n sampleStatusChange(\n {\n uuid: e.target.value,\n display: e.target.options[e.target.selectedIndex].text,\n },\n encounterInfo\n )\n }\n >\n <option value=\"\"></option>\n {sampleStatusAnswers.map((ans) => (\n <option\n data-testid=\"sampleStatus-option\"\n value={ans.uuid}\n key={ans.uuid}\n selected={\n encounterInfo.sampleStatusObs\n ? encounterInfo.sampleStatusObs === ans.display && true\n : false\n }\n >\n {ans.display}\n </option>\n ))}\n </select>\n ),\n dateOfRequest: new Date(encounterInfo.encounterDatetime)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'}),\n referralStatus: (\n <select\n onChange={(e) =>\n referralStatusChange(\n {\n uuid: e.target.value,\n display: e.target.options[e.target.selectedIndex].text,\n },\n encounterInfo\n )\n }\n >\n <option data-testid=\"referralStatus-option\" value=\"\"></option>\n {referralStatusAnswers.map((ans) => (\n <option\n value={ans.uuid}\n key={ans.uuid}\n selected={\n encounterInfo.referralStatusObs &&\n encounterInfo.referralStatusObs === ans.display\n }\n >\n {ans.display}\n </option>\n ))}\n </select>\n ),\n sampleDropOff: (\n <input\n data-testid=\"sampleDropOff\"\n type=\"checkbox\"\n checked={Boolean(encounterInfo.sampleDropoffObs)}\n onChange={(e) => sampleDropOffChange(encounterInfo)}\n />\n ),\n pathologicDiagnosisObs: encounterInfo.pathologicDiagnosisObs,\n resultsEncounter: encounterInfo.resultsEncounterId ? (\n <a\n data-testid=\"resultsEncounter\"\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${encounterInfo.resultsEncounterId}&mode=VIEW`}\n >\n {\" \"}\n Results{\" \"}\n </a>\n ) : (\n (!userLocation ||\n userLocation === config.pathologyFullAllowedLocationUUID) && (\n <a\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?personId=${encounterInfo.personId}&patientId=${encounterInfo.personId}&returnUrl=&formId=${config.pathologyResultsFromID}&uuid=${encounterInfo.encounterUuid}`}\n >\n {\" \"}\n Fill in results{\" \"}\n </a>\n )\n ),\n PDFReport:\n encounterInfo.resultsEncounterId &&\n (\n encounterInfo.approvedBy &&\n <PDFDownloadLink document={<MyDocument encounterInfo={encounterInfo} config={config} />} fileName=\"Pathology Report\">\n {({loading}) => (loading ? 'loading...' : <button>Download</button>)}\n </PDFDownloadLink>\n \n \n \n )\n \n };\n });\n\n const sampleDropOffChange = (encounterInfo) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.sampleDropoffObs) {\n postSampleDropoffObs(\n encounterInfo,\n config.sampleDropOffconceptUUID,\n config.healthCenterAttrTypeUUID,\n config.yesConceptUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleDropoffObs = config.yesConceptName;\n tempEncList[encIndex].sampleDropoffObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n }\n });\n } else {\n voidSampleDropoff(encounterInfo.sampleDropoffObsUuid).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleDropoffObs = \"\";\n tempEncList[encIndex].sampleDropoffObsUuid = \"\";\n\n setEncountersList(tempEncList);\n }\n });\n }\n };\n\n\n const sampleStatusChange = (\n newStatus: { uuid: string; display: string },\n encounterInfo\n ) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.sampleStatusObs) {\n postSampleStatusChangeObs(\n newStatus.uuid,\n encounterInfo,\n config.sampleStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleStatusObs = newStatus.display;\n tempEncList[encIndex].sampleStatusObsUuid = response.data.uuid;\n\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n } else {\n updateSampleStatusChangeObs(\n newStatus,\n encounterInfo,\n config.sampleStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleStatusObs = newStatus.display;\n tempEncList[encIndex].sampleStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n }\n };\n\n const referralStatusChange = (targetedElem, encounterInfo) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.referralStatusObs) {\n postReferralStatusChangeObs(\n targetedElem.uuid,\n encounterInfo,\n config.referralStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].referralStatusObs = targetedElem.display;\n tempEncList[encIndex].referralStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n } else {\n updateReferralStatusChangeObs(\n targetedElem,\n encounterInfo,\n config.referralStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].referralStatusObs = targetedElem.display;\n tempEncList[encIndex].referralStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n }\n };\n \n\n return (\n <div>\n <div className={styles.filtersContainer}>\n <label htmlFor=\"sending-hospital\">Sending Hospital </label>\n <select\n id=\"sending-hospital\"\n className={styles.dropdown}\n value={sendingHospital}\n onChange={(e) => setSendingHospital(e.target.value)}\n >\n <option value=\"\"></option>\n {listOfHospitals.map((loc) =>\n userLocation &&\n userLocation !== config.pathologyFullAllowedLocationUUID ? (\n loc.uuid === userLocation ? (\n <option value={loc.display} key={loc.uuid}>\n {loc.display}\n </option>\n ) : null\n ) : (\n <option value={loc.display} key={loc.uuid}>\n {loc.display}\n </option>\n )\n )}\n </select>\n <label htmlFor=\"sample-status\">Sample Status </label>\n <select\n id=\"sample-status\"\n className={styles.dropdown}\n value={sampleStatus}\n onChange={(e) => setSampleStatus(e.target.value)}\n >\n <option value=\"\"></option>\n {sampleStatusAnswers.map((ans) => (\n <option value={ans.display} key={ans.uuid}>\n {ans.display}\n </option>\n ))}\n </select>\n <label htmlFor=\"referral-status\">Referral Status </label>\n <select\n id=\"referral-status\"\n className={styles.dropdown}\n value={referralStatus}\n onChange={(e) => setReferralStatus(e.target.value)}\n >\n <option value=\"\"></option>\n {referralStatusAnswers.map((ans) => (\n <option value={ans.display} key={ans.uuid}>\n {ans.display}\n </option>\n ))}\n </select>\n\n <label htmlFor=\"patient-name\">Patient Name </label>\n <input\n id=\"patient-name\"\n className={styles.textBox}\n type=\"text\"\n onChange={(e) => setPatientName(e.target.value)}\n />\n </div>\n {console.log( encountersList)}\n <div className={styles.tableContainer}>\n <DataTable rows={rows} headers={headers}>\n {({ rows, headers, getTableProps, getHeaderProps, getRowProps }) => (\n <Table {...getTableProps()}>\n <TableHead>\n <TableRow>\n {headers.map((header) => (\n <TableHeader {...getHeaderProps({ header })}>\n {header.header}\n </TableHeader>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row) => (\n <TableRow {...getRowProps({ row })}>\n {row.cells.map((cell) => (\n <TableCell key={cell.id}>{cell.value}</TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )}\n </DataTable>\n </div>\n <div>\n {/* <PDFViewer>\n <MyDocument />\n </PDFViewer> */}\n {/* <PDFDownloadLink document={<MyDocument />} fileName=\"Pathology Report\">\n {({loading}) => (loading ? 'loading...' : <button>Download</button>)}\n </PDFDownloadLink> */}\n \n </div>\n </div>\n );\n};\n\nexport default ReportComponent;\n","import React from \"react\";\nimport styles from \"./pathology.css\";\nimport ReportComponent from \"./pathology-report/ReportComponent\";\n\nconst PathologySystem = () => {\n return (\n <div className={`omrs-main-content ${styles.container}`}>\n <ReportComponent />\n </div>\n );\n};\nexport default PathologySystem;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".-esm-pathology__ReportComponent__tableContainer___uOmmk {\\n height: 500px;\\n overflow-x: auto;\\n margin: 0 1rem;\\n border: 2px solid lightgrey;\\n border-radius: 0.25rem;\\n}\\n\\n.-esm-pathology__ReportComponent__filtersContainer___avnpi {\\n border-radius: 0.25rem;\\n margin: 0 1rem;\\n padding-top: 4%;\\n}\\n\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe {\\n width: 10%;\\n height: 2rem;\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:disabled {\\n opacity: 0.8;\\n background: lightgrey;\\n cursor: not-allowed;\\n}\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:focus {\\n border: 2px solid var(--omrs-color-interaction);\\n outline: 0;\\n}\\n.-esm-pathology__ReportComponent__textBox___-gvpP {\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/pathology-report/ReportComponent.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,2BAA2B;EAC3B,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;EACtB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd;AACA;EACE,YAAY;EACZ,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,+CAA+C;EAC/C,UAAU;AACZ;AACA;EACE,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd\",\"sourcesContent\":[\".tableContainer {\\n height: 500px;\\n overflow-x: auto;\\n margin: 0 1rem;\\n border: 2px solid lightgrey;\\n border-radius: 0.25rem;\\n}\\n\\n.filtersContainer {\\n border-radius: 0.25rem;\\n margin: 0 1rem;\\n padding-top: 4%;\\n}\\n\\n.dropdown {\\n width: 10%;\\n height: 2rem;\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n.dropdown:disabled {\\n opacity: 0.8;\\n background: lightgrey;\\n cursor: not-allowed;\\n}\\n.dropdown:focus {\\n border: 2px solid var(--omrs-color-interaction);\\n outline: 0;\\n}\\n.textBox {\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tableContainer\": \"-esm-pathology__ReportComponent__tableContainer___uOmmk\",\n\t\"filtersContainer\": \"-esm-pathology__ReportComponent__filtersContainer___avnpi\",\n\t\"dropdown\": \"-esm-pathology__ReportComponent__dropdown___Lr3Fe\",\n\t\"textBox\": \"-esm-pathology__ReportComponent__textBox___-gvpP\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".-esm-pathology__pathology__container___ny2VS {\\n padding: 2em;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/pathology.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;AACd\",\"sourcesContent\":[\".container {\\n padding: 2em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"-esm-pathology__pathology__container___ny2VS\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","async","getUserLocation","healthCenterAttrTypeUUID","personUuid","openmrsFetch","data","user","person","uuid","hcPersonAttribute","results","filter","attr","attributeType","value","getConceptAnswers","conceptUuid","answers","Font","family","src","GeorgiaFontBold","GeorgiaFont","styles","StyleSheet","page","flexDirection","section","margin","padding","flexGrow","textLabels","fontFamily","fontSize","fontWeight","paddingBottom","sentenceLabels","paddingTop","textAnswers","sentenceAnswers","marginBottom","logo","width","props","title","encounterInfo","family_name","given_name","middle_name","size","style","ButaroLogo","position","top","left","resultsEncounter","obs","map","obser","concept","config","AccessionNumberconceptUUID","backgroundColor","borderBottom","textAlign","DateBiopsySpecimenTakenconceptUUID","Date","toLocaleString","day","month","year","personBirthdate","SpecimenSubmissionDateconceptUUID","personGender","encounterDatetime","SendingPhysicianconceptUUID","OtherBiopsyLocationconceptUUID","paddingLeft","OrganSystemconceptUUID","name","display","OrganconceptUUID","SpecimenDetailconceptUUID","OtherTestsOrProceduresconceptUUID","GrossDescriptionconceptUUID","MacroscopicExaminationconceptUUID","COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID","approvedBy","useConfig","userLocation","setUserLocation","React","encountersList","setEncountersList","sendingHospital","setSendingHospital","listOfHospitals","setListOfHospitals","sampleStatusAnswers","setSampleStatusAnswers","referralStatusAnswers","setReferralStatusAnswers","sampleStatus","setSampleStatus","referralStatus","setReferralStatus","patientName","setPatientName","then","getLocations","sampleStatusConceptUUID","referralStatusConceptUUID","pathologyFullAllowedLocationUUID","userLocationUUID","searchEncounter","EncListClone","dataSets","rows","encObject","resultsEncounterUuid","findIndex","enc","encounterUuid","resultsEnc","getEncounter","Promise","all","getEncounters","encList","sampleStatusObs","toLowerCase","referralStatusObs","patientHealthCenter","nameTokens","split","every","token","RegExp","test","id","encounterId","patientNames","href","personId","pathologyRequest","phoneNumber","patientPhoneNumber","onChange","e","sampleStatusChange","target","selectedIndex","text","ans","key","selected","dateOfRequest","referralStatusChange","sampleDropOff","type","checked","Boolean","sampleDropoffObs","sampleDropOffChange","pathologicDiagnosisObs","resultsEncounterId","pathologyResultsFromID","PDFReport","document","fileName","loading","tempEncList","cloneDeep","sampleDropoffObsUuid","method","headers","body","voided","voidSampleDropoff","response","ok","encIndex","obsObject","sampleDropOffconceptUUID","yesConceptName","ObsObjectTocreate","patientUuid","obsDatetime","toISOString","location","encounter","postSampleDropoffObs","yesConceptUUID","newStatus","sampleStatusObsUuid","updateSampleStatusChangeObs","newStatusUuid","postBody","postSampleStatusChangeObs","targetedElem","targetValue","referralStatusObsUuid","updateReferralStatusChangeObs","targetValueUuid","postReferralStatusChangeObs","className","htmlFor","loc","console","log","DataTable","header","getTableProps","getHeaderProps","getRowProps","Table","TableHead","TableRow","TableHeader","TableBody","row","cells","cell","TableCell","___CSS_LOADER_EXPORT___","push","module","locals"],"sourceRoot":""}
1
+ {"version":3,"file":"861.js","mappings":"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","sources":["webpack://@pih/esm-pathology-app/./src/pathology.css?9d3a","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.css?a61d","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.resource.ts","webpack://@pih/esm-pathology-app/./src/Print-to-PDF/Document-Component.tsx","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.tsx","webpack://@pih/esm-pathology-app/./src/PathologySystem.tsx","webpack://@pih/esm-pathology-app/./src/pathology-report/ReportComponent.css","webpack://@pih/esm-pathology-app/./src/pathology.css"],"sourcesContent":["\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./pathology.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./pathology.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ReportComponent.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ReportComponent.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { openmrsFetch } from \"@openmrs/esm-framework\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\n\n\nexport interface EncounterResult {\n family_name: string;\n given_name: string;\n middle_name: string;\n patientPhoneNumber: { value: string };\n patientHealthCenter: string;\n patientUuid: string;\n encounterUuid: string;\n encounterId: number;\n personId: number;\n encounterDatetime: Date;\n sampleStatusObs: string;\n referralStatusObs: string;\n sampleDropoffObs: string;\n resultsEncounterId: string;\n resultsEncounterUuid: string;\n resultsEncounter: [];\n approvedBy: string;\n approvalObsUuid: string;\n pathologicDiagnosisObs: string;\n}\nexport interface Patient {\n uuid: string;\n}\nexport interface Concept {\n uuid: string;\n name: string;\n display: string;\n}\n\nexport interface Obs {\n patientUuid: string;\n obsDateTime: string;\n sampleDropoffObsUuid: string;\n referralStatusObsUuid: string;\n sampleStatusObsUuid: string;\n location: string;\n encounterUuid: string;\n valueCodedName: string;\n voided: boolean;\n resultsEncounterUuid: string;\n}\n\n\nexport async function getUserLocation(healthCenterAttrTypeUUID) {\n const session = await openmrsFetch(`/ws/rest/v1/session`);\n const personUuid = session.data.user.person.uuid;\n const person = await openmrsFetch(\n `/ws/rest/v1/person/${personUuid}/attribute`\n );\n const hcPersonAttribute = person.data.results.filter(\n (attr) => attr.attributeType.uuid === healthCenterAttrTypeUUID\n );\n return hcPersonAttribute[0] && hcPersonAttribute[0].value.uuid;\n}\n\nexport async function getConceptAnswers(conceptUuid) {\n const concept = await openmrsFetch(\n `/ws/rest/v1/concept/${conceptUuid}?v=full`\n );\n return concept.data.answers;\n}\n\nexport async function getLocations() {\n const location = await openmrsFetch(`/ws/rest/v1/location`);\n\n return location.data.results;\n}\n\nexport async function getEncounters(\n healthCenterAttrTypeUUID: string,\n pathologyFullAllowedLocationUUID: string\n): Promise<Array<EncounterResult>> {\n const userLocationUUID = await getUserLocation(healthCenterAttrTypeUUID);\n\n let searchEncounter = null;\n if (\n userLocationUUID &&\n userLocationUUID != pathologyFullAllowedLocationUUID\n ) {\n searchEncounter = await openmrsFetch(\n `/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0?location=${userLocationUUID}`\n );\n } else {\n searchEncounter = await openmrsFetch(\n `/ws/rest/v1/reportingrest/reportdata/996cf192-ff54-11eb-a63a-080027ce9ca0`\n );\n }\n\n const EncListClone = searchEncounter.data.dataSets[0].rows.map(async (encObject)=>{\n if(encObject.resultsEncounterUuid){\n const encIndex = searchEncounter.data.dataSets[0].rows.findIndex(\n (enc) => enc.encounterUuid == encObject.encounterUuid\n );\n const resultsEnc =await getEncounter(encObject.resultsEncounterUuid);\n encObject.resultsEncounter = resultsEnc;\n \n }\n return encObject; \n });\n \n return Promise.all(EncListClone);\n}\n\nexport async function postSampleDropoffObs(\n obsObject: Obs,\n sampleDropOffconceptUUID: string,\n healthCenterAttrTypeUUID: string,\n yesConceptName: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleDropOffconceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: yesConceptName,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n });\n return response;\n}\n\nexport async function voidSampleDropoff(sampleDropoffObsUuid: string) {\n const ObsObjectTocreate = {\n voided: true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${sampleDropoffObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\nexport async function postSampleStatusChangeObs(\n newStatusUuid: string,\n obs: Obs,\n sampleStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const postBody = {\n person: obs.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obs.encounterUuid,\n value: newStatusUuid,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: postBody,\n });\n\n return response;\n}\n\nexport async function updateSampleStatusChangeObs(\n newStatus: null | { uuid: string; display: string },\n obsObject: Obs,\n sampleStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: sampleStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: newStatus.uuid,\n voided: newStatus ? false : true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${obsObject.sampleStatusObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\nexport async function postReferralStatusChangeObs(\n targetValueUuid: string,\n obsObject: Obs,\n referralStatusConceptUUID: string,\n healthCenterAttrTypeUUID: string\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: referralStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: targetValueUuid,\n voided: false,\n };\n\n const response = await openmrsFetch(\"/ws/rest/v1/obs\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n });\n\n return response;\n}\n\nexport async function updateReferralStatusChangeObs(\n targetValue,\n obsObject: Obs,\n referralStatusConceptUUID,\n healthCenterAttrTypeUUID\n) {\n const ObsObjectTocreate = {\n person: obsObject.patientUuid,\n obsDatetime: new Date().toISOString(),\n concept: referralStatusConceptUUID,\n location: await getUserLocation(healthCenterAttrTypeUUID),\n encounter: obsObject.encounterUuid,\n value: targetValue.uuid,\n voided: targetValue ? false : true,\n };\n\n const response = await openmrsFetch(\n `/ws/rest/v1/obs/${obsObject.referralStatusObsUuid}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: ObsObjectTocreate,\n }\n );\n\n return response;\n}\n\n\n\nexport async function getUser(userUuid: string) {\n const user = await openmrsFetch(`/ws/rest/v1/user/${userUuid}`);\n\n return user.data;\n}\nexport async function getEncounter(encounterUuid) {\n const encResult = await openmrsFetch(`/ws/rest/v1/encounter/${encounterUuid}?v=full`);\n \n return encResult.data;\n}","import React from \"react\";\nimport { Document, Page, Text,Image, View, StyleSheet,Font } from \"@react-pdf/renderer\";\nimport ButaroLogo from '../images/ButaroHospitalLogo.gif';\nimport GeorgiaFontBold from '../Fonts/georgia/georgia-bold.ttf';\nimport GeorgiaFont from '../Fonts/georgia/Georgia.ttf';\n\n// import { Font } from '@react-pdf/renderer';\nFont.register({ family: 'GeorgiaBold', src: GeorgiaFontBold});\nFont.register({ family: 'Georgia', src: GeorgiaFont});\n\n// Font.register({ family: 'Georgia', src: '../Fonts/georgia/Georgia.ttf', fontStyle: 'normal', fontWeight: 'normal' });\n\n\n\n\n// Create styles\nconst styles = StyleSheet.create({\n page: {\n flexDirection: \"row\",\n },\n section: {\n margin: 10,\n padding: 20,\n flexGrow: 1,\n },\n textLabels: {\n padding: 7,\n fontFamily:\"GeorgiaBold\",\n fontSize: 16,\n fontWeight: 'bold',\n paddingBottom:30,\n },\n sentenceLabels: {\n paddingTop: 7,\n fontFamily:\"GeorgiaBold\",\n fontSize: 16,\n fontWeight: 'bold',\n paddingBottom:3,\n },\n textAnswers: {\n margin: 10,\n padding: 20,\n fontFamily:\"Georgia\",\n fontSize: 14,\n },\n sentenceAnswers: {\n marginBottom: 10,\n paddingBottom: 20,\n fontFamily:\"Georgia\",\n fontSize: 14,\n },\n logo: {\n width: 61,\n\n }\n});\n\n// Create Document Component\nconst MyDocument = (props) => (\n \n <Document title={`Pathology report \n ${props.encounterInfo.family_name} \n ${props.encounterInfo.given_name} \n ${props.encounterInfo.middle_name} `}\n >\n <Page size=\"A4\" style={styles.page}>\n \n <View style={styles.section}>\n <Image style={styles.logo} src={ButaroLogo}/>\n <Text style={{fontSize: 8}}>Butaro Hospital</Text>\n <Text style={{ position: \"absolute\",top: 0,left: 300,width: 300 }}>\n <Text style={styles.textAnswers}>\n Lab phone number:\n </Text>\n <Text>{\" \"}{\" \"}0784433618</Text>\n </Text>\n <Text style={{ position: \"absolute\",top: 15,left: 300,width: 300 }}>\n <Text style={styles.textAnswers}>\n Accession number:\n </Text> \n <Text >\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.AccessionNumberconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{ backgroundColor: \"#E4E4E4\",borderBottom:'1px', textAlign: 'center',fontWeight: 1500, marginBottom: 30,fontFamily:\"GeorgiaBold\" }}> \n Pathology Report \n </Text>\n <Text style={{ paddingBottom: 10 }} > \n <Text style={styles.textAnswers}>\n Patient Name:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.family_name} {\" \"} \n {props.encounterInfo.given_name} {\" \"} \n {props.encounterInfo.middle_name} \n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 140,left: 335 }}>\n <Text style={styles.textAnswers}>\n Surgery Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.DateBiopsySpecimenTakenconceptUUID && \n new Date(obser.value)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n )}\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10 }} > \n <Text style={styles.textAnswers}>\n Patient Birthday:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {\n new Date(props.encounterInfo.personBirthdate)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n }\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 168,left: 335,width: 200 }}> \n <Text style={styles.textAnswers}>\n Specimen Reception Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SpecimenSubmissionDateconceptUUID && \n new Date(obser.value)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n )}\n </Text>\n </Text>\n <Text style={{ paddingBottom: 10,borderBottom:'1px' }} > \n <Text style={styles.textAnswers}>\n Patient Gender:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.personGender}\n </Text>\n \n </Text>\n <Text style={{ paddingBottom: 10, position: \"absolute\",top: 200,left: 335,width: 250 }}> \n <Text style={styles.textAnswers}>\n Signout Date:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {\n new Date(props.encounterInfo.resultsEncounter.encounterDatetime)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'})\n } \n </Text>\n </Text>\n \n <Text style={{ backgroundColor: \"#E4E4E4\",paddingBottom: 10 }}> \n <Text style={styles.textLabels}>\n Sending Physician:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SendingPhysicianconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{ backgroundColor: \"#E4E4E4\",paddingBottom: 10 }}>\n <Text style={styles.textLabels}>\n Sending Facility: \n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OtherBiopsyLocationconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\",paddingBottom: 10 ,fontFamily:\"Georgia\"}}>Anatomical location:</Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}> \n <Text style={styles.textLabels}>\n i.System:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OrganSystemconceptUUID && (obser.value.name.display+ \", \"))}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}>\n <Text style={styles.textLabels}>\n ii.Organ:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OrganconceptUUID && (obser.value.name.display+ \", \"))} \n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10,paddingLeft:10 }}>\n <Text style={styles.textLabels}>\n iii.Detail:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.SpecimenDetailconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10 }}>\n <Text style={styles.textLabels}>\n Procedure type:\n </Text> \n <Text style={styles.textAnswers}>\n {\" \"}{\" \"}\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.OtherTestsOrProceduresconceptUUID && obser.value)}\n </Text>\n </Text>\n <Text style={[styles.sentenceLabels]}>\n Gross Description: \n </Text> \n <Text style={[styles.sentenceAnswers]}>\n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.GrossDescriptionconceptUUID && obser.value)}\n \n </Text>\n <Text style={styles.sentenceLabels}>\n Microscopic Examination:\n </Text> \n <Text style={styles.sentenceAnswers}>\n \n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.MacroscopicExaminationconceptUUID && obser.value)}\n\n </Text>\n <Text style={styles.sentenceLabels}>\n Conclusion:\n </Text> \n <Text style={styles.sentenceAnswers}>\n \n {props.encounterInfo.resultsEncounter.obs.map((obser) => obser.concept.uuid==props.config.COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID && obser.value)}\n \n </Text>\n\n <Text style={{backgroundColor: \"#E4E4E4\", paddingBottom: 10 }}> \n <Text style={styles.textLabels}>\n Validated by pathologist:\n </Text> \n <Text style= {[styles.textAnswers, { fontWeight: 'bold' }]}>\n {\" \"}{\" \"}\n {props.encounterInfo.approvedBy}\n </Text>\n </Text>\n </View> \n </Page>\n </Document>\n);\n\nexport default MyDocument;\n\n","import React from \"react\";\nimport { useConfig } from \"@openmrs/esm-framework\";\nimport cloneDeep from \"lodash-es/cloneDeep\";\nimport DataTable, {\n Table,\n TableHead,\n TableRow,\n TableHeader,\n TableBody,\n TableCell,\n} from \"carbon-components-react/es/components/DataTable\";\nimport { PDFDownloadLink, PDFViewer } from \"@react-pdf/renderer\";\n\nimport styles from \"./ReportComponent.css\";\nimport {\n getUserLocation,\n getConceptAnswers,\n getLocations,\n getEncounters,\n postSampleDropoffObs,\n voidSampleDropoff,\n postSampleStatusChangeObs,\n updateSampleStatusChangeObs,\n postReferralStatusChangeObs,\n updateReferralStatusChangeObs,\n EncounterResult,\n // postApproval,\n // voidApprovalObs,\n getUser,\n Concept,\n getEncounter,\n} from \"./ReportComponent.resource\";\nimport MyDocument from \"../Print-to-PDF/Document-Component\";\nimport { Config } from \"../config-schema\";\n\nconst ReportComponent = () => {\n const config = useConfig() as Config;\n const [userLocation, setUserLocation] = React.useState();\n const [encountersList, setEncountersList] = React.useState<\n Array<EncounterResult>\n >([]);\n const [sendingHospital, setSendingHospital] = React.useState(\"\");\n const [listOfHospitals, setListOfHospitals] = React.useState([]);\n const [sampleStatusAnswers, setSampleStatusAnswers] = React.useState<\n Array<Concept>\n >([]);\n const [referralStatusAnswers, setReferralStatusAnswers] = React.useState<\n Array<Concept>\n >([]);\n const [sampleStatus, setSampleStatus] = React.useState(\"\");\n const [referralStatus, setReferralStatus] = React.useState(\"\");\n const [patientName, setPatientName] = React.useState(\"\");\n const headers = [\n {\n key: \"patientNames\",\n header: \"Patient name\",\n },\n {\n key: \"pathologyRequest\",\n header: \"pathology request\",\n },\n {\n key: \"sendingHospital\",\n header: \"Sending Hospital\",\n },\n {\n key: \"phoneNumber\",\n header: \"Phone number\",\n },\n {\n key: \"sampleStatus\",\n header: \"Sample status\",\n },\n {\n key: \"dateOfRequest\",\n header: \"Date of Request\",\n },\n {\n key: \"referralStatus\",\n header: \"Referral status\",\n },\n {\n key: \"sampleDropOff\",\n header: \"Sample drop off?\",\n },\n {\n key: \"pathologicDiagnosisObs\",\n header: \"Pathologic diagnosis\",\n },\n {\n key: \"resultsEncounter\",\n header: \"Results\",\n },\n {\n key: \"PDFReport\",\n header: \"Report\",\n },\n ];\n\n React.useEffect(() => {\n getUserLocation(config.healthCenterAttrTypeUUID).then(setUserLocation);\n getLocations().then(setListOfHospitals);\n getConceptAnswers(config.sampleStatusConceptUUID).then(\n setSampleStatusAnswers\n );\n getConceptAnswers(config.referralStatusConceptUUID).then(\n setReferralStatusAnswers\n );\n getEncounters(\n config.healthCenterAttrTypeUUID,\n config.pathologyFullAllowedLocationUUID\n ).then(\n setEncountersList\n );\n }, []);\n\n const filteredEncList = encountersList\n .filter(\n (encList) =>\n !sampleStatus ||\n encList.sampleStatusObs?.toLowerCase() == sampleStatus.toLowerCase()\n )\n .filter(\n (encList) =>\n !referralStatus ||\n encList.referralStatusObs?.toLowerCase() == referralStatus.toLowerCase()\n )\n .filter(\n (encList) =>\n !sendingHospital ||\n encList.patientHealthCenter?.toLowerCase() ==\n sendingHospital.toLowerCase()\n )\n .filter((encList) => {\n if (!patientName) {\n return true;\n } else {\n // Given a patient name filter input, break it up into tokens.\n // Filter to patients for which each token matches.\n // Matching is case-insensitive and matches the beginning of each name.\n const nameTokens = patientName.split(/\\s+/);\n const name = `${encList.family_name} ${encList.middle_name} ${encList.given_name}`;\n return nameTokens.every((token) =>\n new RegExp(\"\\\\b\" + token, \"i\").test(name)\n );\n }\n });\n\n const rows = filteredEncList.map((encounterInfo) => {\n return {\n // rows.push({\n // patientLink: <a href={`/openmrs/patientDashboard.form?patientId=${encounterInfo.personId}`} >Link</a>,\n id: encounterInfo.encounterId,\n patientNames: (\n <a\n data-testid=\"patientNames\"\n href={`/openmrs/patientDashboard.form?patientId=${encounterInfo.personId}`}\n >\n {encounterInfo.family_name}\n {\" \"}\n {encounterInfo.given_name}\n {\" \"}\n {encounterInfo.middle_name}\n </a>\n ),\n pathologyRequest: (\n <a\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${encounterInfo.encounterId}&mode=VIEW`}\n >\n {\" \"}\n Link{\" \"}\n </a>\n ),\n sendingHospital: encounterInfo.patientHealthCenter,\n phoneNumber: encounterInfo.patientPhoneNumber || \"\",\n sampleStatus: (\n <select\n onChange={(e) =>\n sampleStatusChange(\n {\n uuid: e.target.value,\n display: e.target.options[e.target.selectedIndex].text,\n },\n encounterInfo\n )\n }\n >\n <option value=\"\"></option>\n {sampleStatusAnswers.map((ans) => (\n <option\n data-testid=\"sampleStatus-option\"\n value={ans.uuid}\n key={ans.uuid}\n selected={\n encounterInfo.sampleStatusObs\n ? encounterInfo.sampleStatusObs === ans.display && true\n : false\n }\n >\n {ans.display}\n </option>\n ))}\n </select>\n ),\n dateOfRequest: new Date(encounterInfo.encounterDatetime)\n .toLocaleString([\"en-GB\",\"en-US\",\"en\",\"fr-RW\"],{day: 'numeric',month: 'numeric',year: 'numeric'}),\n referralStatus: (\n <select\n onChange={(e) =>\n referralStatusChange(\n {\n uuid: e.target.value,\n display: e.target.options[e.target.selectedIndex].text,\n },\n encounterInfo\n )\n }\n >\n <option data-testid=\"referralStatus-option\" value=\"\"></option>\n {referralStatusAnswers.map((ans) => (\n <option\n value={ans.uuid}\n key={ans.uuid}\n selected={\n encounterInfo.referralStatusObs &&\n encounterInfo.referralStatusObs === ans.display\n }\n >\n {ans.display}\n </option>\n ))}\n </select>\n ),\n sampleDropOff: (\n <input\n data-testid=\"sampleDropOff\"\n type=\"checkbox\"\n checked={Boolean(encounterInfo.sampleDropoffObs)}\n onChange={(e) => sampleDropOffChange(encounterInfo)}\n />\n ),\n pathologicDiagnosisObs: encounterInfo.pathologicDiagnosisObs,\n resultsEncounter: encounterInfo.resultsEncounterId ? (\n <a\n data-testid=\"resultsEncounter\"\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?encounterId=${encounterInfo.resultsEncounterId}&mode=VIEW`}\n >\n {\" \"}\n Results{\" \"}\n </a>\n ) : (\n (!userLocation ||\n userLocation === config.pathologyFullAllowedLocationUUID) && (\n <a\n href={`/openmrs/module/htmlformentry/htmlFormEntry.form?personId=${encounterInfo.personId}&patientId=${encounterInfo.personId}&returnUrl=&formId=${config.pathologyResultsFromID}&uuid=${encounterInfo.encounterUuid}`}\n >\n {\" \"}\n Fill in results{\" \"}\n </a>\n )\n ),\n PDFReport:\n encounterInfo.resultsEncounterId &&\n (\n encounterInfo.approvedBy &&\n <PDFDownloadLink document={<MyDocument encounterInfo={encounterInfo} config={config} />} fileName=\"Pathology Report\">\n {({loading}) => (loading ? 'loading...' : <button>Download</button>)}\n </PDFDownloadLink>\n \n \n \n )\n \n };\n });\n\n const sampleDropOffChange = (encounterInfo) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.sampleDropoffObs) {\n postSampleDropoffObs(\n encounterInfo,\n config.sampleDropOffconceptUUID,\n config.healthCenterAttrTypeUUID,\n config.yesConceptUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleDropoffObs = config.yesConceptName;\n tempEncList[encIndex].sampleDropoffObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n }\n });\n } else {\n voidSampleDropoff(encounterInfo.sampleDropoffObsUuid).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleDropoffObs = \"\";\n tempEncList[encIndex].sampleDropoffObsUuid = \"\";\n\n setEncountersList(tempEncList);\n }\n });\n }\n };\n\n\n const sampleStatusChange = (\n newStatus: { uuid: string; display: string },\n encounterInfo\n ) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.sampleStatusObs) {\n postSampleStatusChangeObs(\n newStatus.uuid,\n encounterInfo,\n config.sampleStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleStatusObs = newStatus.display;\n tempEncList[encIndex].sampleStatusObsUuid = response.data.uuid;\n\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n } else {\n updateSampleStatusChangeObs(\n newStatus,\n encounterInfo,\n config.sampleStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].sampleStatusObs = newStatus.display;\n tempEncList[encIndex].sampleStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n }\n };\n\n const referralStatusChange = (targetedElem, encounterInfo) => {\n const tempEncList = cloneDeep(encountersList);\n if (!encounterInfo.referralStatusObs) {\n postReferralStatusChangeObs(\n targetedElem.uuid,\n encounterInfo,\n config.referralStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].referralStatusObs = targetedElem.display;\n tempEncList[encIndex].referralStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n } else {\n updateReferralStatusChangeObs(\n targetedElem,\n encounterInfo,\n config.referralStatusConceptUUID,\n config.healthCenterAttrTypeUUID\n ).then((response) => {\n if (response.ok) {\n const encIndex = tempEncList.findIndex(\n (enc) => enc.encounterUuid == encounterInfo.encounterUuid\n );\n tempEncList[encIndex].referralStatusObs = targetedElem.display;\n tempEncList[encIndex].referralStatusObsUuid = response.data.uuid;\n setEncountersList(tempEncList);\n } else {\n setEncountersList(tempEncList);\n //Need error message\n }\n });\n }\n };\n \n\n return (\n <div>\n <div className={styles.filtersContainer}>\n <label htmlFor=\"sending-hospital\">Sending Hospital </label>\n <select\n id=\"sending-hospital\"\n className={styles.dropdown}\n value={sendingHospital}\n onChange={(e) => setSendingHospital(e.target.value)}\n >\n <option value=\"\"></option>\n {listOfHospitals.map((loc) =>\n userLocation &&\n userLocation !== config.pathologyFullAllowedLocationUUID ? (\n loc.uuid === userLocation ? (\n <option value={loc.display} key={loc.uuid}>\n {loc.display}\n </option>\n ) : null\n ) : (\n <option value={loc.display} key={loc.uuid}>\n {loc.display}\n </option>\n )\n )}\n </select>\n <label htmlFor=\"sample-status\">Sample Status </label>\n <select\n id=\"sample-status\"\n className={styles.dropdown}\n value={sampleStatus}\n onChange={(e) => setSampleStatus(e.target.value)}\n >\n <option value=\"\"></option>\n {sampleStatusAnswers.map((ans) => (\n <option value={ans.display} key={ans.uuid}>\n {ans.display}\n </option>\n ))}\n </select>\n <label htmlFor=\"referral-status\">Referral Status </label>\n <select\n id=\"referral-status\"\n className={styles.dropdown}\n value={referralStatus}\n onChange={(e) => setReferralStatus(e.target.value)}\n >\n <option value=\"\"></option>\n {referralStatusAnswers.map((ans) => (\n <option value={ans.display} key={ans.uuid}>\n {ans.display}\n </option>\n ))}\n </select>\n\n <label htmlFor=\"patient-name\">Patient Name </label>\n <input\n id=\"patient-name\"\n className={styles.textBox}\n type=\"text\"\n onChange={(e) => setPatientName(e.target.value)}\n />\n </div>\n {console.log( encountersList)}\n <div className={styles.tableContainer}>\n <DataTable rows={rows} headers={headers}>\n {({ rows, headers, getTableProps, getHeaderProps, getRowProps }) => (\n <Table {...getTableProps()}>\n <TableHead>\n <TableRow>\n {headers.map((header) => (\n <TableHeader {...getHeaderProps({ header })}>\n {header.header}\n </TableHeader>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row) => (\n <TableRow {...getRowProps({ row })}>\n {row.cells.map((cell) => (\n <TableCell key={cell.id}>{cell.value}</TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )}\n </DataTable>\n </div>\n <div>\n {/* <PDFViewer>\n <MyDocument />\n </PDFViewer> */}\n {/* <PDFDownloadLink document={<MyDocument />} fileName=\"Pathology Report\">\n {({loading}) => (loading ? 'loading...' : <button>Download</button>)}\n </PDFDownloadLink> */}\n \n </div>\n </div>\n );\n};\n\nexport default ReportComponent;\n","import React from \"react\";\nimport styles from \"./pathology.css\";\nimport ReportComponent from \"./pathology-report/ReportComponent\";\n\nconst PathologySystem = () => {\n return (\n <div className={`omrs-main-content ${styles.container}`}>\n <ReportComponent />\n </div>\n );\n};\nexport default PathologySystem;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".-esm-pathology__ReportComponent__tableContainer___uOmmk {\\n height: 500px;\\n overflow-x: auto;\\n margin: 0 1rem;\\n border: 2px solid lightgrey;\\n border-radius: 0.25rem;\\n}\\n\\n.-esm-pathology__ReportComponent__filtersContainer___avnpi {\\n border-radius: 0.25rem;\\n margin: 0 1rem;\\n padding-top: 4%;\\n}\\n\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe {\\n width: 10%;\\n height: 2rem;\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:disabled {\\n opacity: 0.8;\\n background: lightgrey;\\n cursor: not-allowed;\\n}\\n.-esm-pathology__ReportComponent__dropdown___Lr3Fe:focus {\\n border: 2px solid var(--omrs-color-interaction);\\n outline: 0;\\n}\\n.-esm-pathology__ReportComponent__textBox___-gvpP {\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/pathology-report/ReportComponent.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,2BAA2B;EAC3B,sBAAsB;AACxB;;AAEA;EACE,sBAAsB;EACtB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd;AACA;EACE,YAAY;EACZ,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,+CAA+C;EAC/C,UAAU;AACZ;AACA;EACE,uBAAuB;EACvB,uDAAuD;EACvD,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;AACd\",\"sourcesContent\":[\".tableContainer {\\n height: 500px;\\n overflow-x: auto;\\n margin: 0 1rem;\\n border: 2px solid lightgrey;\\n border-radius: 0.25rem;\\n}\\n\\n.filtersContainer {\\n border-radius: 0.25rem;\\n margin: 0 1rem;\\n padding-top: 4%;\\n}\\n\\n.dropdown {\\n width: 10%;\\n height: 2rem;\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n.dropdown:disabled {\\n opacity: 0.8;\\n background: lightgrey;\\n cursor: not-allowed;\\n}\\n.dropdown:focus {\\n border: 2px solid var(--omrs-color-interaction);\\n outline: 0;\\n}\\n.textBox {\\n background: transparent;\\n border: 1px solid var(--omrs-color-ink-lowest-contrast);\\n background-clip: padding-box;\\n border-radius: 4px;\\n margin: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"tableContainer\": \"-esm-pathology__ReportComponent__tableContainer___uOmmk\",\n\t\"filtersContainer\": \"-esm-pathology__ReportComponent__filtersContainer___avnpi\",\n\t\"dropdown\": \"-esm-pathology__ReportComponent__dropdown___Lr3Fe\",\n\t\"textBox\": \"-esm-pathology__ReportComponent__textBox___-gvpP\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".-esm-pathology__pathology__container___ny2VS {\\n padding: 2em;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/pathology.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;AACd\",\"sourcesContent\":[\".container {\\n padding: 2em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"-esm-pathology__pathology__container___ny2VS\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","undefined","async","getUserLocation","healthCenterAttrTypeUUID","personUuid","openmrsFetch","data","user","person","uuid","hcPersonAttribute","results","filter","attr","attributeType","value","getConceptAnswers","conceptUuid","answers","Font","family","src","GeorgiaFontBold","GeorgiaFont","styles","StyleSheet","page","flexDirection","section","margin","padding","flexGrow","textLabels","fontFamily","fontSize","fontWeight","paddingBottom","sentenceLabels","paddingTop","textAnswers","sentenceAnswers","marginBottom","logo","width","props","title","encounterInfo","family_name","given_name","middle_name","size","style","ButaroLogo","position","top","left","resultsEncounter","obs","map","obser","concept","config","AccessionNumberconceptUUID","backgroundColor","borderBottom","textAlign","DateBiopsySpecimenTakenconceptUUID","Date","toLocaleString","day","month","year","personBirthdate","SpecimenSubmissionDateconceptUUID","personGender","encounterDatetime","SendingPhysicianconceptUUID","OtherBiopsyLocationconceptUUID","paddingLeft","OrganSystemconceptUUID","name","display","OrganconceptUUID","SpecimenDetailconceptUUID","OtherTestsOrProceduresconceptUUID","GrossDescriptionconceptUUID","MacroscopicExaminationconceptUUID","COMMENTSATCONCLUSIONOFEXAMINATIONconceptUUID","approvedBy","useConfig","userLocation","setUserLocation","React","encountersList","setEncountersList","sendingHospital","setSendingHospital","listOfHospitals","setListOfHospitals","sampleStatusAnswers","setSampleStatusAnswers","referralStatusAnswers","setReferralStatusAnswers","sampleStatus","setSampleStatus","referralStatus","setReferralStatus","patientName","setPatientName","then","getLocations","sampleStatusConceptUUID","referralStatusConceptUUID","pathologyFullAllowedLocationUUID","userLocationUUID","searchEncounter","EncListClone","dataSets","rows","encObject","resultsEncounterUuid","findIndex","enc","encounterUuid","resultsEnc","getEncounter","Promise","all","getEncounters","encList","sampleStatusObs","toLowerCase","referralStatusObs","patientHealthCenter","nameTokens","split","every","token","RegExp","test","id","encounterId","patientNames","href","personId","pathologyRequest","phoneNumber","patientPhoneNumber","onChange","e","sampleStatusChange","target","selectedIndex","text","ans","key","selected","dateOfRequest","referralStatusChange","sampleDropOff","type","checked","Boolean","sampleDropoffObs","sampleDropOffChange","pathologicDiagnosisObs","resultsEncounterId","pathologyResultsFromID","PDFReport","document","fileName","loading","tempEncList","cloneDeep","sampleDropoffObsUuid","method","headers","body","voided","voidSampleDropoff","response","ok","encIndex","obsObject","sampleDropOffconceptUUID","yesConceptName","ObsObjectTocreate","patientUuid","obsDatetime","toISOString","location","encounter","postSampleDropoffObs","yesConceptUUID","newStatus","sampleStatusObsUuid","updateSampleStatusChangeObs","newStatusUuid","postBody","postSampleStatusChangeObs","targetedElem","targetValue","referralStatusObsUuid","updateReferralStatusChangeObs","targetValueUuid","postReferralStatusChangeObs","className","htmlFor","loc","console","log","DataTable","header","getTableProps","getHeaderProps","getRowProps","Table","TableHead","TableRow","TableHeader","TableBody","row","cells","cell","TableCell","___CSS_LOADER_EXPORT___","push","module","locals"],"sourceRoot":""}
@@ -154,9 +154,9 @@
154
154
  "initial": false,
155
155
  "entry": false,
156
156
  "recorded": false,
157
- "size": 252489,
157
+ "size": 252492,
158
158
  "sizes": {
159
- "javascript": 36211,
159
+ "javascript": 36214,
160
160
  "asset": 216194,
161
161
  "consume-shared": 84
162
162
  },
@@ -174,7 +174,7 @@
174
174
  "861.js.map",
175
175
  "a5fad24f075c978ac04b.ttf"
176
176
  ],
177
- "hash": "05ae9b64823632a05081",
177
+ "hash": "bdb5093dc79acbbf2ff0",
178
178
  "childrenByOrder": {}
179
179
  },
180
180
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pih/esm-pathology-app",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "license": "MPL-2.0",
5
5
  "description": "A microfrontend pathology OpenMRS",
6
6
  "browser": "dist/pih-esm-pathology-app.js",
@@ -55,7 +55,7 @@ export async function getUserLocation(healthCenterAttrTypeUUID) {
55
55
  const hcPersonAttribute = person.data.results.filter(
56
56
  (attr) => attr.attributeType.uuid === healthCenterAttrTypeUUID
57
57
  );
58
- return hcPersonAttribute[0] && hcPersonAttribute.value.uuid;
58
+ return hcPersonAttribute[0] && hcPersonAttribute[0].value.uuid;
59
59
  }
60
60
 
61
61
  export async function getConceptAnswers(conceptUuid) {