@openmrs/esm-appointments-app 11.1.1-pre.9708 → 11.1.1-pre.9714

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/6407.js CHANGED
@@ -1 +1 @@
1
- "use strict";(globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["6407"],{1370(e,t,a){a.r(t),a.d(t,{appointmentsFormSchema:()=>W,default:()=>B});var n=a(7125),r=a.n(n),o=a(3464),l=a.n(o),i=a(824),s=a(5921),m=a(411),p=a(8811),d=a(2895),c=a(6461),u=a(6717),_=a(5602),h=a.n(_);l().extend(h());let D=async e=>await (0,d.openmrsFetch)(`${d.restBaseUrl}/appointments/conflicts`,{method:"POST",body:{patientUuid:e.patientUuid,serviceUuid:e.serviceUuid,startDateTime:e.startDateTime,endDateTime:e.endDateTime,providers:[],locationUuid:e.locationUuid,appointmentKind:e.appointmentKind,...e.uuid&&{uuid:e.uuid}},headers:{"Content-Type":"application/json"}});var g=a(6),E=a(7003),y=a(7364),v=a.n(y),f=a(5370),T=a(9915),k=a(9391),w=a(3373),b=a.n(w);let A=({dayOfWeek:e})=>{let{t}=(0,s.useTranslation)(),a=l()(new Date).format("ddd").toUpperCase()===e;return r().createElement("div",{tabIndex:0,role:"button",className:"-esm-appointments__days-of-week__tileContainer___9IiGe"},r().createElement("span",{className:b()({"-esm-appointments__days-of-week__bold___qJVja":a})},t(e)))},C={"monthly-cell":"-esm-appointments__monthly-workload__monthly-cell___QyoX7","monthly-cell-today":"-esm-appointments__monthly-workload__monthly-cell-today___wmNZa","monthly-cell-selected":"-esm-appointments__monthly-workload__monthly-cell-selected___0zc2f","monthly-cell-current":"-esm-appointments__monthly-workload__monthly-cell-current___cqeOJ","monthly-cell-active":"-esm-appointments__monthly-workload__monthly-cell-active___ylxPR","monthly-cell-disabled":"-esm-appointments__monthly-workload__monthly-cell-disabled___iXVpZ",identifiers:"-esm-appointments__monthly-workload__identifiers___raNI+",identifierTag:"-esm-appointments__monthly-workload__identifierTag___HR0pj","weekly-cell":"-esm-appointments__monthly-workload__weekly-cell___E4FGD","week-time":"-esm-appointments__monthly-workload__week-time___6g274",selectedDate:"-esm-appointments__monthly-workload__selectedDate___CKRnm",currentData:"-esm-appointments__monthly-workload__currentData___Qub4N",serviceArea:"-esm-appointments__monthly-workload__serviceArea___+12nw",smallDesktop:"-esm-appointments__monthly-workload__smallDesktop___7oEhw",largeDesktop:"-esm-appointments__monthly-workload__largeDesktop___yBUeD",red:"-esm-appointments__monthly-workload__red___pH62E",purple:"-esm-appointments__monthly-workload__purple___fXJks",blue:"-esm-appointments__monthly-workload__blue___4uRQ5",black:"-esm-appointments__monthly-workload__black___fanW3",green:"-esm-appointments__monthly-workload__green___fNdm-",calendarDate:"-esm-appointments__monthly-workload__calendarDate___WDPSx",wrapper:"-esm-appointments__monthly-workload__wrapper___qK6Ui",monthlyCalendar:"-esm-appointments__monthly-workload__monthlyCalendar___aUX5c",calendarViewContainer:"-esm-appointments__monthly-workload__calendarViewContainer___HUc8O",backgroundColor:"-esm-appointments__monthly-workload__backgroundColor___o3Tgf",container:"-esm-appointments__monthly-workload__container___f-3Bw",workLoadCard:"-esm-appointments__monthly-workload__workLoadCard___XQytF",activeWorkloadCard:"-esm-appointments__monthly-workload__activeWorkloadCard___wwmwV",workLoadContainer:"-esm-appointments__monthly-workload__workLoadContainer___4f+0O",headerContainer:"-esm-appointments__monthly-workload__headerContainer___7jshh"},S=({date:e,count:t,isActive:a,selectedDate:n})=>{let o=(0,d.useLayoutType)(),i=e.isSame(l()(),"day");return r().createElement("div",{className:b()(C["monthly-cell"],{[C["monthly-cell-selected"]]:(0,k.tF)(e,l()(n)),[C["monthly-cell-current"]]:(0,k.tF)(e,l()(n)),[C["monthly-cell-current"]]:(0,k.tF)(e,n),[C["monthly-cell-active"]]:a},{[C.smallDesktop]:"small-desktop"===o,[C.largeDesktop]:"small-desktop"!==o})},r().createElement("div",null,r().createElement("b",{className:[C.calendarDate,i?C.blue:""].join(" ")},e.format("D")),r().createElement("div",{className:C.currentData},r().createElement("div",{tabIndex:0,role:"button",className:b()(C.tileContainer,{})}),r().createElement("div",{className:C.serviceArea},r().createElement("span",{className:a?C.blue:""},t)))))};var x=a(1947);let P=({calendarWorkload:e,dateToDisplay:t="",onDateClick:a})=>{let{t:n}=(0,s.useTranslation)(),o=(0,x.h)(),i=""===t?o:t,m=["SUN","MON","TUE","WED","THUR","FRI","SAT"].map(e=>n(e));return r().createElement("div",{className:C.calendarViewContainer},r().createElement(r().Fragment,null,r().createElement("div",{className:C.container}),r().createElement("span",{className:C.headerContainer},(0,d.formatDate)(new Date(i),{day:!1,time:!1,noToday:!0})),r().createElement("div",{className:C.workLoadCard},m?.map((e,t)=>r().createElement(A,{key:`${e}-${t}`,dayOfWeek:e}))),r().createElement("div",{className:C.wrapper},r().createElement("div",{className:C.monthlyCalendar},(0,k._h)(l()(i)).map((n,o)=>r().createElement("div",{onClick:()=>{var e;return e=l()(n).toDate(),void(a&&a(e))},key:o,className:`${C.monthlyWorkloadCard} ${l()(n).format("YYYY-MM-DD")===l()(i).format("YYYY-MM-DD")?C.selectedDate:""}`},r().createElement(S,{key:o,date:n,isActive:l()(t).format("DD-MM-YYYY")===l()(n).format("DD-MM-YYYY"),count:e.find(e=>e.date===l()(n).format("YYYY-MM-DD"))?.count??0})))))))},N=({selectedService:e,appointmentDate:t,onWorkloadDateChange:a})=>{var o;let i,s,m,{serviceTypes:p}=(0,g.V)(),c=p?.find(t=>t.name===e)?.uuid,[u,_]=(0,n.useState)(0);i=((e,t)=>{let a=l()(e).startOf("week").format(E.BC),n=l()(a).add(2,"week").format(E.BC),r=`${d.restBaseUrl}/appointment/appointmentSummary?startDate=${a}&endDate=${n}`,{data:o}=v()(r,d.openmrsFetch),i=(0,T.A)(o?.data?.filter(({appointmentService:e})=>e.uuid===t));return Object.entries(i?.appointmentCountMap??[]).map(([e,t])=>({date:e,count:t.allAppointmentsCount})).sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime())})(new Date(t),c),s=((e,t)=>{let a=new Map([]);for(let t=0;t<=35;t++)a.set(l()(e).add(t,"day").format("YYYY-MM-DD"),0);return t.forEach(({date:e,count:t})=>{a.has(e)&&a.set(e,t)}),Array.from(a).flatMap(([e,t])=>({date:e,count:t}))})(new Date(t),i)??[],"month"==(0===u?"week":"month")||s.slice(0,6);let h=(o=0===u?"week":"month",m=((e,t)=>{let a=l()(e).startOf("month").format(E.BC),n=l()(e).endOf("month").format(E.BC),r=`${d.restBaseUrl}/appointment/appointmentSummary?startDate=${a}&endDate=${n}`,{data:o}=v()(r,d.openmrsFetch),i=(0,T.A)(o?.data?.filter(({appointmentService:e})=>e.uuid===t));return Object.entries(i?.appointmentCountMap??[]).map(([e,t])=>({date:e,count:t.allAppointmentsCount})).sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime())})(t,c),"month"===o?m:m.slice(0,6));return r().createElement("div",{className:"-esm-appointments__workload__workLoadContainer___fDQXe"},r().createElement(P,{calendarWorkload:h,dateToDisplay:t.toISOString(),onDateClick:e=>a(e)}))},M="-esm-appointments__appointments-form__formGroup___r3B22",I="-esm-appointments__appointments-form__inputContainer___S3wmD",O="-esm-appointments__appointments-form__button___lMFrg",Y=/^(1[0-2]|0?[1-9]):[0-5][0-9]$/,W=c.Ik({duration:c.KC([c.ai(),c.ch()]).optional(),isAllDayAppointment:c.zM(),location:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"locationRequired","Location is required")}),provider:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"providerRequired","Provider is required")}),appointmentStatus:c.Yj().optional(),appointmentNote:c.Yj(),appointmentType:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"appointmentTypeRequired","Appointment type is required")}),selectedService:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"serviceRequired","Service is required")}),recurringPatternType:c.k5(["DAY","WEEK"]),recurringPatternPeriod:c.ai(),recurringPatternDaysOfWeek:c.YO(c.Yj()),selectedDaysOfWeekText:c.Yj().optional(),startTime:c.Yj().refine(e=>Y.test(e),{message:(0,d.translateFrom)(E.AO,"invalidTime","Invalid time")}),timeFormat:c.k5(["AM","PM"]),appointmentDateTime:c.Ik({startDate:c.p6(),startDateText:c.Yj(),recurringPatternEndDate:c.p6().nullable(),recurringPatternEndDateText:c.Yj().nullable()}),formIsRecurringAppointment:c.zM(),dateAppointmentScheduled:c.p6().optional()}).refine(e=>!0!==e.formIsRecurringAppointment||c.p6().safeParse(e.appointmentDateTime.recurringPatternEndDate).success,{path:["appointmentDateTime.recurringPatternEndDate"],message:(0,d.translateFrom)(E.AO,"recurringAppointmentShouldHaveEndDate","A recurring appointment should have an end date")}).refine(e=>{let{appointmentDateTime:t,dateAppointmentScheduled:a}=e,n=t?.startDate;if(!n||!a)return!0;let r=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t},o=r(n);return r(a)<=o},{path:["dateAppointmentScheduled"],message:(0,d.translateFrom)(E.AO,"dateAppointmentIssuedCannotBeAfterAppointmentDate","Date appointment issued cannot be after the appointment date")}).superRefine((e,t)=>{e.isAllDayAppointment||e.duration&&!(e.duration<=0)||t.addIssue({path:["duration"],code:u.eq.custom,message:(0,d.translateFrom)(E.AO,"durationErrorMessage","Duration should be greater than zero")}),!e.isAllDayAppointment&&e.duration&&e.duration>1440&&t.addIssue({path:["duration"],code:u.eq.custom,message:(0,d.translateFrom)(E.AO,"durationMaxErrorMessage","Duration cannot exceed 1440 minutes (24 hours)")})});function R({t:e,control:t,errors:a}){return r().createElement(r().Fragment,null,r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"startTime",control:t,render:({field:{onChange:n,value:o}})=>r().createElement(m.AG,{id:"time-picker",pattern:"^(1[0-2]|0?[1-9]):[0-5][0-9]$",invalid:!!a?.startTime,invalidText:a?.startTime?.message?String(a.startTime.message):void 0,labelText:e("time","Time"),onChange:e=>{n(e.target.value)},style:{marginLeft:"0.125rem",flex:"none"},value:o},r().createElement(i.xI,{name:"timeFormat",control:t,render:({field:{value:t,onChange:a}})=>r().createElement(m.E_7,{id:"time-picker-select-1",onChange:e=>a(e.target.value),value:t,"aria-label":e("time","Time")},r().createElement(m.ebT,{value:"AM",text:"AM"}),r().createElement(m.ebT,{value:"PM",text:"PM"}))}))})),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"duration",control:t,render:({field:{onChange:t,onBlur:n,value:o,ref:l}})=>r().createElement(m.Q7x,{allowEmpty:!0,disableWheel:!0,hideSteppers:!0,id:"duration",invalid:!!a?.duration,invalidText:a?.duration?.message?String(a.duration.message):void 0,label:e("durationInMinutes","Duration (minutes)"),onBlur:n,onChange:(e,a)=>{let n=a?.value??e.target.value;t(""===n?null:Number(n))},ref:l,value:o??""})})))}let B=({workspaceProps:{appointment:e,recurringPattern:t,patientUuid:a},closeWorkspace:o})=>{let{patient:c}=(0,d.usePatient)(a),{mutateAppointments:u}=(0,f.q)(),_=new Date(e?.startDateTime).getHours()>=12?"PM":"AM",h=e?.startDateTime?_:new Date().getHours()>=12?"PM":"AM",{t:y}=(0,s.useTranslation)(),T="tablet"===(0,d.useLayoutType)(),k=(0,d.useLocations)(E.gL),w=function(){let e=`${d.restBaseUrl}/provider`,{data:t,error:a,isLoading:n,isValidating:r}=v()(e,d.openmrsFetch);return{providers:t?t.data?.results:[],isLoading:n,error:a,isValidating:r}}(),b=(0,d.useSession)(),A=(0,x.h)(),{serviceTypes:C,isLoading:S}=(0,g.V)(),{appointmentStatuses:P,appointmentTypes:Y,allowAllDayAppointments:B}=(0,d.useConfig)(),[F,U]=(0,n.useState)(!1),$=t?.type||"DAY",L=t?.period||1,j=t?.daysOfWeek||[],[q,H]=(0,n.useState)(!1),[V,K]=(0,n.useState)(!1),Q=e?.startDateTime?new Date(e?.startDateTime):A?new Date(A):new Date,G=t?.endDate?new Date(t?.endDate):null,X=t?.endDate?l()(new Date(t.endDate)).format(E.i$):"",z=e?.startDateTime?l()(new Date(e.startDateTime)).format(E.i$):A?l()(A).format(E.i$):l()(new Date).format(E.i$),J=e?.startDateTime?l()(new Date(e?.startDateTime)).format("hh:mm"):l()(new Date).format("hh:mm"),Z=e?.startDateTime&&e?.endDateTime?l()(e.endDateTime).diff(l()(e.startDateTime),"minutes"):void 0,ee=e?.dateAppointmentScheduled?new Date(e?.dateAppointmentScheduled):new Date,{control:et,getValues:ea,setValue:en,watch:er,handleSubmit:eo,reset:el,formState:{errors:ei,isDirty:es}}=(0,i.mN)({mode:"all",resolver:(0,p.u)(W),defaultValues:{location:e?.location?.uuid??b?.sessionLocation?.uuid??"",provider:e?.providers?.find(e=>"ACCEPTED"===e.response)?.uuid??b?.currentProvider?.uuid??"",appointmentNote:e?.comments||"",appointmentStatus:e?.status||"",appointmentType:e?.appointmentKind||(Y?.length===1?Y[0]:""),selectedService:e?.service?.name||(C?.length===1?C[0].name:""),recurringPatternType:$,recurringPatternPeriod:L,recurringPatternDaysOfWeek:j,startTime:J,duration:Z,timeFormat:h,appointmentDateTime:{startDate:Q,startDateText:z,recurringPatternEndDate:G,recurringPatternEndDateText:X},formIsRecurringAppointment:F,dateAppointmentScheduled:ee,isAllDayAppointment:B}});(0,n.useEffect)(()=>en("formIsRecurringAppointment",F),[F,en]);let{field:{ref:em}}=(0,i.as)({name:"appointmentDateTime.startDate",control:et}),{field:{ref:ep}}=(0,i.as)({name:"appointmentDateTime.recurringPatternEndDate",control:et});(0,n.useEffect)(()=>{let e=document.getElementById("startDatePickerInput"),t=document.getElementById("endDatePickerInput");em(e),ep(t)},[em,ep]),(0,n.useEffect)(()=>{q&&(el(),o({discardUnsavedChanges:!0,closeWindow:!0}))},[q,el,o]);let ed=ea("recurringPatternDaysOfWeek")?.length<1?y("daysOfWeek","Days of the week"):E.Mq.filter(e=>ea("recurringPatternDaysOfWeek").includes(e.id)).map(e=>e.label).join(", "),ec=!!e,eu=async e=>{K(!0);let t=e_(e),a=await D(t),n=y("appointmentConflict","Appointment conflict");if(a.data?.hasOwnProperty("SERVICE_UNAVAILABLE")?n=y("serviceUnavailable","Appointment time is outside of service hours"):a.data?.hasOwnProperty("PATIENT_DOUBLE_BOOKING")&&(n=y("patientDoubleBooking","Patient already booked for an appointment at this time")),200===a.status&&n){K(!1),(0,d.showSnackbar)({isLowContrast:!0,kind:"error",title:n});return}let r={appointmentRequest:t,recurringPattern:eh(e)},o=new AbortController;(F?(0,d.openmrsFetch)(`${d.restBaseUrl}/recurring-appointments`,{method:"POST",signal:o.signal,headers:{"Content-Type":"application/json"},body:r}):(0,d.openmrsFetch)(`${d.restBaseUrl}/appointment`,{method:"POST",signal:o.signal,headers:{"Content-Type":"application/json"},body:t})).then(({status:e})=>{200===e&&(K(!1),H(!0),u(),(0,d.showSnackbar)({isLowContrast:!0,kind:"success",subtitle:y("appointmentNowVisible","It is now visible on the Appointments page"),title:ec?y("appointmentEdited","Appointment edited"):y("appointmentScheduled","Appointment scheduled")})),204===e&&(K(!1),(0,d.showSnackbar)({title:ec?y("appointmentEditError","Error editing appointment"):y("appointmentFormError","Error scheduling appointment"),kind:"error",isLowContrast:!1,subtitle:y("noContent","No Content")}))},e=>{K(!1),(0,d.showSnackbar)({title:ec?y("appointmentEditError","Error editing appointment"):y("appointmentFormError","Error scheduling appointment"),kind:"error",isLowContrast:!1,subtitle:e?.message})})},e_=t=>{let{selectedService:n,startTime:r,timeFormat:o,appointmentDateTime:{startDate:i},duration:s,appointmentType:m,location:p,provider:d,appointmentNote:c,appointmentStatus:u,dateAppointmentScheduled:_,isAllDayAppointment:h}=t,D=C?.find(e=>e.name===n)?.uuid,g=r.split(":").map(e=>parseInt(e,10)),E=g[0]%12+12*("PM"===o),y=g[1],v=i.setHours(E,y),f=h?l()(i).endOf("day").toDate():l()(v).add(s,"minutes").toDate();return{appointmentKind:m,status:u,serviceUuid:D,startDateTime:l()(v).format(),endDateTime:l()(f).format(),locationUuid:p,providers:[{uuid:d}],patientUuid:a,comments:c,uuid:ec?e.uuid:void 0,dateAppointmentScheduled:l()(_).format()}},eh=e=>{let{appointmentDateTime:{recurringPatternEndDate:t},recurringPatternType:a,recurringPatternPeriod:n,recurringPatternDaysOfWeek:r}=e,[o,i]=[23,59],s=t?.setHours(o,i);return{type:a,period:n,endDate:s?l()(s).format():null,daysOfWeek:r}},eD=ec?y("editAppointment","Edit appointment"):y("createNewAppointment","Create new appointment");return S?r().createElement(d.Workspace2,{title:eD},r().createElement(m.OuH,{className:"-esm-appointments__appointments-form__loader___0pfyp",description:`${y("loading","Loading")} ...`,role:"progressbar"})):r().createElement(d.Workspace2,{title:eD,hasUnsavedChanges:es},r().createElement(m.lVW,{onSubmit:eo(eu)},c&&r().createElement(d.ExtensionSlot,{name:"patient-header-slot",state:{patient:c,patientUuid:a,hideActionsOverflow:!0}}),r().createElement(m.BJc,{className:"-esm-appointments__appointments-form__formWrapper___HnBGR",gap:6},r().createElement(m.gE_,{className:M,legendText:y("location","Location")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"location",control:et,render:({field:{onChange:e,value:t,onBlur:a,ref:n}})=>r().createElement(m.l6P,{id:"location",invalid:!!ei?.location,invalidText:ei?.location?.message,labelText:y("selectALocation","Select a location"),onChange:e,onBlur:a,ref:n,value:t},r().createElement(m.ebT,{key:"chooseLocation",text:y("chooseLocation","Choose a location"),value:""}),k?.length>0&&k.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.display,value:e.uuid})))}))),r().createElement(m.gE_,{className:M,legendText:y("service","Service")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"selectedService",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{id:"service",invalid:!!ei?.selectedService,invalidText:ei?.selectedService?.message,labelText:y("selectService","Select a service"),onBlur:e,onChange:e=>{if(ec){let t=C?.find(e=>e.name===ea("selectedService"))?.durationMins,a=C?.find(t=>t.name===e.target.value)?.durationMins;a&&t===ea("duration")&&en("duration",a)}else en("duration",C?.find(t=>t.name===e.target.value)?.durationMins);t(e)},ref:n,value:a},r().createElement(m.ebT,{key:"chooseService",text:y("chooseService","Select service"),value:""}),C?.length>0&&C.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.name,value:e.name})))}))),r().createElement(m.gE_,{className:M,legendText:y("appointmentType_title","Appointment Type")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentType",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{disabled:!Y?.length,id:"appointmentType",invalid:!!ei?.appointmentType,invalidText:ei?.appointmentType?.message,labelText:y("selectAppointmentType","Select the type of appointment"),onBlur:e,onChange:t,ref:n,value:a},r().createElement(m.ebT,{text:y("chooseAppointmentType","Choose appointment type"),value:""}),Y?.length>0&&Y.map(e=>r().createElement(m.ebT,{key:e,text:y(e),value:e})))}))),r().createElement(m.gE_,{className:M,legendText:y("recurringAppointment","Recurring Appointment")},r().createElement("div",null,r().createElement(m.lMk,{id:"recurringToggle",labelB:y("yes","Yes"),labelA:y("no","No"),labelText:y("isRecurringAppointment","Is this a recurring appointment?"),onClick:()=>U(!F)}))),r().createElement(m.gE_,{className:M,legendText:y("dateTime","Appointment time")},r().createElement("div",{className:"-esm-appointments__appointments-form__dateTimeFields___GHrdS"},F&&r().createElement("div",{className:I},B&&r().createElement(i.xI,{name:"isAllDayAppointment",control:et,render:({field:{value:e,onChange:t}})=>r().createElement(m.lMk,{id:"allDayToggle",labelA:y("no","No"),labelB:y("yes","Yes"),labelText:y("allDay","All day"),toggled:e,onToggle:t})}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentDateTime",control:et,render:({field:{onChange:e,value:t},fieldState:a})=>r().createElement(d.OpenmrsDateRangePicker,{value:t.startDate&&t.recurringPatternEndDate?[t.startDate,t.recurringPatternEndDate]:null,onChange:a=>{let[n,r]=a;e({...t,startDate:n,startDateText:n?l()(n).format(E.i$):"",recurringPatternEndDate:r,recurringPatternEndDateText:r?l()(r).format(E.i$):""})},startName:"start",endName:"end",id:"appointmentRecurringDateRangePicker","data-testid":"appointmentRecurringDateRangePicker",labelText:y("dateRange","Set date range"),invalid:!!a?.error?.message,invalidText:a?.error?.message,isRequired:!0})})),!er("isAllDayAppointment")&&r().createElement(R,{t:y,control:et,errors:ei}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"recurringPatternPeriod",control:et,render:({field:{onBlur:e,onChange:t,value:a}})=>r().createElement(m.Q7x,{hideSteppers:!0,id:"repeatNumber",min:1,max:356,label:y("repeatEvery","Repeat every"),invalidText:y("invalidNumber","Number is not valid"),value:a,onBlur:e,onChange:(e,a)=>{let n=a?.value??e.target.value;t(""===n?null:Number(n))}})})),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"recurringPatternType",control:et,render:({field:{onChange:e,value:t}})=>r().createElement(m.zWQ,{"aria-label":y("period","Period"),name:"radio-button-group",onChange:t=>e(t),valueSelected:t},r().createElement(m.aaP,{labelText:y("day","Day"),value:"DAY",id:"radioDay"}),r().createElement(m.aaP,{labelText:y("week","Week"),value:"WEEK",id:"radioWeek"}))})),"WEEK"===er("recurringPatternType")&&r().createElement("div",null,r().createElement(i.xI,{name:"selectedDaysOfWeekText",control:et,defaultValue:ed,render:({field:{onChange:e}})=>r().createElement(m.KFt,{className:"-esm-appointments__appointments-form__weekSelect___AscGq",id:"daysOfWeek",initialSelectedItems:E.Mq.filter(e=>ea("recurringPatternDaysOfWeek").includes(e.id)),items:E.Mq,itemToString:e=>e?y(e.labelCode,e.label):"",label:ea("selectedDaysOfWeekText"),onChange:t=>{e(t),en("selectedDaysOfWeekText",t?.selectedItems?.length<1?y("daysOfWeek","Days of the week"):t.selectedItems.map(e=>e.label).join(", ")),en("recurringPatternDaysOfWeek",t.selectedItems.map(e=>e.id))},selectionFeedback:"top-after-reopen",sortItems:e=>[...e].sort((e,t)=>e.order-t.order)})}))),!F&&r().createElement("div",{className:I},B&&r().createElement(i.xI,{name:"isAllDayAppointment",control:et,render:({field:{value:e,onChange:t}})=>r().createElement(m.lMk,{id:"allDayToggle",labelA:y("no","No"),labelB:y("yes","Yes"),labelText:y("allDay","All day"),toggled:e,onToggle:t})}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentDateTime",control:et,render:({field:e,fieldState:t})=>r().createElement(d.OpenmrsDatePicker,{"data-testid":"datePickerInput",id:"datePickerInput",invalid:!!t?.error?.message,invalidText:t?.error?.message,labelText:y("date","Date"),onBlur:e.onBlur,onChange:t=>{e.onChange({...e.value,startDate:t})},style:{width:"100%"},value:e.value.startDate})})),!er("isAllDayAppointment")&&r().createElement(R,{t:y,control:et,errors:ei})))),ea("selectedService")&&r().createElement(m.gE_,{className:M,legendText:""},r().createElement(d.ResponsiveWrapper,null,r().createElement(N,{appointmentDate:er("appointmentDateTime").startDate,onWorkloadDateChange:e=>{en("appointmentDateTime",{...ea("appointmentDateTime"),startDate:e})},selectedService:er("selectedService")}))),ec?r().createElement(m.gE_,{className:M,legendText:y("appointmentStatus","Appointment Status")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentStatus",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{id:"appointmentStatus",invalid:!!ei?.appointmentStatus,invalidText:ei?.appointmentStatus?.message,labelText:y("selectAppointmentStatus","Select status"),onBlur:e,onChange:t,ref:n,value:a},r().createElement(m.ebT,{key:"selectAppointmentStatus",text:y("selectAppointmentStatus","Select status"),value:""}),P?.length>0&&P.map(e=>r().createElement(m.ebT,{key:e,text:y(e),value:e})))}))):null,r().createElement(m.gE_,{className:M,legendText:y("provider","Provider")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"provider",control:et,render:({field:{onChange:e,value:t,onBlur:a,ref:n}})=>r().createElement(m.l6P,{id:"provider",invalidText:"Required",labelText:y("selectProvider","Select a provider"),onChange:e,onBlur:a,ref:n,value:t},r().createElement(m.ebT,{key:"chooseProvider",text:y("chooseProvider","Choose a provider"),value:""}),w?.providers?.length>0&&w?.providers?.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.display,value:e.uuid})))}))),r().createElement(m.gE_,{className:M,legendText:y("dateAppointmentScheduled","Date appointment scheduled")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"dateAppointmentScheduled",control:et,render:({field:e,fieldState:t})=>r().createElement("div",{style:{width:"100%"}},r().createElement(d.OpenmrsDatePicker,{"data-testid":"dateAppointmentScheduledPickerInput",id:"dateAppointmentScheduledPickerInput",invalid:!!t?.error?.message,invalidText:t?.error?.message,labelText:y("dateAppointmentIssued","Date appointment issued"),maxDate:new Date,onBlur:e.onBlur,onChange:e.onChange,style:{width:"100%"},value:e.value}))}))),r().createElement(m.gE_,{className:M,legendText:y("note","Note")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentNote",control:et,render:({field:{onChange:e,onBlur:t,value:a,ref:n}})=>r().createElement(m.fs1,{enableCounter:!0,id:"appointmentNote",value:a,labelText:y("appointmentNoteLabel","Write an additional note"),placeholder:y("appointmentNotePlaceholder","Write any additional points here"),maxCount:255,onChange:e,onBlur:t,ref:n})})))),r().createElement(m.Te$,{className:T?"-esm-appointments__appointments-form__tablet___763JI":"-esm-appointments__appointments-form__desktop___hy4pG"},r().createElement(m.$nd,{className:O,onClick:()=>o({discardUnsavedChanges:!0}),kind:"secondary"},y("discard","Discard")),r().createElement(m.$nd,{className:O,disabled:V,type:"submit"},y("saveAndClose","Save and close")))))}},2373(e,t,a){a.d(t,{Ee:()=>s,Xz:()=>u,_h:()=>d,o_:()=>c,tF:()=>p,w:()=>_,xh:()=>m});var n=a(3464),r=a.n(n),o=a(2895),l=a(5084),i=a(7003);let s=e=>{let t=r()(e).startOf("day").format(i.BC);return`${o.restBaseUrl}/appointments?forDate=${encodeURIComponent(t)}`},m=e=>{let t=e.getHours(),a=e.getMinutes(),n=a<10?`0${a}`:a.toString();return`${t%12||12}:${n} ${t>=12?"PM":"AM"}`},p=(e,t)=>e.isSame(t,"month"),d=e=>{let t=r()(e).startOf("month"),a=r()(e).endOf("month"),n=r()(e).daysInMonth(),o=r()(e).subtract(1,"month"),l=r()(e).add(1,"month"),i=[];for(let e=o.daysInMonth()-t.day()+1;e<=o.daysInMonth();e++)i.push(o.date(e));for(let t=1;t<=n;t++)i.push(e.date(t));let s=i.length>30?7:14;for(let e=1;e<s-a.day();e++)i.push(l.date(e));return i},c=(e,t)=>{switch(e){case"M":return t("male","Male");case"F":return t("female","Female");case"O":return t("other","Other");case"U":return t("unknown","Unknown");default:return e}},u=e=>{(0,o.launchWorkspace2)("appointments-patient-search-workspace",{initialQuery:"",workspaceTitle:e("createNewAppointment","Create new appointment"),onPatientSelected(e,t,a,n){a(i.gC,{patientUuid:t.id})}},{startVisitWorkspaceName:"appointments-start-visit-workspace"})},_=(e,t)=>{let a={[l.y2.REQUESTED]:0,[l.y2.SCHEDULED]:1,[l.y2.CHECKEDIN]:3,[l.y2.COMPLETED]:4,[l.y2.CANCELLED]:4,[l.y2.MISSED]:4};return a[e]<a[t]||t===l.y2.SCHEDULED}},9391(e,t,a){a.d(t,{Ee:()=>n.Ee,Xz:()=>n.Xz,_h:()=>n._h,o_:()=>n.o_,tF:()=>n.tF,w:()=>n.w});var n=a(2373)},6(e,t,a){a.d(t,{V:()=>i});var n=a(7125),r=a(2895),o=a(7364),l=a.n(o);function i(){let{data:e,error:t,isLoading:a}=l()(`${r.restBaseUrl}/appointmentService/all/default`,r.openmrsFetch);return{serviceTypes:(0,n.useMemo)(()=>e?.data?[...e.data].sort((e,t)=>e.name.localeCompare(t.name)):[],[e?.data]),isLoading:a,error:t}}},5370(e,t,a){a.d(t,{q:()=>i});var n=a(7125),r=a(7364),o=a(2895);let l=`${o.restBaseUrl}/appointment`;function i(){let{mutate:e}=(0,r.useSWRConfig)();return{mutateAppointments:(0,n.useCallback)(()=>e(e=>"string"==typeof e&&e.startsWith(l)||Array.isArray(e)&&e[0].startsWith(l)),[e])}}},1947(e,t,a){a.d(t,{h:()=>i});var n=a(3464),r=a.n(n),o=a(7125),l=a(2745);function i(){let e=(0,l.useParams)();return(0,o.useMemo)(()=>{if(e.date){let t=r()(e.date,"YYYY-MM-DD").startOf("day");if(t.isValid())return t.format("YYYY-MM-DD");console.warn(`Invalid date format in URL parameter: ${e.date}. Format should be YYYY-MM-DD. Falling back to current date.`)}return r()().startOf("day").format("YYYY-MM-DD")},[e.date])}}}]);
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["6407"],{1370(e,t,a){a.r(t),a.d(t,{appointmentsFormSchema:()=>W,default:()=>B});var n=a(7125),r=a.n(n),o=a(3464),l=a.n(o),i=a(824),s=a(5921),m=a(411),p=a(8811),d=a(2895),c=a(6461),u=a(6717),_=a(5602),h=a.n(_);l().extend(h());let D=async e=>await (0,d.openmrsFetch)(`${d.restBaseUrl}/appointments/conflicts`,{method:"POST",body:{patientUuid:e.patientUuid,serviceUuid:e.serviceUuid,startDateTime:e.startDateTime,endDateTime:e.endDateTime,providers:[],locationUuid:e.locationUuid,appointmentKind:e.appointmentKind,...e.uuid&&{uuid:e.uuid}},headers:{"Content-Type":"application/json"}});var g=a(6),E=a(7003),y=a(8909),v=a.n(y),f=a(5370),T=a(9915),k=a(9391),w=a(3373),b=a.n(w);let A=({dayOfWeek:e})=>{let{t}=(0,s.useTranslation)(),a=l()(new Date).format("ddd").toUpperCase()===e;return r().createElement("div",{tabIndex:0,role:"button",className:"-esm-appointments__days-of-week__tileContainer___9IiGe"},r().createElement("span",{className:b()({"-esm-appointments__days-of-week__bold___qJVja":a})},t(e)))},C={"monthly-cell":"-esm-appointments__monthly-workload__monthly-cell___QyoX7","monthly-cell-today":"-esm-appointments__monthly-workload__monthly-cell-today___wmNZa","monthly-cell-selected":"-esm-appointments__monthly-workload__monthly-cell-selected___0zc2f","monthly-cell-current":"-esm-appointments__monthly-workload__monthly-cell-current___cqeOJ","monthly-cell-active":"-esm-appointments__monthly-workload__monthly-cell-active___ylxPR","monthly-cell-disabled":"-esm-appointments__monthly-workload__monthly-cell-disabled___iXVpZ",identifiers:"-esm-appointments__monthly-workload__identifiers___raNI+",identifierTag:"-esm-appointments__monthly-workload__identifierTag___HR0pj","weekly-cell":"-esm-appointments__monthly-workload__weekly-cell___E4FGD","week-time":"-esm-appointments__monthly-workload__week-time___6g274",selectedDate:"-esm-appointments__monthly-workload__selectedDate___CKRnm",currentData:"-esm-appointments__monthly-workload__currentData___Qub4N",serviceArea:"-esm-appointments__monthly-workload__serviceArea___+12nw",smallDesktop:"-esm-appointments__monthly-workload__smallDesktop___7oEhw",largeDesktop:"-esm-appointments__monthly-workload__largeDesktop___yBUeD",red:"-esm-appointments__monthly-workload__red___pH62E",purple:"-esm-appointments__monthly-workload__purple___fXJks",blue:"-esm-appointments__monthly-workload__blue___4uRQ5",black:"-esm-appointments__monthly-workload__black___fanW3",green:"-esm-appointments__monthly-workload__green___fNdm-",calendarDate:"-esm-appointments__monthly-workload__calendarDate___WDPSx",wrapper:"-esm-appointments__monthly-workload__wrapper___qK6Ui",monthlyCalendar:"-esm-appointments__monthly-workload__monthlyCalendar___aUX5c",calendarViewContainer:"-esm-appointments__monthly-workload__calendarViewContainer___HUc8O",backgroundColor:"-esm-appointments__monthly-workload__backgroundColor___o3Tgf",container:"-esm-appointments__monthly-workload__container___f-3Bw",workLoadCard:"-esm-appointments__monthly-workload__workLoadCard___XQytF",activeWorkloadCard:"-esm-appointments__monthly-workload__activeWorkloadCard___wwmwV",workLoadContainer:"-esm-appointments__monthly-workload__workLoadContainer___4f+0O",headerContainer:"-esm-appointments__monthly-workload__headerContainer___7jshh"},S=({date:e,count:t,isActive:a,selectedDate:n})=>{let o=(0,d.useLayoutType)(),i=e.isSame(l()(),"day");return r().createElement("div",{className:b()(C["monthly-cell"],{[C["monthly-cell-selected"]]:(0,k.tF)(e,l()(n)),[C["monthly-cell-current"]]:(0,k.tF)(e,l()(n)),[C["monthly-cell-current"]]:(0,k.tF)(e,n),[C["monthly-cell-active"]]:a},{[C.smallDesktop]:"small-desktop"===o,[C.largeDesktop]:"small-desktop"!==o})},r().createElement("div",null,r().createElement("b",{className:[C.calendarDate,i?C.blue:""].join(" ")},e.format("D")),r().createElement("div",{className:C.currentData},r().createElement("div",{tabIndex:0,role:"button",className:b()(C.tileContainer,{})}),r().createElement("div",{className:C.serviceArea},r().createElement("span",{className:a?C.blue:""},t)))))};var x=a(1947);let P=({calendarWorkload:e,dateToDisplay:t="",onDateClick:a})=>{let{t:n}=(0,s.useTranslation)(),o=(0,x.h)(),i=""===t?o:t,m=["SUN","MON","TUE","WED","THUR","FRI","SAT"].map(e=>n(e));return r().createElement("div",{className:C.calendarViewContainer},r().createElement(r().Fragment,null,r().createElement("div",{className:C.container}),r().createElement("span",{className:C.headerContainer},(0,d.formatDate)(new Date(i),{day:!1,time:!1,noToday:!0})),r().createElement("div",{className:C.workLoadCard},m?.map((e,t)=>r().createElement(A,{key:`${e}-${t}`,dayOfWeek:e}))),r().createElement("div",{className:C.wrapper},r().createElement("div",{className:C.monthlyCalendar},(0,k._h)(l()(i)).map((n,o)=>r().createElement("div",{onClick:()=>{var e;return e=l()(n).toDate(),void(a&&a(e))},key:o,className:`${C.monthlyWorkloadCard} ${l()(n).format("YYYY-MM-DD")===l()(i).format("YYYY-MM-DD")?C.selectedDate:""}`},r().createElement(S,{key:o,date:n,isActive:l()(t).format("DD-MM-YYYY")===l()(n).format("DD-MM-YYYY"),count:e.find(e=>e.date===l()(n).format("YYYY-MM-DD"))?.count??0})))))))},N=({selectedService:e,appointmentDate:t,onWorkloadDateChange:a})=>{var o;let i,s,m,{serviceTypes:p}=(0,g.V)(),c=p?.find(t=>t.name===e)?.uuid,[u,_]=(0,n.useState)(0);i=((e,t)=>{let a=l()(e).startOf("week").format(E.BC),n=l()(a).add(2,"week").format(E.BC),r=`${d.restBaseUrl}/appointment/appointmentSummary?startDate=${a}&endDate=${n}`,{data:o}=v()(r,d.openmrsFetch),i=(0,T.A)(o?.data?.filter(({appointmentService:e})=>e.uuid===t));return Object.entries(i?.appointmentCountMap??[]).map(([e,t])=>({date:e,count:t.allAppointmentsCount})).sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime())})(new Date(t),c),s=((e,t)=>{let a=new Map([]);for(let t=0;t<=35;t++)a.set(l()(e).add(t,"day").format("YYYY-MM-DD"),0);return t.forEach(({date:e,count:t})=>{a.has(e)&&a.set(e,t)}),Array.from(a).flatMap(([e,t])=>({date:e,count:t}))})(new Date(t),i)??[],"month"==(0===u?"week":"month")||s.slice(0,6);let h=(o=0===u?"week":"month",m=((e,t)=>{let a=l()(e).startOf("month").format(E.BC),n=l()(e).endOf("month").format(E.BC),r=`${d.restBaseUrl}/appointment/appointmentSummary?startDate=${a}&endDate=${n}`,{data:o}=v()(r,d.openmrsFetch),i=(0,T.A)(o?.data?.filter(({appointmentService:e})=>e.uuid===t));return Object.entries(i?.appointmentCountMap??[]).map(([e,t])=>({date:e,count:t.allAppointmentsCount})).sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime())})(t,c),"month"===o?m:m.slice(0,6));return r().createElement("div",{className:"-esm-appointments__workload__workLoadContainer___fDQXe"},r().createElement(P,{calendarWorkload:h,dateToDisplay:t.toISOString(),onDateClick:e=>a(e)}))},M="-esm-appointments__appointments-form__formGroup___r3B22",I="-esm-appointments__appointments-form__inputContainer___S3wmD",O="-esm-appointments__appointments-form__button___lMFrg",Y=/^(1[0-2]|0?[1-9]):[0-5][0-9]$/,W=c.Ik({duration:c.KC([c.ai(),c.ch()]).optional(),isAllDayAppointment:c.zM(),location:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"locationRequired","Location is required")}),provider:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"providerRequired","Provider is required")}),appointmentStatus:c.Yj().optional(),appointmentNote:c.Yj(),appointmentType:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"appointmentTypeRequired","Appointment type is required")}),selectedService:c.Yj().refine(e=>""!==e,{message:(0,d.translateFrom)(E.AO,"serviceRequired","Service is required")}),recurringPatternType:c.k5(["DAY","WEEK"]),recurringPatternPeriod:c.ai(),recurringPatternDaysOfWeek:c.YO(c.Yj()),selectedDaysOfWeekText:c.Yj().optional(),startTime:c.Yj().refine(e=>Y.test(e),{message:(0,d.translateFrom)(E.AO,"invalidTime","Invalid time")}),timeFormat:c.k5(["AM","PM"]),appointmentDateTime:c.Ik({startDate:c.p6(),startDateText:c.Yj(),recurringPatternEndDate:c.p6().nullable(),recurringPatternEndDateText:c.Yj().nullable()}),formIsRecurringAppointment:c.zM(),dateAppointmentScheduled:c.p6().optional()}).refine(e=>!0!==e.formIsRecurringAppointment||c.p6().safeParse(e.appointmentDateTime.recurringPatternEndDate).success,{path:["appointmentDateTime.recurringPatternEndDate"],message:(0,d.translateFrom)(E.AO,"recurringAppointmentShouldHaveEndDate","A recurring appointment should have an end date")}).refine(e=>{let{appointmentDateTime:t,dateAppointmentScheduled:a}=e,n=t?.startDate;if(!n||!a)return!0;let r=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t},o=r(n);return r(a)<=o},{path:["dateAppointmentScheduled"],message:(0,d.translateFrom)(E.AO,"dateAppointmentIssuedCannotBeAfterAppointmentDate","Date appointment issued cannot be after the appointment date")}).superRefine((e,t)=>{e.isAllDayAppointment||e.duration&&!(e.duration<=0)||t.addIssue({path:["duration"],code:u.eq.custom,message:(0,d.translateFrom)(E.AO,"durationErrorMessage","Duration should be greater than zero")}),!e.isAllDayAppointment&&e.duration&&e.duration>1440&&t.addIssue({path:["duration"],code:u.eq.custom,message:(0,d.translateFrom)(E.AO,"durationMaxErrorMessage","Duration cannot exceed 1440 minutes (24 hours)")})});function R({t:e,control:t,errors:a}){return r().createElement(r().Fragment,null,r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"startTime",control:t,render:({field:{onChange:n,value:o}})=>r().createElement(m.AG,{id:"time-picker",pattern:"^(1[0-2]|0?[1-9]):[0-5][0-9]$",invalid:!!a?.startTime,invalidText:a?.startTime?.message?String(a.startTime.message):void 0,labelText:e("time","Time"),onChange:e=>{n(e.target.value)},style:{marginLeft:"0.125rem",flex:"none"},value:o},r().createElement(i.xI,{name:"timeFormat",control:t,render:({field:{value:t,onChange:a}})=>r().createElement(m.E_7,{id:"time-picker-select-1",onChange:e=>a(e.target.value),value:t,"aria-label":e("time","Time")},r().createElement(m.ebT,{value:"AM",text:"AM"}),r().createElement(m.ebT,{value:"PM",text:"PM"}))}))})),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"duration",control:t,render:({field:{onChange:t,onBlur:n,value:o,ref:l}})=>r().createElement(m.Q7x,{allowEmpty:!0,disableWheel:!0,hideSteppers:!0,id:"duration",invalid:!!a?.duration,invalidText:a?.duration?.message?String(a.duration.message):void 0,label:e("durationInMinutes","Duration (minutes)"),onBlur:n,onChange:(e,a)=>{let n=a?.value??e.target.value;t(""===n?null:Number(n))},ref:l,value:o??""})})))}let B=({workspaceProps:{appointment:e,recurringPattern:t,patientUuid:a},closeWorkspace:o})=>{let{patient:c}=(0,d.usePatient)(a),{mutateAppointments:u}=(0,f.q)(),_=new Date(e?.startDateTime).getHours()>=12?"PM":"AM",h=e?.startDateTime?_:new Date().getHours()>=12?"PM":"AM",{t:y}=(0,s.useTranslation)(),T="tablet"===(0,d.useLayoutType)(),k=(0,d.useLocations)(E.gL),w=function(){let e=`${d.restBaseUrl}/provider`,{data:t,error:a,isLoading:n,isValidating:r}=v()(e,d.openmrsFetch);return{providers:t?t.data?.results:[],isLoading:n,error:a,isValidating:r}}(),b=(0,d.useSession)(),A=(0,x.h)(),{serviceTypes:C,isLoading:S}=(0,g.V)(),{appointmentStatuses:P,appointmentTypes:Y,allowAllDayAppointments:B}=(0,d.useConfig)(),[F,U]=(0,n.useState)(!1),$=t?.type||"DAY",L=t?.period||1,j=t?.daysOfWeek||[],[q,H]=(0,n.useState)(!1),[V,K]=(0,n.useState)(!1),Q=e?.startDateTime?new Date(e?.startDateTime):A?new Date(A):new Date,G=t?.endDate?new Date(t?.endDate):null,X=t?.endDate?l()(new Date(t.endDate)).format(E.i$):"",z=e?.startDateTime?l()(new Date(e.startDateTime)).format(E.i$):A?l()(A).format(E.i$):l()(new Date).format(E.i$),J=e?.startDateTime?l()(new Date(e?.startDateTime)).format("hh:mm"):l()(new Date).format("hh:mm"),Z=e?.startDateTime&&e?.endDateTime?l()(e.endDateTime).diff(l()(e.startDateTime),"minutes"):void 0,ee=e?.dateAppointmentScheduled?new Date(e?.dateAppointmentScheduled):new Date,{control:et,getValues:ea,setValue:en,watch:er,handleSubmit:eo,reset:el,formState:{errors:ei,isDirty:es}}=(0,i.mN)({mode:"all",resolver:(0,p.u)(W),defaultValues:{location:e?.location?.uuid??b?.sessionLocation?.uuid??"",provider:e?.providers?.find(e=>"ACCEPTED"===e.response)?.uuid??b?.currentProvider?.uuid??"",appointmentNote:e?.comments||"",appointmentStatus:e?.status||"",appointmentType:e?.appointmentKind||(Y?.length===1?Y[0]:""),selectedService:e?.service?.name||(C?.length===1?C[0].name:""),recurringPatternType:$,recurringPatternPeriod:L,recurringPatternDaysOfWeek:j,startTime:J,duration:Z,timeFormat:h,appointmentDateTime:{startDate:Q,startDateText:z,recurringPatternEndDate:G,recurringPatternEndDateText:X},formIsRecurringAppointment:F,dateAppointmentScheduled:ee,isAllDayAppointment:B}});(0,n.useEffect)(()=>en("formIsRecurringAppointment",F),[F,en]);let{field:{ref:em}}=(0,i.as)({name:"appointmentDateTime.startDate",control:et}),{field:{ref:ep}}=(0,i.as)({name:"appointmentDateTime.recurringPatternEndDate",control:et});(0,n.useEffect)(()=>{let e=document.getElementById("startDatePickerInput"),t=document.getElementById("endDatePickerInput");em(e),ep(t)},[em,ep]),(0,n.useEffect)(()=>{q&&(el(),o({discardUnsavedChanges:!0,closeWindow:!0}))},[q,el,o]);let ed=ea("recurringPatternDaysOfWeek")?.length<1?y("daysOfWeek","Days of the week"):E.Mq.filter(e=>ea("recurringPatternDaysOfWeek").includes(e.id)).map(e=>e.label).join(", "),ec=!!e,eu=async e=>{K(!0);let t=e_(e),a=await D(t),n=y("appointmentConflict","Appointment conflict");if(a.data?.hasOwnProperty("SERVICE_UNAVAILABLE")?n=y("serviceUnavailable","Appointment time is outside of service hours"):a.data?.hasOwnProperty("PATIENT_DOUBLE_BOOKING")&&(n=y("patientDoubleBooking","Patient already booked for an appointment at this time")),200===a.status&&n){K(!1),(0,d.showSnackbar)({isLowContrast:!0,kind:"error",title:n});return}let r={appointmentRequest:t,recurringPattern:eh(e)},o=new AbortController;(F?(0,d.openmrsFetch)(`${d.restBaseUrl}/recurring-appointments`,{method:"POST",signal:o.signal,headers:{"Content-Type":"application/json"},body:r}):(0,d.openmrsFetch)(`${d.restBaseUrl}/appointment`,{method:"POST",signal:o.signal,headers:{"Content-Type":"application/json"},body:t})).then(({status:e})=>{200===e&&(K(!1),H(!0),u(),(0,d.showSnackbar)({isLowContrast:!0,kind:"success",subtitle:y("appointmentNowVisible","It is now visible on the Appointments page"),title:ec?y("appointmentEdited","Appointment edited"):y("appointmentScheduled","Appointment scheduled")})),204===e&&(K(!1),(0,d.showSnackbar)({title:ec?y("appointmentEditError","Error editing appointment"):y("appointmentFormError","Error scheduling appointment"),kind:"error",isLowContrast:!1,subtitle:y("noContent","No Content")}))},e=>{K(!1),(0,d.showSnackbar)({title:ec?y("appointmentEditError","Error editing appointment"):y("appointmentFormError","Error scheduling appointment"),kind:"error",isLowContrast:!1,subtitle:e?.message})})},e_=t=>{let{selectedService:n,startTime:r,timeFormat:o,appointmentDateTime:{startDate:i},duration:s,appointmentType:m,location:p,provider:d,appointmentNote:c,appointmentStatus:u,dateAppointmentScheduled:_,isAllDayAppointment:h}=t,D=C?.find(e=>e.name===n)?.uuid,g=r.split(":").map(e=>parseInt(e,10)),E=g[0]%12+12*("PM"===o),y=g[1],v=i.setHours(E,y),f=h?l()(i).endOf("day").toDate():l()(v).add(s,"minutes").toDate();return{appointmentKind:m,status:u,serviceUuid:D,startDateTime:l()(v).format(),endDateTime:l()(f).format(),locationUuid:p,providers:[{uuid:d}],patientUuid:a,comments:c,uuid:ec?e.uuid:void 0,dateAppointmentScheduled:l()(_).format()}},eh=e=>{let{appointmentDateTime:{recurringPatternEndDate:t},recurringPatternType:a,recurringPatternPeriod:n,recurringPatternDaysOfWeek:r}=e,[o,i]=[23,59],s=t?.setHours(o,i);return{type:a,period:n,endDate:s?l()(s).format():null,daysOfWeek:r}},eD=ec?y("editAppointment","Edit appointment"):y("createNewAppointment","Create new appointment");return S?r().createElement(d.Workspace2,{title:eD},r().createElement(m.OuH,{className:"-esm-appointments__appointments-form__loader___0pfyp",description:`${y("loading","Loading")} ...`,role:"progressbar"})):r().createElement(d.Workspace2,{title:eD,hasUnsavedChanges:es},r().createElement(m.lVW,{onSubmit:eo(eu)},c&&r().createElement(d.ExtensionSlot,{name:"patient-header-slot",state:{patient:c,patientUuid:a,hideActionsOverflow:!0}}),r().createElement(m.BJc,{className:"-esm-appointments__appointments-form__formWrapper___HnBGR",gap:6},r().createElement(m.gE_,{className:M,legendText:y("location","Location")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"location",control:et,render:({field:{onChange:e,value:t,onBlur:a,ref:n}})=>r().createElement(m.l6P,{id:"location",invalid:!!ei?.location,invalidText:ei?.location?.message,labelText:y("selectALocation","Select a location"),onChange:e,onBlur:a,ref:n,value:t},r().createElement(m.ebT,{key:"chooseLocation",text:y("chooseLocation","Choose a location"),value:""}),k?.length>0&&k.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.display,value:e.uuid})))}))),r().createElement(m.gE_,{className:M,legendText:y("service","Service")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"selectedService",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{id:"service",invalid:!!ei?.selectedService,invalidText:ei?.selectedService?.message,labelText:y("selectService","Select a service"),onBlur:e,onChange:e=>{if(ec){let t=C?.find(e=>e.name===ea("selectedService"))?.durationMins,a=C?.find(t=>t.name===e.target.value)?.durationMins;a&&t===ea("duration")&&en("duration",a)}else en("duration",C?.find(t=>t.name===e.target.value)?.durationMins);t(e)},ref:n,value:a},r().createElement(m.ebT,{key:"chooseService",text:y("chooseService","Select service"),value:""}),C?.length>0&&C.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.name,value:e.name})))}))),r().createElement(m.gE_,{className:M,legendText:y("appointmentType_title","Appointment Type")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentType",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{disabled:!Y?.length,id:"appointmentType",invalid:!!ei?.appointmentType,invalidText:ei?.appointmentType?.message,labelText:y("selectAppointmentType","Select the type of appointment"),onBlur:e,onChange:t,ref:n,value:a},r().createElement(m.ebT,{text:y("chooseAppointmentType","Choose appointment type"),value:""}),Y?.length>0&&Y.map(e=>r().createElement(m.ebT,{key:e,text:y(e),value:e})))}))),r().createElement(m.gE_,{className:M,legendText:y("recurringAppointment","Recurring Appointment")},r().createElement("div",null,r().createElement(m.lMk,{id:"recurringToggle",labelB:y("yes","Yes"),labelA:y("no","No"),labelText:y("isRecurringAppointment","Is this a recurring appointment?"),onClick:()=>U(!F)}))),r().createElement(m.gE_,{className:M,legendText:y("dateTime","Appointment time")},r().createElement("div",{className:"-esm-appointments__appointments-form__dateTimeFields___GHrdS"},F&&r().createElement("div",{className:I},B&&r().createElement(i.xI,{name:"isAllDayAppointment",control:et,render:({field:{value:e,onChange:t}})=>r().createElement(m.lMk,{id:"allDayToggle",labelA:y("no","No"),labelB:y("yes","Yes"),labelText:y("allDay","All day"),toggled:e,onToggle:t})}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentDateTime",control:et,render:({field:{onChange:e,value:t},fieldState:a})=>r().createElement(d.OpenmrsDateRangePicker,{value:t.startDate&&t.recurringPatternEndDate?[t.startDate,t.recurringPatternEndDate]:null,onChange:a=>{let[n,r]=a;e({...t,startDate:n,startDateText:n?l()(n).format(E.i$):"",recurringPatternEndDate:r,recurringPatternEndDateText:r?l()(r).format(E.i$):""})},startName:"start",endName:"end",id:"appointmentRecurringDateRangePicker","data-testid":"appointmentRecurringDateRangePicker",labelText:y("dateRange","Set date range"),invalid:!!a?.error?.message,invalidText:a?.error?.message,isRequired:!0})})),!er("isAllDayAppointment")&&r().createElement(R,{t:y,control:et,errors:ei}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"recurringPatternPeriod",control:et,render:({field:{onBlur:e,onChange:t,value:a}})=>r().createElement(m.Q7x,{hideSteppers:!0,id:"repeatNumber",min:1,max:356,label:y("repeatEvery","Repeat every"),invalidText:y("invalidNumber","Number is not valid"),value:a,onBlur:e,onChange:(e,a)=>{let n=a?.value??e.target.value;t(""===n?null:Number(n))}})})),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"recurringPatternType",control:et,render:({field:{onChange:e,value:t}})=>r().createElement(m.zWQ,{"aria-label":y("period","Period"),name:"radio-button-group",onChange:t=>e(t),valueSelected:t},r().createElement(m.aaP,{labelText:y("day","Day"),value:"DAY",id:"radioDay"}),r().createElement(m.aaP,{labelText:y("week","Week"),value:"WEEK",id:"radioWeek"}))})),"WEEK"===er("recurringPatternType")&&r().createElement("div",null,r().createElement(i.xI,{name:"selectedDaysOfWeekText",control:et,defaultValue:ed,render:({field:{onChange:e}})=>r().createElement(m.KFt,{className:"-esm-appointments__appointments-form__weekSelect___AscGq",id:"daysOfWeek",initialSelectedItems:E.Mq.filter(e=>ea("recurringPatternDaysOfWeek").includes(e.id)),items:E.Mq,itemToString:e=>e?y(e.labelCode,e.label):"",label:ea("selectedDaysOfWeekText"),onChange:t=>{e(t),en("selectedDaysOfWeekText",t?.selectedItems?.length<1?y("daysOfWeek","Days of the week"):t.selectedItems.map(e=>e.label).join(", ")),en("recurringPatternDaysOfWeek",t.selectedItems.map(e=>e.id))},selectionFeedback:"top-after-reopen",sortItems:e=>[...e].sort((e,t)=>e.order-t.order)})}))),!F&&r().createElement("div",{className:I},B&&r().createElement(i.xI,{name:"isAllDayAppointment",control:et,render:({field:{value:e,onChange:t}})=>r().createElement(m.lMk,{id:"allDayToggle",labelA:y("no","No"),labelB:y("yes","Yes"),labelText:y("allDay","All day"),toggled:e,onToggle:t})}),r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentDateTime",control:et,render:({field:e,fieldState:t})=>r().createElement(d.OpenmrsDatePicker,{"data-testid":"datePickerInput",id:"datePickerInput",invalid:!!t?.error?.message,invalidText:t?.error?.message,labelText:y("date","Date"),onBlur:e.onBlur,onChange:t=>{e.onChange({...e.value,startDate:t})},style:{width:"100%"},value:e.value.startDate})})),!er("isAllDayAppointment")&&r().createElement(R,{t:y,control:et,errors:ei})))),ea("selectedService")&&r().createElement(m.gE_,{className:M,legendText:""},r().createElement(d.ResponsiveWrapper,null,r().createElement(N,{appointmentDate:er("appointmentDateTime").startDate,onWorkloadDateChange:e=>{en("appointmentDateTime",{...ea("appointmentDateTime"),startDate:e})},selectedService:er("selectedService")}))),ec?r().createElement(m.gE_,{className:M,legendText:y("appointmentStatus","Appointment Status")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentStatus",control:et,render:({field:{onBlur:e,onChange:t,value:a,ref:n}})=>r().createElement(m.l6P,{id:"appointmentStatus",invalid:!!ei?.appointmentStatus,invalidText:ei?.appointmentStatus?.message,labelText:y("selectAppointmentStatus","Select status"),onBlur:e,onChange:t,ref:n,value:a},r().createElement(m.ebT,{key:"selectAppointmentStatus",text:y("selectAppointmentStatus","Select status"),value:""}),P?.length>0&&P.map(e=>r().createElement(m.ebT,{key:e,text:y(e),value:e})))}))):null,r().createElement(m.gE_,{className:M,legendText:y("provider","Provider")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"provider",control:et,render:({field:{onChange:e,value:t,onBlur:a,ref:n}})=>r().createElement(m.l6P,{id:"provider",invalidText:"Required",labelText:y("selectProvider","Select a provider"),onChange:e,onBlur:a,ref:n,value:t},r().createElement(m.ebT,{key:"chooseProvider",text:y("chooseProvider","Choose a provider"),value:""}),w?.providers?.length>0&&w?.providers?.map(e=>r().createElement(m.ebT,{key:e.uuid,text:e.display,value:e.uuid})))}))),r().createElement(m.gE_,{className:M,legendText:y("dateAppointmentScheduled","Date appointment scheduled")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"dateAppointmentScheduled",control:et,render:({field:e,fieldState:t})=>r().createElement("div",{style:{width:"100%"}},r().createElement(d.OpenmrsDatePicker,{"data-testid":"dateAppointmentScheduledPickerInput",id:"dateAppointmentScheduledPickerInput",invalid:!!t?.error?.message,invalidText:t?.error?.message,labelText:y("dateAppointmentIssued","Date appointment issued"),maxDate:new Date,onBlur:e.onBlur,onChange:e.onChange,style:{width:"100%"},value:e.value}))}))),r().createElement(m.gE_,{className:M,legendText:y("note","Note")},r().createElement(d.ResponsiveWrapper,null,r().createElement(i.xI,{name:"appointmentNote",control:et,render:({field:{onChange:e,onBlur:t,value:a,ref:n}})=>r().createElement(m.fs1,{enableCounter:!0,id:"appointmentNote",value:a,labelText:y("appointmentNoteLabel","Write an additional note"),placeholder:y("appointmentNotePlaceholder","Write any additional points here"),maxCount:255,onChange:e,onBlur:t,ref:n})})))),r().createElement(m.Te$,{className:T?"-esm-appointments__appointments-form__tablet___763JI":"-esm-appointments__appointments-form__desktop___hy4pG"},r().createElement(m.$nd,{className:O,onClick:()=>o({discardUnsavedChanges:!0}),kind:"secondary"},y("discard","Discard")),r().createElement(m.$nd,{className:O,disabled:V,type:"submit"},y("saveAndClose","Save and close")))))}},2373(e,t,a){a.d(t,{Ee:()=>s,Xz:()=>u,_h:()=>d,o_:()=>c,tF:()=>p,w:()=>_,xh:()=>m});var n=a(3464),r=a.n(n),o=a(2895),l=a(5084),i=a(7003);let s=e=>{let t=r()(e).startOf("day").format(i.BC);return`${o.restBaseUrl}/appointments?forDate=${encodeURIComponent(t)}`},m=e=>{let t=e.getHours(),a=e.getMinutes(),n=a<10?`0${a}`:a.toString();return`${t%12||12}:${n} ${t>=12?"PM":"AM"}`},p=(e,t)=>e.isSame(t,"month"),d=e=>{let t=r()(e).startOf("month"),a=r()(e).endOf("month"),n=r()(e).daysInMonth(),o=r()(e).subtract(1,"month"),l=r()(e).add(1,"month"),i=[];for(let e=o.daysInMonth()-t.day()+1;e<=o.daysInMonth();e++)i.push(o.date(e));for(let t=1;t<=n;t++)i.push(e.date(t));let s=i.length>30?7:14;for(let e=1;e<s-a.day();e++)i.push(l.date(e));return i},c=(e,t)=>{switch(e){case"M":return t("male","Male");case"F":return t("female","Female");case"O":return t("other","Other");case"U":return t("unknown","Unknown");default:return e}},u=e=>{(0,o.launchWorkspace2)("appointments-patient-search-workspace",{initialQuery:"",workspaceTitle:e("createNewAppointment","Create new appointment"),onPatientSelected(e,t,a,n){a(i.gC,{patientUuid:t.id})}},{startVisitWorkspaceName:"appointments-start-visit-workspace"})},_=(e,t)=>{let a={[l.y2.REQUESTED]:0,[l.y2.SCHEDULED]:1,[l.y2.CHECKEDIN]:3,[l.y2.COMPLETED]:4,[l.y2.CANCELLED]:4,[l.y2.MISSED]:4};return a[e]<a[t]||t===l.y2.SCHEDULED}},9391(e,t,a){a.d(t,{Ee:()=>n.Ee,Xz:()=>n.Xz,_h:()=>n._h,o_:()=>n.o_,tF:()=>n.tF,w:()=>n.w});var n=a(2373)},6(e,t,a){a.d(t,{V:()=>i});var n=a(7125),r=a(2895),o=a(8909),l=a.n(o);function i(){let{data:e,error:t,isLoading:a}=l()(`${r.restBaseUrl}/appointmentService/all/default`,r.openmrsFetch);return{serviceTypes:(0,n.useMemo)(()=>e?.data?[...e.data].sort((e,t)=>e.name.localeCompare(t.name)):[],[e?.data]),isLoading:a,error:t}}},5370(e,t,a){a.d(t,{q:()=>i});var n=a(7125),r=a(8909),o=a(2895);let l=`${o.restBaseUrl}/appointment`;function i(){let{mutate:e}=(0,r.useSWRConfig)();return{mutateAppointments:(0,n.useCallback)(()=>e(e=>"string"==typeof e&&e.startsWith(l)||Array.isArray(e)&&e[0].startsWith(l)),[e])}}},1947(e,t,a){a.d(t,{h:()=>i});var n=a(3464),r=a.n(n),o=a(7125),l=a(2745);function i(){let e=(0,l.useParams)();return(0,o.useMemo)(()=>{if(e.date){let t=r()(e.date,"YYYY-MM-DD").startOf("day");if(t.isValid())return t.format("YYYY-MM-DD");console.warn(`Invalid date format in URL parameter: ${e.date}. Format should be YYYY-MM-DD. Falling back to current date.`)}return r()().startOf("day").format("YYYY-MM-DD")},[e.date])}}}]);
package/dist/6789.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["6789"],{5602(e){e.exports=function(e,t,n){t.prototype.isToday=function(){var e="YYYY-MM-DD",t=n();return this.format(e)===t.format(e)}}},5370(e,t,n){"use strict";n.d(t,{q:()=>r});var a=n(7125),i=n(7364),o=n(2895);let s=`${o.restBaseUrl}/appointment`;function r(){let{mutate:e}=(0,i.useSWRConfig)();return{mutateAppointments:(0,a.useCallback)(()=>e(e=>"string"==typeof e&&e.startsWith(s)||Array.isArray(e)&&e[0].startsWith(s)),[e])}}},2845(e,t,n){"use strict";n.d(t,{DM:()=>c,oo:()=>d,yI:()=>u});var a=n(3464),i=n.n(a),o=n(7364),s=n.n(o),r=n(2895),p=n(5602),m=n.n(p);i().extend(m());let l=`${r.restBaseUrl}/appointments/search`;function c(e,t,n){let{data:a,error:o,isLoading:p,isValidating:m,mutate:c}=s()(e?[l,e,t]:null,()=>(0,r.openmrsFetch)(l,{method:"POST",signal:n.signal,headers:{"Content-Type":"application/json"},body:{patientUuid:e,startDate:t}})),u=a?.data?.length?a.data:null,d=u?.sort((e,t)=>t.startDateTime>e.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isBefore(new Date().setHours(0,0,0,0))),_=u?.sort((e,t)=>e.startDateTime>t.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isAfter(i()().endOf("day"))),h=u?.sort((e,t)=>e.startDateTime>t.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isToday());return{data:a?{pastAppointments:d,upcomingAppointments:_,todaysAppointments:h}:null,error:o,isLoading:p,isValidating:m,mutate:c}}let u=async(e,t)=>{let n=Intl.DateTimeFormat().resolvedOptions().timeZone,a=i()(new Date).format("YYYY-MM-DDTHH:mm:ss.SSSZZ"),o=`${r.restBaseUrl}/appointments/${t}/status-change`;return await (0,r.openmrsFetch)(o,{body:{toStatus:e,onDate:a,timeZone:n},method:"POST",headers:{"Content-Type":"application/json"}})},d=async e=>{let t=`${r.restBaseUrl}/appointment?uuid=${e}`,{data:n}=await (0,r.openmrsFetch)(t);return n?.status}},8900(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>d});var a=n(7125),i=n.n(a),o=n(3464),s=n.n(o),r=n(5921),p=n(411),m=n(2895),l=n(2845),c=n(5370);let u={container:"-esm-appointments__patient-upcoming-appointments-card__container___d4Z5d",sectionTitle:"-esm-appointments__patient-upcoming-appointments-card__sectionTitle___0BdXi",checkbox:"-esm-appointments__patient-upcoming-appointments-card__checkbox___dnM7i",input:"-esm-appointments__patient-upcoming-appointments-card__input___p--r1",headerLabel:"-esm-appointments__patient-upcoming-appointments-card__headerLabel___zXpTz",checkboxContainer:"-esm-appointments__patient-upcoming-appointments-card__checkboxContainer___wV77d",structuredList:"-esm-appointments__patient-upcoming-appointments-card__structuredList___3uB33",inlineNotification:"-esm-appointments__patient-upcoming-appointments-card__inlineNotification___bPAgL"},d=({patientUuid:e,setVisitFormCallbacks:t,patientChartConfig:n})=>{let{t:o}=(0,r.useTranslation)(),d=(0,a.useMemo)(()=>s()().subtract(6,"month").toISOString(),[]),_=o("upcomingAppointments","Upcoming appointments"),[h,g]=(0,a.useState)(null),{mutateAppointments:f}=(0,c.q)(),T=(0,a.useMemo)(()=>new AbortController,[]);(0,a.useEffect)(()=>()=>T.abort(),[T]);let{data:C,error:b,isLoading:D}=(0,l.DM)(e,d,T),E=(0,a.useMemo)(()=>({onVisitCreatedOrUpdated:()=>h?(0,l.yI)("CheckedIn",h.uuid).then(()=>{f(),(0,m.showSnackbar)({isLowContrast:!0,kind:"success",subtitle:o("appointmentMarkedChecked","Appointment marked as Checked In"),title:o("appointmentCheckedIn","Appointment Checked In")})}).catch(e=>{(0,m.showSnackbar)({title:o("updateError","Error updating upcoming appointment"),kind:"error",isLowContrast:!1,subtitle:e?.message})}):Promise.resolve()}),[h,f,o]);(0,a.useEffect)(()=>{t(E)},[E,t]);let k=C?.todaysAppointments?.length?C?.todaysAppointments:[],A=C?.upcomingAppointments?.length?C?.upcomingAppointments:[],y=k.concat(A).filter(e=>"CheckedIn"!==e.status);return n.showUpcomingAppointments?b?i().createElement(m.ErrorCard,{headerTitle:_,error:b}):D?i().createElement("span",null,i().createElement(p.OuH,null)):y.length?i().createElement("div",null,i().createElement("div",null,i().createElement("p",{className:u.sectionTitle},_),i().createElement("span",{className:u.headerLabel},o("appointmentToFulfill","Select appointment to fulfill"))),i().createElement(p.r9c,null,i().createElement(p.AVA,null,i().createElement(p.Cvq,{head:!0},i().createElement(p.Um2,{head:!0},o("date","Date")),i().createElement(p.Um2,{head:!0},o("appointmentType","Appointment type")),i().createElement(p.Um2,{head:!0},o("action","Action")))),i().createElement(p.GRJ,null,y.map((e,t)=>i().createElement(p.Cvq,{key:t,className:u.structuredList},i().createElement(p.Um2,null,e.startDateTime?(0,m.formatDate)(new Date(e.startDateTime),{mode:"wide"}):"——"),i().createElement(p.Um2,null,e.service?e.service.name:"——"),i().createElement(p.Um2,null,i().createElement(p.aaP,{className:u.radioButton,hideLabel:!0,labelText:e.service?.name||o("appointment","Appointment"),id:`radio-${t}`,name:"appointmentRadio",value:e.uuid,checked:h===e,onChange:()=>{g(e)}}))))))):i().createElement(p.jeF,{className:u.inlineNotification,kind:"info",lowContrast:!0,subtitle:o("noUpcomingAppointments","No upcoming appointments found"),title:o("upcomingAppointments","Upcoming appointments")}):null}}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["6789"],{5602(e){e.exports=function(e,t,n){t.prototype.isToday=function(){var e="YYYY-MM-DD",t=n();return this.format(e)===t.format(e)}}},5370(e,t,n){"use strict";n.d(t,{q:()=>r});var a=n(7125),i=n(8909),o=n(2895);let s=`${o.restBaseUrl}/appointment`;function r(){let{mutate:e}=(0,i.useSWRConfig)();return{mutateAppointments:(0,a.useCallback)(()=>e(e=>"string"==typeof e&&e.startsWith(s)||Array.isArray(e)&&e[0].startsWith(s)),[e])}}},2845(e,t,n){"use strict";n.d(t,{DM:()=>c,oo:()=>d,yI:()=>u});var a=n(3464),i=n.n(a),o=n(8909),s=n.n(o),r=n(2895),p=n(5602),m=n.n(p);i().extend(m());let l=`${r.restBaseUrl}/appointments/search`;function c(e,t,n){let{data:a,error:o,isLoading:p,isValidating:m,mutate:c}=s()(e?[l,e,t]:null,()=>(0,r.openmrsFetch)(l,{method:"POST",signal:n.signal,headers:{"Content-Type":"application/json"},body:{patientUuid:e,startDate:t}})),u=a?.data?.length?a.data:null,d=u?.sort((e,t)=>t.startDateTime>e.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isBefore(new Date().setHours(0,0,0,0))),_=u?.sort((e,t)=>e.startDateTime>t.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isAfter(i()().endOf("day"))),h=u?.sort((e,t)=>e.startDateTime>t.startDateTime?1:-1)?.filter(({status:e})=>"Cancelled"!==e)?.filter(({startDateTime:e})=>i()(new Date(e).toISOString()).isToday());return{data:a?{pastAppointments:d,upcomingAppointments:_,todaysAppointments:h}:null,error:o,isLoading:p,isValidating:m,mutate:c}}let u=async(e,t)=>{let n=Intl.DateTimeFormat().resolvedOptions().timeZone,a=i()(new Date).format("YYYY-MM-DDTHH:mm:ss.SSSZZ"),o=`${r.restBaseUrl}/appointments/${t}/status-change`;return await (0,r.openmrsFetch)(o,{body:{toStatus:e,onDate:a,timeZone:n},method:"POST",headers:{"Content-Type":"application/json"}})},d=async e=>{let t=`${r.restBaseUrl}/appointment?uuid=${e}`,{data:n}=await (0,r.openmrsFetch)(t);return n?.status}},8900(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>d});var a=n(7125),i=n.n(a),o=n(3464),s=n.n(o),r=n(5921),p=n(411),m=n(2895),l=n(2845),c=n(5370);let u={container:"-esm-appointments__patient-upcoming-appointments-card__container___d4Z5d",sectionTitle:"-esm-appointments__patient-upcoming-appointments-card__sectionTitle___0BdXi",checkbox:"-esm-appointments__patient-upcoming-appointments-card__checkbox___dnM7i",input:"-esm-appointments__patient-upcoming-appointments-card__input___p--r1",headerLabel:"-esm-appointments__patient-upcoming-appointments-card__headerLabel___zXpTz",checkboxContainer:"-esm-appointments__patient-upcoming-appointments-card__checkboxContainer___wV77d",structuredList:"-esm-appointments__patient-upcoming-appointments-card__structuredList___3uB33",inlineNotification:"-esm-appointments__patient-upcoming-appointments-card__inlineNotification___bPAgL"},d=({patientUuid:e,setVisitFormCallbacks:t,patientChartConfig:n})=>{let{t:o}=(0,r.useTranslation)(),d=(0,a.useMemo)(()=>s()().subtract(6,"month").toISOString(),[]),_=o("upcomingAppointments","Upcoming appointments"),[h,g]=(0,a.useState)(null),{mutateAppointments:f}=(0,c.q)(),T=(0,a.useMemo)(()=>new AbortController,[]);(0,a.useEffect)(()=>()=>T.abort(),[T]);let{data:C,error:b,isLoading:D}=(0,l.DM)(e,d,T),E=(0,a.useMemo)(()=>({onVisitCreatedOrUpdated:()=>h?(0,l.yI)("CheckedIn",h.uuid).then(()=>{f(),(0,m.showSnackbar)({isLowContrast:!0,kind:"success",subtitle:o("appointmentMarkedChecked","Appointment marked as Checked In"),title:o("appointmentCheckedIn","Appointment Checked In")})}).catch(e=>{(0,m.showSnackbar)({title:o("updateError","Error updating upcoming appointment"),kind:"error",isLowContrast:!1,subtitle:e?.message})}):Promise.resolve()}),[h,f,o]);(0,a.useEffect)(()=>{t(E)},[E,t]);let k=C?.todaysAppointments?.length?C?.todaysAppointments:[],A=C?.upcomingAppointments?.length?C?.upcomingAppointments:[],y=k.concat(A).filter(e=>"CheckedIn"!==e.status);return n.showUpcomingAppointments?b?i().createElement(m.ErrorCard,{headerTitle:_,error:b}):D?i().createElement("span",null,i().createElement(p.OuH,null)):y.length?i().createElement("div",null,i().createElement("div",null,i().createElement("p",{className:u.sectionTitle},_),i().createElement("span",{className:u.headerLabel},o("appointmentToFulfill","Select appointment to fulfill"))),i().createElement(p.r9c,null,i().createElement(p.AVA,null,i().createElement(p.Cvq,{head:!0},i().createElement(p.Um2,{head:!0},o("date","Date")),i().createElement(p.Um2,{head:!0},o("appointmentType","Appointment type")),i().createElement(p.Um2,{head:!0},o("action","Action")))),i().createElement(p.GRJ,null,y.map((e,t)=>i().createElement(p.Cvq,{key:t,className:u.structuredList},i().createElement(p.Um2,null,e.startDateTime?(0,m.formatDate)(new Date(e.startDateTime),{mode:"wide"}):"——"),i().createElement(p.Um2,null,e.service?e.service.name:"——"),i().createElement(p.Um2,null,i().createElement(p.aaP,{className:u.radioButton,hideLabel:!0,labelText:e.service?.name||o("appointment","Appointment"),id:`radio-${t}`,name:"appointmentRadio",value:e.uuid,checked:h===e,onChange:()=>{g(e)}}))))))):i().createElement(p.jeF,{className:u.inlineNotification,kind:"info",lowContrast:!0,subtitle:o("noUpcomingAppointments","No upcoming appointments found"),title:o("upcomingAppointments","Upcoming appointments")}):null}}}]);
package/dist/7209.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";(globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["7209"],{5216(e,a,s){s.r(a),s.d(a,{SWRConfig:()=>p.S,default:()=>p.u,mutate:()=>n.k,preload:()=>l.preload,unload:()=>n.l,unstable_serialize:()=>o,useSWRConfig:()=>l.useSWRConfig});var p=s(4675),n=s(4079),l=s(2372);let o=e=>(0,n.s)(e)[0]}}]);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7209.js","sources":["webpack://@openmrs/esm-appointments-app/../../node_modules/swr/dist/index/index.mjs"],"names":[],"mappings":"0VAMA,IAAM,EAAqB,AAAC,GAAM,QAAU,EAAI,CAAC,EAAE,A"}
package/dist/7654.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["7654"],{4767(e,t,n){var a={"./uk.json":["723","9072"],"./ar.json":["4132","7045"],"./ru_RU.json":["986","8359"],"./uz_UZ.json":["890","7175"],"./fr.json":["4055","6508"],"./sw_KE.json":["8618","903"],"./uz.json":["3584","6377"],"./en.json":["4300","5117"],"./ky.json":["8163","2416"],"./pl.json":["1119","6724"],"./sq.json":["8371","4928"],"./ka.json":["795","1480"],"./si.json":["6859","6904"],"./zh_TW.json":["439","556"],"./de.json":["4944","5145"],"./lg.json":["4618","8695"],"./vi.json":["9214","6371"],"./tr.json":["5241","434"],"./es_MX.json":["8349","1646"],"./tr_TR.json":["9900","1869"],"./zh_CN.json":["9879","5644"],"./en_US.json":["9569","4106"],"./he.json":["4652","2317"],"./id.json":["2690","6047"],"./ku.json":["9895","4348"],"./es.json":["3099","7912"],"./ne.json":["2146","5503"],"./ar_SY.json":["7617","282"],"./uz@Latn.json":["7097","4658"],"./bn.json":["7159","6444"],"./cs.json":["6589","7182"],"./zh.json":["5661","7742"],"./hi_IN.json":["5442","4383"],"./pt_BR.json":["4087","1877"],"./qu.json":["5173","8358"],"./ro_RO.json":["6022","3963"],"./sw.json":["9913","3378"],"./am.json":["1197","9806"],"./pt.json":["6679","5132"],"./it.json":["9538","4111"],"./km.json":["4335","5940"],"./hi.json":["6840","2881"]};function i(e){if(!n.o(a,e))return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=a[e],i=t[0];return n.e(t[1]).then(function(){return n(i)})}i.keys=()=>Object.keys(a),i.id=4767,e.exports=i},7488(e,t,n){"use strict";n.d(t,{Q:()=>o});var a=n(2895),i=n(7003);let o={allowAllDayAppointments:{_type:a.Type.Boolean,_default:!1,_description:"Whether to allow scheduling of all-day appointments (vs appointments with start time and end time)"},appointmentStatuses:{_type:a.Type.Array,_default:i.Qj,_description:`The selectable appointment statuses. Available options: ${i.Qj.join(", ")}`,_elements:{_type:a.Type.String,_description:"Status of an appointment",_validators:[a.validators.oneOf(i.Qj)]}},appointmentTypes:{_type:a.Type.Array,_default:["Scheduled"],_description:`Configurable appointment types. Available options: ${i.tL.join(", ")}`,_elements:{_type:a.Type.String,_description:"Type of an appointment",_validators:[a.validators.oneOf(i.tL)]}},checkInButton:{enabled:{_type:a.Type.Boolean,_default:!0,_description:'Whether the check-in button on the "Appointments" list should be enabled'},customUrl:{_type:a.Type.String,_default:"",_description:"Custom URL to open when clicking the check-in button (instead of the start visit form)"}},checkOutButton:{enabled:{_type:a.Type.Boolean,_default:!0,_description:'Whether the check-out button on the "Appointments" list should be enabled'},customUrl:{_type:a.Type.String,_default:"",_description:"Custom URL to open when clicking the check-out button"}},customPatientChartUrl:{_type:a.Type.String,_default:"${openmrsSpaBase}/patient/${patientUuid}/chart",_description:`Template URL that will be used when clicking on the patient name in the queues table.
2
2
  Available argument: patientUuid, openmrsSpaBase, openBase
3
- (openmrsSpaBase and openBase are available to any <ConfigurableLink>)`,_validators:[a.validators.isUrlWithTemplateParameters(["patientUuid"])]},includePhoneNumberInExcelSpreadsheet:{_type:a.Type.Boolean,_default:!1,_description:"Whether to include phone numbers in the exported Excel spreadsheet"},patientIdentifierType:{_type:a.Type.String,_default:"",_description:"The name of the patient identifier type to be used for the patient identifier field"},showUnscheduledAppointmentsTab:{_type:a.Type.Boolean,_default:!1,_description:"Whether to show the Unscheduled Appointments tab. Note that configuring this to true requires a custom unscheduledAppointment endpoint not currently available"},showEarlyAppointmentsTab:{_type:a.Type.Boolean,_default:!1,_description:"Whether to show the Early Appointments tab. Note that configuring this to true requires a custom earlyAppointment endpoint not currently available"},appointmentsTableColumns:{_type:a.Type.Array,_description:`Columns to display in the appointment table. Available options: ${i.Je.join(", ")}`,_default:["patientName","identifier","location","serviceType","dateTime","visitStartTime","status","actions"],_elements:{_type:a.Type.String,_validators:[a.validators.oneOf(i.Je)]}}}},7003(e,t,n){"use strict";n.d(t,{AO:()=>p,BC:()=>o,Je:()=>c,Mq:()=>d,Qj:()=>m,gC:()=>l,gL:()=>s,i$:()=>r,lw:()=>i,tL:()=>h});var a=n(5084);let i=`${window.spaBase}/home`,o="YYYY-MM-DDTHH:mm:ss.SSSZZ",s="Appointment Location",p="@openmrs/esm-appointments-app",l="appointments-form-workspace",r="DD/MM/YYYY",d=[{id:"MONDAY",label:"Monday",labelCode:"monday",order:0},{id:"TUESDAY",label:"Tuesday",labelCode:"tuesday",order:1},{id:"WEDNESDAY",label:"Wednesday",labelCode:"wednesday",order:2},{id:"THURSDAY",label:"Thursday",labelCode:"thursday",order:3},{id:"FRIDAY",label:"Friday",labelCode:"friday",order:4},{id:"SATURDAY",label:"Saturday",labelCode:"saturday",order:5},{id:"SUNDAY",label:"Sunday",labelCode:"sunday",order:6}],c=Object.freeze(["patientName","identifier","location","serviceType","status","dateTime","provider","actions","visitStartTime"]),m=Object.freeze([a.y2.REQUESTED,a.y2.SCHEDULED,a.y2.CHECKEDIN,a.y2.COMPLETED,a.y2.CANCELLED,a.y2.MISSED]),h=Object.freeze([a.CC.SCHEDULED,a.CC.WALKIN,a.CC.VIRTUAL])},3189(e,t,n){"use strict";n.r(t),n.d(t,{root:()=>b,batchChangeAppointmentStatusesModal:()=>N,metricsCardProvidersBooked:()=>L,appointmentsCalendarDashboardLink:()=>f,appointmentsDashboard:()=>A,homeAppointmentsTile:()=>B,patientAppointmentsDetailedSummary:()=>D,endAppointmentModal:()=>P,patientAppointmentsOverview:()=>E,startupApp:()=>u,exportedAppointmentsFormWorkspace:()=>k,earlyAppointments:()=>C,cancelAppointmentModal:()=>w,importTranslation:()=>y,patientAppointmentsSummaryDashboardLink:()=>S,metricsCardHighestVolumeService:()=>g,appointmentsFormWorkspace:()=>U,metricsCardScheduledAppointments:()=>T,patientUpcomingAppointmentsWidget:()=>v,appointmentsDashboardLink:()=>_,homeAppointments:()=>j});var a=n(2895),i=n(7488),o=n(7125),s=n.n(o),p=n(2745);let l=e=>()=>s().createElement(p.BrowserRouter,null,s().createElement(a.DashboardExtension,{path:e.path,title:e.title,basePath:e.basePath,icon:e.icon})),r={path:"appointments",slot:"clinical-appointments-dashboard-slot",title:"Appointments",basePath:`${window.spaBase}/home`},d={path:"calendar",slot:"clinical-appointments-dashboard-slot",title:"Appointments calendar",basePath:`${window.spaBase}/home`},c={slot:"patient-chart-appointments-dashboard-slot",columns:1,title:"Appointments",path:"appointments",icon:"omrs-icon-event-schedule"},m="@openmrs/esm-appointments-app",h={featureName:"appointments",moduleName:m},y=n(4767);function u(){let e=`${window.spaBase}/home/appointments`;(0,a.defineConfigSchema)(m,i.Q),(0,a.registerBreadcrumbs)([{title:"Appointments",path:e,parent:`${window.spaBase}/home`},{path:`${window.spaBase}/patient-list/:forDate/:serviceName`,title:([e,t])=>`Patient Lists / ${decodeURI(t)}`,parent:`${window.spaBase}`}])}let b=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7103"),n.e("5848"),n.e("6557"),n.e("635"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("9399"),n.e("3220"),n.e("8324")]).then(n.bind(n,4874)),h),_=(0,a.getSyncLifecycle)(l(r),h),f=(0,a.getSyncLifecycle)(l(d),h),A=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("635"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("9399"),n.e("3220"),n.e("7735")]).then(n.bind(n,9116)),h),j=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("9399"),n.e("5556")]).then(n.bind(n,7690)),h),C=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("9399"),n.e("6382")]).then(n.bind(n,256)),h),T=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("1884")]).then(n.bind(n,2567)),h),g=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("2495")]).then(n.bind(n,6482)),h),L=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("8937")]).then(n.bind(n,4096)),h),S=(0,a.getAsyncLifecycle)(async()=>({default:(0,a.createDashboard)({...c})}),h),D=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("2620")]).then(n.bind(n,7)),h),E=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("5640")]).then(n.bind(n,4299)),h),v=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("6789")]).then(n.bind(n,8900)),h),w=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("6236")]).then(n.bind(n,6199)),h),U=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("8167"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("6407"),n.e("9181")]).then(n.bind(n,1370)),h),k=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("8167"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("6407"),n.e("8981")]).then(n.bind(n,2409)),h),P=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("1465")]).then(n.bind(n,9648)),h),B=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("9443")]).then(n.bind(n,110)),h),N=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2997"),n.e("4307")]).then(n.bind(n,4350)),h)},5084(e,t,n){"use strict";n.d(t,{CC:()=>s,y2:()=>o});var a,i,o=((a={}).REQUESTED="Requested",a.SCHEDULED="Scheduled",a.CHECKEDIN="CheckedIn",a.COMPLETED="Completed",a.CANCELLED="Cancelled",a.MISSED="Missed",a),s=((i={}).SCHEDULED="Scheduled",i.WALKIN="WalkIn",i.VIRTUAL="Virtual",i)}}]);
3
+ (openmrsSpaBase and openBase are available to any <ConfigurableLink>)`,_validators:[a.validators.isUrlWithTemplateParameters(["patientUuid"])]},includePhoneNumberInExcelSpreadsheet:{_type:a.Type.Boolean,_default:!1,_description:"Whether to include phone numbers in the exported Excel spreadsheet"},patientIdentifierType:{_type:a.Type.String,_default:"",_description:"The name of the patient identifier type to be used for the patient identifier field"},showUnscheduledAppointmentsTab:{_type:a.Type.Boolean,_default:!1,_description:"Whether to show the Unscheduled Appointments tab. Note that configuring this to true requires a custom unscheduledAppointment endpoint not currently available"},showEarlyAppointmentsTab:{_type:a.Type.Boolean,_default:!1,_description:"Whether to show the Early Appointments tab. Note that configuring this to true requires a custom earlyAppointment endpoint not currently available"},appointmentsTableColumns:{_type:a.Type.Array,_description:`Columns to display in the appointment table. Available options: ${i.Je.join(", ")}`,_default:["patientName","identifier","location","serviceType","dateTime","visitStartTime","status","actions"],_elements:{_type:a.Type.String,_validators:[a.validators.oneOf(i.Je)]}}}},7003(e,t,n){"use strict";n.d(t,{AO:()=>p,BC:()=>o,Je:()=>c,Mq:()=>d,Qj:()=>m,gC:()=>l,gL:()=>s,i$:()=>r,lw:()=>i,tL:()=>h});var a=n(5084);let i=`${window.spaBase}/home`,o="YYYY-MM-DDTHH:mm:ss.SSSZZ",s="Appointment Location",p="@openmrs/esm-appointments-app",l="appointments-form-workspace",r="DD/MM/YYYY",d=[{id:"MONDAY",label:"Monday",labelCode:"monday",order:0},{id:"TUESDAY",label:"Tuesday",labelCode:"tuesday",order:1},{id:"WEDNESDAY",label:"Wednesday",labelCode:"wednesday",order:2},{id:"THURSDAY",label:"Thursday",labelCode:"thursday",order:3},{id:"FRIDAY",label:"Friday",labelCode:"friday",order:4},{id:"SATURDAY",label:"Saturday",labelCode:"saturday",order:5},{id:"SUNDAY",label:"Sunday",labelCode:"sunday",order:6}],c=Object.freeze(["patientName","identifier","location","serviceType","status","dateTime","provider","actions","visitStartTime"]),m=Object.freeze([a.y2.REQUESTED,a.y2.SCHEDULED,a.y2.CHECKEDIN,a.y2.COMPLETED,a.y2.CANCELLED,a.y2.MISSED]),h=Object.freeze([a.CC.SCHEDULED,a.CC.WALKIN,a.CC.VIRTUAL])},3189(e,t,n){"use strict";n.r(t),n.d(t,{root:()=>b,batchChangeAppointmentStatusesModal:()=>N,metricsCardProvidersBooked:()=>L,appointmentsCalendarDashboardLink:()=>f,appointmentsDashboard:()=>A,homeAppointmentsTile:()=>B,patientAppointmentsDetailedSummary:()=>D,endAppointmentModal:()=>P,patientAppointmentsOverview:()=>E,startupApp:()=>u,exportedAppointmentsFormWorkspace:()=>k,earlyAppointments:()=>C,cancelAppointmentModal:()=>w,importTranslation:()=>y,patientAppointmentsSummaryDashboardLink:()=>S,metricsCardHighestVolumeService:()=>g,appointmentsFormWorkspace:()=>U,metricsCardScheduledAppointments:()=>T,patientUpcomingAppointmentsWidget:()=>v,appointmentsDashboardLink:()=>_,homeAppointments:()=>j});var a=n(2895),i=n(7488),o=n(7125),s=n.n(o),p=n(2745);let l=e=>()=>s().createElement(p.BrowserRouter,null,s().createElement(a.DashboardExtension,{path:e.path,title:e.title,basePath:e.basePath,icon:e.icon})),r={path:"appointments",slot:"clinical-appointments-dashboard-slot",title:"Appointments",basePath:`${window.spaBase}/home`},d={path:"calendar",slot:"clinical-appointments-dashboard-slot",title:"Appointments calendar",basePath:`${window.spaBase}/home`},c={slot:"patient-chart-appointments-dashboard-slot",columns:1,title:"Appointments",path:"appointments",icon:"omrs-icon-event-schedule"},m="@openmrs/esm-appointments-app",h={featureName:"appointments",moduleName:m},y=n(4767);function u(){let e=`${window.spaBase}/home/appointments`;(0,a.defineConfigSchema)(m,i.Q),(0,a.registerBreadcrumbs)([{title:"Appointments",path:e,parent:`${window.spaBase}/home`},{path:`${window.spaBase}/patient-list/:forDate/:serviceName`,title:([e,t])=>`Patient Lists / ${decodeURI(t)}`,parent:`${window.spaBase}`}])}let b=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7103"),n.e("5848"),n.e("6557"),n.e("635"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("9399"),n.e("3220"),n.e("8324")]).then(n.bind(n,4874)),h),_=(0,a.getSyncLifecycle)(l(r),h),f=(0,a.getSyncLifecycle)(l(d),h),A=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("635"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("9399"),n.e("3220"),n.e("7735")]).then(n.bind(n,9116)),h),j=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("9399"),n.e("5556")]).then(n.bind(n,7690)),h),C=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("5848"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("9399"),n.e("6382")]).then(n.bind(n,256)),h),T=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("1884")]).then(n.bind(n,2567)),h),g=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("2495")]).then(n.bind(n,6482)),h),L=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("7103"),n.e("7226"),n.e("8937")]).then(n.bind(n,4096)),h),S=(0,a.getAsyncLifecycle)(async()=>({default:(0,a.createDashboard)({...c})}),h),D=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("2620")]).then(n.bind(n,7)),h),E=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("5640")]).then(n.bind(n,4299)),h),v=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("6789")]).then(n.bind(n,8900)),h),w=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("6236")]).then(n.bind(n,6199)),h),U=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("8167"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("6407"),n.e("9181")]).then(n.bind(n,1370)),h),k=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("8167"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("6407"),n.e("8981")]).then(n.bind(n,2409)),h),P=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("1465")]).then(n.bind(n,9648)),h),B=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("9443")]).then(n.bind(n,110)),h),N=(0,a.getAsyncLifecycle)(()=>Promise.all([n.e("1407"),n.e("7226"),n.e("8678"),n.e("2126"),n.e("4307")]).then(n.bind(n,4350)),h)},5084(e,t,n){"use strict";n.d(t,{CC:()=>s,y2:()=>o});var a,i,o=((a={}).REQUESTED="Requested",a.SCHEDULED="Scheduled",a.CHECKEDIN="CheckedIn",a.COMPLETED="Completed",a.CANCELLED="Cancelled",a.MISSED="Missed",a),s=((i={}).SCHEDULED="Scheduled",i.WALKIN="WalkIn",i.VIRTUAL="Virtual",i)}}]);
package/dist/8324.js CHANGED
@@ -1 +1 @@
1
- (globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["8324"],{5615(e){e.exports=function(e,t,a){t.prototype.isBetween=function(e,t,n,s){var o=a(e),l=a(t),r="("===(s=s||"()")[0],m=")"===s[1];return(r?this.isAfter(o,n):!this.isBefore(o,n))&&(m?this.isBefore(l,n):!this.isAfter(l,n))||(r?this.isBefore(o,n):!this.isAfter(o,n))&&(m?this.isAfter(l,n):!this.isBefore(l,n))}}},7(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>D});var n=a(7125),s=a.n(n),o=a(3464),l=a.n(o),r=a(5921),m=a(411),i=a(2895),p=a(2845),c=a(3373),_=a.n(c),d=a(7657),u=a.n(d);let v="-esm-appointments__patient-appointments-action-menu__menuItem___rJ8Ol",h=({appointment:e,patientUuid:t,launchAppointmentForm:a})=>{let{t:n}=(0,r.useTranslation)(),o="tablet"===(0,i.useLayoutType)();return s().createElement(m.Wdr,{className:"-esm-appointments__patient-appointments-action-menu__layer___QvdWM"},s().createElement(m.obU,{"aria-label":"Edit or delete appointment",size:o?"lg":"sm",flipped:!0,align:"left"},s().createElement(m.XSD,{className:v,id:"editAppointment",itemText:n("edit","Edit"),onClick:()=>{a?a(t,e):(0,i.launchWorkspace2)("appointments-form-workspace",{appointment:e,patientUuid:t})}}),s().createElement(m.XSD,{className:v,hasDivider:!0,id:"cancelAppointment",isDelete:!0,itemText:n("cancel","Cancel"),onClick:()=>{let a=(0,i.showModal)("cancel-appointment-modal",{closeCancelModal:()=>a(),appointmentUuid:e.uuid,patientUuid:t})}})))},E={layer:"-esm-appointments__patient-appointments-table__layer___3XHUe",menuItem:"-esm-appointments__patient-appointments-table__menuItem___lt5oF",text02:"-esm-appointments__patient-appointments-table__text02___YEBCA",table:"-esm-appointments__patient-appointments-table__table___6grQU"};l().extend(u());let y=({patientAppointments:e,patientUuid:t,switchedView:a,setSwitchedView:o,launchAppointmentForm:l})=>{let{t:p}=(0,r.useTranslation)(),{results:c,currentPage:d,goTo:u}=(0,i.usePagination)(e,10),v="tablet"===(0,i.useLayoutType)();(0,n.useEffect)(()=>{a&&1!==d&&u(1)},[a,u,d]);let y=(0,n.useMemo)(()=>[{key:"date",header:p("date","Date")},{key:"location",header:p("location","Location")},{key:"service",header:p("service","Service")},{key:"status",header:p("status","Status")},{key:"type",header:p("type","Type")},{key:"notes",header:p("notes","Notes")}],[p]),w=(0,n.useMemo)(()=>c?.map(e=>({id:e.uuid,date:e.startDateTime?(0,i.formatDatetime)(new Date(e.startDateTime),{mode:"wide"}):"——",location:e?.location?.name?e?.location?.name:"——",service:e.service.name,status:e.status,type:e.appointmentKind?e.appointmentKind:"——",notes:e.comments?e.comments:"——"})),[c]);return s().createElement("div",null,s().createElement(m.bQt,{rows:w,headers:y,isSortable:!0,size:v?"lg":"sm",useZebraStyles:!0},({rows:e,headers:a,getHeaderProps:n,getTableProps:o})=>s().createElement(m.K3K,null,s().createElement(m.XIK,{className:E.table,...o()},s().createElement(m.ndF,null,s().createElement(m.Hjg,null,a.map(e=>s().createElement(m.A0N,{className:_()(E.productiveHeading01,E.text02),...n({header:e})},e.header)),s().createElement(m.A0N,null))),s().createElement(m.BFY,null,e.map((e,a)=>s().createElement(m.Hjg,{key:e.id},e.cells.map(e=>s().createElement(m.nA6,{key:e.id},e.value?.content??e.value)),s().createElement(m.nA6,{className:"cds--table-column-menu"},s().createElement(h,{appointment:c[a],patientUuid:t,launchAppointmentForm:l})))))))),s().createElement(i.Pagination,{currentItems:c.length,totalItems:e.length,onPageNumberChange:({page:e})=>{o(!1),u(e)},pageNumber:d,pageSize:10}))},w="-esm-appointments__patient-appointments-detailed-summary__content___UXb5t",C="-esm-appointments__patient-appointments-detailed-summary__tile___1k6FD",D=({patientUuid:e,launchAppointmentForm:t})=>{let{t:a}=(0,r.useTranslation)(),o=a("appointments","Appointments"),c="tablet"===(0,i.useLayoutType)(),[_,d]=(0,n.useState)(!1),u=t||((e,t)=>{(0,i.launchWorkspace2)("appointments-form-workspace",{patientUuid:e,appointment:t})}),[v,h]=(0,n.useState)(0),E=(0,n.useMemo)(()=>l()().subtract(6,"month").toISOString(),[]),{data:D,error:k,isLoading:N,isValidating:g}=(0,p.DM)(e,E,(0,n.useMemo)(()=>new AbortController,[]));return N?s().createElement(m.OOb,{role:"progressbar",compact:!c,zebra:!0}):k?s().createElement(i.ErrorCard,{headerTitle:o,error:k}):D&&Object.keys(D)?.length?s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__widgetCard___NRC+0"},s().createElement(i.CardHeader,{title:o},g?s().createElement("span",null,s().createElement(m.OuH,null)):null,s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__contentSwitcherWrapper___kUL1Q"},s().createElement(m.Tps,{size:c?"md":"sm",selectedIndex:v,onChange:({index:e})=>{h(e),d(!0)}},s().createElement(m.dOG,{name:"upcoming"},a("upcoming","Upcoming")),s().createElement(m.dOG,{name:"today"},a("today","Today")),s().createElement(m.dOG,{name:"past"},a("past","Past"))),s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__divider___t1P0L"},"|"),s().createElement(m.$nd,{kind:"ghost",renderIcon:e=>s().createElement(i.AddIcon,{size:16,...e}),iconDescription:a("addAppointments","Add Appointments"),onClick:()=>u(e)},a("add","Add")))),0===v?D.upcomingAppointments?.length?s().createElement(y,{patientAppointments:D?.upcomingAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noUpcomingAppointmentsForPatient","There are no upcoming appointments to display for this patient")))):1===v?D.todaysAppointments?.length?s().createElement(y,{patientAppointments:D?.todaysAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noCurrentAppointments","There are no appointments scheduled for today to display for this patient")))):2===v?D.pastAppointments?.length?s().createElement(y,{patientAppointments:D?.pastAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noPastAppointments","There are no past appointments to display for this patient")))):void 0):void 0}},4299(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>d});var n=a(7125),s=a.n(n),o=a(411),l=a(2745),r=a(2895),m=a(7),i=a(5848),p=a(5921);let c={patientBanner:"-esm-appointments__patient-appointments-header__patientBanner___ZB+Tp",patientAvatar:"-esm-appointments__patient-appointments-header__patientAvatar___mPs+Y",divider:"-esm-appointments__patient-appointments-header__divider___bc+VD",backButton:"-esm-appointments__patient-appointments-header__backButton___uXOql",titleContent:"-esm-appointments__patient-appointments-header__titleContent___eyA4H"},_=({patient:e})=>{let{t}=(0,p.useTranslation)(),a=(0,l.useNavigate)(),n=(0,r.getPatientName)(e);return s().createElement("header",null,s().createElement("div",{className:c.titleContainer},s().createElement(o.$nd,{className:c.backButton,iconDescription:t("back","Back"),kind:"ghost",onClick:()=>a(-1),renderIcon:i.nk,size:"lg"},s().createElement("span",null,t("back","Back")))),s().createElement("div",{className:c.divider}),s().createElement("div",{className:c.patientBanner},s().createElement("div",{className:c.patientAvatar},s().createElement(r.PatientPhoto,{patientUuid:e.id,patientName:n})),s().createElement(r.PatientBannerPatientInfo,{patient:e})),s().createElement("div",{className:c.divider}))},d=()=>{let e=(0,l.useParams)(),t=(0,r.usePatient)(e.patientUuid),a=(0,r.useLayoutType)();return t.isLoading?s().createElement(o.OOb,{role:"progressbar",compact:(0,r.isDesktop)(a),zebra:!0}):s().createElement("div",{className:"-esm-appointments__patient-appointments-overview__patientAppointmentsOverview___yVu1O"},s().createElement(_,{patient:t.patient}),s().createElement(m.default,{patientUuid:t.patient.id,launchAppointmentForm:(e,t)=>{(0,r.launchWorkspace2)("appointments-form-workspace",{patientUuid:e,appointment:t})}}),s().createElement(r.WorkspaceContainer,{overlay:!0,contextKey:`patient/${e.patientUuid}`}))}},4874(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>H});var n=a(7125),s=a.n(n),o=a(2745),l=a(3464),r=a.n(l),m=a(5921),i=a(2895),p=a(7364),c=a.n(p),_=a(7003),d=a(6),u=a(5881),v=a(1947),h=a(411),E=a(529),y=a(5740);function w(){let e=(0,i.getLocale)()||"en",t=(0,y.a7)(e)??"gregory";return{locale:e,calendar:t}}let C=({viewMode:e,calendarSelectedDate:t,onViewModeChange:a,onPrev:o,onNext:l})=>{let{t:r}=(0,m.useTranslation)(),{locale:i,calendar:p}=w(),c=(0,n.useMemo)(()=>{let a=t.format("YYYY-MM-DD");return"monthly"===e?new Intl.DateTimeFormat(i,{year:"numeric",month:"long",calendar:p}).format(new Date(a+"T00:00:00")):new Intl.DateTimeFormat(i,{year:"numeric",month:"long",day:"numeric",calendar:p}).format(new Date(a+"T00:00:00"))},[e,t,i,p]),_=+("monthly"!==e),d=["monthly","daily"];return s().createElement("div",{className:"-esm-appointments__calendar-header__calendarHeaderContainer___iFU-b"},s().createElement("div",{className:"-esm-appointments__calendar-header__navigationSection___XiJpX"},s().createElement("div",{className:"-esm-appointments__calendar-header__navGroup___Vv+qz"},s().createElement("div",{className:"-esm-appointments__calendar-header__navButtonGroup___O4lIZ"},s().createElement(h.$nd,{hasIconOnly:!0,kind:"ghost",size:"sm",renderIcon:E.JG,iconDescription:r("previous","Previous"),onClick:o}),s().createElement("span",{className:"-esm-appointments__calendar-header__navDivider___gqPg+"}),s().createElement(h.$nd,{hasIconOnly:!0,kind:"ghost",size:"sm",renderIcon:E.c_,iconDescription:r("next","Next"),onClick:l})),s().createElement("span",{className:"-esm-appointments__calendar-header__dateLabel___hw3Cj"},c))),s().createElement("div",{className:"-esm-appointments__calendar-header__switcherSection___6m5zC"},s().createElement(h.Tps,{selectedIndex:_,size:"sm",onChange:({index:e})=>a(d[e])},s().createElement(h.dOG,{name:"monthly",text:r("monthly","Monthly")}),s().createElement(h.dOG,{name:"daily",text:r("daily","Daily")}))))};var D=a(5615),k=a.n(D),N=a(9391);let g=()=>{let{locale:e,calendar:t}=w(),a=Array.from({length:7},(a,n)=>{let s=new Date(1970,0,4+n);return new Intl.DateTimeFormat(e,{weekday:"short",calendar:t}).format(s)});return s().createElement("div",{className:"-esm-appointments__monthly-header__workLoadCard___ntWaB"},a.map((e,t)=>s().createElement("div",{key:t,className:"-esm-appointments__monthly-header__dowCell___z2lvs"},e.toUpperCase())))};var A=a(3373),b=a.n(A);let f={"monthly-cell":"-esm-appointments__monthly-view-workload__monthly-cell___PmcV1","monthly-cell-disabled":"-esm-appointments__monthly-view-workload__monthly-cell-disabled___v2teZ","monthly-cell-clickable":"-esm-appointments__monthly-view-workload__monthly-cell-clickable___oMT7G","monthly-cell-today":"-esm-appointments__monthly-view-workload__monthly-cell-today___mgsc3",popoverOpen:"-esm-appointments__monthly-view-workload__popoverOpen___TN3Op",cellHeader:"-esm-appointments__monthly-view-workload__cellHeader___ElmT4",dateNumber:"-esm-appointments__monthly-view-workload__dateNumber___YAFn0",dateNumberOtherMonth:"-esm-appointments__monthly-view-workload__dateNumberOtherMonth___CvDxa",todayCircle:"-esm-appointments__monthly-view-workload__todayCircle___zUSBs",totalBadge:"-esm-appointments__monthly-view-workload__totalBadge___Yw4DT",currentData:"-esm-appointments__monthly-view-workload__currentData___7XaPQ",serviceArea:"-esm-appointments__monthly-view-workload__serviceArea___aCrzg",serviceName:"-esm-appointments__monthly-view-workload__serviceName___sIYN8",serviceCount:"-esm-appointments__monthly-view-workload__serviceCount___4u1or",swatch:"-esm-appointments__monthly-view-workload__swatch___uVAZX",showMoreItems:"-esm-appointments__monthly-view-workload__showMoreItems___cC0Ra",smallDesktop:"-esm-appointments__monthly-view-workload__smallDesktop___q5hai",largeDesktop:"-esm-appointments__monthly-view-workload__largeDesktop___k7Ncd",popoverCard:"-esm-appointments__monthly-view-workload__popoverCard___HrtBP",popoverHeader:"-esm-appointments__monthly-view-workload__popoverHeader___AuHAn",popoverTitleGroup:"-esm-appointments__monthly-view-workload__popoverTitleGroup___HFmVg",popoverDate:"-esm-appointments__monthly-view-workload__popoverDate___mCmck",popoverSubtitle:"-esm-appointments__monthly-view-workload__popoverSubtitle___uvJXe",popoverCloseBtn:"-esm-appointments__monthly-view-workload__popoverCloseBtn___x1Nb1",popoverDivider:"-esm-appointments__monthly-view-workload__popoverDivider___u6An+",popoverServiceList:"-esm-appointments__monthly-view-workload__popoverServiceList___D3Q6B",popoverServiceRow:"-esm-appointments__monthly-view-workload__popoverServiceRow___XSMxo",popoverServiceName:"-esm-appointments__monthly-view-workload__popoverServiceName___04MD7",popoverServiceCount:"-esm-appointments__monthly-view-workload__popoverServiceCount___ratXG",openDayViewLink:"-esm-appointments__monthly-view-workload__openDayViewLink___j085M"},M=s().memo(({dateTime:e,events:t,eventsMap:a,calendarSelectedDate:o,showAllServices:l=!1,onSelectDate:p,index:c,serviceColorMap:_})=>{let{t:d}=(0,m.useTranslation)(),u=(0,i.useLayoutType)(),[v,y]=(0,n.useState)(!1),w=(0,n.useRef)(null),C=(0,n.useMemo)(()=>e.isSame(r()(),"day"),[e]),D=(0,n.useMemo)(()=>(0,N.tF)(e,o),[e,o]),k=(0,n.useMemo)(()=>{let t=void 0!==c?c>=7:e.date()>7,a=void 0!==c&&c%7>=4;return t?a?"top-right":"top-left":a?"bottom-right":"bottom-left"},[c,e]),g=(0,n.useMemo)(()=>({dayNumber:e.format("D"),popoverDate:e.format("ddd, MMM D"),isoDate:e.format("YYYY-MM-DD")}),[e]),A=(0,n.useMemo)(()=>a?a.get(g.isoDate):t?.find(e=>r()(e.appointmentDate)?.format("YYYY-MM-DD")===g.isoDate),[t,a,g.isoDate]),M=A?.services?.reduce((e,{count:t=0})=>e+t,0)??0,S="small-desktop"===u?2:3,B=(0,n.useMemo)(()=>A?.services?l?A.services:A.services.slice(0,S):[],[A,l,S]),T=(0,n.useMemo)(()=>!!A?.services&&!l&&A.services.length>S,[A?.services,l,S]),F=(0,n.useCallback)(e=>{w.current&&!w.current.contains(e.target)&&y(!1)},[]);return(0,n.useEffect)(()=>(v?document.addEventListener("mousedown",F):document.removeEventListener("mousedown",F),()=>document.removeEventListener("mousedown",F)),[v,F]),s().createElement(h.AMh,{open:v,align:k,ref:w,"data-testid":"popover-container"},s().createElement("div",{onClick:()=>{0!==M&&y(e=>!e)},"data-testid":`workload-cell-${g.isoDate}`,"data-popover-open":v,className:b()(f[D?"monthly-cell":"monthly-cell-disabled"],{[f["monthly-cell-today"]]:C,[f["monthly-cell-clickable"]]:M>0,[f.popoverOpen]:v},!l&&{[f.smallDesktop]:"small-desktop"===u,[f.largeDesktop]:"small-desktop"!==u})},s().createElement("div",{className:f.cellHeader},C?s().createElement("span",{className:f.todayCircle,"data-testid":"today-indicator"},g.dayNumber):s().createElement("span",{className:D?f.dateNumber:f.dateNumberOtherMonth,"data-testid":D?"current-month-day":"other-month-day"},g.dayNumber),M>0&&s().createElement("span",{className:f.totalBadge},M," ",1===M?d("appt","appt"):d("appts","appts"))),A?.services&&A.services.length>0&&s().createElement("div",{className:f.currentData,"data-testid":"current-data"},B.map(({serviceName:e,serviceUuid:t,count:a},n)=>{let o=_?.get(t??"");return s().createElement("div",{key:`${t}-${n}`,className:f.serviceArea,"data-testid":`service-area-${t}`,style:o?{backgroundColor:`${o}21`}:void 0},s().createElement("span",{className:f.swatch,style:{backgroundColor:o},"data-testid":`service-swatch-${t}`}),s().createElement("span",{className:f.serviceName},e),s().createElement("span",{className:f.serviceCount},a))}),T&&s().createElement("button",{className:f.showMoreItems,onClick:e=>{e.stopPropagation(),y(!0)}},"+",A.services.length-S," ",d("more","more")))),s().createElement(h.hlN,null,s().createElement("div",{className:f.popoverCard,onClick:e=>e.stopPropagation(),"data-testid":"popover-card"},s().createElement("div",{className:f.popoverHeader},s().createElement("div",{className:f.popoverTitleGroup},s().createElement("span",{className:f.popoverDate},g.popoverDate),s().createElement("span",{className:f.popoverSubtitle},d("appointmentCount","{{count}} appointment(s)",{count:M}))),s().createElement("button",{className:f.popoverCloseBtn,onClick:()=>y(!1),"aria-label":d("close","Close")},s().createElement(E.bm,{size:16}))),s().createElement("div",{className:f.popoverDivider}),s().createElement("div",{className:f.popoverServiceList,"data-testid":"popover-service-list"},A?.services?.map(({serviceName:e,serviceUuid:t,count:a},n)=>{let o=_?.get(t??"");return s().createElement("div",{key:`${t}-${n}`,className:f.popoverServiceRow},s().createElement("span",{className:f.swatch,style:{backgroundColor:o}}),s().createElement("span",{className:f.popoverServiceName},e),s().createElement("span",{className:f.popoverServiceCount},a))})),s().createElement("div",{className:f.popoverDivider}),s().createElement("button",{className:f.openDayViewLink,onClick:()=>{y(!1),p?.(g.isoDate)}},d("openDayView","Open day view")," →"))))});r().extend(k());let S=({events:e,calendarSelectedDate:t,onSelectDate:a,serviceColorMap:o})=>{let l=(0,n.useMemo)(()=>(0,N._h)(t),[t]),m=(0,n.useMemo)(()=>{let t=new Map;return e?.forEach(e=>{e.appointmentDate&&t.set(r()(e.appointmentDate).format("YYYY-MM-DD"),e)}),t},[e]);return s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__calendarViewContainer___kGUkC"},s().createElement(g,null),s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__wrapper___T9NBl"},s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__monthlyCalendar___6R4Av"},l.map((n,l)=>s().createElement(M,{key:l,index:l,dateTime:n,events:e,eventsMap:m,calendarSelectedDate:t,onSelectDate:a,serviceColorMap:o})))))};var B=a(2373);let T={Scheduled:"blue",CheckedIn:"teal",Completed:"green",Missed:"red",Cancelled:"warm-gray",Requested:"magenta"},F=["#73A947","#1990DC","#925FA2","#EB8A28","#A11B4C","#EF4B28","#DFBD4B","#197440","#3747A7","#81249B","#CF2255","#E96321","#B9C343","#198A7D","#6E7BC0","#6D4C41","#CC1514","#A993D2","#565656","#DF736A","#F3B83C","#36AC72","#3C79EB","#9D9084","#1ABC9C","#2ECC71","#3498DB","#9B59B6","#34495E","#16A085","#27AE60","#2980B9","#8E44AD","#aaa69d","#C0392B","#D35400","#F39C12","#E74C3C","#E67E22","#F1C40F","#F78FB3","#574B90","#786FA6","#F19066","#F5CD79","#546DE5","#C44569","#63CDDA","#596275","#3DC1D3","#CF6A87","#38ADA9","#079992","#0A3D62","#1E3799","#FA983A","#E55039","#40407A","#B33939"],O=Array.from({length:24},(e,t)=>t),I="-esm-appointments__daily-calendar-view__container___hUjyu",U=({appointment:e,serviceColorMap:t})=>{let a=t?.get(e.service?.uuid??""),o=T[e.status]??"gray",l=(0,n.useMemo)(()=>null==e.startDateTime?"—":(0,B.xh)(new Date(e.startDateTime)),[e.startDateTime]);return s().createElement("div",{className:"-esm-appointments__daily-calendar-view__card___6GmUm",style:{borderLeftColor:a}},s().createElement("span",{className:"-esm-appointments__daily-calendar-view__cardTime___h+X0K"},l),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardDetails___L7Kda"},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardName___q-oX7"},e.patient?.name??"—"),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardService___dtogK",style:{color:a}},e.service.name)),s().createElement(h.vwO,{type:o,size:"sm"},e.status))},L=({calendarSelectedDate:e,serviceColorMap:t})=>{let{t:a}=(0,m.useTranslation)(),{appointments:o,isLoading:l}=(e=>{let t=e?(0,N.Ee)(e):null,{data:a,isLoading:n,error:s}=c()(t,i.openmrsFetch,{errorRetryCount:2});return{appointments:[...a?.data??[]].sort((e,t)=>(e.startDateTime??0)-(t.startDateTime??0)),isLoading:n,error:s}})(e.format("YYYY-MM-DD")),r=(0,n.useMemo)(()=>O.map(e=>({hr:e,appts:o.filter(t=>null!=t.startDateTime&&new Date(t.startDateTime).getHours()===e)})).filter(e=>e.appts.length>0),[o]);return l?s().createElement("div",{className:I},s().createElement(h.OuH,{description:a("loadingAppointments","Loading appointments…")})):s().createElement("div",{className:I},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__heading___8TafS"},s().createElement("p",{className:"-esm-appointments__daily-calendar-view__subtitle___d1qOm"},0===o.length?a("noAppointments","No appointments scheduled"):a("appointmentCount","{{count}} appointment(s)",{count:o.length}))),r.map(({hr:e,appts:a})=>s().createElement("div",{key:e,className:"-esm-appointments__daily-calendar-view__hourRow___Q0YAJ"},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__hourLabel___EswNK"},`${e%12||12} ${e<12?"AM":"PM"}`),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__hourSlot___eDK1l"},a.map(e=>s().createElement(U,{key:e.uuid,appointment:e,serviceColorMap:t}))))))},Y=({services:e,serviceColorMap:t})=>{let{t:a}=(0,m.useTranslation)();return s().createElement("div",{className:"-esm-appointments__services-legend__servicesLegend___zNQHF","data-testid":"services-legend"},e.length>0&&s().createElement(s().Fragment,null,s().createElement("span",{className:"-esm-appointments__services-legend__legendTitle___LIHDd"},a("services","Services")),s().createElement("div",{className:"-esm-appointments__services-legend__legendItems___4QoGu"},e.map(({name:e,uuid:a})=>{let n=t?.get(a);return s().createElement("div",{key:a,className:"-esm-appointments__services-legend__legendItem___3eep+","data-testid":`legend-item-${a}`},s().createElement("span",{className:"-esm-appointments__services-legend__swatch___3jB92",style:{backgroundColor:n},"data-testid":`legend-swatch-${a}`}),s().createElement("span",null,e))}))))},P=()=>{let{t:e}=(0,m.useTranslation)(),t=(0,v.h)(),[a,o]=(0,n.useState)("monthly"),[l,p]=(0,n.useState)(r()(t)),{calendarEvents:h}=((e,t)=>{var a,n;let{startDate:s,endDate:o}=(a=e,n=t,a?"daily"===n?{startDate:r()(a).startOf("day").format(_.BC),endDate:r()(a).endOf("day").format(_.BC)}:{startDate:r()(a).startOf("month").format(_.BC),endDate:r()(a).endOf("month").format(_.BC)}:{startDate:null,endDate:null}),l=`${i.restBaseUrl}/appointment/appointmentSummary?startDate=${s}&endDate=${o}`,{data:m,error:p,isLoading:d}=c()(s&&o?l:null,i.openmrsFetch,{errorRetryCount:2});return{isLoading:d,calendarEvents:m?.data.reduce((e,t)=>{let a=t.appointmentService.name,n=t.appointmentService.uuid;return Object.entries(t.appointmentCountMap).forEach(([t,s])=>{let o=e.find(e=>e.appointmentDate===t);o?o.services.push({serviceName:a,serviceUuid:n,count:s.allAppointmentsCount}):e.push({appointmentDate:t,services:[{serviceName:a,serviceUuid:n,count:s.allAppointmentsCount}]})}),e},[])??[],error:p}})(l.toISOString(),a),{serviceTypes:E}=(0,d.V)(),y=(0,n.useMemo)(()=>(function(e){let t=new Map,a=0;for(let{uuid:n}of e)!n||t.has(n)||(a<F.length?t.set(n,F[a++]):t.set(n,function(e){let t=0;for(let a=0;a<e.length;a++)t=(t<<5)-t+e.charCodeAt(a)|0;return function(e){let t=.42,a=65*Math.min(t,1-t)/100,n=n=>{let s=(n+e/30)%12;return Math.round(255*(t-a*Math.max(Math.min(s-3,9-s,1),-1))).toString(16).padStart(2,"0").toUpperCase()};return`#${n(0)}${n(8)}${n(4)}`}(Math.abs(t)%360)}(n)));return t})(E),[E]),w=(0,n.useCallback)(()=>{"monthly"===a?p(e=>e.subtract(1,"month")):p(e=>e.subtract(1,"day"))},[a]),D=(0,n.useCallback)(()=>{"monthly"===a?p(e=>e.add(1,"month")):p(e=>e.add(1,"day"))},[a]),k=(0,n.useCallback)(e=>{o(e)},[]),N=(0,n.useCallback)(e=>{p(r()(e)),o("daily")},[]),g=(0,n.useMemo)(()=>{let e=new Map;return h?.forEach(t=>{t.services?.forEach(t=>{let a=t.serviceUuid||t.serviceName;t.serviceName&&a&&!e.has(a)&&e.set(a,{name:t.serviceName,uuid:t.serviceUuid??a})})}),Array.from(e.values())},[h]);return s().createElement("div",{"data-testid":"appointments-calendar",className:"-esm-appointments__appointments-calendar-view-view__backgroundColor___3wUEF"},s().createElement(u.A,{title:e("calendar","Calendar"),isCalendarView:!0}),s().createElement(C,{viewMode:a,calendarSelectedDate:l,onViewModeChange:k,onPrev:w,onNext:D}),"monthly"===a&&s().createElement(S,{events:h,calendarSelectedDate:l,onSelectDate:N,serviceColorMap:y}),"daily"===a&&s().createElement(L,{calendarSelectedDate:l,serviceColorMap:y}),s().createElement(Y,{services:g,serviceColorMap:y}))};var $=a(9116),x=a(4299);let H=()=>{let e=window.getOpenmrsSpaBase()+"home/appointments";return s().createElement("main",null,s().createElement(o.BrowserRouter,{basename:e},s().createElement(o.Routes,null,s().createElement(o.Route,{path:"/",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/:date",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/:date/:serviceType",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/calendar",element:s().createElement(P,null)}),s().createElement(o.Route,{path:"/calendar/:date",element:s().createElement(P,null)}),s().createElement(o.Route,{path:"/patient/:patientUuid",element:s().createElement(x.default,null)}))))}}}]);
1
+ (globalThis.webpackChunk_openmrs_esm_appointments_app=globalThis.webpackChunk_openmrs_esm_appointments_app||[]).push([["8324"],{5615(e){e.exports=function(e,t,a){t.prototype.isBetween=function(e,t,n,s){var o=a(e),l=a(t),r="("===(s=s||"()")[0],m=")"===s[1];return(r?this.isAfter(o,n):!this.isBefore(o,n))&&(m?this.isBefore(l,n):!this.isAfter(l,n))||(r?this.isBefore(o,n):!this.isAfter(o,n))&&(m?this.isAfter(l,n):!this.isBefore(l,n))}}},7(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>D});var n=a(7125),s=a.n(n),o=a(3464),l=a.n(o),r=a(5921),m=a(411),i=a(2895),p=a(2845),c=a(3373),_=a.n(c),d=a(7657),u=a.n(d);let v="-esm-appointments__patient-appointments-action-menu__menuItem___rJ8Ol",h=({appointment:e,patientUuid:t,launchAppointmentForm:a})=>{let{t:n}=(0,r.useTranslation)(),o="tablet"===(0,i.useLayoutType)();return s().createElement(m.Wdr,{className:"-esm-appointments__patient-appointments-action-menu__layer___QvdWM"},s().createElement(m.obU,{"aria-label":"Edit or delete appointment",size:o?"lg":"sm",flipped:!0,align:"left"},s().createElement(m.XSD,{className:v,id:"editAppointment",itemText:n("edit","Edit"),onClick:()=>{a?a(t,e):(0,i.launchWorkspace2)("appointments-form-workspace",{appointment:e,patientUuid:t})}}),s().createElement(m.XSD,{className:v,hasDivider:!0,id:"cancelAppointment",isDelete:!0,itemText:n("cancel","Cancel"),onClick:()=>{let a=(0,i.showModal)("cancel-appointment-modal",{closeCancelModal:()=>a(),appointmentUuid:e.uuid,patientUuid:t})}})))},E={layer:"-esm-appointments__patient-appointments-table__layer___3XHUe",menuItem:"-esm-appointments__patient-appointments-table__menuItem___lt5oF",text02:"-esm-appointments__patient-appointments-table__text02___YEBCA",table:"-esm-appointments__patient-appointments-table__table___6grQU"};l().extend(u());let y=({patientAppointments:e,patientUuid:t,switchedView:a,setSwitchedView:o,launchAppointmentForm:l})=>{let{t:p}=(0,r.useTranslation)(),{results:c,currentPage:d,goTo:u}=(0,i.usePagination)(e,10),v="tablet"===(0,i.useLayoutType)();(0,n.useEffect)(()=>{a&&1!==d&&u(1)},[a,u,d]);let y=(0,n.useMemo)(()=>[{key:"date",header:p("date","Date")},{key:"location",header:p("location","Location")},{key:"service",header:p("service","Service")},{key:"status",header:p("status","Status")},{key:"type",header:p("type","Type")},{key:"notes",header:p("notes","Notes")}],[p]),w=(0,n.useMemo)(()=>c?.map(e=>({id:e.uuid,date:e.startDateTime?(0,i.formatDatetime)(new Date(e.startDateTime),{mode:"wide"}):"——",location:e?.location?.name?e?.location?.name:"——",service:e.service.name,status:e.status,type:e.appointmentKind?e.appointmentKind:"——",notes:e.comments?e.comments:"——"})),[c]);return s().createElement("div",null,s().createElement(m.bQt,{rows:w,headers:y,isSortable:!0,size:v?"lg":"sm",useZebraStyles:!0},({rows:e,headers:a,getHeaderProps:n,getTableProps:o})=>s().createElement(m.K3K,null,s().createElement(m.XIK,{className:E.table,...o()},s().createElement(m.ndF,null,s().createElement(m.Hjg,null,a.map(e=>s().createElement(m.A0N,{className:_()(E.productiveHeading01,E.text02),...n({header:e})},e.header)),s().createElement(m.A0N,null))),s().createElement(m.BFY,null,e.map((e,a)=>s().createElement(m.Hjg,{key:e.id},e.cells.map(e=>s().createElement(m.nA6,{key:e.id},e.value?.content??e.value)),s().createElement(m.nA6,{className:"cds--table-column-menu"},s().createElement(h,{appointment:c[a],patientUuid:t,launchAppointmentForm:l})))))))),s().createElement(i.Pagination,{currentItems:c.length,totalItems:e.length,onPageNumberChange:({page:e})=>{o(!1),u(e)},pageNumber:d,pageSize:10}))},w="-esm-appointments__patient-appointments-detailed-summary__content___UXb5t",C="-esm-appointments__patient-appointments-detailed-summary__tile___1k6FD",D=({patientUuid:e,launchAppointmentForm:t})=>{let{t:a}=(0,r.useTranslation)(),o=a("appointments","Appointments"),c="tablet"===(0,i.useLayoutType)(),[_,d]=(0,n.useState)(!1),u=t||((e,t)=>{(0,i.launchWorkspace2)("appointments-form-workspace",{patientUuid:e,appointment:t})}),[v,h]=(0,n.useState)(0),E=(0,n.useMemo)(()=>l()().subtract(6,"month").toISOString(),[]),{data:D,error:k,isLoading:N,isValidating:g}=(0,p.DM)(e,E,(0,n.useMemo)(()=>new AbortController,[]));return N?s().createElement(m.OOb,{role:"progressbar",compact:!c,zebra:!0}):k?s().createElement(i.ErrorCard,{headerTitle:o,error:k}):D&&Object.keys(D)?.length?s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__widgetCard___NRC+0"},s().createElement(i.CardHeader,{title:o},g?s().createElement("span",null,s().createElement(m.OuH,null)):null,s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__contentSwitcherWrapper___kUL1Q"},s().createElement(m.Tps,{size:c?"md":"sm",selectedIndex:v,onChange:({index:e})=>{h(e),d(!0)}},s().createElement(m.dOG,{name:"upcoming"},a("upcoming","Upcoming")),s().createElement(m.dOG,{name:"today"},a("today","Today")),s().createElement(m.dOG,{name:"past"},a("past","Past"))),s().createElement("div",{className:"-esm-appointments__patient-appointments-detailed-summary__divider___t1P0L"},"|"),s().createElement(m.$nd,{kind:"ghost",renderIcon:e=>s().createElement(i.AddIcon,{size:16,...e}),iconDescription:a("addAppointments","Add Appointments"),onClick:()=>u(e)},a("add","Add")))),0===v?D.upcomingAppointments?.length?s().createElement(y,{patientAppointments:D?.upcomingAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noUpcomingAppointmentsForPatient","There are no upcoming appointments to display for this patient")))):1===v?D.todaysAppointments?.length?s().createElement(y,{patientAppointments:D?.todaysAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noCurrentAppointments","There are no appointments scheduled for today to display for this patient")))):2===v?D.pastAppointments?.length?s().createElement(y,{patientAppointments:D?.pastAppointments,switchedView:_,setSwitchedView:d,patientUuid:e,launchAppointmentForm:u}):s().createElement(m.Wdr,null,s().createElement(m.FAs,{className:C},s().createElement(i.EmptyCardIllustration,null),s().createElement("p",{className:w},a("noPastAppointments","There are no past appointments to display for this patient")))):void 0):void 0}},4299(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>d});var n=a(7125),s=a.n(n),o=a(411),l=a(2745),r=a(2895),m=a(7),i=a(5848),p=a(5921);let c={patientBanner:"-esm-appointments__patient-appointments-header__patientBanner___ZB+Tp",patientAvatar:"-esm-appointments__patient-appointments-header__patientAvatar___mPs+Y",divider:"-esm-appointments__patient-appointments-header__divider___bc+VD",backButton:"-esm-appointments__patient-appointments-header__backButton___uXOql",titleContent:"-esm-appointments__patient-appointments-header__titleContent___eyA4H"},_=({patient:e})=>{let{t}=(0,p.useTranslation)(),a=(0,l.useNavigate)(),n=(0,r.getPatientName)(e);return s().createElement("header",null,s().createElement("div",{className:c.titleContainer},s().createElement(o.$nd,{className:c.backButton,iconDescription:t("back","Back"),kind:"ghost",onClick:()=>a(-1),renderIcon:i.nk,size:"lg"},s().createElement("span",null,t("back","Back")))),s().createElement("div",{className:c.divider}),s().createElement("div",{className:c.patientBanner},s().createElement("div",{className:c.patientAvatar},s().createElement(r.PatientPhoto,{patientUuid:e.id,patientName:n})),s().createElement(r.PatientBannerPatientInfo,{patient:e})),s().createElement("div",{className:c.divider}))},d=()=>{let e=(0,l.useParams)(),t=(0,r.usePatient)(e.patientUuid),a=(0,r.useLayoutType)();return t.isLoading?s().createElement(o.OOb,{role:"progressbar",compact:(0,r.isDesktop)(a),zebra:!0}):s().createElement("div",{className:"-esm-appointments__patient-appointments-overview__patientAppointmentsOverview___yVu1O"},s().createElement(_,{patient:t.patient}),s().createElement(m.default,{patientUuid:t.patient.id,launchAppointmentForm:(e,t)=>{(0,r.launchWorkspace2)("appointments-form-workspace",{patientUuid:e,appointment:t})}}),s().createElement(r.WorkspaceContainer,{overlay:!0,contextKey:`patient/${e.patientUuid}`}))}},4874(e,t,a){"use strict";a.r(t),a.d(t,{default:()=>H});var n=a(7125),s=a.n(n),o=a(2745),l=a(3464),r=a.n(l),m=a(5921),i=a(2895),p=a(8909),c=a.n(p),_=a(7003),d=a(6),u=a(5881),v=a(1947),h=a(411),E=a(529),y=a(5740);function w(){let e=(0,i.getLocale)()||"en",t=(0,y.a7)(e)??"gregory";return{locale:e,calendar:t}}let C=({viewMode:e,calendarSelectedDate:t,onViewModeChange:a,onPrev:o,onNext:l})=>{let{t:r}=(0,m.useTranslation)(),{locale:i,calendar:p}=w(),c=(0,n.useMemo)(()=>{let a=t.format("YYYY-MM-DD");return"monthly"===e?new Intl.DateTimeFormat(i,{year:"numeric",month:"long",calendar:p}).format(new Date(a+"T00:00:00")):new Intl.DateTimeFormat(i,{year:"numeric",month:"long",day:"numeric",calendar:p}).format(new Date(a+"T00:00:00"))},[e,t,i,p]),_=+("monthly"!==e),d=["monthly","daily"];return s().createElement("div",{className:"-esm-appointments__calendar-header__calendarHeaderContainer___iFU-b"},s().createElement("div",{className:"-esm-appointments__calendar-header__navigationSection___XiJpX"},s().createElement("div",{className:"-esm-appointments__calendar-header__navGroup___Vv+qz"},s().createElement("div",{className:"-esm-appointments__calendar-header__navButtonGroup___O4lIZ"},s().createElement(h.$nd,{hasIconOnly:!0,kind:"ghost",size:"sm",renderIcon:E.JG,iconDescription:r("previous","Previous"),onClick:o}),s().createElement("span",{className:"-esm-appointments__calendar-header__navDivider___gqPg+"}),s().createElement(h.$nd,{hasIconOnly:!0,kind:"ghost",size:"sm",renderIcon:E.c_,iconDescription:r("next","Next"),onClick:l})),s().createElement("span",{className:"-esm-appointments__calendar-header__dateLabel___hw3Cj"},c))),s().createElement("div",{className:"-esm-appointments__calendar-header__switcherSection___6m5zC"},s().createElement(h.Tps,{selectedIndex:_,size:"sm",onChange:({index:e})=>a(d[e])},s().createElement(h.dOG,{name:"monthly",text:r("monthly","Monthly")}),s().createElement(h.dOG,{name:"daily",text:r("daily","Daily")}))))};var D=a(5615),k=a.n(D),N=a(9391);let g=()=>{let{locale:e,calendar:t}=w(),a=Array.from({length:7},(a,n)=>{let s=new Date(1970,0,4+n);return new Intl.DateTimeFormat(e,{weekday:"short",calendar:t}).format(s)});return s().createElement("div",{className:"-esm-appointments__monthly-header__workLoadCard___ntWaB"},a.map((e,t)=>s().createElement("div",{key:t,className:"-esm-appointments__monthly-header__dowCell___z2lvs"},e.toUpperCase())))};var A=a(3373),b=a.n(A);let f={"monthly-cell":"-esm-appointments__monthly-view-workload__monthly-cell___PmcV1","monthly-cell-disabled":"-esm-appointments__monthly-view-workload__monthly-cell-disabled___v2teZ","monthly-cell-clickable":"-esm-appointments__monthly-view-workload__monthly-cell-clickable___oMT7G","monthly-cell-today":"-esm-appointments__monthly-view-workload__monthly-cell-today___mgsc3",popoverOpen:"-esm-appointments__monthly-view-workload__popoverOpen___TN3Op",cellHeader:"-esm-appointments__monthly-view-workload__cellHeader___ElmT4",dateNumber:"-esm-appointments__monthly-view-workload__dateNumber___YAFn0",dateNumberOtherMonth:"-esm-appointments__monthly-view-workload__dateNumberOtherMonth___CvDxa",todayCircle:"-esm-appointments__monthly-view-workload__todayCircle___zUSBs",totalBadge:"-esm-appointments__monthly-view-workload__totalBadge___Yw4DT",currentData:"-esm-appointments__monthly-view-workload__currentData___7XaPQ",serviceArea:"-esm-appointments__monthly-view-workload__serviceArea___aCrzg",serviceName:"-esm-appointments__monthly-view-workload__serviceName___sIYN8",serviceCount:"-esm-appointments__monthly-view-workload__serviceCount___4u1or",swatch:"-esm-appointments__monthly-view-workload__swatch___uVAZX",showMoreItems:"-esm-appointments__monthly-view-workload__showMoreItems___cC0Ra",smallDesktop:"-esm-appointments__monthly-view-workload__smallDesktop___q5hai",largeDesktop:"-esm-appointments__monthly-view-workload__largeDesktop___k7Ncd",popoverCard:"-esm-appointments__monthly-view-workload__popoverCard___HrtBP",popoverHeader:"-esm-appointments__monthly-view-workload__popoverHeader___AuHAn",popoverTitleGroup:"-esm-appointments__monthly-view-workload__popoverTitleGroup___HFmVg",popoverDate:"-esm-appointments__monthly-view-workload__popoverDate___mCmck",popoverSubtitle:"-esm-appointments__monthly-view-workload__popoverSubtitle___uvJXe",popoverCloseBtn:"-esm-appointments__monthly-view-workload__popoverCloseBtn___x1Nb1",popoverDivider:"-esm-appointments__monthly-view-workload__popoverDivider___u6An+",popoverServiceList:"-esm-appointments__monthly-view-workload__popoverServiceList___D3Q6B",popoverServiceRow:"-esm-appointments__monthly-view-workload__popoverServiceRow___XSMxo",popoverServiceName:"-esm-appointments__monthly-view-workload__popoverServiceName___04MD7",popoverServiceCount:"-esm-appointments__monthly-view-workload__popoverServiceCount___ratXG",openDayViewLink:"-esm-appointments__monthly-view-workload__openDayViewLink___j085M"},M=s().memo(({dateTime:e,events:t,eventsMap:a,calendarSelectedDate:o,showAllServices:l=!1,onSelectDate:p,index:c,serviceColorMap:_})=>{let{t:d}=(0,m.useTranslation)(),u=(0,i.useLayoutType)(),[v,y]=(0,n.useState)(!1),w=(0,n.useRef)(null),C=(0,n.useMemo)(()=>e.isSame(r()(),"day"),[e]),D=(0,n.useMemo)(()=>(0,N.tF)(e,o),[e,o]),k=(0,n.useMemo)(()=>{let t=void 0!==c?c>=7:e.date()>7,a=void 0!==c&&c%7>=4;return t?a?"top-right":"top-left":a?"bottom-right":"bottom-left"},[c,e]),g=(0,n.useMemo)(()=>({dayNumber:e.format("D"),popoverDate:e.format("ddd, MMM D"),isoDate:e.format("YYYY-MM-DD")}),[e]),A=(0,n.useMemo)(()=>a?a.get(g.isoDate):t?.find(e=>r()(e.appointmentDate)?.format("YYYY-MM-DD")===g.isoDate),[t,a,g.isoDate]),M=A?.services?.reduce((e,{count:t=0})=>e+t,0)??0,S="small-desktop"===u?2:3,B=(0,n.useMemo)(()=>A?.services?l?A.services:A.services.slice(0,S):[],[A,l,S]),T=(0,n.useMemo)(()=>!!A?.services&&!l&&A.services.length>S,[A?.services,l,S]),F=(0,n.useCallback)(e=>{w.current&&!w.current.contains(e.target)&&y(!1)},[]);return(0,n.useEffect)(()=>(v?document.addEventListener("mousedown",F):document.removeEventListener("mousedown",F),()=>document.removeEventListener("mousedown",F)),[v,F]),s().createElement(h.AMh,{open:v,align:k,ref:w,"data-testid":"popover-container"},s().createElement("div",{onClick:()=>{0!==M&&y(e=>!e)},"data-testid":`workload-cell-${g.isoDate}`,"data-popover-open":v,className:b()(f[D?"monthly-cell":"monthly-cell-disabled"],{[f["monthly-cell-today"]]:C,[f["monthly-cell-clickable"]]:M>0,[f.popoverOpen]:v},!l&&{[f.smallDesktop]:"small-desktop"===u,[f.largeDesktop]:"small-desktop"!==u})},s().createElement("div",{className:f.cellHeader},C?s().createElement("span",{className:f.todayCircle,"data-testid":"today-indicator"},g.dayNumber):s().createElement("span",{className:D?f.dateNumber:f.dateNumberOtherMonth,"data-testid":D?"current-month-day":"other-month-day"},g.dayNumber),M>0&&s().createElement("span",{className:f.totalBadge},M," ",1===M?d("appt","appt"):d("appts","appts"))),A?.services&&A.services.length>0&&s().createElement("div",{className:f.currentData,"data-testid":"current-data"},B.map(({serviceName:e,serviceUuid:t,count:a},n)=>{let o=_?.get(t??"");return s().createElement("div",{key:`${t}-${n}`,className:f.serviceArea,"data-testid":`service-area-${t}`,style:o?{backgroundColor:`${o}21`}:void 0},s().createElement("span",{className:f.swatch,style:{backgroundColor:o},"data-testid":`service-swatch-${t}`}),s().createElement("span",{className:f.serviceName},e),s().createElement("span",{className:f.serviceCount},a))}),T&&s().createElement("button",{className:f.showMoreItems,onClick:e=>{e.stopPropagation(),y(!0)}},"+",A.services.length-S," ",d("more","more")))),s().createElement(h.hlN,null,s().createElement("div",{className:f.popoverCard,onClick:e=>e.stopPropagation(),"data-testid":"popover-card"},s().createElement("div",{className:f.popoverHeader},s().createElement("div",{className:f.popoverTitleGroup},s().createElement("span",{className:f.popoverDate},g.popoverDate),s().createElement("span",{className:f.popoverSubtitle},d("appointmentCount","{{count}} appointment(s)",{count:M}))),s().createElement("button",{className:f.popoverCloseBtn,onClick:()=>y(!1),"aria-label":d("close","Close")},s().createElement(E.bm,{size:16}))),s().createElement("div",{className:f.popoverDivider}),s().createElement("div",{className:f.popoverServiceList,"data-testid":"popover-service-list"},A?.services?.map(({serviceName:e,serviceUuid:t,count:a},n)=>{let o=_?.get(t??"");return s().createElement("div",{key:`${t}-${n}`,className:f.popoverServiceRow},s().createElement("span",{className:f.swatch,style:{backgroundColor:o}}),s().createElement("span",{className:f.popoverServiceName},e),s().createElement("span",{className:f.popoverServiceCount},a))})),s().createElement("div",{className:f.popoverDivider}),s().createElement("button",{className:f.openDayViewLink,onClick:()=>{y(!1),p?.(g.isoDate)}},d("openDayView","Open day view")," →"))))});r().extend(k());let S=({events:e,calendarSelectedDate:t,onSelectDate:a,serviceColorMap:o})=>{let l=(0,n.useMemo)(()=>(0,N._h)(t),[t]),m=(0,n.useMemo)(()=>{let t=new Map;return e?.forEach(e=>{e.appointmentDate&&t.set(r()(e.appointmentDate).format("YYYY-MM-DD"),e)}),t},[e]);return s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__calendarViewContainer___kGUkC"},s().createElement(g,null),s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__wrapper___T9NBl"},s().createElement("div",{className:"-esm-appointments__appointments-calendar-view-view__monthlyCalendar___6R4Av"},l.map((n,l)=>s().createElement(M,{key:l,index:l,dateTime:n,events:e,eventsMap:m,calendarSelectedDate:t,onSelectDate:a,serviceColorMap:o})))))};var B=a(2373);let T={Scheduled:"blue",CheckedIn:"teal",Completed:"green",Missed:"red",Cancelled:"warm-gray",Requested:"magenta"},F=["#73A947","#1990DC","#925FA2","#EB8A28","#A11B4C","#EF4B28","#DFBD4B","#197440","#3747A7","#81249B","#CF2255","#E96321","#B9C343","#198A7D","#6E7BC0","#6D4C41","#CC1514","#A993D2","#565656","#DF736A","#F3B83C","#36AC72","#3C79EB","#9D9084","#1ABC9C","#2ECC71","#3498DB","#9B59B6","#34495E","#16A085","#27AE60","#2980B9","#8E44AD","#aaa69d","#C0392B","#D35400","#F39C12","#E74C3C","#E67E22","#F1C40F","#F78FB3","#574B90","#786FA6","#F19066","#F5CD79","#546DE5","#C44569","#63CDDA","#596275","#3DC1D3","#CF6A87","#38ADA9","#079992","#0A3D62","#1E3799","#FA983A","#E55039","#40407A","#B33939"],O=Array.from({length:24},(e,t)=>t),I="-esm-appointments__daily-calendar-view__container___hUjyu",U=({appointment:e,serviceColorMap:t})=>{let a=t?.get(e.service?.uuid??""),o=T[e.status]??"gray",l=(0,n.useMemo)(()=>null==e.startDateTime?"—":(0,B.xh)(new Date(e.startDateTime)),[e.startDateTime]);return s().createElement("div",{className:"-esm-appointments__daily-calendar-view__card___6GmUm",style:{borderLeftColor:a}},s().createElement("span",{className:"-esm-appointments__daily-calendar-view__cardTime___h+X0K"},l),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardDetails___L7Kda"},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardName___q-oX7"},e.patient?.name??"—"),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__cardService___dtogK",style:{color:a}},e.service.name)),s().createElement(h.vwO,{type:o,size:"sm"},e.status))},L=({calendarSelectedDate:e,serviceColorMap:t})=>{let{t:a}=(0,m.useTranslation)(),{appointments:o,isLoading:l}=(e=>{let t=e?(0,N.Ee)(e):null,{data:a,isLoading:n,error:s}=c()(t,i.openmrsFetch,{errorRetryCount:2});return{appointments:[...a?.data??[]].sort((e,t)=>(e.startDateTime??0)-(t.startDateTime??0)),isLoading:n,error:s}})(e.format("YYYY-MM-DD")),r=(0,n.useMemo)(()=>O.map(e=>({hr:e,appts:o.filter(t=>null!=t.startDateTime&&new Date(t.startDateTime).getHours()===e)})).filter(e=>e.appts.length>0),[o]);return l?s().createElement("div",{className:I},s().createElement(h.OuH,{description:a("loadingAppointments","Loading appointments…")})):s().createElement("div",{className:I},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__heading___8TafS"},s().createElement("p",{className:"-esm-appointments__daily-calendar-view__subtitle___d1qOm"},0===o.length?a("noAppointments","No appointments scheduled"):a("appointmentCount","{{count}} appointment(s)",{count:o.length}))),r.map(({hr:e,appts:a})=>s().createElement("div",{key:e,className:"-esm-appointments__daily-calendar-view__hourRow___Q0YAJ"},s().createElement("div",{className:"-esm-appointments__daily-calendar-view__hourLabel___EswNK"},`${e%12||12} ${e<12?"AM":"PM"}`),s().createElement("div",{className:"-esm-appointments__daily-calendar-view__hourSlot___eDK1l"},a.map(e=>s().createElement(U,{key:e.uuid,appointment:e,serviceColorMap:t}))))))},Y=({services:e,serviceColorMap:t})=>{let{t:a}=(0,m.useTranslation)();return s().createElement("div",{className:"-esm-appointments__services-legend__servicesLegend___zNQHF","data-testid":"services-legend"},e.length>0&&s().createElement(s().Fragment,null,s().createElement("span",{className:"-esm-appointments__services-legend__legendTitle___LIHDd"},a("services","Services")),s().createElement("div",{className:"-esm-appointments__services-legend__legendItems___4QoGu"},e.map(({name:e,uuid:a})=>{let n=t?.get(a);return s().createElement("div",{key:a,className:"-esm-appointments__services-legend__legendItem___3eep+","data-testid":`legend-item-${a}`},s().createElement("span",{className:"-esm-appointments__services-legend__swatch___3jB92",style:{backgroundColor:n},"data-testid":`legend-swatch-${a}`}),s().createElement("span",null,e))}))))},P=()=>{let{t:e}=(0,m.useTranslation)(),t=(0,v.h)(),[a,o]=(0,n.useState)("monthly"),[l,p]=(0,n.useState)(r()(t)),{calendarEvents:h}=((e,t)=>{var a,n;let{startDate:s,endDate:o}=(a=e,n=t,a?"daily"===n?{startDate:r()(a).startOf("day").format(_.BC),endDate:r()(a).endOf("day").format(_.BC)}:{startDate:r()(a).startOf("month").format(_.BC),endDate:r()(a).endOf("month").format(_.BC)}:{startDate:null,endDate:null}),l=`${i.restBaseUrl}/appointment/appointmentSummary?startDate=${s}&endDate=${o}`,{data:m,error:p,isLoading:d}=c()(s&&o?l:null,i.openmrsFetch,{errorRetryCount:2});return{isLoading:d,calendarEvents:m?.data.reduce((e,t)=>{let a=t.appointmentService.name,n=t.appointmentService.uuid;return Object.entries(t.appointmentCountMap).forEach(([t,s])=>{let o=e.find(e=>e.appointmentDate===t);o?o.services.push({serviceName:a,serviceUuid:n,count:s.allAppointmentsCount}):e.push({appointmentDate:t,services:[{serviceName:a,serviceUuid:n,count:s.allAppointmentsCount}]})}),e},[])??[],error:p}})(l.toISOString(),a),{serviceTypes:E}=(0,d.V)(),y=(0,n.useMemo)(()=>(function(e){let t=new Map,a=0;for(let{uuid:n}of e)!n||t.has(n)||(a<F.length?t.set(n,F[a++]):t.set(n,function(e){let t=0;for(let a=0;a<e.length;a++)t=(t<<5)-t+e.charCodeAt(a)|0;return function(e){let t=.42,a=65*Math.min(t,1-t)/100,n=n=>{let s=(n+e/30)%12;return Math.round(255*(t-a*Math.max(Math.min(s-3,9-s,1),-1))).toString(16).padStart(2,"0").toUpperCase()};return`#${n(0)}${n(8)}${n(4)}`}(Math.abs(t)%360)}(n)));return t})(E),[E]),w=(0,n.useCallback)(()=>{"monthly"===a?p(e=>e.subtract(1,"month")):p(e=>e.subtract(1,"day"))},[a]),D=(0,n.useCallback)(()=>{"monthly"===a?p(e=>e.add(1,"month")):p(e=>e.add(1,"day"))},[a]),k=(0,n.useCallback)(e=>{o(e)},[]),N=(0,n.useCallback)(e=>{p(r()(e)),o("daily")},[]),g=(0,n.useMemo)(()=>{let e=new Map;return h?.forEach(t=>{t.services?.forEach(t=>{let a=t.serviceUuid||t.serviceName;t.serviceName&&a&&!e.has(a)&&e.set(a,{name:t.serviceName,uuid:t.serviceUuid??a})})}),Array.from(e.values())},[h]);return s().createElement("div",{"data-testid":"appointments-calendar",className:"-esm-appointments__appointments-calendar-view-view__backgroundColor___3wUEF"},s().createElement(u.A,{title:e("calendar","Calendar"),isCalendarView:!0}),s().createElement(C,{viewMode:a,calendarSelectedDate:l,onViewModeChange:k,onPrev:w,onNext:D}),"monthly"===a&&s().createElement(S,{events:h,calendarSelectedDate:l,onSelectDate:N,serviceColorMap:y}),"daily"===a&&s().createElement(L,{calendarSelectedDate:l,serviceColorMap:y}),s().createElement(Y,{services:g,serviceColorMap:y}))};var $=a(9116),x=a(4299);let H=()=>{let e=window.getOpenmrsSpaBase()+"home/appointments";return s().createElement("main",null,s().createElement(o.BrowserRouter,{basename:e},s().createElement(o.Routes,null,s().createElement(o.Route,{path:"/",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/:date",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/:date/:serviceType",element:s().createElement($.default,null)}),s().createElement(o.Route,{path:"/calendar",element:s().createElement(P,null)}),s().createElement(o.Route,{path:"/calendar/:date",element:s().createElement(P,null)}),s().createElement(o.Route,{path:"/patient/:patientUuid",element:s().createElement(x.default,null)}))))}}}]);