@medplum/react 2.2.10 → 3.0.0
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/cjs/index.cjs +12 -12
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.css +2 -0
- package/dist/cjs/index.css.map +7 -0
- package/dist/cjs/index.d.ts +23 -14
- package/dist/esm/index.css +2 -0
- package/dist/esm/index.css.map +7 -0
- package/dist/esm/index.d.ts +23 -14
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +23 -20
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var xm=Object.create;var cn=Object.defineProperty;var Im=Object.getOwnPropertyDescriptor;var gm=Object.getOwnPropertyNames;var hm=Object.getPrototypeOf,ym=Object.prototype.hasOwnProperty;var sa=(e,o)=>()=>(o||e((o={exports:{}}).exports,o),o.exports),vm=(e,o)=>{for(var t in o)cn(e,t,{get:o[t],enumerable:!0})},Ii=(e,o,t,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of gm(o))!ym.call(e,a)&&a!==t&&cn(e,a,{get:()=>o[a],enumerable:!(r=Im(o,a))||r.enumerable});return e};var Ql=(e,o,t)=>(t=e!=null?xm(hm(e)):{},Ii(o||!e||!e.__esModule?cn(t,"default",{value:e,enumerable:!0}):t,e)),Sm=e=>Ii(cn({},"__esModule",{value:!0}),e);var cs=sa(ll=>{"use strict";Object.defineProperty(ll,"__esModule",{value:!0});ll.Pointer=void 0;function Xp(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Jp(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}var $p=function(){function e(o){o===void 0&&(o=[""]),this.tokens=o}return e.fromJSON=function(o){var t=o.split("/").map(Xp);if(t[0]!=="")throw new Error("Invalid JSON Pointer: ".concat(o));return new e(t)},e.prototype.toString=function(){return this.tokens.map(Jp).join("/")},e.prototype.evaluate=function(o){for(var t=null,r="",a=o,n=1,l=this.tokens.length;n<l;n++)t=a,r=this.tokens[n],!(r=="__proto__"||r=="constructor"||r=="prototype")&&(a=(t||{})[r]);return{parent:t,key:r,value:a}},e.prototype.get=function(o){return this.evaluate(o).value},e.prototype.set=function(o,t){var r=this.evaluate(o);r.parent&&(r.parent[r.key]=t)},e.prototype.push=function(o){this.tokens.push(o)},e.prototype.add=function(o){var t=this.tokens.concat(String(o));return new e(t)},e}();ll.Pointer=$p});var ms=sa(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});ft.clone=ft.objectType=ft.hasOwnProperty=void 0;ft.hasOwnProperty=Object.prototype.hasOwnProperty;function _p(e){return e===void 0?"undefined":e===null?"null":Array.isArray(e)?"array":typeof e}ft.objectType=_p;function Kp(e){return e!=null&&typeof e=="object"}function ds(e){if(!Kp(e))return e;if(e.constructor==Array){for(var o=e.length,t=new Array(o),r=0;r<o;r++)t[r]=ds(e[r]);return t}if(e.constructor==Date){var a=new Date(+e);return a}var n={};for(var l in e)ft.hasOwnProperty.call(e,l)&&(n[l]=ds(e[l]));return n}ft.clone=ds});var Is=sa(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.diffAny=to.diffObjects=to.diffArrays=to.intersection=to.subtract=to.isDestructive=void 0;var Wa=ms();function Zp(e){var o=e.op;return o==="remove"||o==="replace"||o==="copy"||o==="move"}to.isDestructive=Zp;function xs(e,o){var t={};for(var r in e)Wa.hasOwnProperty.call(e,r)&&e[r]!==void 0&&(t[r]=1);for(var a in o)Wa.hasOwnProperty.call(o,a)&&o[a]!==void 0&&delete t[a];return Object.keys(t)}to.subtract=xs;function fc(e){for(var o=e.length,t={},r=0;r<o;r++){var a=e[r];for(var n in a)Wa.hasOwnProperty.call(a,n)&&a[n]!==void 0&&(t[n]=(t[n]||0)+1)}for(var n in t)t[n]<o&&delete t[n];return Object.keys(t)}to.intersection=fc;function Yp(e){return e.op==="add"}function jp(e){return e.op==="remove"}function ps(e,o){return{operations:e.operations.concat(o),cost:e.cost+1}}function sc(e,o,t,r){r===void 0&&(r=fl);var a={"0,0":{operations:[],cost:0}};function n(u,c){var d="".concat(u,",").concat(c),m=a[d];if(m===void 0){if(u>0&&c>0&&!r(e[u-1],o[c-1],t.add(String(u-1))).length)m=n(u-1,c-1);else{var p=[];if(u>0){var x=n(u-1,c),b={op:"remove",index:u-1};p.push(ps(x,b))}if(c>0){var v=n(u,c-1),S={op:"add",index:u-1,value:o[c-1]};p.push(ps(v,S))}if(u>0&&c>0){var R=n(u-1,c-1),T={op:"replace",index:u-1,original:e[u-1],value:o[c-1]};p.push(ps(R,T))}var h=p.sort(function(E,re){return E.cost-re.cost})[0];m=h}a[d]=m}return m}var l=isNaN(e.length)||e.length<=0?0:e.length,f=isNaN(o.length)||o.length<=0?0:o.length,i=n(l,f).operations,s=i.reduce(function(u,c){var d=u[0],m=u[1];if(Yp(c)){var p=c.index+1+m,x=p<l+m?String(p):"-",b={op:c.op,path:t.add(x).toString(),value:c.value};return[d.concat(b),m+1]}else if(jp(c)){var b={op:c.op,path:t.add(String(c.index+m)).toString()};return[d.concat(b),m-1]}else{var v=t.add(String(c.index+m)),S=r(c.original,c.value,v);return[d.concat.apply(d,S),m]}},[[],0])[0];return s}to.diffArrays=sc;function ic(e,o,t,r){r===void 0&&(r=fl);var a=[];return xs(e,o).forEach(function(n){a.push({op:"remove",path:t.add(n).toString()})}),xs(o,e).forEach(function(n){a.push({op:"add",path:t.add(n).toString(),value:o[n]})}),fc([e,o]).forEach(function(n){a.push.apply(a,r(e[n],o[n],t.add(n)))}),a}to.diffObjects=ic;function fl(e,o,t,r){if(r===void 0&&(r=fl),e===o)return[];var a=(0,Wa.objectType)(e),n=(0,Wa.objectType)(o);return a=="array"&&n=="array"?sc(e,o,t,r):a=="object"&&n=="object"?ic(e,o,t,r):[{op:"replace",path:t.toString(),value:o}]}to.diffAny=fl});var yc=sa(xe=>{"use strict";var gs=xe&&xe.__extends||function(){var e=function(o,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,a){r.__proto__=a}||function(r,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(r[n]=a[n])},e(o,t)};return function(o,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");e(o,t);function r(){this.constructor=o}o.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}();Object.defineProperty(xe,"__esModule",{value:!0});xe.apply=xe.InvalidOperationError=xe.test=xe.copy=xe.move=xe.replace=xe.remove=xe.add=xe.TestError=xe.MissingError=void 0;var st=cs(),hs=ms(),ex=Is(),Go=function(e){gs(o,e);function o(t){var r=e.call(this,"Value required at path: ".concat(t))||this;return r.path=t,r.name="MissingError",r}return o}(Error);xe.MissingError=Go;var uc=function(e){gs(o,e);function o(t,r){var a=e.call(this,"Test failed: ".concat(t," != ").concat(r))||this;return a.actual=t,a.expected=r,a.name="TestError",a}return o}(Error);xe.TestError=uc;function ys(e,o,t){if(Array.isArray(e))if(o=="-")e.push(t);else{var r=parseInt(o,10);e.splice(r,0,t)}else e[o]=t}function cc(e,o){if(Array.isArray(e)){var t=parseInt(o,10);e.splice(t,1)}else delete e[o]}function dc(e,o){var t=st.Pointer.fromJSON(o.path).evaluate(e);return t.parent===void 0?new Go(o.path):(ys(t.parent,t.key,(0,hs.clone)(o.value)),null)}xe.add=dc;function mc(e,o){var t=st.Pointer.fromJSON(o.path).evaluate(e);return t.value===void 0?new Go(o.path):(cc(t.parent,t.key),null)}xe.remove=mc;function pc(e,o){var t=st.Pointer.fromJSON(o.path).evaluate(e);if(t.parent===null)return new Go(o.path);if(Array.isArray(t.parent)){if(parseInt(t.key,10)>=t.parent.length)return new Go(o.path)}else if(t.value===void 0)return new Go(o.path);return t.parent[t.key]=(0,hs.clone)(o.value),null}xe.replace=pc;function xc(e,o){var t=st.Pointer.fromJSON(o.from).evaluate(e);if(t.value===void 0)return new Go(o.from);var r=st.Pointer.fromJSON(o.path).evaluate(e);return r.parent===void 0?new Go(o.path):(cc(t.parent,t.key),ys(r.parent,r.key,t.value),null)}xe.move=xc;function Ic(e,o){var t=st.Pointer.fromJSON(o.from).evaluate(e);if(t.value===void 0)return new Go(o.from);var r=st.Pointer.fromJSON(o.path).evaluate(e);return r.parent===void 0?new Go(o.path):(ys(r.parent,r.key,(0,hs.clone)(t.value)),null)}xe.copy=Ic;function gc(e,o){var t=st.Pointer.fromJSON(o.path).evaluate(e);return(0,ex.diffAny)(t.value,o.value,new st.Pointer).length?new uc(t.value,o.value):null}xe.test=gc;var hc=function(e){gs(o,e);function o(t){var r=e.call(this,"Invalid operation: ".concat(t.op))||this;return r.operation=t,r.name="InvalidOperationError",r}return o}(Error);xe.InvalidOperationError=hc;function ox(e,o){switch(o.op){case"add":return dc(e,o);case"remove":return mc(e,o);case"replace":return pc(e,o);case"move":return xc(e,o);case"copy":return Ic(e,o);case"test":return gc(e,o)}return new hc(o)}xe.apply=ox});var Sc=sa(Uo=>{"use strict";Object.defineProperty(Uo,"__esModule",{value:!0});Uo.createTests=Uo.createPatch=Uo.applyPatch=Uo.Pointer=void 0;var vs=cs();Object.defineProperty(Uo,"Pointer",{enumerable:!0,get:function(){return vs.Pointer}});var tx=yc(),Ss=Is();function rx(e,o){return o.map(function(t){return(0,tx.apply)(e,t)})}Uo.applyPatch=rx;function ax(e){function o(t,r,a){var n=e(t,r,a);return Array.isArray(n)?n:(0,Ss.diffAny)(t,r,a,o)}return o}function nx(e,o,t){var r=new vs.Pointer;return(t?ax(t):Ss.diffAny)(e,o,r)}Uo.createPatch=nx;function vc(e,o){var t=vs.Pointer.fromJSON(o).evaluate(e);if(t!==void 0)return{op:"test",path:o,value:t.value}}function lx(e,o){var t=new Array;return o.filter(Ss.isDestructive).forEach(function(r){var a=vc(e,r.path);if(a&&t.push(a),"from"in r){var n=vc(e,r.from);n&&t.push(n)}}),t}Uo.createTests=lx});var fg={};vm(fg,{AddressDisplay:()=>$l,AddressInput:()=>_l,AnnotationInput:()=>Kl,AppShell:()=>tp,AsyncAutocomplete:()=>_t,AttachmentArrayDisplay:()=>Hf,AttachmentArrayInput:()=>Gf,AttachmentButton:()=>Zt,AttachmentDisplay:()=>To,AttachmentInput:()=>Sa,BackboneElementDisplay:()=>Br,BackboneElementInput:()=>ar,CalendarInput:()=>fs,CheckboxFormSection:()=>Pa,CodeInput:()=>va,CodeableConceptDisplay:()=>_e,CodeableConceptInput:()=>er,CodingDisplay:()=>Wf,CodingInput:()=>Da,ContactDetailDisplay:()=>Xf,ContactDetailInput:()=>Kf,ContactPointDisplay:()=>Ca,ContactPointInput:()=>Ba,Container:()=>nt,DateTimeInput:()=>vo,DefaultResourceTimeline:()=>gx,DescriptionList:()=>Qf,DescriptionListEntry:()=>zf,DiagnosticReportDisplay:()=>nl,Document:()=>Xa,ElementDefinitionInputSelector:()=>Ju,ElementDefinitionTypeInput:()=>Ha,EncounterTimeline:()=>hx,ErrorBoundary:()=>$t,FhirPathTable:()=>Wc,Form:()=>U,FormSection:()=>Je,Header:()=>Of,HumanNameDisplay:()=>ga,HumanNameInput:()=>es,IdentifierDisplay:()=>Jf,IdentifierInput:()=>os,Loading:()=>Cn,Logo:()=>gt,MeasureReportDisplay:()=>Xx,MedplumLink:()=>Ve,MedplumProvider:()=>Cm,MemoizedFhirPathTable:()=>Ux,MemoizedSearchControl:()=>Lx,MoneyDisplay:()=>$f,MoneyInput:()=>ts,Navbar:()=>Vf,ObservationTable:()=>ac,OperationOutcomeAlert:()=>pr,Panel:()=>ur,PatientSummary:()=>Jx,PatientTimeline:()=>$x,PlanDefinitionBuilder:()=>_x,QuantityDisplay:()=>Fe,QuantityInput:()=>ao,QuestionnaireBuilder:()=>xI,QuestionnaireForm:()=>ii,QuestionnaireItemType:()=>ja,RangeDisplay:()=>ba,RangeInput:()=>Lr,ReferenceDisplay:()=>Pt,ReferenceInput:()=>fr,ReferenceRangeEditor:()=>BI,ReferenceRangeGroupEditor:()=>Hd,RegisterForm:()=>rg,RequestGroupDisplay:()=>LI,ResourceArrayDisplay:()=>_f,ResourceArrayInput:()=>as,ResourceAvatar:()=>He,ResourceBadge:()=>lt,ResourceBlame:()=>QI,ResourceDiff:()=>WI,ResourceForm:()=>JI,ResourceHistoryTable:()=>$I,ResourceInput:()=>Va,ResourceName:()=>Do,ResourcePropertyDisplay:()=>Ue,ResourcePropertyInput:()=>rt,ResourceTable:()=>ul,ResourceTimeline:()=>ct,Scheduler:()=>YI,SearchChangeEvent:()=>hl,SearchClickEvent:()=>Vt,SearchControl:()=>Qc,SearchFieldEditor:()=>Gs,SearchFilterEditor:()=>Us,SearchLoadEvent:()=>yl,ServiceRequestTimeline:()=>og,SignInForm:()=>lg,SmartAppLaunchLink:()=>tg,StatusBadge:()=>za,Timeline:()=>Cs,TimelineItem:()=>it,TimingInput:()=>ns,addDateFilterBetween:()=>dl,addField:()=>Cx,addFilter:()=>dr,addLastMonthFilter:()=>Ms,addMissingFilter:()=>ml,addNextMonthFilter:()=>ws,addThisMonthFilter:()=>Fs,addTodayFilter:()=>Ds,addTomorrowFilter:()=>Bs,addYearToDateFilter:()=>Es,addYesterdayFilter:()=>ks,buildFieldNameString:()=>fo,buildInitialResponse:()=>oi,buildInitialResponseItem:()=>kl,clearFilters:()=>Sx,clearFiltersOnField:()=>$a,convertIsoToLocal:()=>Yf,convertLocalToIso:()=>jf,createScriptTag:()=>fn,deleteFilter:()=>Ts,formatReferenceString:()=>ti,getErrorsForInput:()=>Z,getFieldDefinitions:()=>Qs,getIssuesForExpression:()=>Ta,getNewMultiSelectValues:()=>js,getNumberOfPages:()=>ri,getOpString:()=>Xr,getQuestionnaireItemReferenceFilter:()=>ei,getQuestionnaireItemReferenceTargetTypes:()=>en,getRecaptcha:()=>di,getSearchOperators:()=>Hs,getSortField:()=>Ns,initRecaptcha:()=>ci,isChoiceQuestion:()=>Zs,isQuestionEnabled:()=>Ys,isSortDescending:()=>Vs,isSupportedProfileStructureDefinition:()=>lp,parseForm:()=>Ef,reactContext:()=>zl,renderValue:()=>qs,setFilters:()=>Wr,setOffset:()=>Vc,setPage:()=>Ls,setPropertyValue:()=>Mr,setQuestionnaireItemReferenceTargetTypes:()=>on,setSort:()=>pl,sortByDateAndPriority:()=>bs,toggleSort:()=>bx,useMedplum:()=>C,useMedplumContext:()=>vr,useMedplumNavigate:()=>Ko,useMedplumProfile:()=>ia,useResource:()=>oe,useSearch:()=>Rm,useSearchOne:()=>Wl,useSearchResources:()=>Xl});module.exports=Sm(fg);var zt=require("react"),dn=require("react"),hi=require("react/jsx-runtime"),Zo=require("@medplum/core"),Wt=require("react"),mn=require("@medplum/core"),Qt=require("react"),zl=(0,dn.createContext)(void 0);function vr(){return(0,dn.useContext)(zl)}function C(){return vr().medplum}function Ko(){return vr().navigate}function ia(){return vr().profile}function Cm(e){let o=e.medplum,t=e.navigate??bm,[r,a]=(0,zt.useState)({profile:o.getProfile(),loading:!o.isInitialized});(0,zt.useEffect)(()=>{o&&(o.isInitialized||(a(l=>({...l,loading:!0})),o.getInitPromise().then(()=>a(l=>({...l,loading:!1}))).catch(console.error)))},[o,o.isInitialized]),(0,zt.useEffect)(()=>{function l(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",l),()=>o.removeEventListener("change",l)},[o,r]);let n=(0,zt.useMemo)(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return(0,hi.jsx)(zl.Provider,{value:n,children:e.children})}function bm(e){window.location.assign(e)}function oe(e,o){let t=C(),[r,a]=(0,Wt.useState)(gi(t,e)),n=(0,Wt.useCallback)(l=>{(0,Zo.deepEquals)(l,r)||a(l)},[r,a]);return(0,Wt.useEffect)(()=>{n(gi(t,e))},[t,e,n]),(0,Wt.useEffect)(()=>{let l=!0;return(0,Zo.isReference)(e)&&t.readReference(e).then(f=>{l&&n(f)}).catch(f=>{l&&(n(void 0),o&&o((0,Zo.normalizeOperationOutcome)(f)))}),()=>l=!1},[t,r,e,n,o]),r}function gi(e,o){if(o){if((0,Zo.isResource)(o))return o;if((0,Zo.isReference)(o))return e.getCachedReference(o)}}function Rm(e,o){return Jl("search",e,o)}function Wl(e,o){return Jl("searchOne",e,o)}function Xl(e,o){return Jl("searchResources",e,o)}function Jl(e,o,t){let r=C(),[a,n]=(0,Qt.useState)(),[l,f]=(0,Qt.useState)(!1),[i,s]=(0,Qt.useState)(),[u,c]=(0,Qt.useState)();return(0,Qt.useEffect)(()=>{let d=r.fhirSearchUrl(o,t).toString();d!==a&&(n(d),r[e](o,t).then(m=>{f(!1),s(m),c(mn.allOk)}).catch(m=>{f(!1),s(void 0),c((0,mn.normalizeOperationOutcome)(m))}))},[r,e,o,t,a,s]),[i,l,u]}var yi=require("@medplum/core"),pn=require("react/jsx-runtime");function $l(e){let o=e.value;return o?(0,pn.jsx)(pn.Fragment,{children:(0,yi.formatAddress)(o)}):null}var Po=require("@mantine/core"),xn=require("react"),Eo=require("react/jsx-runtime");function vi(e,o){return e.line&&e.line.length>o?e.line[o]:""}function Si(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function _l(e){let[o,t]=(0,xn.useState)(e.defaultValue||{}),r=(0,xn.useRef)();r.current=o;function a(d){t(d),e.onChange&&e.onChange(d)}function n(d){a({...r.current,use:d})}function l(d){a({...r.current,type:d})}function f(d){a(Si(r.current||{},0,d))}function i(d){a(Si(r.current||{},1,d))}function s(d){a({...r.current,city:d})}function u(d){a({...r.current,state:d})}function c(d){a({...r.current,postalCode:d})}return(0,Eo.jsxs)(Po.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,Eo.jsx)(Po.NativeSelect,{"data-testid":"address-use",defaultValue:o.use,onChange:d=>n(d.currentTarget.value),data:["","home","work","temp","old","billing"]}),(0,Eo.jsx)(Po.NativeSelect,{"data-testid":"address-type",defaultValue:o.type,onChange:d=>l(d.currentTarget.value),data:["","postal","physical","both"]}),(0,Eo.jsx)(Po.TextInput,{placeholder:"Line 1",defaultValue:vi(o,0),onChange:d=>f(d.currentTarget.value)}),(0,Eo.jsx)(Po.TextInput,{placeholder:"Line 2",defaultValue:vi(o,1),onChange:d=>i(d.currentTarget.value)}),(0,Eo.jsx)(Po.TextInput,{placeholder:"City",defaultValue:o.city,onChange:d=>s(d.currentTarget.value)}),(0,Eo.jsx)(Po.TextInput,{placeholder:"State",defaultValue:o.state,onChange:d=>u(d.currentTarget.value)}),(0,Eo.jsx)(Po.TextInput,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:d=>c(d.currentTarget.value)})]})}var Ci=require("@mantine/core"),bi=require("@medplum/core");var In=require("react"),Ri=require("react/jsx-runtime");function Kl(e){let o=ia(),[t,r]=(0,In.useState)(e.defaultValue||{}),a=(0,In.useRef)();a.current=t;function n(l){let f=l?{text:l,authorReference:o&&(0,bi.createReference)(o),time:new Date().toISOString()}:{};r(f),e.onChange&&e.onChange(f)}return(0,Ri.jsx)(Ci.TextInput,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:l=>n(l.currentTarget.value)})}var Fn=require("@mantine/core"),Zi=require("@mantine/notifications");var Tr=require("react");var Ai=require("@mantine/core"),Mi=require("@medplum/core");var ua=require("react"),St=Ql(require("prop-types"));var Pi={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var Pm=Object.defineProperty,Tm=Object.defineProperties,km=Object.getOwnPropertyDescriptors,gn=Object.getOwnPropertySymbols,Di=Object.prototype.hasOwnProperty,Bi=Object.prototype.propertyIsEnumerable,Ti=(e,o,t)=>o in e?Pm(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,ki=(e,o)=>{for(var t in o||(o={}))Di.call(o,t)&&Ti(e,t,o[t]);if(gn)for(var t of gn(o))Bi.call(o,t)&&Ti(e,t,o[t]);return e},Dm=(e,o)=>Tm(e,km(o)),Bm=(e,o)=>{var t={};for(var r in e)Di.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&gn)for(var r of gn(e))o.indexOf(r)<0&&Bi.call(e,r)&&(t[r]=e[r]);return t},g=(e,o,t)=>{let r=(0,ua.forwardRef)((a,n)=>{var l=a,{color:f="currentColor",size:i=24,stroke:s=2,children:u}=l,c=Bm(l,["color","size","stroke","children"]);return(0,ua.createElement)("svg",ki(Dm(ki({ref:n},Pi),{width:i,height:i,stroke:f,strokeWidth:s,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([d,m])=>(0,ua.createElement)(d,m)),...u||[]])});return r.propTypes={color:St.default.string,size:St.default.oneOfType([St.default.string,St.default.number]),stroke:St.default.oneOfType([St.default.string,St.default.number])},r.displayName=`${o}`,r};var Zl=g("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var Xt=g("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var Yl=g("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var jl=g("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var ef=g("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var of=g("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var tf=g("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var rf=g("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var af=g("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var nf=g("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Yo=g("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var ca=g("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var lf=g("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var ff=g("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var Ct=g("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var Jt=g("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var da=g("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var sf=g("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var ma=g("copy","IconCopy",[["path",{d:"M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]]);var uf=g("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var cf=g("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var df=g("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var Sr=g("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Cr=g("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var hn=g("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var mf=g("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var pf=g("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var xf=g("gender-female","IconGenderFemale",[["path",{d:"M12 9m-5 0a5 5 0 1 0 10 0a5 5 0 1 0 -10 0",key:"svg-0"}],["path",{d:"M12 14v7",key:"svg-1"}],["path",{d:"M9 18h6",key:"svg-2"}]]);var If=g("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var gf=g("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var yn=g("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var vn=g("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var hf=g("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var yf=g("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var vf=g("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Sf=g("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Cf=g("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var bf=g("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var br=g("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var pa=g("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var xa=g("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Rf=g("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Pf=g("stethoscope","IconStethoscope",[["path",{d:"M6 4h-1a2 2 0 0 0 -2 2v3.5h0a5.5 5.5 0 0 0 11 0v-3.5a2 2 0 0 0 -2 -2h-1",key:"svg-0"}],["path",{d:"M8 15a6 6 0 1 0 12 0v-3",key:"svg-1"}],["path",{d:"M11 3v2",key:"svg-2"}],["path",{d:"M6 3v2",key:"svg-3"}],["path",{d:"M20 10m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-4"}]]);var Tf=g("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var kf=g("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var Ia=g("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Df=g("user-square","IconUserSquare",[["path",{d:"M9 10a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-0"}],["path",{d:"M6 21v-1a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v1",key:"svg-1"}],["path",{d:"M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z",key:"svg-2"}]]);var Bf=g("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);var Fi=require("react"),Af=require("react/jsx-runtime"),$t=class extends Fi.Component{constructor(o){super(o),this.state={lastLocation:window.location.toString()}}static getDerivedStateFromError(o){return{error:o,lastLocation:window.location.toString()}}componentDidUpdate(o,t){window.location.toString()!==this.state.lastLocation&&this.setState({lastLocation:window.location.toString(),error:void 0})}shouldComponentUpdate(o,t){return!!(this.props.children!==o.children||t.error&&!this.state.error||this.state.lastLocation!==window.location.toString())}componentDidCatch(o,t){console.error("Uncaught error:",o,t)}render(){return this.state.error?(0,Af.jsx)(Ai.Alert,{icon:(0,Af.jsx)(Xt,{size:16}),title:"Something went wrong",color:"red",children:(0,Mi.normalizeErrorString)(this.state.error)}):this.props.children}};var Sn=require("@mantine/core"),Mf=require("react/jsx-runtime");function Cn(){return(0,Mf.jsx)(Sn.Center,{style:{width:"100%",height:"100vh"},children:(0,Mf.jsx)(Sn.Loader,{})})}var _=require("@mantine/core"),ya=require("@medplum/core");var Ui=require("react");var wi=require("@medplum/core"),bn=require("react/jsx-runtime");function ga(e){let o=e.value;return o?(0,bn.jsx)(bn.Fragment,{children:(0,wi.formatHumanName)(o,e.options)}):null}var Ff=require("@mantine/core"),kn=require("@medplum/core");var Ei=require("@mantine/core"),Pn=require("@medplum/core");function L(e){e.preventDefault(),e.stopPropagation()}function Rn(e){if(Oi(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Oi(o[0]))return!0}return!1}function Oi(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}var Li=require("react/jsx-runtime");function Ve(e){let o=Ko(),{to:t,suffix:r,label:a,onClick:n,children:l,...f}=e,i=Am(t);return r&&(i+="/"+r),(0,Li.jsx)(Ei.Anchor,{href:i,"aria-label":a,onClick:s=>{L(s),n?n(s):t&&o(i)},...f,children:l})}function Am(e){if(e){if(typeof e=="string")return Mm(e);if((0,Pn.isResource)(e))return Fm(e);if((0,Pn.isReference)(e))return wm(e)}return"#"}function Mm(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Fm(e){return`/${e.resourceType}/${e.id}`}function wm(e){return`/${e.reference}`}var Tn=require("react/jsx-runtime");function He(e){let o=oe(e.value),t=o?(0,kn.getDisplayString)(o):e.alt??"",r=(o&&(0,kn.getImageSrc)(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?(0,Tn.jsx)(Ve,{to:o,children:(0,Tn.jsx)(Ff.Avatar,{src:r,alt:t,radius:a,...n})}):(0,Tn.jsx)(Ff.Avatar,{src:r,alt:t,radius:a,...n})}var Kt=require("@mantine/core"),jo=require("@medplum/core");var ha=require("react");var Dn=require("@mantine/core"),Ni=require("@mantine/notifications"),Vi=require("@medplum/core"),ge=require("react");var wf=require("react/jsx-runtime");function _t(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:l,creatable:f,...i}=e,s=Om(o),u=(0,ge.useRef)(null),[c,d]=(0,ge.useState)(),[m,p]=(0,ge.useState)(),[x,b]=(0,ge.useState)(),[v,S]=(0,ge.useState)(s.map(r)),[R,T]=(0,ge.useState)([]),h=(0,ge.useRef)(),E=(0,ge.useRef)(),re=(0,ge.useRef)();re.current=c;let Se=(0,ge.useRef)();Se.current=m;let na=(0,ge.useRef)();na.current=x;let go=(0,ge.useRef)();go.current=R;let ho=(0,ge.useCallback)(()=>{d(void 0);let Pe=u.current?.value.trim()||"";if(Pe===E.current&&a===h.current)return;E.current=Pe,h.current=a;let Ge=new AbortController;p(Ge),a(Pe,Ge.signal).then(Xe=>{Ge.signal.aborted||(T(Xe.map(r)),p(void 0),na.current&&(Xe.length>0&&n(Xe.slice(0,1)),b(!1)))}).catch(Xe=>{Ge.signal.aborted||Xe.message.includes("aborted")||(0,Ni.showNotification)({color:"red",message:(0,Vi.normalizeErrorString)(Xe)})})},[a,n,r]),P=(0,ge.useCallback)(()=>{Se.current&&(Se.current.abort(),p(void 0)),re.current!==void 0&&window.clearTimeout(re.current);let Pe=window.setTimeout(()=>ho(),100);d(Pe)},[ho]),G=(0,ge.useCallback)(Pe=>{let Ge=[],Xe=[];for(let la of Pe){let un=go.current?.find(pm=>pm.value===la),fa=un?.resource;!fa&&f!==!1&&l&&(fa=l(la),un=r(fa)),fa&&Ge.push(fa),un&&Xe.push(un)}n(Ge),S(Xe)},[f,n,l,r]),vt=(0,ge.useCallback)(Pe=>{Pe.key==="Enter"&&(!re.current&&!Se.current?(L(Pe),go.current&&go.current.length>0&&(T(go.current.slice(0,1)),G([go.current[0].value]))):b(!0))},[G]),k=(0,ge.useCallback)(Pe=>{let Ge=r(l(Pe));return T([...go.current,Ge]),Ge},[l,T,r]),K=(0,ge.useCallback)((Pe,Ge)=>!Ge,[]);return(0,ge.useEffect)(()=>()=>{Se.current&&Se.current.abort()},[]),(0,wf.jsx)(Dn.MultiSelect,{...i,ref:u,defaultValue:s.map(t),searchable:!0,onKeyDown:vt,onSearchChange:P,data:[...v,...R],onFocus:ho,onChange:G,onCreate:k,rightSectionWidth:40,rightSection:m?(0,wf.jsx)(Dn.Loader,{size:16}):null,filter:K,creatable:!0,withinPortal:!0})}function Om(e){return e?Array.isArray(e)?e:[e]:[]}var Lo=require("react/jsx-runtime"),Em=(0,Kt.createStyles)(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Lm(e){return e.id}function Nm(e){return{value:e.id,label:(0,jo.getDisplayString)(e),resource:e}}function Gi(e){let{classes:o}=Em(),t=Ko(),r=C(),a=(0,ha.useCallback)(async(l,f)=>{let i=Hm(l),s={signal:f},u=await r.graphql(i,void 0,void 0,s);return qm(u,l)},[r]),n=(0,ha.useCallback)(l=>{l.length>0&&t(`/${(0,jo.getReferenceString)(l[0])}`)},[t]);return(0,Lo.jsx)(_t,{size:"sm",radius:"md",className:o.searchInput,icon:(0,Lo.jsx)(bf,{size:16}),placeholder:"Search",itemComponent:Vm,toKey:Lm,toOption:Nm,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1},`${e.pathname}?${e.searchParams}`)}var Vm=(0,ha.forwardRef)(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),(0,Lo.jsx)("div",{ref:t,...o,children:(0,Lo.jsxs)(Kt.Group,{noWrap:!0,children:[(0,Lo.jsx)(He,{value:e}),(0,Lo.jsxs)("div",{children:[(0,Lo.jsx)(Kt.Text,{children:(0,jo.getDisplayString)(e)}),(0,Lo.jsx)(Kt.Text,{size:"xs",color:"dimmed",children:r})]})]})})});function Hm(e){let o=JSON.stringify(e);return(0,jo.isUUID)(e)?`{
|
|
2
|
-
Patients1: PatientList(_id: ${
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var require_pointer=__commonJS({"../../node_modules/rfc6902/pointer.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.Pointer=void 0;function unescape(token){return token.replace(/~1/g,"/").replace(/~0/g,"~")}function escape(token){return token.replace(/~/g,"~0").replace(/\//g,"~1")}var Pointer=function(){function Pointer2(tokens){tokens===void 0&&(tokens=[""]),this.tokens=tokens}return Pointer2.fromJSON=function(path){var tokens=path.split("/").map(unescape);if(tokens[0]!=="")throw new Error("Invalid JSON Pointer: ".concat(path));return new Pointer2(tokens)},Pointer2.prototype.toString=function(){return this.tokens.map(escape).join("/")},Pointer2.prototype.evaluate=function(object){for(var parent=null,key="",value=object,i=1,l2=this.tokens.length;i<l2;i++)parent=value,key=this.tokens[i],!(key=="__proto__"||key=="constructor"||key=="prototype")&&(value=(parent||{})[key]);return{parent,key,value}},Pointer2.prototype.get=function(object){return this.evaluate(object).value},Pointer2.prototype.set=function(object,value){var endpoint=this.evaluate(object);endpoint.parent&&(endpoint.parent[endpoint.key]=value)},Pointer2.prototype.push=function(token){this.tokens.push(token)},Pointer2.prototype.add=function(token){var tokens=this.tokens.concat(String(token));return new Pointer2(tokens)},Pointer2}();exports.Pointer=Pointer}});var require_util=__commonJS({"../../node_modules/rfc6902/util.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.clone=exports.objectType=exports.hasOwnProperty=void 0;exports.hasOwnProperty=Object.prototype.hasOwnProperty;function objectType(object){return object===void 0?"undefined":object===null?"null":Array.isArray(object)?"array":typeof object}exports.objectType=objectType;function isNonPrimitive(value){return value!=null&&typeof value=="object"}function clone(source){if(!isNonPrimitive(source))return source;if(source.constructor==Array){for(var length_1=source.length,arrayTarget=new Array(length_1),i=0;i<length_1;i++)arrayTarget[i]=clone(source[i]);return arrayTarget}if(source.constructor==Date){var dateTarget=new Date(+source);return dateTarget}var objectTarget={};for(var key in source)exports.hasOwnProperty.call(source,key)&&(objectTarget[key]=clone(source[key]));return objectTarget}exports.clone=clone}});var require_diff=__commonJS({"../../node_modules/rfc6902/diff.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.diffAny=exports.diffObjects=exports.diffArrays=exports.intersection=exports.subtract=exports.isDestructive=void 0;var util_1=require_util();function isDestructive(_a){var op=_a.op;return op==="remove"||op==="replace"||op==="copy"||op==="move"}exports.isDestructive=isDestructive;function subtract(minuend,subtrahend){var obj={};for(var add_key in minuend)util_1.hasOwnProperty.call(minuend,add_key)&&minuend[add_key]!==void 0&&(obj[add_key]=1);for(var del_key in subtrahend)util_1.hasOwnProperty.call(subtrahend,del_key)&&subtrahend[del_key]!==void 0&&delete obj[del_key];return Object.keys(obj)}exports.subtract=subtract;function intersection(objects){for(var length=objects.length,counter={},i=0;i<length;i++){var object=objects[i];for(var key in object)util_1.hasOwnProperty.call(object,key)&&object[key]!==void 0&&(counter[key]=(counter[key]||0)+1)}for(var key in counter)counter[key]<length&&delete counter[key];return Object.keys(counter)}exports.intersection=intersection;function isArrayAdd(array_operation){return array_operation.op==="add"}function isArrayRemove(array_operation){return array_operation.op==="remove"}function appendArrayOperation(base,operation){return{operations:base.operations.concat(operation),cost:base.cost+1}}function diffArrays(input,output,ptr,diff2){diff2===void 0&&(diff2=diffAny);var memo3={"0,0":{operations:[],cost:0}};function dist(i,j2){var memo_key="".concat(i,",").concat(j2),memoized=memo3[memo_key];if(memoized===void 0){if(i>0&&j2>0&&!diff2(input[i-1],output[j2-1],ptr.add(String(i-1))).length)memoized=dist(i-1,j2-1);else{var alternatives=[];if(i>0){var remove_base=dist(i-1,j2),remove_operation={op:"remove",index:i-1};alternatives.push(appendArrayOperation(remove_base,remove_operation))}if(j2>0){var add_base=dist(i,j2-1),add_operation={op:"add",index:i-1,value:output[j2-1]};alternatives.push(appendArrayOperation(add_base,add_operation))}if(i>0&&j2>0){var replace_base=dist(i-1,j2-1),replace_operation={op:"replace",index:i-1,original:input[i-1],value:output[j2-1]};alternatives.push(appendArrayOperation(replace_base,replace_operation))}var best=alternatives.sort(function(a,b2){return a.cost-b2.cost})[0];memoized=best}memo3[memo_key]=memoized}return memoized}var input_length=isNaN(input.length)||input.length<=0?0:input.length,output_length=isNaN(output.length)||output.length<=0?0:output.length,array_operations=dist(input_length,output_length).operations,padded_operations=array_operations.reduce(function(_a,array_operation){var operations=_a[0],padding=_a[1];if(isArrayAdd(array_operation)){var padded_index=array_operation.index+1+padding,index_token=padded_index<input_length+padding?String(padded_index):"-",operation={op:array_operation.op,path:ptr.add(index_token).toString(),value:array_operation.value};return[operations.concat(operation),padding+1]}else if(isArrayRemove(array_operation)){var operation={op:array_operation.op,path:ptr.add(String(array_operation.index+padding)).toString()};return[operations.concat(operation),padding-1]}else{var replace_ptr=ptr.add(String(array_operation.index+padding)),replace_operations=diff2(array_operation.original,array_operation.value,replace_ptr);return[operations.concat.apply(operations,replace_operations),padding]}},[[],0])[0];return padded_operations}exports.diffArrays=diffArrays;function diffObjects(input,output,ptr,diff2){diff2===void 0&&(diff2=diffAny);var operations=[];return subtract(input,output).forEach(function(key){operations.push({op:"remove",path:ptr.add(key).toString()})}),subtract(output,input).forEach(function(key){operations.push({op:"add",path:ptr.add(key).toString(),value:output[key]})}),intersection([input,output]).forEach(function(key){operations.push.apply(operations,diff2(input[key],output[key],ptr.add(key)))}),operations}exports.diffObjects=diffObjects;function diffAny(input,output,ptr,diff2){if(diff2===void 0&&(diff2=diffAny),input===output)return[];var input_type=(0,util_1.objectType)(input),output_type=(0,util_1.objectType)(output);return input_type=="array"&&output_type=="array"?diffArrays(input,output,ptr,diff2):input_type=="object"&&output_type=="object"?diffObjects(input,output,ptr,diff2):[{op:"replace",path:ptr.toString(),value:output}]}exports.diffAny=diffAny}});var require_patch=__commonJS({"../../node_modules/rfc6902/patch.js"(exports){"use strict";var __extends=exports&&exports.__extends||function(){var extendStatics=function(d2,b2){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d3,b3){d3.__proto__=b3}||function(d3,b3){for(var p2 in b3)Object.prototype.hasOwnProperty.call(b3,p2)&&(d3[p2]=b3[p2])},extendStatics(d2,b2)};return function(d2,b2){if(typeof b2!="function"&&b2!==null)throw new TypeError("Class extends value "+String(b2)+" is not a constructor or null");extendStatics(d2,b2);function __(){this.constructor=d2}d2.prototype=b2===null?Object.create(b2):(__.prototype=b2.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:!0});exports.apply=exports.InvalidOperationError=exports.test=exports.copy=exports.move=exports.replace=exports.remove=exports.add=exports.TestError=exports.MissingError=void 0;var pointer_1=require_pointer(),util_1=require_util(),diff_1=require_diff(),MissingError=function(_super){__extends(MissingError2,_super);function MissingError2(path){var _this=_super.call(this,"Value required at path: ".concat(path))||this;return _this.path=path,_this.name="MissingError",_this}return MissingError2}(Error);exports.MissingError=MissingError;var TestError=function(_super){__extends(TestError2,_super);function TestError2(actual,expected){var _this=_super.call(this,"Test failed: ".concat(actual," != ").concat(expected))||this;return _this.actual=actual,_this.expected=expected,_this.name="TestError",_this}return TestError2}(Error);exports.TestError=TestError;function _add(object,key,value){if(Array.isArray(object))if(key=="-")object.push(value);else{var index=parseInt(key,10);object.splice(index,0,value)}else object[key]=value}function _remove(object,key){if(Array.isArray(object)){var index=parseInt(key,10);object.splice(index,1)}else delete object[key]}function add(object,operation){var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);return endpoint.parent===void 0?new MissingError(operation.path):(_add(endpoint.parent,endpoint.key,(0,util_1.clone)(operation.value)),null)}exports.add=add;function remove(object,operation){var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);return endpoint.value===void 0?new MissingError(operation.path):(_remove(endpoint.parent,endpoint.key),null)}exports.remove=remove;function replace(object,operation){var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);if(endpoint.parent===null)return new MissingError(operation.path);if(Array.isArray(endpoint.parent)){if(parseInt(endpoint.key,10)>=endpoint.parent.length)return new MissingError(operation.path)}else if(endpoint.value===void 0)return new MissingError(operation.path);return endpoint.parent[endpoint.key]=(0,util_1.clone)(operation.value),null}exports.replace=replace;function move(object,operation){var from_endpoint=pointer_1.Pointer.fromJSON(operation.from).evaluate(object);if(from_endpoint.value===void 0)return new MissingError(operation.from);var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);return endpoint.parent===void 0?new MissingError(operation.path):(_remove(from_endpoint.parent,from_endpoint.key),_add(endpoint.parent,endpoint.key,from_endpoint.value),null)}exports.move=move;function copy(object,operation){var from_endpoint=pointer_1.Pointer.fromJSON(operation.from).evaluate(object);if(from_endpoint.value===void 0)return new MissingError(operation.from);var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);return endpoint.parent===void 0?new MissingError(operation.path):(_add(endpoint.parent,endpoint.key,(0,util_1.clone)(from_endpoint.value)),null)}exports.copy=copy;function test(object,operation){var endpoint=pointer_1.Pointer.fromJSON(operation.path).evaluate(object);return(0,diff_1.diffAny)(endpoint.value,operation.value,new pointer_1.Pointer).length?new TestError(endpoint.value,operation.value):null}exports.test=test;var InvalidOperationError=function(_super){__extends(InvalidOperationError2,_super);function InvalidOperationError2(operation){var _this=_super.call(this,"Invalid operation: ".concat(operation.op))||this;return _this.operation=operation,_this.name="InvalidOperationError",_this}return InvalidOperationError2}(Error);exports.InvalidOperationError=InvalidOperationError;function apply(object,operation){switch(operation.op){case"add":return add(object,operation);case"remove":return remove(object,operation);case"replace":return replace(object,operation);case"move":return move(object,operation);case"copy":return copy(object,operation);case"test":return test(object,operation)}return new InvalidOperationError(operation)}exports.apply=apply}});var require_rfc6902=__commonJS({"../../node_modules/rfc6902/index.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.createTests=exports.createPatch=exports.applyPatch=exports.Pointer=void 0;var pointer_1=require_pointer();Object.defineProperty(exports,"Pointer",{enumerable:!0,get:function(){return pointer_1.Pointer}});var patch_1=require_patch(),diff_1=require_diff();function applyPatch(object,patch){return patch.map(function(operation){return(0,patch_1.apply)(object,operation)})}exports.applyPatch=applyPatch;function wrapVoidableDiff(diff2){function wrappedDiff(input,output,ptr){var custom_patch=diff2(input,output,ptr);return Array.isArray(custom_patch)?custom_patch:(0,diff_1.diffAny)(input,output,ptr,wrappedDiff)}return wrappedDiff}function createPatch2(input,output,diff2){var ptr=new pointer_1.Pointer;return(diff2?wrapVoidableDiff(diff2):diff_1.diffAny)(input,output,ptr)}exports.createPatch=createPatch2;function createTest(input,path){var endpoint=pointer_1.Pointer.fromJSON(path).evaluate(input);if(endpoint!==void 0)return{op:"test",path,value:endpoint.value}}function createTests(input,patch){var tests=new Array;return patch.filter(diff_1.isDestructive).forEach(function(operation){var pathTest=createTest(input,operation.path);if(pathTest&&tests.push(pathTest),"from"in operation){var fromTest=createTest(input,operation.from);fromTest&&tests.push(fromTest)}}),tests}exports.createTests=createTests}});var src_exports={};__export(src_exports,{AddressDisplay:()=>AddressDisplay,AddressInput:()=>AddressInput,AnnotationInput:()=>AnnotationInput,AppShell:()=>AppShell,AsyncAutocomplete:()=>AsyncAutocomplete,AttachmentArrayDisplay:()=>AttachmentArrayDisplay,AttachmentArrayInput:()=>AttachmentArrayInput,AttachmentButton:()=>AttachmentButton,AttachmentDisplay:()=>AttachmentDisplay,AttachmentInput:()=>AttachmentInput,BackboneElementDisplay:()=>BackboneElementDisplay,BackboneElementInput:()=>BackboneElementInput,CalendarInput:()=>CalendarInput,CheckboxFormSection:()=>CheckboxFormSection,CodeInput:()=>CodeInput,CodeableConceptDisplay:()=>CodeableConceptDisplay,CodeableConceptInput:()=>CodeableConceptInput,CodingDisplay:()=>CodingDisplay,CodingInput:()=>CodingInput,ContactDetailDisplay:()=>ContactDetailDisplay,ContactDetailInput:()=>ContactDetailInput,ContactPointDisplay:()=>ContactPointDisplay,ContactPointInput:()=>ContactPointInput,Container:()=>Container,DateTimeInput:()=>DateTimeInput,DefaultResourceTimeline:()=>DefaultResourceTimeline,DescriptionList:()=>DescriptionList,DescriptionListEntry:()=>DescriptionListEntry,DiagnosticReportDisplay:()=>DiagnosticReportDisplay,Document:()=>Document,ElementDefinitionInputSelector:()=>ElementDefinitionInputSelector,ElementDefinitionTypeInput:()=>ElementDefinitionTypeInput,EncounterTimeline:()=>EncounterTimeline,ErrorBoundary:()=>ErrorBoundary,FhirPathTable:()=>FhirPathTable,Form:()=>Form,FormSection:()=>FormSection,Header:()=>Header,HumanNameDisplay:()=>HumanNameDisplay,HumanNameInput:()=>HumanNameInput,IdentifierDisplay:()=>IdentifierDisplay,IdentifierInput:()=>IdentifierInput,Loading:()=>Loading,Logo:()=>Logo,MeasureReportDisplay:()=>MeasureReportDisplay,MedplumLink:()=>MedplumLink,MedplumProvider:()=>H,MemoizedFhirPathTable:()=>MemoizedFhirPathTable,MemoizedSearchControl:()=>MemoizedSearchControl,MoneyDisplay:()=>MoneyDisplay,MoneyInput:()=>MoneyInput,Navbar:()=>Navbar,ObservationTable:()=>ObservationTable,OperationOutcomeAlert:()=>OperationOutcomeAlert,Panel:()=>Panel,PatientSummary:()=>PatientSummary,PatientTimeline:()=>PatientTimeline,PlanDefinitionBuilder:()=>PlanDefinitionBuilder,QuantityDisplay:()=>QuantityDisplay,QuantityInput:()=>QuantityInput,QuestionnaireBuilder:()=>QuestionnaireBuilder,QuestionnaireForm:()=>QuestionnaireForm,QuestionnaireItemType:()=>QuestionnaireItemType,RangeDisplay:()=>RangeDisplay,RangeInput:()=>RangeInput,ReferenceDisplay:()=>ReferenceDisplay,ReferenceInput:()=>ReferenceInput,ReferenceRangeEditor:()=>ReferenceRangeEditor,ReferenceRangeGroupEditor:()=>ReferenceRangeGroupEditor,RegisterForm:()=>RegisterForm,RequestGroupDisplay:()=>RequestGroupDisplay,ResourceArrayDisplay:()=>ResourceArrayDisplay,ResourceArrayInput:()=>ResourceArrayInput,ResourceAvatar:()=>ResourceAvatar,ResourceBadge:()=>ResourceBadge,ResourceBlame:()=>ResourceBlame,ResourceDiff:()=>ResourceDiff,ResourceForm:()=>ResourceForm,ResourceHistoryTable:()=>ResourceHistoryTable,ResourceInput:()=>ResourceInput,ResourceName:()=>ResourceName,ResourcePropertyDisplay:()=>ResourcePropertyDisplay,ResourcePropertyInput:()=>ResourcePropertyInput,ResourceTable:()=>ResourceTable,ResourceTimeline:()=>ResourceTimeline,Scheduler:()=>Scheduler,SearchChangeEvent:()=>SearchChangeEvent,SearchClickEvent:()=>SearchClickEvent,SearchControl:()=>SearchControl,SearchFieldEditor:()=>SearchFieldEditor,SearchFilterEditor:()=>SearchFilterEditor,SearchLoadEvent:()=>SearchLoadEvent,ServiceRequestTimeline:()=>ServiceRequestTimeline,SignInForm:()=>SignInForm,SmartAppLaunchLink:()=>SmartAppLaunchLink,StatusBadge:()=>StatusBadge,Timeline:()=>Timeline,TimelineItem:()=>TimelineItem,TimingInput:()=>TimingInput,ValueSetAutocomplete:()=>ValueSetAutocomplete,addDateFilterBetween:()=>addDateFilterBetween,addField:()=>addField,addFilter:()=>addFilter,addLastMonthFilter:()=>addLastMonthFilter,addMissingFilter:()=>addMissingFilter,addNextMonthFilter:()=>addNextMonthFilter,addThisMonthFilter:()=>addThisMonthFilter,addTodayFilter:()=>addTodayFilter,addTomorrowFilter:()=>addTomorrowFilter,addYearToDateFilter:()=>addYearToDateFilter,addYesterdayFilter:()=>addYesterdayFilter,buildFieldNameString:()=>buildFieldNameString,buildInitialResponse:()=>buildInitialResponse,buildInitialResponseItem:()=>buildInitialResponseItem,clearFilters:()=>clearFilters,clearFiltersOnField:()=>clearFiltersOnField,convertIsoToLocal:()=>convertIsoToLocal,convertLocalToIso:()=>convertLocalToIso,createScriptTag:()=>createScriptTag,deleteFilter:()=>deleteFilter,formatReferenceString:()=>formatReferenceString,getErrorsForInput:()=>getErrorsForInput,getFieldDefinitions:()=>getFieldDefinitions,getIssuesForExpression:()=>getIssuesForExpression,getNewMultiSelectValues:()=>getNewMultiSelectValues,getNumberOfPages:()=>getNumberOfPages,getOpString:()=>getOpString,getQuestionnaireItemReferenceFilter:()=>getQuestionnaireItemReferenceFilter,getQuestionnaireItemReferenceTargetTypes:()=>getQuestionnaireItemReferenceTargetTypes,getRecaptcha:()=>getRecaptcha,getSearchOperators:()=>getSearchOperators,getSortField:()=>getSortField,initRecaptcha:()=>initRecaptcha,isChoiceQuestion:()=>isChoiceQuestion,isQuestionEnabled:()=>isQuestionEnabled,isSortDescending:()=>isSortDescending,isSupportedProfileStructureDefinition:()=>isSupportedProfileStructureDefinition,parseForm:()=>parseForm,reactContext:()=>p,renderValue:()=>renderValue,setFilters:()=>setFilters,setOffset:()=>setOffset,setPage:()=>setPage,setPropertyValue:()=>setPropertyValue,setQuestionnaireItemReferenceTargetTypes:()=>setQuestionnaireItemReferenceTargetTypes,setSort:()=>setSort,sortByDateAndPriority:()=>sortByDateAndPriority,toggleSort:()=>toggleSort,useMedplum:()=>s,useMedplumContext:()=>m,useMedplumNavigate:()=>B,useMedplumProfile:()=>w,useResource:()=>j,useSearch:()=>ie,useSearchOne:()=>ue,useSearchResources:()=>ce});module.exports=__toCommonJS(src_exports);var import_react=require("react"),import_react2=require("react"),import_jsx_runtime=require("react/jsx-runtime"),import_core=require("@medplum/core"),import_react3=require("react"),import_core2=require("@medplum/core"),import_react4=require("react"),p=(0,import_react2.createContext)(void 0);function m(){return(0,import_react2.useContext)(p)}function s(){return m().medplum}function B(){return m().navigate}function w(){return m().profile}function H(t){let e=t.medplum,o=t.navigate??E,[r2,i]=(0,import_react.useState)({profile:e.getProfile(),loading:!e.isInitialized});(0,import_react.useEffect)(()=>{e&&(e.isInitialized||(i(n=>({...n,loading:!0})),e.getInitPromise().then(()=>i(n=>({...n,loading:!1}))).catch(console.error)))},[e,e.isInitialized]),(0,import_react.useEffect)(()=>{function n(){i({...r2,profile:e.getProfile()})}return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[e,r2]);let u=(0,import_react.useMemo)(()=>({...r2,medplum:e,navigate:o}),[r2,e,o]);return(0,import_jsx_runtime.jsx)(p.Provider,{value:u,children:t.children})}function E(t){window.location.assign(t)}function j(t,e){let o=s(),[r2,i]=(0,import_react3.useState)(M(o,t)),u=(0,import_react3.useCallback)(n=>{(0,import_core.deepEquals)(n,r2)||i(n)},[r2,i]);return(0,import_react3.useEffect)(()=>{u(M(o,t))},[o,t,u]),(0,import_react3.useEffect)(()=>{let n=!0;return(0,import_core.isReference)(t)&&o.readReference(t).then(c=>{n&&u(c)}).catch(c=>{n&&(u(void 0),e&&e((0,import_core.normalizeOperationOutcome)(c)))}),()=>n=!1},[o,r2,t,u,e]),r2}function M(t,e){if(e){if((0,import_core.isResource)(e))return e;if((0,import_core.isReference)(e))return t.getCachedReference(e)}}function ie(t,e){return l("search",t,e)}function ue(t,e){return l("searchOne",t,e)}function ce(t,e){return l("searchResources",t,e)}function l(t,e,o){let r2=s(),[i,u]=(0,import_react4.useState)(),[n,c]=(0,import_react4.useState)(!1),[y,a]=(0,import_react4.useState)(),[O,R]=(0,import_react4.useState)();return(0,import_react4.useEffect)(()=>{let x=r2.fhirSearchUrl(e,o).toString();x!==i&&(u(x),r2[t](e,o).then(f=>{c(!1),a(f),R(import_core2.allOk)}).catch(f=>{c(!1),a(void 0),R((0,import_core2.normalizeOperationOutcome)(f))}))},[r2,t,e,o,i,a]),[y,n,O]}var import_core3=require("@medplum/core"),import_jsx_runtime2=require("react/jsx-runtime");function AddressDisplay(props){let address=props.value;return address?(0,import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment,{children:(0,import_core3.formatAddress)(address)}):null}var import_core4=require("@mantine/core"),import_react5=require("react"),import_jsx_runtime3=require("react/jsx-runtime");function getLine(address,index){return address.line&&address.line.length>index?address.line[index]:""}function setLine(address,index,str){let line=address.line||[];for(;line.length<=index;)line.push("");return line[index]=str,{...address,line}}function AddressInput(props){let[value,setValue]=(0,import_react5.useState)(props.defaultValue||{}),valueRef=(0,import_react5.useRef)();valueRef.current=value;function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}function setUse(use){setValueWrapper({...valueRef.current,use})}function setType(type){setValueWrapper({...valueRef.current,type})}function setLine1(line1){setValueWrapper(setLine(valueRef.current||{},0,line1))}function setLine2(line2){setValueWrapper(setLine(valueRef.current||{},1,line2))}function setCity(city){setValueWrapper({...valueRef.current,city})}function setState(state){setValueWrapper({...valueRef.current,state})}function setPostalCode(postalCode){setValueWrapper({...valueRef.current,postalCode})}return(0,import_jsx_runtime3.jsxs)(import_core4.Group,{gap:"xs",wrap:"nowrap",grow:!0,children:[(0,import_jsx_runtime3.jsx)(import_core4.NativeSelect,{"data-testid":"address-use",defaultValue:value.use,onChange:e=>setUse(e.currentTarget.value),data:["","home","work","temp","old","billing"]}),(0,import_jsx_runtime3.jsx)(import_core4.NativeSelect,{"data-testid":"address-type",defaultValue:value.type,onChange:e=>setType(e.currentTarget.value),data:["","postal","physical","both"]}),(0,import_jsx_runtime3.jsx)(import_core4.TextInput,{placeholder:"Line 1",defaultValue:getLine(value,0),onChange:e=>setLine1(e.currentTarget.value)}),(0,import_jsx_runtime3.jsx)(import_core4.TextInput,{placeholder:"Line 2",defaultValue:getLine(value,1),onChange:e=>setLine2(e.currentTarget.value)}),(0,import_jsx_runtime3.jsx)(import_core4.TextInput,{placeholder:"City",defaultValue:value.city,onChange:e=>setCity(e.currentTarget.value)}),(0,import_jsx_runtime3.jsx)(import_core4.TextInput,{placeholder:"State",defaultValue:value.state,onChange:e=>setState(e.currentTarget.value)}),(0,import_jsx_runtime3.jsx)(import_core4.TextInput,{placeholder:"Postal Code",defaultValue:value.postalCode,onChange:e=>setPostalCode(e.currentTarget.value)})]})}var import_core5=require("@mantine/core"),import_core6=require("@medplum/core");var import_react6=require("react"),import_jsx_runtime4=require("react/jsx-runtime");function AnnotationInput(props){let author=w(),[value,setValue]=(0,import_react6.useState)(props.defaultValue||{});function setText(text){let newValue=text?{text,authorReference:author&&(0,import_core6.createReference)(author),time:new Date().toISOString()}:{};setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime4.jsx)(import_core5.TextInput,{name:props.name,placeholder:"Annotation text",defaultValue:value.text,onChange:e=>setText(e.currentTarget.value)})}var import_core24=require("@mantine/core"),import_notifications3=require("@mantine/notifications");var import_react16=require("react");var import_core7=require("@mantine/core"),import_core8=require("@medplum/core");var import_react7=require("react"),import_prop_types=__toESM(require("prop-types"));var defaultAttributes={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var __defProp2=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp2=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(obj,key,value)=>key in obj?__defProp2(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b2)=>{for(var prop in b2||(b2={}))__hasOwnProp2.call(b2,prop)&&__defNormalProp(a,prop,b2[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b2))__propIsEnum.call(b2,prop)&&__defNormalProp(a,prop,b2[prop]);return a},__spreadProps=(a,b2)=>__defProps(a,__getOwnPropDescs(b2)),__objRest=(source,exclude)=>{var target={};for(var prop in source)__hasOwnProp2.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(source!=null&&__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(source))exclude.indexOf(prop)<0&&__propIsEnum.call(source,prop)&&(target[prop]=source[prop]);return target},createReactComponent=(iconName,iconNamePascal,iconNode)=>{let Component2=(0,import_react7.forwardRef)((_a,ref)=>{var _b=_a,{color="currentColor",size=24,stroke=2,children}=_b,rest=__objRest(_b,["color","size","stroke","children"]);return(0,import_react7.createElement)("svg",__spreadValues(__spreadProps(__spreadValues({ref},defaultAttributes),{width:size,height:size,stroke:color,strokeWidth:stroke,className:`tabler-icon tabler-icon-${iconName}`}),rest),[...iconNode.map(([tag,attrs])=>(0,import_react7.createElement)(tag,attrs)),...children||[]])});return Component2.propTypes={color:import_prop_types.default.string,size:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.number]),stroke:import_prop_types.default.oneOfType([import_prop_types.default.string,import_prop_types.default.number])},Component2.displayName=`${iconNamePascal}`,Component2};var IconAdjustmentsHorizontal=createReactComponent("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var IconAlertCircle=createReactComponent("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var IconArrowDown=createReactComponent("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var IconArrowUp=createReactComponent("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var IconBleachOff=createReactComponent("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var IconBleach=createReactComponent("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var IconBoxMultiple=createReactComponent("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var IconBracketsContain=createReactComponent("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var IconBucketOff=createReactComponent("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var IconBucket=createReactComponent("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var IconCalendar=createReactComponent("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var IconCheck=createReactComponent("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var IconCheckbox=createReactComponent("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var IconChevronDown=createReactComponent("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var IconCircleMinus=createReactComponent("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var IconCirclePlus=createReactComponent("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var IconCloudUpload=createReactComponent("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var IconColumns=createReactComponent("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var IconCopy=createReactComponent("copy","IconCopy",[["path",{d:"M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z",key:"svg-0"}],["path",{d:"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1",key:"svg-1"}]]);var IconCurrencyDollar=createReactComponent("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var IconDots=createReactComponent("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var IconEdit=createReactComponent("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var IconEqualNot=createReactComponent("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var IconEqual=createReactComponent("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var IconFileAlert=createReactComponent("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var IconFilePlus=createReactComponent("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var IconFilter=createReactComponent("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var IconGenderFemale=createReactComponent("gender-female","IconGenderFemale",[["path",{d:"M12 9m-5 0a5 5 0 1 0 10 0a5 5 0 1 0 -10 0",key:"svg-0"}],["path",{d:"M12 14v7",key:"svg-1"}],["path",{d:"M9 18h6",key:"svg-2"}]]);var IconListDetails=createReactComponent("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var IconLogout=createReactComponent("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var IconMathGreater=createReactComponent("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var IconMathLower=createReactComponent("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var IconMessage=createReactComponent("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var IconPin=createReactComponent("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var IconPinnedOff=createReactComponent("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var IconPlus=createReactComponent("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var IconRefresh=createReactComponent("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var IconSearch=createReactComponent("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var IconSettings=createReactComponent("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var IconSortAscending=createReactComponent("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var IconSortDescending=createReactComponent("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var IconSquare=createReactComponent("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var IconStethoscope=createReactComponent("stethoscope","IconStethoscope",[["path",{d:"M6 4h-1a2 2 0 0 0 -2 2v3.5h0a5.5 5.5 0 0 0 11 0v-3.5a2 2 0 0 0 -2 -2h-1",key:"svg-0"}],["path",{d:"M8 15a6 6 0 1 0 12 0v-3",key:"svg-1"}],["path",{d:"M11 3v2",key:"svg-2"}],["path",{d:"M6 3v2",key:"svg-3"}],["path",{d:"M20 10m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-4"}]]);var IconSwitchHorizontal=createReactComponent("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var IconTableExport=createReactComponent("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var IconTrash=createReactComponent("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var IconUserSquare=createReactComponent("user-square","IconUserSquare",[["path",{d:"M9 10a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-0"}],["path",{d:"M6 21v-1a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v1",key:"svg-1"}],["path",{d:"M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z",key:"svg-2"}]]);var IconX=createReactComponent("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);var import_react8=require("react"),import_jsx_runtime5=require("react/jsx-runtime"),ErrorBoundary=class extends import_react8.Component{constructor(props){super(props),this.state={lastLocation:window.location.toString()}}static getDerivedStateFromError(error){return{error,lastLocation:window.location.toString()}}componentDidUpdate(_prevProps,_prevState){window.location.toString()!==this.state.lastLocation&&this.setState({lastLocation:window.location.toString(),error:void 0})}shouldComponentUpdate(nextProps,nextState){return!!(this.props.children!==nextProps.children||nextState.error&&!this.state.error||this.state.lastLocation!==window.location.toString())}componentDidCatch(error,errorInfo){console.error("Uncaught error:",error,errorInfo)}render(){return this.state.error?(0,import_jsx_runtime5.jsx)(import_core7.Alert,{icon:(0,import_jsx_runtime5.jsx)(IconAlertCircle,{size:16}),title:"Something went wrong",color:"red",children:(0,import_core8.normalizeErrorString)(this.state.error)}):this.props.children}};var import_core9=require("@mantine/core"),import_jsx_runtime6=require("react/jsx-runtime");function Loading(){return(0,import_jsx_runtime6.jsx)(import_core9.Center,{style:{width:"100%",height:"100vh"},children:(0,import_jsx_runtime6.jsx)(import_core9.Loader,{})})}var AppShell_default={main:"AppShell_main"};var import_core19=require("@mantine/core"),import_core20=require("@medplum/core");function r(e){var t,f,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}var clsx_default=clsx;var import_react11=require("react");var import_core10=require("@medplum/core"),import_jsx_runtime7=require("react/jsx-runtime");function HumanNameDisplay(props){let name=props.value;return name?(0,import_jsx_runtime7.jsx)(import_jsx_runtime7.Fragment,{children:(0,import_core10.formatHumanName)(name,props.options)}):null}var import_core13=require("@mantine/core"),import_core14=require("@medplum/core");var import_core11=require("@mantine/core"),import_core12=require("@medplum/core");function killEvent(e){e.preventDefault(),e.stopPropagation()}function isCheckboxCell(el){if(isCheckboxElement(el))return!0;if(el instanceof HTMLTableCellElement){let children=el.children;if(children.length===1&&isCheckboxElement(children[0]))return!0}return!1}function isCheckboxElement(el){return el instanceof HTMLInputElement&&el.type==="checkbox"}var import_jsx_runtime8=require("react/jsx-runtime");function MedplumLink(props){let navigate=B(),{to,suffix,label,onClick,children,...rest}=props,href=getHref(to);return suffix&&(href+="/"+suffix),(0,import_jsx_runtime8.jsx)(import_core11.Anchor,{href,"aria-label":label,onClick:e=>{killEvent(e),onClick?onClick(e):to&&navigate(href)},...rest,children})}function getHref(to){if(to){if(typeof to=="string")return getStringHref(to);if((0,import_core12.isResource)(to))return getResourceHref(to);if((0,import_core12.isReference)(to))return getReferenceHref(to)}return"#"}function getStringHref(to){return to.startsWith("http://")||to.startsWith("https://")||to.startsWith("/")?to:"/"+to}function getResourceHref(to){return`/${to.resourceType}/${to.id}`}function getReferenceHref(to){return`/${to.reference}`}var import_jsx_runtime9=require("react/jsx-runtime");function ResourceAvatar(props){let resource=j(props.value),text=resource?(0,import_core14.getDisplayString)(resource):props.alt??"",imageUrl=(resource&&(0,import_core14.getImageSrc)(resource))??props.src,radius=props.radius??"xl",avatarProps={...props};return delete avatarProps.value,delete avatarProps.link,props.link?(0,import_jsx_runtime9.jsx)(MedplumLink,{to:resource,children:(0,import_jsx_runtime9.jsx)(import_core13.Avatar,{src:imageUrl,alt:text,radius,...avatarProps})}):(0,import_jsx_runtime9.jsx)(import_core13.Avatar,{src:imageUrl,alt:text,radius,...avatarProps})}var Header_default={logoButton:"Header_logoButton",user:"Header_user",userName:"Header_userName",userActive:"Header_userActive"};var import_core17=require("@medplum/core");var import_react10=require("react");var import_core15=require("@mantine/core"),import_notifications=require("@mantine/notifications"),import_core16=require("@medplum/core"),import_react9=require("react");var import_jsx_runtime10=require("react/jsx-runtime");function AsyncAutocomplete(props){let combobox=(0,import_core15.useCombobox)({onDropdownClose:()=>combobox.resetSelectedOption(),onDropdownOpen:()=>combobox.updateSelectedOptionIndex("active")}),{defaultValue:defaultValue2,toOption:toOption4,loadOptions,onChange,onCreate,creatable}=props,defaultItems=toDefaultItems(defaultValue2),[search,setSearch]=(0,import_react9.useState)(""),[timer,setTimer]=(0,import_react9.useState)(),[abortController,setAbortController]=(0,import_react9.useState)(),[autoSubmit,setAutoSubmit]=(0,import_react9.useState)(),[selected,setSelected]=(0,import_react9.useState)(defaultItems.map(toOption4)),[options,setOptions]=(0,import_react9.useState)([]),ItemComponent3=props.itemComponent??DefaultItemComponent,searchRef=(0,import_react9.useRef)();searchRef.current=search;let lastLoadOptionsRef=(0,import_react9.useRef)(),lastValueRef=(0,import_react9.useRef)(),timerRef=(0,import_react9.useRef)();timerRef.current=timer;let abortControllerRef=(0,import_react9.useRef)();abortControllerRef.current=abortController;let autoSubmitRef=(0,import_react9.useRef)();autoSubmitRef.current=autoSubmit;let optionsRef=(0,import_react9.useRef)();optionsRef.current=options;let handleTimer=(0,import_react9.useCallback)(()=>{if(setTimer(void 0),searchRef.current===lastValueRef.current&&loadOptions===lastLoadOptionsRef.current)return;lastValueRef.current=searchRef.current,lastLoadOptionsRef.current=loadOptions;let newAbortController=new AbortController;setAbortController(newAbortController),loadOptions(searchRef.current??"",newAbortController.signal).then(newValues=>{newAbortController.signal.aborted||(setOptions(newValues.map(toOption4)),setAbortController(void 0),autoSubmitRef.current?(newValues.length>0&&onChange(newValues.slice(0,1)),setAutoSubmit(!1)):newValues.length>0&&combobox.openDropdown())}).catch(err=>{newAbortController.signal.aborted||err.message.includes("aborted")||(0,import_notifications.showNotification)({color:"red",message:(0,import_core16.normalizeErrorString)(err)})})},[combobox,loadOptions,onChange,toOption4]),handleSearchChange=(0,import_react9.useCallback)(e=>{options&&options.length>0&&combobox.openDropdown(),combobox.updateSelectedOptionIndex(),setSearch(e.currentTarget.value),abortControllerRef.current&&(abortControllerRef.current.abort(),setAbortController(void 0)),timerRef.current!==void 0&&window.clearTimeout(timerRef.current);let newTimer=window.setTimeout(()=>handleTimer(),100);setTimer(newTimer)},[combobox,options,handleTimer]),handleChange=(0,import_react9.useCallback)(values=>{let result=[],newSelected=[];for(let value of values){let option=options?.find(option2=>option2.value===value),item=option?.resource;!item&&creatable!==!1&&onCreate&&(item=onCreate(value),option=toOption4(item)),item&&result.push(item),option&&newSelected.push(option)}onChange(result),setSelected(newSelected)},[creatable,options,onChange,onCreate,toOption4]),handleValueSelect=val=>{setSearch(""),setOptions([]),lastValueRef.current=void 0,handleChange(val==="$create"?[search]:[val])},handleValueRemove=(0,import_react9.useCallback)(item=>{setSelected(current=>current.filter(v2=>v2.value!==item.value))},[]),handleKeyDown=(0,import_react9.useCallback)(e=>{e.key==="Enter"?!timer&&!abortController?(killEvent(e),options&&options.length>0&&(setOptions(options.slice(0,1)),handleChange([options[0].value]))):setAutoSubmit(!0):e.key==="Backspace"&&search.length===0&&(killEvent(e),handleValueRemove(selected[selected.length-1]))},[search,selected,options,timer,abortController,handleChange,handleValueRemove]);return(0,import_react9.useEffect)(()=>()=>{abortControllerRef.current&&abortControllerRef.current.abort()},[]),(0,import_jsx_runtime10.jsxs)(import_core15.Combobox,{store:combobox,onOptionSubmit:handleValueSelect,withinPortal:!0,shadow:"xl",children:[(0,import_jsx_runtime10.jsx)(import_core15.Combobox.DropdownTarget,{children:(0,import_jsx_runtime10.jsx)(import_core15.PillsInput,{className:props.className,leftSection:props.leftSection,rightSection:abortController?(0,import_jsx_runtime10.jsx)(import_core15.Loader,{size:16}):null,children:(0,import_jsx_runtime10.jsxs)(import_core15.Pill.Group,{children:[selected.map(item=>(0,import_jsx_runtime10.jsx)(import_core15.Pill,{withRemoveButton:!0,onRemove:()=>handleValueRemove(item),children:item.label},item.value)),(0,import_jsx_runtime10.jsx)(import_core15.Combobox.EventsTarget,{children:(0,import_jsx_runtime10.jsx)(import_core15.PillsInput.Field,{role:"searchbox",value:search,placeholder:props.placeholder,onFocus:handleSearchChange,onBlur:()=>combobox.closeDropdown(),onKeyDown:handleKeyDown,onChange:handleSearchChange})})]})})}),(0,import_jsx_runtime10.jsx)(import_core15.Combobox.Dropdown,{children:(0,import_jsx_runtime10.jsxs)(import_core15.Combobox.Options,{children:[options.map(item=>(0,import_jsx_runtime10.jsx)(import_core15.Combobox.Option,{value:item.value,active:selected.includes(item),children:(0,import_jsx_runtime10.jsx)(ItemComponent3,{...item})},item.value)),creatable&&search.trim().length>0&&(0,import_jsx_runtime10.jsxs)(import_core15.Combobox.Option,{value:"$create",children:["+ Create ",search]}),!creatable&&search.trim().length>0&&options.length===0&&(0,import_jsx_runtime10.jsx)(import_core15.Combobox.Empty,{children:"Nothing found"})]})})]})}function toDefaultItems(defaultValue2){return defaultValue2?Array.isArray(defaultValue2)?defaultValue2:[defaultValue2]:[]}function DefaultItemComponent(props){return(0,import_jsx_runtime10.jsx)(import_core15.Group,{gap:"sm",children:(0,import_jsx_runtime10.jsx)("span",{children:props.label})})}var HeaderSearchInput_default={searchInput:"HeaderSearchInput_searchInput"};var import_core18=require("@mantine/core");var import_jsx_runtime11=require("react/jsx-runtime");function toOption(resource){return{value:resource.id,label:(0,import_core17.getDisplayString)(resource),resource}}function HeaderSearchInput(props){let navigate=B(),medplum=s(),loadData=(0,import_react10.useCallback)(async(input,signal)=>{let query=buildGraphQLQuery(input),options={signal},response=await medplum.graphql(query,void 0,void 0,options);return getResourcesFromResponse(response,input)},[medplum]),handleSelect=(0,import_react10.useCallback)(item=>{item.length>0&&navigate(`/${(0,import_core17.getReferenceString)(item[0])}`)},[navigate]);return(0,import_jsx_runtime11.jsx)(AsyncAutocomplete,{size:"sm",radius:"md",className:HeaderSearchInput_default.searchInput,leftSection:(0,import_jsx_runtime11.jsx)(IconSearch,{size:16}),placeholder:"Search",itemComponent:ItemComponent,toOption,onChange:handleSelect,loadOptions:loadData,maxValues:0,clearable:!1},`${props.pathname}?${props.searchParams}`)}var ItemComponent=(0,import_react10.forwardRef)(({resource,...others},ref)=>{let helpText;return resource.resourceType==="Patient"?helpText=resource.birthDate:resource.resourceType==="ServiceRequest"&&(helpText=resource.subject?.display),(0,import_jsx_runtime11.jsx)("div",{ref,...others,children:(0,import_jsx_runtime11.jsxs)(import_core18.Group,{wrap:"nowrap",children:[(0,import_jsx_runtime11.jsx)(ResourceAvatar,{value:resource}),(0,import_jsx_runtime11.jsxs)("div",{children:[(0,import_jsx_runtime11.jsx)(import_core18.Text,{children:(0,import_core17.getDisplayString)(resource)}),(0,import_jsx_runtime11.jsx)(import_core18.Text,{size:"xs",c:"dimmed",children:helpText})]})]})})});function buildGraphQLQuery(input){let escaped=JSON.stringify(input);return(0,import_core17.isUUID)(input)?`{
|
|
2
|
+
Patients1: PatientList(_id: ${escaped}, _count: 1) {
|
|
3
3
|
resourceType
|
|
4
4
|
id
|
|
5
5
|
identifier {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
birthDate
|
|
14
14
|
}
|
|
15
|
-
ServiceRequestList(_id: ${
|
|
15
|
+
ServiceRequestList(_id: ${escaped}, _count: 1) {
|
|
16
16
|
resourceType
|
|
17
17
|
id
|
|
18
18
|
identifier {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}`.replace(/\s+/g," "):`{
|
|
27
|
-
Patients1: PatientList(name: ${
|
|
27
|
+
Patients1: PatientList(name: ${escaped}, _count: 5) {
|
|
28
28
|
resourceType
|
|
29
29
|
id
|
|
30
30
|
identifier {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
birthDate
|
|
39
39
|
}
|
|
40
|
-
Patients2: PatientList(identifier: ${
|
|
40
|
+
Patients2: PatientList(identifier: ${escaped}, _count: 5) {
|
|
41
41
|
resourceType
|
|
42
42
|
id
|
|
43
43
|
identifier {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
}
|
|
51
51
|
birthDate
|
|
52
52
|
}
|
|
53
|
-
ServiceRequestList(identifier: ${
|
|
53
|
+
ServiceRequestList(identifier: ${escaped}, _count: 5) {
|
|
54
54
|
resourceType
|
|
55
55
|
id
|
|
56
56
|
identifier {
|
|
@@ -61,14 +61,14 @@
|
|
|
61
61
|
display
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
}`.replace(/\s+/g," ")}function qm(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Um(Gm(t),o).slice(0,5)}function Gm(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Um(e,o){return e.sort((t,r)=>Hi(r,o)-Hi(t,o))}function Hi(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,qi(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,qi((0,jo.formatHumanName)(r),o));return t}function qi(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var J=require("react/jsx-runtime"),Qm=(0,_.createStyles)(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Of(e){let o=vr(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:l,cx:f}=Qm(),[i,s]=(0,Ui.useState)(!1);return(0,J.jsx)(_.Header,{height:60,p:8,style:{zIndex:101},children:(0,J.jsxs)(_.Group,{position:"apart",children:[(0,J.jsxs)(_.Group,{spacing:"xs",children:[(0,J.jsx)(_.UnstyledButton,{className:l.logoButton,onClick:e.navbarToggle,children:e.logo}),!e.headerSearchDisabled&&(0,J.jsx)(Gi,{pathname:e.pathname,searchParams:e.searchParams})]}),(0,J.jsxs)(_.Menu,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:i,onClose:()=>s(!1),children:[(0,J.jsx)(_.Menu.Target,{children:(0,J.jsx)(_.UnstyledButton,{className:f(l.user,{[l.userActive]:i}),onClick:()=>s(u=>!u),children:(0,J.jsxs)(_.Group,{spacing:7,children:[(0,J.jsx)(He,{value:r,radius:"xl",size:24}),(0,J.jsx)(_.Text,{size:"sm",className:l.userName,children:(0,ya.formatHumanName)(r?.name?.[0])}),(0,J.jsx)(ff,{size:12,stroke:1.5})]})})}),(0,J.jsxs)(_.Menu.Dropdown,{children:[(0,J.jsxs)(_.Stack,{align:"center",p:"xl",children:[(0,J.jsx)(He,{size:"xl",radius:100,value:o.profile}),(0,J.jsx)(ga,{value:o.profile?.name?.[0]}),(0,J.jsx)(_.Text,{color:"dimmed",size:"xs",children:t.getActiveLogin()?.project.display})]}),n.length>1&&(0,J.jsx)(_.Menu.Divider,{}),n.map(u=>u.profile.reference!==(0,ya.getReferenceString)(o.profile)&&(0,J.jsx)(_.Menu.Item,{onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)},children:(0,J.jsxs)(_.Group,{children:[(0,J.jsx)(_.Avatar,{radius:"xl"}),(0,J.jsxs)("div",{style:{flex:1},children:[(0,J.jsx)(_.Text,{size:"sm",weight:500,children:u.profile.display}),(0,J.jsx)(_.Text,{color:"dimmed",size:"xs",children:u.project.display})]})]})},u.profile.reference)),(0,J.jsx)(_.Menu.Divider,{}),(0,J.jsx)(_.Menu.Item,{icon:(0,J.jsx)(Tf,{size:14,stroke:1.5}),onClick:()=>a("/signin"),children:"Add another account"}),(0,J.jsx)(_.Menu.Item,{icon:(0,J.jsx)(br,{size:14,stroke:1.5}),onClick:()=>a(`/${(0,ya.getReferenceString)(r)}`),children:"Account settings"}),(0,J.jsx)(_.Menu.Item,{icon:(0,J.jsx)(gf,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")},children:"Sign out"}),(0,J.jsx)(_.Text,{size:"xs",color:"dimmed",align:"center",children:e.version})]})]})]})})}var oo=require("@mantine/core");var Mn=require("react");var yo=require("@mantine/core"),Lf=require("@mantine/notifications"),Bn=require("@medplum/core");function Ef(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?zm(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Wm(o,t);return o}function zm(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Wm(e,o){e[o.name]=o.value}var Qi=require("react/jsx-runtime");function U(e){return(0,Qi.jsx)("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Ef(o.target);e.onSubmit&&e.onSubmit(t)},children:e.children})}var No=require("react/jsx-runtime");function zi(e){let o=C(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:l}=a,f=`${e.pathname}?${e.searchParams.toString()}`,i=(0,Bn.deepClone)(t);i.menu?.find(({title:u})=>u===n)?.link?.push({name:l,target:f}),o.updateResource(i).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),(0,Lf.showNotification)({color:"green",message:"Success"}),e.onOk()}).catch(u=>{(0,Lf.showNotification)({color:"red",message:(0,Bn.normalizeErrorString)(u)})})}return(0,No.jsx)(yo.Modal,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel,children:(0,No.jsx)(U,{onSubmit:r,children:(0,No.jsxs)(yo.Stack,{children:[(0,No.jsx)(Xm,{config:t}),(0,No.jsx)(yo.TextInput,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),(0,No.jsx)(yo.Group,{position:"right",children:(0,No.jsx)(yo.Button,{mt:"sm",type:"submit",children:"OK"})})]})})})}function Xm(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return(0,No.jsx)(yo.NativeSelect,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",data:t,withAsterisk:!0})}var An=require("react");var Ji=require("react");var Wi=require("react");var Xi=require("react/jsx-runtime");function Nf(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Jm(e){return typeof e.display=="string"?e.display:Nf(e)}function $m(e){return{value:Nf(e),label:Jm(e),resource:e}}function _m(e){return{code:e,display:e}}function Rr(e){let o=C(),{binding:t,creatable:r,clearable:a,expandParams:n,...l}=e,f=(0,Wi.useCallback)(async(i,s)=>{if(!t)return[];let c=(await o.valueSetExpand({...n,url:t,filter:i},{signal:s})).expansion?.contains,d=[];for(let m of c)m.code&&!d.some(p=>p.code===m.code)&&d.push(m);return d},[o,n,t]);return(0,Xi.jsx)(_t,{...l,creatable:r??!0,clearable:a??!0,toKey:Nf,toOption:$m,loadOptions:f,onCreate:_m,getCreateLabel:r===!1?void 0:i=>`+ Create ${i}`})}var $i=require("react/jsx-runtime");function va(e){let{defaultValue:o,onChange:t,...r}=e,[a,n]=(0,Ji.useState)(o);function l(f){let i=f[0],s=Zm(i);n(s),t&&t(s)}return(0,$i.jsx)(Rr,{defaultValue:Km(a),onChange:l,...r})}function Km(e){return e?{code:e}:void 0}function Zm(e){return e?.code}var _i=require("react/jsx-runtime");function Pr(e){let[o,t]=(0,An.useState)(e.defaultValue),r=e.onChange,a=(0,An.useCallback)(n=>{t(n),r&&r(n)},[r]);return(0,_i.jsx)(va,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Me=require("react/jsx-runtime"),Ki=(0,oo.createStyles)(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Vf(e){let{classes:o}=Ki(),t=Ko(),r=ep(e.pathname,e.searchParams,e.menus),[a,n]=(0,Mn.useState)(!1);function l(i,s){i.stopPropagation(),i.preventDefault(),t(s),window.innerWidth<768&&e.closeNavbar()}function f(i){i&&t(`/${i}`)}return(0,Me.jsxs)(Me.Fragment,{children:[(0,Me.jsx)(oo.Navbar,{width:{sm:250},p:"xs",children:(0,Me.jsxs)(oo.ScrollArea,{children:[!e.resourceTypeSearchDisabled&&(0,Me.jsx)(oo.Navbar.Section,{mb:"sm",children:(0,Me.jsx)(Pr,{name:"resourceType",placeholder:"Resource Type",onChange:i=>f(i)},window.location.pathname)}),(0,Me.jsxs)(oo.Navbar.Section,{grow:!0,children:[e.menus?.map(i=>(0,Me.jsxs)(Mn.Fragment,{children:[(0,Me.jsx)(oo.Text,{className:o.menuTitle,children:i.title}),i.links?.map(s=>(0,Me.jsxs)(Ym,{to:s.href,active:s.href===r?.href,onClick:u=>l(u,s.href),children:[(0,Me.jsx)(jm,{to:s.href,icon:s.icon}),(0,Me.jsx)("span",{children:s.label})]},s.href))]},`menu-${i.title}`)),e.displayAddBookmark&&(0,Me.jsx)(oo.Button,{variant:"subtle",size:"xs",mt:"xl",leftIcon:(0,Me.jsx)(Sf,{size:"0.75rem"}),onClick:()=>n(!0),children:"Add Bookmark"})]})]})}),e.pathname&&e.searchParams&&(0,Me.jsx)(zi,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)})]})}function Ym(e){let{classes:o,cx:t}=Ki();return(0,Me.jsx)(Ve,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active}),children:e.children})}function jm(e){return e.icon?e.icon:(0,Me.jsx)(oo.Space,{w:30})}function ep(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let l of n.links){let f=op(e,o,l.href);f>a&&(a=f,r=l)}return r}function op(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[l,f]of r.searchParams.entries())if(!a.includes(l)&&o.get(l)!==f)return 0;let n=1;for(let[l,f]of o.entries())a.includes(l)||r.searchParams.get(l)===f&&n++;return n}var bt=require("react/jsx-runtime");function tp(e){let o=(0,Fn.useMantineTheme)(),[t,r]=(0,Tr.useState)(localStorage.navbarOpen==="true"),a=C(),n=ia();(0,Tr.useEffect)(()=>{function s(){(0,Zi.showNotification)({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",s),()=>a.removeEventListener("offline",s)},[a]);function l(s){localStorage.navbarOpen=s.toString(),r(s)}function f(){l(!1)}function i(){l(!t)}return a.isLoading()?(0,bt.jsx)(Cn,{}):(0,bt.jsx)(Fn.AppShell,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&(0,bt.jsx)(Of,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:i}),navbar:n&&t?(0,bt.jsx)(Vf,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:f,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0,children:(0,bt.jsx)($t,{children:(0,bt.jsx)(Tr.Suspense,{fallback:(0,bt.jsx)(Cn,{}),children:e.children})})})}var Yi=require("@mantine/core"),Vo=require("react/jsx-runtime");function To(e){let{contentType:o,url:t,title:r}=e.value??{};return t?(0,Vo.jsxs)("div",{"data-testid":"attachment-display",children:[o?.startsWith("image/")&&(0,Vo.jsx)("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&(0,Vo.jsx)("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0,children:(0,Vo.jsx)("source",{type:o,src:t})}),o==="application/pdf"&&(0,Vo.jsx)("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400},children:(0,Vo.jsx)("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})}),(0,Vo.jsx)("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"},children:(0,Vo.jsx)(Yi.Anchor,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:rp(r),children:r||"Download"})})]}):null}function rp(e){return e?.includes(".")?e:void 0}var wn=require("react/jsx-runtime");function Hf(e){return(0,wn.jsx)("div",{children:e.values?.map((o,t)=>(0,wn.jsx)("div",{children:(0,wn.jsx)(To,{value:o,maxWidth:e.maxWidth})},"attatchment-"+t))})}var qf=require("@mantine/core");var On=require("react");var ji=require("react");var eu=require("@medplum/core"),kr=require("react/jsx-runtime");function Zt(e){let o=C(),t=(0,ji.useRef)(null);function r(l){L(l),t.current?.click()}function a(l){L(l);let f=l.target.files;f&&Array.from(f).forEach(n)}function n(l){if(!l||!l.name)return;e.onUploadStart&&e.onUploadStart();let i=l.name,s=l.type||"application/octet-stream";o.createBinary(l,i,s,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:i})}).catch(u=>{e.onUploadError&&e.onUploadError((0,eu.normalizeOperationOutcome)(u))})}return(0,kr.jsxs)(kr.Fragment,{children:[(0,kr.jsx)("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:l=>a(l)}),e.children({onClick:r})]})}var Ee=require("react/jsx-runtime");function Gf(e){let[o,t]=(0,On.useState)(e.defaultValue??[]),r=(0,On.useRef)();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return(0,Ee.jsxs)("table",{style:{width:"100%"},children:[(0,Ee.jsxs)("colgroup",{children:[(0,Ee.jsx)("col",{width:"97%"}),(0,Ee.jsx)("col",{width:"3%"})]}),(0,Ee.jsxs)("tbody",{children:[o.map((n,l)=>(0,Ee.jsxs)("tr",{children:[(0,Ee.jsx)("td",{children:(0,Ee.jsx)(To,{value:n,maxWidth:200})}),(0,Ee.jsx)("td",{children:(0,Ee.jsx)(qf.ActionIcon,{title:"Remove",size:"sm",onClick:f=>{L(f);let i=o.slice();i.splice(l,1),a(i)},children:(0,Ee.jsx)(Ct,{})})})]},`${l}-${o.length}`)),(0,Ee.jsxs)("tr",{children:[(0,Ee.jsx)("td",{}),(0,Ee.jsx)("td",{children:(0,Ee.jsx)(Zt,{onUpload:n=>{a([...r.current,n])},children:n=>(0,Ee.jsx)(qf.ActionIcon,{...n,title:"Add",size:"sm",color:"green",children:(0,Ee.jsx)(da,{size:16})})})})]})]})]})}var Uf=require("@mantine/core"),ou=require("react");var et=require("react/jsx-runtime");function Sa(e){let[o,t]=(0,ou.useState)(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?(0,et.jsxs)(et.Fragment,{children:[(0,et.jsx)(To,{value:o,maxWidth:200}),(0,et.jsx)(Uf.Button,{onClick:a=>{L(a),r(void 0)},children:"Remove"})]}):(0,et.jsx)(Zt,{onUpload:r,children:a=>(0,et.jsx)(Uf.Button,{...a,children:"Upload..."})})}var zn=require("@medplum/core");var En=["meta","implicitRules","contained","extension","modifierExtension"],Ln=["language","text"];var tu=require("@mantine/core"),Rt=require("react/jsx-runtime"),ap=(0,tu.createStyles)(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Qf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=ap();return(0,Rt.jsx)("dl",{className:a(r.root,{[r.compact]:t}),children:o})}function zf(e){return(0,Rt.jsxs)(Rt.Fragment,{children:[(0,Rt.jsx)("dt",{children:e.term}),(0,Rt.jsx)("dd",{children:e.children})]})}var kt=require("@mantine/core"),V=require("@medplum/core");var ru=require("@medplum/core"),Nn=require("react/jsx-runtime");function _e(e){return(0,Nn.jsx)(Nn.Fragment,{children:(0,ru.formatCodeableConcept)(e.value)})}var au=require("@medplum/core"),Vn=require("react/jsx-runtime");function Wf(e){return(0,Vn.jsx)(Vn.Fragment,{children:(0,au.formatCoding)(e.value)})}var Hn=require("react/jsx-runtime");function Ca(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),(0,Hn.jsx)(Hn.Fragment,{children:t.join("").trim()})}var Dr=require("react/jsx-runtime");function Xf(e){let o=e.value;return o?(0,Dr.jsxs)(Dr.Fragment,{children:[o.name,o.name&&": ",o.telecom?.map(t=>(0,Dr.jsx)(Ca,{value:t},`telecom-${o.name}-${t.value}`))]}):null}var nu=require("react/jsx-runtime");function Jf(e){return(0,nu.jsxs)("div",{children:[e.value?.system,": ",e.value?.value]})}var lu=require("@medplum/core"),qn=require("react/jsx-runtime");function $f(e){return(0,qn.jsx)(qn.Fragment,{children:(0,lu.formatMoney)(e.value)})}var fu=require("@medplum/core"),Gn=require("react/jsx-runtime");function Fe(e){return(0,Gn.jsx)(Gn.Fragment,{children:(0,fu.formatQuantity)(e.value)})}var su=require("@medplum/core"),Un=require("react/jsx-runtime");function ba(e){return(0,Un.jsx)(Un.Fragment,{children:(0,su.formatRange)(e.value)})}var Yt=require("react/jsx-runtime");function iu(e){let o=e.value;return o?(0,Yt.jsxs)(Yt.Fragment,{children:[(0,Yt.jsx)(Fe,{value:o.numerator}),"\xA0/\xA0",(0,Yt.jsx)(Fe,{value:o.denominator})]}):null}var uu=require("@medplum/core");var Ra=require("react/jsx-runtime");function Pt(e){if(!e.value)return null;let o=e.value.display||e.value.reference||(0,uu.stringify)(e.value);return e.link!==!1&&e.value.reference?(0,Ra.jsx)(Ve,{to:e.value,children:o}):(0,Ra.jsx)(Ra.Fragment,{children:o})}var Tt=require("react/jsx-runtime");function _f(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?(0,Tt.jsx)(Tt.Fragment,{children:t.map((a,n)=>(0,Tt.jsx)("div",{children:(0,Tt.jsx)(Ue,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})},`${n}-${t.length}`))}):(0,Tt.jsx)(Tt.Fragment,{})}var H=require("react/jsx-runtime");function Ue(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return(0,H.jsxs)(kt.Box,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"},children:[r,!(0,V.isEmpty)(r)&&(0,H.jsx)(kt.CopyButton,{value:r,timeout:2e3,children:({copied:n,copy:l})=>(0,H.jsx)(kt.Tooltip,{label:n?"Copied":"Copy",withArrow:!0,position:"right",children:(0,H.jsx)(kt.ActionIcon,{color:n?"teal":"gray",onClick:l,children:n?(0,H.jsx)(ca,{size:"1rem"}):(0,H.jsx)(ma,{size:"1rem"})})})})]});if(o?.max&&o.max>1&&!e.arrayElement)return t===V.PropertyType.Attachment?(0,H.jsx)(Hf,{values:r,maxWidth:e.maxWidth}):(0,H.jsx)(_f,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.PropertyType.boolean:return(0,H.jsx)(H.Fragment,{children:r===void 0?"":(!!r).toString()});case V.PropertyType.SystemString:case V.PropertyType.string:return(0,H.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:r});case V.PropertyType.code:case V.PropertyType.date:case V.PropertyType.decimal:case V.PropertyType.id:case V.PropertyType.integer:case V.PropertyType.positiveInt:case V.PropertyType.unsignedInt:case V.PropertyType.uri:case V.PropertyType.url:return(0,H.jsx)(H.Fragment,{children:r});case V.PropertyType.canonical:return(0,H.jsx)(Pt,{value:{reference:r},link:e.link});case V.PropertyType.dateTime:case V.PropertyType.instant:return(0,H.jsx)(H.Fragment,{children:(0,V.formatDateTime)(r)});case V.PropertyType.markdown:return(0,H.jsx)("pre",{children:r});case V.PropertyType.Address:return(0,H.jsx)($l,{value:r});case V.PropertyType.Annotation:return(0,H.jsx)(H.Fragment,{children:r?.text});case V.PropertyType.Attachment:return(0,H.jsx)(To,{value:r,maxWidth:e.maxWidth});case V.PropertyType.CodeableConcept:return(0,H.jsx)(_e,{value:r});case V.PropertyType.Coding:return(0,H.jsx)(Wf,{value:r});case V.PropertyType.ContactDetail:return(0,H.jsx)(Xf,{value:r});case V.PropertyType.ContactPoint:return(0,H.jsx)(Ca,{value:r});case V.PropertyType.HumanName:return(0,H.jsx)(ga,{value:r});case V.PropertyType.Identifier:return(0,H.jsx)(Jf,{value:r});case V.PropertyType.Money:return(0,H.jsx)($f,{value:r});case V.PropertyType.Period:return(0,H.jsx)(H.Fragment,{children:(0,V.formatPeriod)(r)});case V.PropertyType.Quantity:case V.PropertyType.Duration:return(0,H.jsx)(Fe,{value:r});case V.PropertyType.Range:return(0,H.jsx)(ba,{value:r});case V.PropertyType.Ratio:return(0,H.jsx)(iu,{value:r});case V.PropertyType.Reference:return(0,H.jsx)(Pt,{value:r,link:e.link});case V.PropertyType.Timing:return(0,H.jsx)(H.Fragment,{children:(0,V.formatTiming)(r)});case V.PropertyType.Dosage:case V.PropertyType.UsageContext:return(0,H.jsx)(Br,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return(0,H.jsx)(Br,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}var Qn=require("@medplum/core");function Dt(e,o){let t=(0,Qn.getTypedPropertyValue)(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function cu(e,o,t){let r=(0,Qn.getTypedPropertyValueWithSchema)(e,o,t);return r?Array.isArray(r)?[r.map(a=>a.value),r[0].type]:[r.value,r.type]:[void 0,"undefined"]}var jt=require("react/jsx-runtime");function Br(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=(0,zn.tryGetDataType)(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?(0,jt.jsx)("div",{children:t.name}):(0,jt.jsx)(Qf,{compact:e.compact,children:Object.entries(a.elements).map(n=>{let[l,f]=n;if(En.includes(l)||Ln.includes(l)&&f.path.split(".").length===2)return null;let[i,s]=Dt(o,l);return e.ignoreMissingValues&&(!i||Array.isArray(i)&&i.length===0)?null:(0,jt.jsx)(zf,{term:(0,zn.getPathDisplayName)(l),children:(0,jt.jsx)(Ue,{property:f,propertyType:s,value:i,ignoreMissingValues:e.ignoreMissingValues,link:e.link})},l)})}):(0,jt.jsxs)("div",{children:[r,"\xA0not implemented"]})}var _u=require("@medplum/core"),ir=require("react");var $u=require("@mantine/core"),Ga=require("@medplum/core"),el=require("react");var Wn=require("@mantine/core"),pu=require("react");var du=Ql(require("react"),1);function np(e,o){let t=e.lastIndexOf(o);if(t===-1)return["",e];let r=e.substring(0,t),a=e.substring(t+o.length);return[r,a]}var ko=du.default.createContext({profileUrl:void 0,debugMode:!1,getModifiedNestedElement:()=>{}});function mu(e,o,t){let r=Object.create(null);function a(l){return r[l]}let n=e?.elements;if(n){let l=new Set;for(let[f,i]of Object.entries(n)){let[s,u]=np(f,".");l.has(s)&&(r[e.type+"."+f]=i),l.add(f)}}return{debugMode:t??!1,profileUrl:o,getModifiedNestedElement:a}}var Ar=require("react/jsx-runtime");function Pa(e){let{debugMode:o}=(0,pu.useContext)(ko),t;return o&&e.fhirPath?t=`${e.title} - ${e.fhirPath}`:t=e.title,(0,Ar.jsxs)(Wn.Group,{noWrap:!0,"data-testid":e.testId,children:[(0,Ar.jsx)("div",{children:e.children}),(0,Ar.jsx)("div",{children:(0,Ar.jsx)(Wn.Input.Wrapper,{id:e.htmlFor,label:t,description:e.description,withAsterisk:e.withAsterisk,children:null})})]})}var Iu=require("@mantine/core"),gu=require("react");function Z(e,o){return e?.issue?.filter(t=>xu(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
|
|
65
|
-
`)}function Ta(e,o){return e?.issue?.filter(t=>xu(t.expression?.[0],o))}function xu(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}var hu=require("react/jsx-runtime");function Je(e){let{debugMode:o}=(0,gu.useContext)(ko),t;return o&&e.fhirPath?t=`${e.title} - ${e.fhirPath}`:t=e.title,(0,hu.jsx)(Iu.Input.Wrapper,{id:e.htmlFor,label:t,description:e.description,withAsterisk:e.withAsterisk,error:Z(e.outcome,e.htmlFor),"data-testid":e.testId,children:e.children})}var ka=require("@medplum/core");function Mr(e,o,t,r,a){let n=r.type;if(n.length>1)for(let l of n){let f=o.replace("[x]",(0,ka.capitalize)(l.code));f in e&&delete e[f]}return e[t]=a,e}function lp(e){return!!e&&!(0,ka.isEmpty)(e.url)&&!(0,ka.isEmpty)(e.name)}var Co=require("@mantine/core"),N=require("@medplum/core"),Xu=require("react");var yu=require("react");var vu=require("react/jsx-runtime");function er(e){let{defaultValue:o,onChange:t,...r}=e,[a,n]=(0,yu.useState)(o);function l(f){let i=sp(f);n(i),t&&t(i)}return(0,vu.jsx)(Rr,{defaultValue:a&&fp(a),onChange:l,...r})}function fp(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function sp(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}var Su=require("react");var Cu=require("react/jsx-runtime");function Da(e){let{defaultValue:o,onChange:t,...r}=e,[a,n]=(0,Su.useState)(o);function l(f){let i=f[0],s=i&&up(i);n(s),t&&t(s)}return(0,Cu.jsx)(Rr,{defaultValue:a&&ip(a),maxSelectedValues:1,onChange:l,...r})}function ip(e){return{system:e.system,code:e.code,display:e.display}}function up(e){return{system:e.system,code:e.code,display:e.display}}var Xn=require("@mantine/core"),Jn=require("react");var or=require("@mantine/core"),Bt=require("react");var Fr=require("react/jsx-runtime");function Ba(e){let{path:o,outcome:t}=e,{getModifiedNestedElement:r}=(0,Bt.useContext)(ko),[a,n]=(0,Bt.useState)(e.defaultValue),l=(0,Bt.useRef)();l.current=a;let[f,i,s]=(0,Bt.useMemo)(()=>["system","use","value"].map(p=>r(o+"."+p)),[r,o]);function u(p){p&&Object.keys(p).length===0&&(p=void 0),n(p),e.onChange&&e.onChange(p)}function c(p){let x={...l.current,system:p};p||delete x.system,u(x)}function d(p){let x={...l.current,use:p};p||delete x.use,u(x)}function m(p){let x={...l.current,value:p};p||delete x.value,u(x)}return(0,Fr.jsxs)(or.Group,{spacing:"xs",grow:!0,noWrap:!0,align:"flex-start",children:[(0,Fr.jsx)(or.NativeSelect,{"data-testid":"system",defaultValue:a?.system,required:(f?.min??0)>0,onChange:p=>c(p.currentTarget.value),data:["","email","phone","fax","pager","sms","other"],error:Z(t,o+".system")}),(0,Fr.jsx)(or.NativeSelect,{"data-testid":"use",defaultValue:a?.use,required:(i?.min??0)>0,onChange:p=>d(p.currentTarget.value),data:["","home","work","temp","old","mobile"],error:Z(t,o+".use")}),(0,Fr.jsx)(or.TextInput,{placeholder:"Value",defaultValue:a?.value,required:(s?.min??0)>0,onChange:p=>m(p.currentTarget.value),error:Z(t,o+".value")})]})}var Aa=require("react/jsx-runtime");function Kf(e){let[o,t]=(0,Jn.useState)(e.defaultValue),r=(0,Jn.useRef)();r.current=o;function a(f){t(f),e.onChange&&e.onChange(f)}function n(f){let i={...r.current,name:f};f||delete i.name,a(i)}function l(f){let i={...r.current,telecom:f&&[f]};f||delete i.telecom,a(i)}return(0,Aa.jsxs)(Xn.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,Aa.jsx)(Xn.TextInput,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:f=>n(f.currentTarget.value)}),(0,Aa.jsx)(Ba,{name:e.name+"-telecom",path:e.path+".telecom",defaultValue:o?.telecom?.[0],onChange:l,outcome:e.outcome})]})}var bu=require("@mantine/core");var Zf=require("@medplum/core");function Yf(e){if(!e)return"";let o=new Date(e);return(0,Zf.isValidDate)(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function jf(e){if(!e)return"";let o=new Date(e);return(0,Zf.isValidDate)(o)?o.toISOString():""}var Ru=require("react/jsx-runtime");function vo(e){return(0,Ru.jsx)(bu.TextInput,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:cp(),defaultValue:Yf(e.defaultValue),autoFocus:e.autoFocus,error:Z(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(jf(t))}}})}function cp(){return"datetime-local"}var Pu=require("@mantine/core"),$n=require("@medplum/core");var tr=require("react");var rr=require("react/jsx-runtime");function Tu(e){let{propertyType:o}=e,t=C(),[r,a]=(0,tr.useState)(!1),[n,l]=(0,tr.useState)(),f=(0,tr.useMemo)(()=>{if(!(!o.profile||o.profile.length===0))return o.profile[0]},[o]);(0,tr.useEffect)(()=>{f&&(a(!0),t.requestProfileSchema(f).then(()=>{let s=(0,$n.tryGetProfile)(f);a(!1),l(s)}).catch(s=>{a(!1),console.warn(s)}))},[t,f]);function i(s){e.onChange&&(console.log("Extension",s),e.onChange(s))}return f?r?(0,rr.jsxs)("div",{children:["Loading ",f,"..."]}):n?(0,rr.jsx)(ar,{profileUrl:f,typeName:n.name,defaultValue:e.defaultValue,onChange:i}):(0,rr.jsxs)("div",{children:["StructureDefinition for ",f," not found"]}):(0,rr.jsx)(dp,{...e})}function dp(e){return(0,rr.jsx)(Pu.JsonInput,{id:e.name,name:e.name,"data-testid":"extension-json-input",defaultValue:(0,$n.stringify)(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}var ot=require("@mantine/core"),ku=require("react");var At=require("react/jsx-runtime");function es(e){let{outcome:o,path:t}=e,[r,a]=(0,ku.useState)(e.defaultValue);function n(c){a(c),e.onChange&&e.onChange(c)}function l(c){n({...r,use:c||void 0})}function f(c){n({...r,prefix:c?c.split(" "):void 0})}function i(c){n({...r,given:c?c.split(" "):void 0})}function s(c){n({...r,family:c||void 0})}function u(c){n({...r,suffix:c?c.split(" "):void 0})}return(0,At.jsxs)(ot.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,At.jsx)(ot.NativeSelect,{defaultValue:r?.use,name:e.name+"-use","data-testid":"use",onChange:c=>l(c.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"],error:Z(o,t+".use")}),(0,At.jsx)(ot.TextInput,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:r?.prefix?.join(" "),onChange:c=>f(c.currentTarget.value),error:Z(o,t+".prefix")}),(0,At.jsx)(ot.TextInput,{placeholder:"Given",name:e.name+"-given",defaultValue:r?.given?.join(" "),onChange:c=>i(c.currentTarget.value),error:Z(o,t+".given")}),(0,At.jsx)(ot.TextInput,{name:e.name+"-family",placeholder:"Family",defaultValue:r?.family,onChange:c=>s(c.currentTarget.value),error:Z(o,t+".family")}),(0,At.jsx)(ot.TextInput,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:r?.suffix?.join(" "),onChange:c=>u(c.currentTarget.value),error:Z(o,t+".suffix")})]})}var Ma=require("@mantine/core"),wr=require("react");var Fa=require("react/jsx-runtime");function os(e){let{path:o,outcome:t}=e,[r,a]=(0,wr.useState)(e.defaultValue),{getModifiedNestedElement:n}=(0,wr.useContext)(ko),[l,f]=(0,wr.useMemo)(()=>["system","value"].map(s=>n(o+"."+s)),[n,o]);function i(s){a(s),e.onChange&&e.onChange(s)}return(0,Fa.jsxs)(Ma.Group,{spacing:"xs",grow:!0,noWrap:!0,align:"flex-start",children:[(0,Fa.jsx)(Ma.TextInput,{placeholder:"System",required:(l?.min??0)>0,defaultValue:r?.system,onChange:s=>i({...r,system:s.currentTarget.value}),error:Z(t,o+".system")}),(0,Fa.jsx)(Ma.TextInput,{placeholder:"Value",required:(f?.min??0)>0,defaultValue:r?.value,onChange:s=>i({...r,value:s.currentTarget.value}),error:Z(t,o+".value")})]})}var Kn=require("@mantine/core");var Or=require("react"),_n=require("react/jsx-runtime"),mp=["USD","EUR","CAD","GBP","AUD"];function ts(e){let{onChange:o}=e,[t,r]=(0,Or.useState)(e.defaultValue),a=(0,Or.useCallback)(i=>{r(i),o&&o(i)},[o]),n=(0,Or.useCallback)(i=>{a({...t,currency:i.currentTarget.value})},[t,a]),l=(0,Or.useCallback)(i=>{a({...t,value:i.currentTarget.valueAsNumber})},[t,a]),f=(0,_n.jsx)(Kn.NativeSelect,{defaultValue:t?.currency,data:mp,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return(0,_n.jsx)(Kn.TextInput,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:(0,_n.jsx)(uf,{size:14}),rightSection:f,rightSectionWidth:92,onChange:l})}var Du=require("@mantine/core"),Bu=require("react");var wa=require("react/jsx-runtime");function Au(e){let[o,t]=(0,Bu.useState)(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return(0,wa.jsxs)(Du.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,wa.jsx)(vo,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),(0,wa.jsx)(vo,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})})]})}var nr=require("@mantine/core"),Mu=require("react"),Er=require("react/jsx-runtime");function ao(e){let[o,t]=(0,Mu.useState)(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return(0,Er.jsxs)(nr.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,Er.jsx)(nr.NativeSelect,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),(0,Er.jsx)(nr.TextInput,{id:e.name,name:e.name,required:e.required,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:pp(a.currentTarget.value)})}}),(0,Er.jsx)(nr.TextInput,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})})]})}function pp(e){if(e)return parseFloat(e)}var Fu=require("@mantine/core"),wu=require("react");var Oa=require("react/jsx-runtime");function Lr(e){let[o,t]=(0,wu.useState)(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return(0,Oa.jsxs)(Fu.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,Oa.jsx)(ao,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),(0,Oa.jsx)(ao,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})})]})}var Ou=require("@mantine/core"),Eu=require("react");var Ea=require("react/jsx-runtime");function Lu(e){let[o,t]=(0,Eu.useState)(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return(0,Ea.jsxs)(Ou.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,Ea.jsx)(ao,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),(0,Ea.jsx)(ao,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})})]})}var Zn=require("@mantine/core"),So=require("@medplum/core");var no=require("react");var La=require("@mantine/core"),Na=require("@medplum/core");var lr=require("react");var tt=require("react/jsx-runtime"),xp={Observation:"code",User:"email:contains"},Ip=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function gp(e){return{value:(0,Na.getReferenceString)(e),label:(0,Na.getDisplayString)(e),resource:e}}function Va(e){let o=C(),{resourceType:t,searchCriteria:r}=e,[a,n]=(0,lr.useState)(),l=oe(e.defaultValue,n),f=e.onChange,i=(0,lr.useCallback)(async(u,c)=>{let d=yp(t),m=new URLSearchParams({[d]:u??"",_count:"10",...r});return await o.searchResources(t,m,{signal:c})},[o,t,r]),s=(0,lr.useCallback)(u=>{f&&f(u[0])},[f]);return e.defaultValue&&!a&&!l?null:(0,tt.jsx)(_t,{name:e.name,required:e.required,itemComponent:hp,defaultValue:l,placeholder:e.placeholder,maxSelectedValues:1,toKey:Na.getReferenceString,toOption:gp,loadOptions:i,onChange:s,clearable:!0})}var hp=(0,lr.forwardRef)(({label:e,resource:o,...t},r)=>(0,tt.jsx)("div",{ref:r,...t,children:(0,tt.jsxs)(La.Group,{noWrap:!0,children:[(0,tt.jsx)(He,{value:o}),(0,tt.jsxs)("div",{children:[(0,tt.jsx)(La.Text,{children:e}),(0,tt.jsx)(La.Text,{size:"xs",color:"dimmed",children:o.birthDate})]})]})}));function yp(e){return xp[e]??(Ip.includes(e)?"name":"_id")}var Nr=require("react/jsx-runtime");function fr(e){let{onChange:o}=e,t=C(),[r,a]=(0,no.useState)(e.defaultValue),[n,l]=(0,no.useState)(()=>vp(e.targetTypes)),[f,i]=(0,no.useState)(()=>Sp(e.defaultValue,n)),s=(0,no.useRef)(new So.LRUCache),u=(0,no.useMemo)(()=>f?.type==="profile"?{...e.searchCriteria,_profile:f.value}:e.searchCriteria,[e.searchCriteria,f]);(0,no.useEffect)(()=>{let m=!1,p=n?.map(x=>{if(!bp(x))return Promise.resolve(x);m=!0;let b=x.value,v=s.current.get(b);if(v)return v;let S=Cp(t,x.value).then(T=>{let h={...x};return T?(0,So.isPopulated)(T.type)?(h.resourceType=T.type,h.name=T.name,h.title=T.title):(console.error(`StructureDefinition.type missing for ${x.value}`),h.error="StructureDefinition.type missing"):(console.error(`StructureDefinition not found for ${x.value}`),h.error="StructureDefinition not found"),h}).catch(T=>(console.error(T),{...x,error:T})),R=new So.ReadablePromise(S);return s.current.set(b,R),R});!p||!m||Promise.all(p).then(x=>{if(l(x),!f)return;let b=x.findIndex(v=>v.value===f.value||v.resourceType===f.resourceType);if(b===-1){console.debug(`defaultValue had unexpected resourceType: ${f.resourceType}`);return}i(x[b])}).catch(console.error)},[t,f,n]);let c=(0,no.useCallback)(m=>{let p=m?(0,So.createReference)(m):void 0;a(p),o&&o(p)},[o]),d=(0,no.useMemo)(()=>n?n.map(m=>({value:m.value,label:m.type==="profile"?m.title??m.name??m.resourceType??m.value:m.value})):[],[n]);return(0,Nr.jsxs)(Zn.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[n&&n.length>1&&(0,Nr.jsx)(Zn.NativeSelect,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:f?.resourceType,autoFocus:e.autoFocus,onChange:m=>{let p=m.currentTarget.value,x=n.find(b=>b.value===p);i(x)},data:d}),!n&&(0,Nr.jsx)(Pr,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:f?.resourceType,onChange:m=>{i(m?{type:"resourceType",value:m,resourceType:m}:void 0)},name:e.name+"-resourceType",placeholder:"Resource Type"}),(0,Nr.jsx)(Va,{resourceType:f?.resourceType,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,searchCriteria:u,onChange:c})]})}function vp(e){if(!e||e.length===0||e.length===1&&e[0]==="Resource")return;let o=[];for(let t of e)t.includes("/")?o.push({type:"profile",value:t}):o.push({type:"resourceType",value:t,resourceType:t});return o}function Sp(e,o){let t=e?.reference?.split("/")[0];if(t){let r=o?.find(a=>a.resourceType===t);return r||{type:"resourceType",value:t,resourceType:t}}if(o&&o.length>0)return o[0]}async function Cp(e,o){let t=(0,So.tryGetProfile)(o);if(t)return{type:t.type,name:t.name,title:t.title};let r=`{
|
|
66
|
-
StructureDefinitionList(url: "${
|
|
64
|
+
}`.replace(/\s+/g," ")}function getResourcesFromResponse(response,query){let resources=[];return response.data.Patients1&&resources.push(...response.data.Patients1),response.data.Patients2&&resources.push(...response.data.Patients2),response.data.ServiceRequestList&&resources.push(...response.data.ServiceRequestList),sortByRelevance(dedupeResources(resources),query).slice(0,5)}function dedupeResources(resources){let ids=new Set,result=[];for(let resource of resources)ids.has(resource.id)||(ids.add(resource.id),result.push(resource));return result}function sortByRelevance(resources,query){return resources.sort((a,b2)=>getResourceScore(b2,query)-getResourceScore(a,query))}function getResourceScore(resource,query){let bestScore=0;if(resource.identifier)for(let identifier of resource.identifier)bestScore=Math.max(bestScore,getStringScore(identifier.value,query));if(resource.resourceType==="Patient"&&resource.name)for(let name of resource.name)bestScore=Math.max(bestScore,getStringScore((0,import_core17.formatHumanName)(name),query));return bestScore}function getStringScore(str,query){if(!str)return 0;let index=str.toLowerCase().indexOf(query.toLowerCase());return index<0?0:100-index}var import_jsx_runtime12=require("react/jsx-runtime");function Header(props){let context=m(),{medplum,profile,navigate}=context,logins=medplum.getLogins(),[userMenuOpened,setUserMenuOpened]=(0,import_react11.useState)(!1);return(0,import_jsx_runtime12.jsx)(import_core19.AppShell.Header,{p:8,style:{zIndex:101},children:(0,import_jsx_runtime12.jsxs)(import_core19.Group,{justify:"space-between",children:[(0,import_jsx_runtime12.jsxs)(import_core19.Group,{gap:"xs",children:[(0,import_jsx_runtime12.jsx)(import_core19.UnstyledButton,{className:Header_default.logoButton,onClick:props.navbarToggle,children:props.logo}),!props.headerSearchDisabled&&(0,import_jsx_runtime12.jsx)(HeaderSearchInput,{pathname:props.pathname,searchParams:props.searchParams})]}),(0,import_jsx_runtime12.jsxs)(import_core19.Menu,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:userMenuOpened,onClose:()=>setUserMenuOpened(!1),children:[(0,import_jsx_runtime12.jsx)(import_core19.Menu.Target,{children:(0,import_jsx_runtime12.jsx)(import_core19.UnstyledButton,{className:clsx_default(Header_default.user,{[Header_default.userActive]:userMenuOpened}),onClick:()=>setUserMenuOpened(o=>!o),children:(0,import_jsx_runtime12.jsxs)(import_core19.Group,{gap:7,children:[(0,import_jsx_runtime12.jsx)(ResourceAvatar,{value:profile,radius:"xl",size:24}),(0,import_jsx_runtime12.jsx)(import_core19.Text,{size:"sm",className:Header_default.userName,children:(0,import_core20.formatHumanName)(profile?.name?.[0])}),(0,import_jsx_runtime12.jsx)(IconChevronDown,{size:12,stroke:1.5})]})})}),(0,import_jsx_runtime12.jsxs)(import_core19.Menu.Dropdown,{children:[(0,import_jsx_runtime12.jsxs)(import_core19.Stack,{align:"center",p:"xl",children:[(0,import_jsx_runtime12.jsx)(ResourceAvatar,{size:"xl",radius:100,value:context.profile}),(0,import_jsx_runtime12.jsx)(HumanNameDisplay,{value:context.profile?.name?.[0]}),(0,import_jsx_runtime12.jsx)(import_core19.Text,{c:"dimmed",size:"xs",children:medplum.getActiveLogin()?.project.display})]}),logins.length>1&&(0,import_jsx_runtime12.jsx)(import_core19.Menu.Divider,{}),logins.map(login=>login.profile.reference!==(0,import_core20.getReferenceString)(context.profile)&&(0,import_jsx_runtime12.jsx)(import_core19.Menu.Item,{onClick:()=>{medplum.setActiveLogin(login).then(()=>window.location.reload()).catch(console.log)},children:(0,import_jsx_runtime12.jsxs)(import_core19.Group,{children:[(0,import_jsx_runtime12.jsx)(import_core19.Avatar,{radius:"xl"}),(0,import_jsx_runtime12.jsxs)("div",{style:{flex:1},children:[(0,import_jsx_runtime12.jsx)(import_core19.Text,{size:"sm",fw:500,children:login.profile.display}),(0,import_jsx_runtime12.jsx)(import_core19.Text,{c:"dimmed",size:"xs",children:login.project.display})]})]})},login.profile.reference)),(0,import_jsx_runtime12.jsx)(import_core19.Menu.Divider,{}),(0,import_jsx_runtime12.jsx)(import_core19.Menu.Item,{leftSection:(0,import_jsx_runtime12.jsx)(IconSwitchHorizontal,{size:14,stroke:1.5}),onClick:()=>navigate("/signin"),children:"Add another account"}),(0,import_jsx_runtime12.jsx)(import_core19.Menu.Item,{leftSection:(0,import_jsx_runtime12.jsx)(IconSettings,{size:14,stroke:1.5}),onClick:()=>navigate(`/${(0,import_core20.getReferenceString)(profile)}`),children:"Account settings"}),(0,import_jsx_runtime12.jsx)(import_core19.Menu.Item,{leftSection:(0,import_jsx_runtime12.jsx)(IconLogout,{size:14,stroke:1.5}),onClick:async()=>{await medplum.signOut(),navigate("/signin")},children:"Sign out"}),(0,import_jsx_runtime12.jsx)(import_core19.Text,{size:"xs",c:"dimmed",ta:"center",children:props.version})]})]})]})})}var import_core23=require("@mantine/core");var import_react15=require("react");var import_core21=require("@mantine/core"),import_notifications2=require("@mantine/notifications"),import_core22=require("@medplum/core");function parseForm(form){let result={};for(let element of Array.from(form.elements))element instanceof HTMLInputElement?parseInputElement(result,element):element instanceof HTMLTextAreaElement?result[element.name]=element.value:element instanceof HTMLSelectElement&&parseSelectElement(result,element);return result}function parseInputElement(result,el){el.disabled||(el.type==="checkbox"||el.type==="radio")&&!el.checked||(result[el.name]=el.value)}function parseSelectElement(result,el){result[el.name]=el.value}var import_jsx_runtime13=require("react/jsx-runtime");function Form(props){return(0,import_jsx_runtime13.jsx)("form",{style:props.style,"data-testid":props.testid,onSubmit:e=>{e.preventDefault();let formData=parseForm(e.target);props.onSubmit&&props.onSubmit(formData)},children:props.children})}var import_jsx_runtime14=require("react/jsx-runtime");function BookmarkDialog(props){let medplum=s(),config=medplum.getUserConfiguration();function submitHandler(formData){let{menuname,bookmarkname:name}=formData,target=`${props.pathname}?${props.searchParams.toString()}`,newConfig=(0,import_core22.deepClone)(config);newConfig.menu?.find(({title})=>title===menuname)?.link?.push({name,target}),medplum.updateResource(newConfig).then(res=>{config.menu=res.menu,medplum.dispatchEvent({type:"change"}),(0,import_notifications2.showNotification)({color:"green",message:"Success"}),props.onOk()}).catch(err=>{(0,import_notifications2.showNotification)({color:"red",message:(0,import_core22.normalizeErrorString)(err)})})}return(0,import_jsx_runtime14.jsx)(import_core21.Modal,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:props.visible,onClose:props.onCancel,children:(0,import_jsx_runtime14.jsx)(Form,{onSubmit:submitHandler,children:(0,import_jsx_runtime14.jsxs)(import_core21.Stack,{children:[(0,import_jsx_runtime14.jsx)(SelectMenu,{config}),(0,import_jsx_runtime14.jsx)(import_core21.TextInput,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),(0,import_jsx_runtime14.jsx)(import_core21.Group,{justify:"flex-end",children:(0,import_jsx_runtime14.jsx)(import_core21.Button,{mt:"sm",type:"submit",children:"OK"})})]})})})}function SelectMenu(props){function userConfigToMenu(config){return config?.menu?.map(menu=>menu.title)}let menus=userConfigToMenu(props.config);return(0,import_jsx_runtime14.jsx)(import_core21.NativeSelect,{name:"menuname",defaultValue:menus[0],label:"Select Menu Option",data:menus,withAsterisk:!0})}var import_react14=require("react");var import_react13=require("react");var import_react12=require("react");var import_jsx_runtime15=require("react/jsx-runtime");function toKey(element){return typeof element.code=="string"?element.code:JSON.stringify(element)}function getDisplay(item){return typeof item.display=="string"?item.display:toKey(item)}function toOption2(element){return{value:toKey(element),label:getDisplay(element),resource:element}}function createValue(input){return{code:input,display:input}}function ValueSetAutocomplete(props){let medplum=s(),{binding,creatable,clearable,expandParams,...rest}=props,loadValues=(0,import_react12.useCallback)(async(input,signal)=>{if(!binding)return[];let valueSetElements=(await medplum.valueSetExpand({...expandParams,url:binding,filter:input},{signal})).expansion?.contains,newData=[];for(let valueSetElement of valueSetElements)valueSetElement.code&&!newData.some(item=>item.code===valueSetElement.code)&&newData.push(valueSetElement);return newData},[medplum,expandParams,binding]);return(0,import_jsx_runtime15.jsx)(AsyncAutocomplete,{...rest,creatable:creatable??!0,clearable:clearable??!0,toOption:toOption2,loadOptions:loadValues,onCreate:createValue})}var import_jsx_runtime16=require("react/jsx-runtime");function CodeInput(props){let{defaultValue:defaultValue2,onChange,...rest}=props,[value,setValue]=(0,import_react13.useState)(defaultValue2);function handleChange(newValues){let newValue=newValues[0],newCode=valueSetElementToCode(newValue);setValue(newCode),onChange&&onChange(newCode)}return(0,import_jsx_runtime16.jsx)(ValueSetAutocomplete,{defaultValue:codeToValueSetElement(value),onChange:handleChange,...rest})}function codeToValueSetElement(code){return code?{code}:void 0}function valueSetElementToCode(element){return element?.code}var import_jsx_runtime17=require("react/jsx-runtime");function ResourceTypeInput(props){let[resourceType,setResourceType]=(0,import_react14.useState)(props.defaultValue),onChange=props.onChange,setResourceTypeWrapper=(0,import_react14.useCallback)(newResourceType=>{setResourceType(newResourceType),onChange&&onChange(newResourceType)},[onChange]);return(0,import_jsx_runtime17.jsx)(CodeInput,{"data-autofocus":props.autoFocus,"data-testid":props.testId,defaultValue:resourceType,onChange:setResourceTypeWrapper,name:props.name,placeholder:props.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxValues:0,clearable:!1})}var Navbar_default={menuTitle:"Navbar_menuTitle",link:"Navbar_link",linkActive:"Navbar_linkActive"};var import_jsx_runtime18=require("react/jsx-runtime");function Navbar(props){let navigate=B(),activeLink=getActiveLink(props.pathname,props.searchParams,props.menus),[bookmarkDialogVisible,setBookmarkDialogVisible]=(0,import_react15.useState)(!1);function onLinkClick(e,to){e.stopPropagation(),e.preventDefault(),navigate(to),window.innerWidth<768&&props.closeNavbar()}function navigateResourceType(resourceType){resourceType&&navigate(`/${resourceType}`)}return(0,import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment,{children:[(0,import_jsx_runtime18.jsx)(import_core23.AppShell.Navbar,{children:(0,import_jsx_runtime18.jsxs)(import_core23.ScrollArea,{p:"xs",children:[!props.resourceTypeSearchDisabled&&(0,import_jsx_runtime18.jsx)(import_core23.AppShell.Section,{mb:"sm",children:(0,import_jsx_runtime18.jsx)(ResourceTypeInput,{name:"resourceType",placeholder:"Resource Type",onChange:newValue=>navigateResourceType(newValue)},window.location.pathname)}),(0,import_jsx_runtime18.jsxs)(import_core23.AppShell.Section,{grow:!0,children:[props.menus?.map(menu=>(0,import_jsx_runtime18.jsxs)(import_react15.Fragment,{children:[(0,import_jsx_runtime18.jsx)(import_core23.Text,{className:Navbar_default.menuTitle,children:menu.title}),menu.links?.map(link=>(0,import_jsx_runtime18.jsxs)(NavbarLink,{to:link.href,active:link.href===activeLink?.href,onClick:e=>onLinkClick(e,link.href),children:[(0,import_jsx_runtime18.jsx)(NavLinkIcon,{to:link.href,icon:link.icon}),(0,import_jsx_runtime18.jsx)("span",{children:link.label})]},link.href))]},`menu-${menu.title}`)),props.displayAddBookmark&&(0,import_jsx_runtime18.jsx)(import_core23.Button,{variant:"subtle",size:"xs",mt:"xl",leftSection:(0,import_jsx_runtime18.jsx)(IconPlus,{size:"0.75rem"}),onClick:()=>setBookmarkDialogVisible(!0),children:"Add Bookmark"})]})]})}),props.pathname&&props.searchParams&&(0,import_jsx_runtime18.jsx)(BookmarkDialog,{pathname:props.pathname,searchParams:props.searchParams,visible:bookmarkDialogVisible,onOk:()=>setBookmarkDialogVisible(!1),onCancel:()=>setBookmarkDialogVisible(!1)})]})}function NavbarLink(props){return(0,import_jsx_runtime18.jsx)(MedplumLink,{onClick:props.onClick,to:props.to,className:clsx_default(Navbar_default.link,{[Navbar_default.linkActive]:props.active}),children:props.children})}function NavLinkIcon(props){return props.icon?props.icon:(0,import_jsx_runtime18.jsx)(import_core23.Space,{w:30})}function getActiveLink(currentPathname,currentSearchParams,menus){if(!currentPathname||!currentSearchParams||!menus)return;let bestLink,bestScore=0;for(let menu of menus)if(menu.links)for(let link of menu.links){let score=getLinkScore(currentPathname,currentSearchParams,link.href);score>bestScore&&(bestScore=score,bestLink=link)}return bestLink}function getLinkScore(currentPathname,currentSearchParams,linkHref){let linkUrl=new URL(linkHref,"https://example.com");if(currentPathname!==linkUrl.pathname)return 0;let ignoredParams=["_count","_offset"];for(let[key,value]of linkUrl.searchParams.entries())if(!ignoredParams.includes(key)&¤tSearchParams.get(key)!==value)return 0;let count=1;for(let[key,value]of currentSearchParams.entries())ignoredParams.includes(key)||linkUrl.searchParams.get(key)===value&&count++;return count}var import_jsx_runtime19=require("react/jsx-runtime");function AppShell(props){let[navbarOpen,setNavbarOpen]=(0,import_react16.useState)(localStorage.navbarOpen==="true"),medplum=s(),profile=w();(0,import_react16.useEffect)(()=>{function eventListener(){(0,import_notifications3.showNotification)({color:"red",message:"No connection to server",autoClose:!1})}return medplum.addEventListener("offline",eventListener),()=>medplum.removeEventListener("offline",eventListener)},[medplum]);function setNavbarOpenWrapper(open){localStorage.navbarOpen=open.toString(),setNavbarOpen(open)}function closeNavbar(){setNavbarOpenWrapper(!1)}function toggleNavbar(){setNavbarOpenWrapper(!navbarOpen)}return medplum.isLoading()?(0,import_jsx_runtime19.jsx)(Loading,{}):(0,import_jsx_runtime19.jsxs)(import_core24.AppShell,{header:{height:60},navbar:{width:250,breakpoint:"sm",collapsed:{desktop:!profile||!navbarOpen,mobile:!profile||!navbarOpen}},padding:0,children:[profile&&(0,import_jsx_runtime19.jsx)(Header,{pathname:props.pathname,searchParams:props.searchParams,headerSearchDisabled:props.headerSearchDisabled,logo:props.logo,version:props.version,navbarToggle:toggleNavbar}),profile&&navbarOpen?(0,import_jsx_runtime19.jsx)(Navbar,{pathname:props.pathname,searchParams:props.searchParams,menus:props.menus,closeNavbar,displayAddBookmark:props.displayAddBookmark,resourceTypeSearchDisabled:props.resourceTypeSearchDisabled}):void 0,(0,import_jsx_runtime19.jsx)(import_core24.AppShell.Main,{className:AppShell_default.main,children:(0,import_jsx_runtime19.jsx)(ErrorBoundary,{children:(0,import_jsx_runtime19.jsx)(import_react16.Suspense,{fallback:(0,import_jsx_runtime19.jsx)(Loading,{}),children:props.children})})})]})}var import_core25=require("@mantine/core"),import_jsx_runtime20=require("react/jsx-runtime");function AttachmentDisplay(props){let{contentType,url,title}=props.value??{};return url?(0,import_jsx_runtime20.jsxs)("div",{"data-testid":"attachment-display",children:[contentType?.startsWith("image/")&&(0,import_jsx_runtime20.jsx)("img",{"data-testid":"attachment-image",style:{maxWidth:props.maxWidth},src:url,alt:title}),contentType?.startsWith("video/")&&(0,import_jsx_runtime20.jsx)("video",{"data-testid":"attachment-video",style:{maxWidth:props.maxWidth},controls:!0,children:(0,import_jsx_runtime20.jsx)("source",{type:contentType,src:url})}),contentType==="application/pdf"&&(0,import_jsx_runtime20.jsx)("div",{"data-testid":"attachment-pdf",style:{maxWidth:props.maxWidth,minHeight:400},children:(0,import_jsx_runtime20.jsx)("iframe",{width:"100%",height:"400",src:url+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})}),(0,import_jsx_runtime20.jsx)("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"},children:(0,import_jsx_runtime20.jsx)(import_core25.Anchor,{href:url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:getDownloadName(title),children:title||"Download"})})]}):null}function getDownloadName(title){return title?.includes(".")?title:void 0}var import_jsx_runtime21=require("react/jsx-runtime");function AttachmentArrayDisplay(props){return(0,import_jsx_runtime21.jsx)("div",{children:props.values?.map((v2,index)=>(0,import_jsx_runtime21.jsx)("div",{children:(0,import_jsx_runtime21.jsx)(AttachmentDisplay,{value:v2,maxWidth:props.maxWidth})},"attatchment-"+index))})}var import_core27=require("@mantine/core");var import_react18=require("react");var import_core26=require("@medplum/core");var import_react17=require("react");var import_jsx_runtime22=require("react/jsx-runtime");function AttachmentButton(props){let medplum=s(),fileInputRef=(0,import_react17.useRef)(null);function onClick(e){killEvent(e),fileInputRef.current?.click()}function onFileChange(e){killEvent(e);let files=e.target.files;files&&Array.from(files).forEach(processFile)}function processFile(file){if(!file||!file.name)return;props.onUploadStart&&props.onUploadStart();let filename=file.name,contentType=file.type||"application/octet-stream";medplum.createBinary(file,filename,contentType,props.onUploadProgress).then(binary=>{props.onUpload({contentType:binary.contentType,url:binary.url,title:filename})}).catch(err=>{props.onUploadError&&props.onUploadError((0,import_core26.normalizeOperationOutcome)(err))})}return(0,import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment,{children:[(0,import_jsx_runtime22.jsx)("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:fileInputRef,onChange:e=>onFileChange(e)}),props.children({onClick})]})}var import_jsx_runtime23=require("react/jsx-runtime");function AttachmentArrayInput(props){let[values,setValues]=(0,import_react18.useState)(props.defaultValue??[]),valuesRef=(0,import_react18.useRef)();valuesRef.current=values;function setValuesWrapper(newValues){setValues(newValues),props.onChange&&props.onChange(newValues)}return(0,import_jsx_runtime23.jsxs)("table",{style:{width:"100%"},children:[(0,import_jsx_runtime23.jsxs)("colgroup",{children:[(0,import_jsx_runtime23.jsx)("col",{width:"97%"}),(0,import_jsx_runtime23.jsx)("col",{width:"3%"})]}),(0,import_jsx_runtime23.jsxs)("tbody",{children:[values.map((v2,index)=>(0,import_jsx_runtime23.jsxs)("tr",{children:[(0,import_jsx_runtime23.jsx)("td",{children:(0,import_jsx_runtime23.jsx)(AttachmentDisplay,{value:v2,maxWidth:200})}),(0,import_jsx_runtime23.jsx)("td",{children:(0,import_jsx_runtime23.jsx)(import_core27.ActionIcon,{title:"Remove",variant:"subtle",size:"sm",color:"gray",onClick:e=>{killEvent(e);let copy=values.slice();copy.splice(index,1),setValuesWrapper(copy)},children:(0,import_jsx_runtime23.jsx)(IconCircleMinus,{})})})]},`${index}-${values.length}`)),(0,import_jsx_runtime23.jsxs)("tr",{children:[(0,import_jsx_runtime23.jsx)("td",{}),(0,import_jsx_runtime23.jsx)("td",{children:(0,import_jsx_runtime23.jsx)(AttachmentButton,{onUpload:attachment=>{setValuesWrapper([...valuesRef.current,attachment])},children:props2=>(0,import_jsx_runtime23.jsx)(import_core27.ActionIcon,{...props2,title:"Add",variant:"subtle",size:"sm",color:"green",children:(0,import_jsx_runtime23.jsx)(IconCloudUpload,{})})})})]})]})]})}var import_core28=require("@mantine/core"),import_react19=require("react");var import_jsx_runtime24=require("react/jsx-runtime");function AttachmentInput(props){let[value,setValue]=(0,import_react19.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return value?(0,import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment,{children:[(0,import_jsx_runtime24.jsx)(AttachmentDisplay,{value,maxWidth:200}),(0,import_jsx_runtime24.jsx)(import_core28.Button,{onClick:e=>{killEvent(e),setValueWrapper(void 0)},children:"Remove"})]}):(0,import_jsx_runtime24.jsx)(AttachmentButton,{onUpload:setValueWrapper,children:props2=>(0,import_jsx_runtime24.jsx)(import_core28.Button,{...props2,children:"Upload..."})})}var import_core38=require("@medplum/core");var DEFAULT_IGNORED_PROPERTIES=["meta","implicitRules","contained","extension","modifierExtension"],DEFAULT_IGNORED_NON_NESTED_PROPERTIES=["language","text"];var DescriptionList_default={root:"DescriptionList_root",compact:"DescriptionList_compact"};var import_jsx_runtime25=require("react/jsx-runtime");function DescriptionList(props){let{children,compact}=props;return(0,import_jsx_runtime25.jsx)("dl",{className:clsx_default(DescriptionList_default.root,{[DescriptionList_default.compact]:compact}),children})}function DescriptionListEntry(props){return(0,import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment,{children:[(0,import_jsx_runtime25.jsx)("dt",{children:props.term}),(0,import_jsx_runtime25.jsx)("dd",{children:props.children})]})}var import_core35=require("@mantine/core"),import_core36=require("@medplum/core");var import_core29=require("@medplum/core"),import_jsx_runtime26=require("react/jsx-runtime");function CodeableConceptDisplay(props){return(0,import_jsx_runtime26.jsx)(import_jsx_runtime26.Fragment,{children:(0,import_core29.formatCodeableConcept)(props.value)})}var import_core30=require("@medplum/core"),import_jsx_runtime27=require("react/jsx-runtime");function CodingDisplay(props){return(0,import_jsx_runtime27.jsx)(import_jsx_runtime27.Fragment,{children:(0,import_core30.formatCoding)(props.value)})}var import_jsx_runtime28=require("react/jsx-runtime");function ContactPointDisplay(props){let contactPoint=props.value;if(!contactPoint)return null;let builder=[];return contactPoint.value&&builder.push(contactPoint.value),(contactPoint.use||contactPoint.system)&&(builder.push(" ["),contactPoint.use&&builder.push(contactPoint.use),contactPoint.use&&contactPoint.system&&builder.push(" "),contactPoint.system&&builder.push(contactPoint.system),builder.push("]")),(0,import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment,{children:builder.join("").trim()})}var import_jsx_runtime29=require("react/jsx-runtime");function ContactDetailDisplay(props){let contactDetail=props.value;return contactDetail?(0,import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment,{children:[contactDetail.name,contactDetail.name&&": ",contactDetail.telecom?.map(telecom=>(0,import_jsx_runtime29.jsx)(ContactPointDisplay,{value:telecom},`telecom-${contactDetail.name}-${telecom.value}`))]}):null}var import_jsx_runtime30=require("react/jsx-runtime");function IdentifierDisplay(props){return(0,import_jsx_runtime30.jsxs)("div",{children:[props.value?.system,": ",props.value?.value]})}var import_core31=require("@medplum/core"),import_jsx_runtime31=require("react/jsx-runtime");function MoneyDisplay(props){return(0,import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment,{children:(0,import_core31.formatMoney)(props.value)})}var import_core32=require("@medplum/core"),import_jsx_runtime32=require("react/jsx-runtime");function QuantityDisplay(props){return(0,import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment,{children:(0,import_core32.formatQuantity)(props.value)})}var import_core33=require("@medplum/core"),import_jsx_runtime33=require("react/jsx-runtime");function RangeDisplay(props){return(0,import_jsx_runtime33.jsx)(import_jsx_runtime33.Fragment,{children:(0,import_core33.formatRange)(props.value)})}var import_jsx_runtime34=require("react/jsx-runtime");function RatioDisplay(props){let value=props.value;return value?(0,import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment,{children:[(0,import_jsx_runtime34.jsx)(QuantityDisplay,{value:value.numerator}),"\xA0/\xA0",(0,import_jsx_runtime34.jsx)(QuantityDisplay,{value:value.denominator})]}):null}var import_core34=require("@medplum/core");var import_jsx_runtime35=require("react/jsx-runtime");function ReferenceDisplay(props){if(!props.value)return null;let displayString=props.value.display||props.value.reference||(0,import_core34.stringify)(props.value);return props.link!==!1&&props.value.reference?(0,import_jsx_runtime35.jsx)(MedplumLink,{to:props.value,children:displayString}):(0,import_jsx_runtime35.jsx)(import_jsx_runtime35.Fragment,{children:displayString})}var import_jsx_runtime36=require("react/jsx-runtime");function ResourceArrayDisplay(props){let{property,values}=props,propertyType=property.type[0].code;return props.values?(0,import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment,{children:values.map((v2,index)=>(0,import_jsx_runtime36.jsx)("div",{children:(0,import_jsx_runtime36.jsx)(ResourcePropertyDisplay,{arrayElement:!0,property,propertyType,value:v2,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},`${index}-${values.length}`))}):(0,import_jsx_runtime36.jsx)(import_jsx_runtime36.Fragment,{})}var import_jsx_runtime37=require("react/jsx-runtime");function ResourcePropertyDisplay(props){let{property,propertyType,value}=props;if(property?.path?.endsWith(".id"))return(0,import_jsx_runtime37.jsxs)(import_core35.Box,{component:"div",style:{display:"flex",gap:3,alignItems:"center"},children:[value,!(0,import_core36.isEmpty)(value)&&(0,import_jsx_runtime37.jsx)(import_core35.CopyButton,{value,timeout:2e3,children:({copied,copy})=>(0,import_jsx_runtime37.jsx)(import_core35.Tooltip,{label:copied?"Copied":"Copy",withArrow:!0,position:"right",children:(0,import_jsx_runtime37.jsx)(import_core35.ActionIcon,{variant:"subtle",color:copied?"teal":"gray",onClick:copy,children:copied?(0,import_jsx_runtime37.jsx)(IconCheck,{size:"1rem"}):(0,import_jsx_runtime37.jsx)(IconCopy,{size:"1rem"})})})})]});if(property?.max&&property.max>1&&!props.arrayElement)return propertyType===import_core36.PropertyType.Attachment?(0,import_jsx_runtime37.jsx)(AttachmentArrayDisplay,{values:value,maxWidth:props.maxWidth}):(0,import_jsx_runtime37.jsx)(ResourceArrayDisplay,{property,values:value,ignoreMissingValues:props.ignoreMissingValues,link:props.link});switch(propertyType){case import_core36.PropertyType.boolean:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:value===void 0?"":(!!value).toString()});case import_core36.PropertyType.SystemString:case import_core36.PropertyType.string:return(0,import_jsx_runtime37.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:value});case import_core36.PropertyType.code:case import_core36.PropertyType.date:case import_core36.PropertyType.decimal:case import_core36.PropertyType.id:case import_core36.PropertyType.integer:case import_core36.PropertyType.positiveInt:case import_core36.PropertyType.unsignedInt:case import_core36.PropertyType.uri:case import_core36.PropertyType.url:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:value});case import_core36.PropertyType.canonical:return(0,import_jsx_runtime37.jsx)(ReferenceDisplay,{value:{reference:value},link:props.link});case import_core36.PropertyType.dateTime:case import_core36.PropertyType.instant:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:(0,import_core36.formatDateTime)(value)});case import_core36.PropertyType.markdown:return(0,import_jsx_runtime37.jsx)("pre",{children:value});case import_core36.PropertyType.Address:return(0,import_jsx_runtime37.jsx)(AddressDisplay,{value});case import_core36.PropertyType.Annotation:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:value?.text});case import_core36.PropertyType.Attachment:return(0,import_jsx_runtime37.jsx)(AttachmentDisplay,{value,maxWidth:props.maxWidth});case import_core36.PropertyType.CodeableConcept:return(0,import_jsx_runtime37.jsx)(CodeableConceptDisplay,{value});case import_core36.PropertyType.Coding:return(0,import_jsx_runtime37.jsx)(CodingDisplay,{value});case import_core36.PropertyType.ContactDetail:return(0,import_jsx_runtime37.jsx)(ContactDetailDisplay,{value});case import_core36.PropertyType.ContactPoint:return(0,import_jsx_runtime37.jsx)(ContactPointDisplay,{value});case import_core36.PropertyType.HumanName:return(0,import_jsx_runtime37.jsx)(HumanNameDisplay,{value});case import_core36.PropertyType.Identifier:return(0,import_jsx_runtime37.jsx)(IdentifierDisplay,{value});case import_core36.PropertyType.Money:return(0,import_jsx_runtime37.jsx)(MoneyDisplay,{value});case import_core36.PropertyType.Period:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:(0,import_core36.formatPeriod)(value)});case import_core36.PropertyType.Quantity:case import_core36.PropertyType.Duration:return(0,import_jsx_runtime37.jsx)(QuantityDisplay,{value});case import_core36.PropertyType.Range:return(0,import_jsx_runtime37.jsx)(RangeDisplay,{value});case import_core36.PropertyType.Ratio:return(0,import_jsx_runtime37.jsx)(RatioDisplay,{value});case import_core36.PropertyType.Reference:return(0,import_jsx_runtime37.jsx)(ReferenceDisplay,{value,link:props.link});case import_core36.PropertyType.Timing:return(0,import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment,{children:(0,import_core36.formatTiming)(value)});case import_core36.PropertyType.Dosage:case import_core36.PropertyType.UsageContext:return(0,import_jsx_runtime37.jsx)(BackboneElementDisplay,{value:{type:propertyType,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues});default:if(!property)throw Error(`Displaying property of type ${props.propertyType} requires element schema`);return(0,import_jsx_runtime37.jsx)(BackboneElementDisplay,{value:{type:property.type[0].code,value},compact:!0,ignoreMissingValues:props.ignoreMissingValues})}}var import_core37=require("@medplum/core");function getValueAndType(context,path){let typedResult=(0,import_core37.getTypedPropertyValue)(context,path);return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}function getValueAndTypeFromElement(value,path,element){let typedResult=(0,import_core37.getTypedPropertyValueWithSchema)(value,path,element);return typedResult?Array.isArray(typedResult)?[typedResult.map(e=>e.value),typedResult[0].type]:[typedResult.value,typedResult.type]:[void 0,"undefined"]}var import_jsx_runtime38=require("react/jsx-runtime");function BackboneElementDisplay(props){let typedValue=props.value,value=typedValue.value;if(!value)return null;let typeName=typedValue.type,typeSchema=(0,import_core38.tryGetDataType)(typeName);return typeSchema?typeof value=="object"&&"name"in value&&Object.keys(value).length===1&&typeof value.name=="string"?(0,import_jsx_runtime38.jsx)("div",{children:value.name}):(0,import_jsx_runtime38.jsx)(DescriptionList,{compact:props.compact,children:Object.entries(typeSchema.elements).map(entry=>{let[key,property]=entry;if(DEFAULT_IGNORED_PROPERTIES.includes(key)||DEFAULT_IGNORED_NON_NESTED_PROPERTIES.includes(key)&&property.path.split(".").length===2)return null;let[propertyValue,propertyType]=getValueAndType(typedValue,key);return props.ignoreMissingValues&&(!propertyValue||Array.isArray(propertyValue)&&propertyValue.length===0)?null:(0,import_jsx_runtime38.jsx)(DescriptionListEntry,{term:(0,import_core38.getPathDisplayName)(key),children:(0,import_jsx_runtime38.jsx)(ResourcePropertyDisplay,{property,propertyType,value:propertyValue,ignoreMissingValues:props.ignoreMissingValues,link:props.link})},key)})}):(0,import_jsx_runtime38.jsxs)("div",{children:[typeName,"\xA0not implemented"]})}var import_core69=require("@medplum/core"),import_react42=require("react");var import_core67=require("@mantine/core"),import_core68=require("@medplum/core"),import_react41=require("react");var import_core39=require("@mantine/core"),import_react21=require("react");var import_react20=__toESM(require("react"),1);function splitOnceRight(str,delim){let delimIndex=str.lastIndexOf(delim);if(delimIndex===-1)return["",str];let beginning=str.substring(0,delimIndex),last=str.substring(delimIndex+delim.length);return[beginning,last]}var BackboneElementContext=import_react20.default.createContext({profileUrl:void 0,debugMode:!1,getModifiedNestedElement:()=>{}});function buildBackboneElementContext(typeSchema,profileUrl,debugMode){let nestedPaths=Object.create(null);function getModifiedNestedElement(nestedElementPath){return nestedPaths[nestedElementPath]}let elements=typeSchema?.elements;if(elements){let seenKeys=new Set;for(let[key,property]of Object.entries(elements)){let[beginning,_last]=splitOnceRight(key,".");seenKeys.has(beginning)&&(nestedPaths[typeSchema.type+"."+key]=property),seenKeys.add(key)}}return{debugMode:debugMode??!1,profileUrl,getModifiedNestedElement}}var import_jsx_runtime39=require("react/jsx-runtime");function CheckboxFormSection(props){let{debugMode}=(0,import_react21.useContext)(BackboneElementContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,(0,import_jsx_runtime39.jsxs)(import_core39.Group,{wrap:"nowrap","data-testid":props.testId,children:[(0,import_jsx_runtime39.jsx)("div",{children:props.children}),(0,import_jsx_runtime39.jsx)("div",{children:(0,import_jsx_runtime39.jsx)(import_core39.Input.Wrapper,{id:props.htmlFor,label,description:props.description,withAsterisk:props.withAsterisk,children:null})})]})}var import_core40=require("@mantine/core"),import_react22=require("react");function getErrorsForInput(outcome,expression){return outcome?.issue?.filter(issue=>isExpressionMatch(issue.expression?.[0],expression))?.map(issue=>issue.details?.text)?.join(`
|
|
65
|
+
`)}function getIssuesForExpression(outcome,expression){return outcome?.issue?.filter(issue=>isExpressionMatch(issue.expression?.[0],expression))}function isExpressionMatch(expr1,expr2){if(expr1===expr2)return!0;if(!expr1||!expr2)return!1;let dot1=expr1.indexOf(".");if(dot1>=0&&expr1.substring(dot1+1)===expr2)return!0;let dot2=expr2.indexOf(".");return dot2>=0&&expr2.substring(dot2+1)===expr1}var import_jsx_runtime40=require("react/jsx-runtime");function FormSection(props){let{debugMode}=(0,import_react22.useContext)(BackboneElementContext),label;return debugMode&&props.fhirPath?label=`${props.title} - ${props.fhirPath}`:label=props.title,(0,import_jsx_runtime40.jsx)(import_core40.Input.Wrapper,{id:props.htmlFor,label,description:props.description,withAsterisk:props.withAsterisk,error:getErrorsForInput(props.outcome,props.htmlFor),"data-testid":props.testId,children:props.children})}var import_core41=require("@medplum/core");function setPropertyValue(obj,key,propName,elementDefinition,value){let types=elementDefinition.type;if(types.length>1)for(let type of types){let compoundKey=key.replace("[x]",(0,import_core41.capitalize)(type.code));compoundKey in obj&&delete obj[compoundKey]}return obj[propName]=value,obj}function isSupportedProfileStructureDefinition(profile){return!!profile&&!(0,import_core41.isEmpty)(profile.url)&&!(0,import_core41.isEmpty)(profile.name)}var import_core65=require("@mantine/core"),import_core66=require("@medplum/core"),import_react40=require("react");var import_react23=require("react");var import_jsx_runtime41=require("react/jsx-runtime");function CodeableConceptInput(props){let{defaultValue:defaultValue2,onChange,...rest}=props,[value,setValue]=(0,import_react23.useState)(defaultValue2);function handleChange(newValues){let newConcept=valueSetElementToCodeableConcept(newValues);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime41.jsx)(ValueSetAutocomplete,{defaultValue:value&&codeableConceptToValueSetElement(value),onChange:handleChange,...rest})}function codeableConceptToValueSetElement(concept){return concept.coding?.map(c=>({system:c.system,code:c.code,display:c.display}))}function valueSetElementToCodeableConcept(elements){if(elements.length!==0)return{coding:elements.map(e=>({system:e.system,code:e.code,display:e.display}))}}var import_react24=require("react");var import_jsx_runtime42=require("react/jsx-runtime");function CodingInput(props){let{defaultValue:defaultValue2,onChange,...rest}=props,[value,setValue]=(0,import_react24.useState)(defaultValue2);function handleChange(newValues){let newValue=newValues[0],newConcept=newValue&&valueSetElementToCoding(newValue);setValue(newConcept),onChange&&onChange(newConcept)}return(0,import_jsx_runtime42.jsx)(ValueSetAutocomplete,{defaultValue:value&&codingToValueSetElement(value),maxValues:1,onChange:handleChange,...rest})}function codingToValueSetElement(coding){return{system:coding.system,code:coding.code,display:coding.display}}function valueSetElementToCoding(element){return{system:element.system,code:element.code,display:element.display}}var import_core43=require("@mantine/core"),import_react26=require("react");var import_core42=require("@mantine/core"),import_react25=require("react");var import_jsx_runtime43=require("react/jsx-runtime");function ContactPointInput(props){let{path,outcome}=props,{getModifiedNestedElement}=(0,import_react25.useContext)(BackboneElementContext),[contactPoint,setContactPoint]=(0,import_react25.useState)(props.defaultValue),ref=(0,import_react25.useRef)();ref.current=contactPoint;let[systemElement,useElement,valueElement]=(0,import_react25.useMemo)(()=>["system","use","value"].map(field=>getModifiedNestedElement(path+"."+field)),[getModifiedNestedElement,path]);function setContactPointWrapper(newValue){newValue&&Object.keys(newValue).length===0&&(newValue=void 0),setContactPoint(newValue),props.onChange&&props.onChange(newValue)}function setSystem(system){let newValue={...ref.current,system};system||delete newValue.system,setContactPointWrapper(newValue)}function setUse(use){let newValue={...ref.current,use};use||delete newValue.use,setContactPointWrapper(newValue)}function setValue(value){let newValue={...ref.current,value};value||delete newValue.value,setContactPointWrapper(newValue)}return(0,import_jsx_runtime43.jsxs)(import_core42.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime43.jsx)(import_core42.NativeSelect,{"data-testid":"system",defaultValue:contactPoint?.system,required:(systemElement?.min??0)>0,onChange:e=>setSystem(e.currentTarget.value),data:["","email","phone","fax","pager","sms","other"],error:getErrorsForInput(outcome,path+".system")}),(0,import_jsx_runtime43.jsx)(import_core42.NativeSelect,{"data-testid":"use",defaultValue:contactPoint?.use,required:(useElement?.min??0)>0,onChange:e=>setUse(e.currentTarget.value),data:["","home","work","temp","old","mobile"],error:getErrorsForInput(outcome,path+".use")}),(0,import_jsx_runtime43.jsx)(import_core42.TextInput,{placeholder:"Value",defaultValue:contactPoint?.value,required:(valueElement?.min??0)>0,onChange:e=>setValue(e.currentTarget.value),error:getErrorsForInput(outcome,path+".value")})]})}var import_jsx_runtime44=require("react/jsx-runtime");function ContactDetailInput(props){let[contactPoint,setContactDetail]=(0,import_react26.useState)(props.defaultValue),ref=(0,import_react26.useRef)();ref.current=contactPoint;function setContactDetailWrapper(newValue){setContactDetail(newValue),props.onChange&&props.onChange(newValue)}function setName(name){let newValue={...ref.current,name};name||delete newValue.name,setContactDetailWrapper(newValue)}function setTelecom(telecom){let newValue={...ref.current,telecom:telecom&&[telecom]};telecom||delete newValue.telecom,setContactDetailWrapper(newValue)}return(0,import_jsx_runtime44.jsxs)(import_core43.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime44.jsx)(import_core43.TextInput,{"data-testid":props.name+"-name",name:props.name+"-name",placeholder:"Name",style:{width:180},defaultValue:contactPoint?.name,onChange:e=>setName(e.currentTarget.value)}),(0,import_jsx_runtime44.jsx)(ContactPointInput,{name:props.name+"-telecom",path:props.path+".telecom",defaultValue:contactPoint?.telecom?.[0],onChange:setTelecom,outcome:props.outcome})]})}var import_core45=require("@mantine/core");var import_core44=require("@medplum/core");function convertIsoToLocal(isoString){if(!isoString)return"";let date=new Date(isoString);return(0,import_core44.isValidDate)(date)?date.toLocaleDateString("sv")+"T"+date.toLocaleTimeString("sv"):""}function convertLocalToIso(localString){if(!localString)return"";let date=new Date(localString);return(0,import_core44.isValidDate)(date)?date.toISOString():""}var import_jsx_runtime45=require("react/jsx-runtime");function DateTimeInput(props){return(0,import_jsx_runtime45.jsx)(import_core45.TextInput,{id:props.name,name:props.name,"data-autofocus":props.autoFocus,"data-testid":props.name,placeholder:props.placeholder,required:props.required,type:getInputType(),defaultValue:convertIsoToLocal(props.defaultValue),autoFocus:props.autoFocus,error:getErrorsForInput(props.outcome,props.name),onChange:e=>{if(props.onChange){let newValue=e.currentTarget.value;props.onChange(convertLocalToIso(newValue))}}})}function getInputType(){return"datetime-local"}var import_core46=require("@mantine/core"),import_core47=require("@medplum/core");var import_react27=require("react");var import_jsx_runtime46=require("react/jsx-runtime");function ExtensionInput(props){let{propertyType}=props,medplum=s(),[loading,setLoading]=(0,import_react27.useState)(!1),[typeSchema,setTypeSchema]=(0,import_react27.useState)(),profileUrl=(0,import_react27.useMemo)(()=>{if(!(!propertyType.profile||propertyType.profile.length===0))return propertyType.profile[0]},[propertyType]);(0,import_react27.useEffect)(()=>{profileUrl&&(setLoading(!0),medplum.requestProfileSchema(profileUrl).then(()=>{let profile=(0,import_core47.tryGetProfile)(profileUrl);setLoading(!1),setTypeSchema(profile)}).catch(reason=>{setLoading(!1),console.warn(reason)}))},[medplum,profileUrl]);function onChange(newValue){props.onChange&&(console.log("Extension",newValue),props.onChange(newValue))}return profileUrl?loading?(0,import_jsx_runtime46.jsxs)("div",{children:["Loading ",profileUrl,"..."]}):typeSchema?(0,import_jsx_runtime46.jsx)(BackboneElementInput,{profileUrl,typeName:typeSchema.name,defaultValue:props.defaultValue,onChange}):(0,import_jsx_runtime46.jsxs)("div",{children:["StructureDefinition for ",profileUrl," not found"]}):(0,import_jsx_runtime46.jsx)(ExtensionJsonInput,{...props})}function ExtensionJsonInput(props){return(0,import_jsx_runtime46.jsx)(import_core46.JsonInput,{id:props.name,name:props.name,"data-testid":"extension-json-input",defaultValue:(0,import_core47.stringify)(props.defaultValue),deserialize:JSON.parse,onChange:newValue=>{props.onChange&&props.onChange(JSON.parse(newValue))}})}var import_core48=require("@mantine/core"),import_react28=require("react");var import_jsx_runtime47=require("react/jsx-runtime");function HumanNameInput(props){let{outcome,path}=props,[value,setValue]=(0,import_react28.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}function setUse(use){setValueWrapper({...value,use:use||void 0})}function setPrefix(prefix){setValueWrapper({...value,prefix:prefix?prefix.split(" "):void 0})}function setGiven(given){setValueWrapper({...value,given:given?given.split(" "):void 0})}function setFamily(family){setValueWrapper({...value,family:family||void 0})}function setSuffix(suffix){setValueWrapper({...value,suffix:suffix?suffix.split(" "):void 0})}return(0,import_jsx_runtime47.jsxs)(import_core48.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime47.jsx)(import_core48.NativeSelect,{defaultValue:value?.use,name:props.name+"-use","data-testid":"use",onChange:e=>setUse(e.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"],error:getErrorsForInput(outcome,path+".use")}),(0,import_jsx_runtime47.jsx)(import_core48.TextInput,{placeholder:"Prefix",name:props.name+"-prefix",defaultValue:value?.prefix?.join(" "),onChange:e=>setPrefix(e.currentTarget.value),error:getErrorsForInput(outcome,path+".prefix")}),(0,import_jsx_runtime47.jsx)(import_core48.TextInput,{placeholder:"Given",name:props.name+"-given",defaultValue:value?.given?.join(" "),onChange:e=>setGiven(e.currentTarget.value),error:getErrorsForInput(outcome,path+".given")}),(0,import_jsx_runtime47.jsx)(import_core48.TextInput,{name:props.name+"-family",placeholder:"Family",defaultValue:value?.family,onChange:e=>setFamily(e.currentTarget.value),error:getErrorsForInput(outcome,path+".family")}),(0,import_jsx_runtime47.jsx)(import_core48.TextInput,{placeholder:"Suffix",name:props.name+"-suffix",defaultValue:value?.suffix?.join(" "),onChange:e=>setSuffix(e.currentTarget.value),error:getErrorsForInput(outcome,path+".suffix")})]})}var import_core49=require("@mantine/core"),import_react29=require("react");var import_jsx_runtime48=require("react/jsx-runtime");function IdentifierInput(props){let{path,outcome}=props,[value,setValue]=(0,import_react29.useState)(props.defaultValue),{getModifiedNestedElement}=(0,import_react29.useContext)(BackboneElementContext),[systemElement,valueElement]=(0,import_react29.useMemo)(()=>["system","value"].map(field=>getModifiedNestedElement(path+"."+field)),[getModifiedNestedElement,path]);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime48.jsxs)(import_core49.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime48.jsx)(import_core49.TextInput,{placeholder:"System",required:(systemElement?.min??0)>0,defaultValue:value?.system,onChange:e=>setValueWrapper({...value,system:e.currentTarget.value}),error:getErrorsForInput(outcome,path+".system")}),(0,import_jsx_runtime48.jsx)(import_core49.TextInput,{placeholder:"Value",required:(valueElement?.min??0)>0,defaultValue:value?.value,onChange:e=>setValueWrapper({...value,value:e.currentTarget.value}),error:getErrorsForInput(outcome,path+".value")})]})}var import_core50=require("@mantine/core");var import_react30=require("react"),import_jsx_runtime49=require("react/jsx-runtime"),data=["USD","EUR","CAD","GBP","AUD"];function MoneyInput(props){let{onChange}=props,[value,setValue]=(0,import_react30.useState)(props.defaultValue),setValueWrapper=(0,import_react30.useCallback)(newValue=>{setValue(newValue),onChange&&onChange(newValue)},[onChange]),handleCurrencyChange=(0,import_react30.useCallback)(e=>{setValueWrapper({...value,currency:e.currentTarget.value})},[value,setValueWrapper]),handleValueChange=(0,import_react30.useCallback)(e=>{setValueWrapper({...value,value:e.currentTarget.valueAsNumber})},[value,setValueWrapper]),select=(0,import_jsx_runtime49.jsx)(import_core50.NativeSelect,{defaultValue:value?.currency,data,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:handleCurrencyChange});return(0,import_jsx_runtime49.jsx)(import_core50.TextInput,{type:"number",label:props.label,placeholder:props.placeholder??"Value",defaultValue:value?.value?.toString()??"USD",leftSection:(0,import_jsx_runtime49.jsx)(IconCurrencyDollar,{size:14}),rightSection:select,rightSectionWidth:92,onChange:handleValueChange})}var import_core51=require("@mantine/core"),import_react31=require("react");var import_jsx_runtime50=require("react/jsx-runtime");function PeriodInput(props){let[value,setValue]=(0,import_react31.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime50.jsxs)(import_core51.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime50.jsx)(DateTimeInput,{name:props.name+".start",placeholder:"Start",defaultValue:value?.start,onChange:newValue=>setValueWrapper({...value,start:newValue})}),(0,import_jsx_runtime50.jsx)(DateTimeInput,{name:props.name+".end",placeholder:"End",defaultValue:value?.end,onChange:newValue=>setValueWrapper({...value,end:newValue})})]})}var import_core52=require("@mantine/core"),import_react32=require("react"),import_jsx_runtime51=require("react/jsx-runtime");function QuantityInput(props){let[value,setValue]=(0,import_react32.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime51.jsxs)(import_core52.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime51.jsx)(import_core52.NativeSelect,{style:{width:80},"data-testid":props.name+"-comparator",defaultValue:value?.comparator,data:["","<","<=",">=",">"],onChange:e=>setValueWrapper({...value,comparator:e.currentTarget.value})}),(0,import_jsx_runtime51.jsx)(import_core52.TextInput,{id:props.name,name:props.name,required:props.required,"data-autofocus":props.autoFocus,"data-testid":props.name+"-value",type:"number",placeholder:"Value",defaultValue:value?.value,autoFocus:props.autoFocus,step:"any",onWheel:e=>{props.disableWheel&&e.currentTarget.blur()},onChange:e=>{setValueWrapper({...value,value:tryParseNumber(e.currentTarget.value)})}}),(0,import_jsx_runtime51.jsx)(import_core52.TextInput,{placeholder:"Unit","data-testid":props.name+"-unit",defaultValue:value?.unit,onChange:e=>setValueWrapper({...value,unit:e.currentTarget.value})})]})}function tryParseNumber(str){if(str)return parseFloat(str)}var import_core53=require("@mantine/core"),import_react33=require("react");var import_jsx_runtime52=require("react/jsx-runtime");function RangeInput(props){let[value,setValue]=(0,import_react33.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime52.jsxs)(import_core53.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime52.jsx)(QuantityInput,{name:props.name+"-low",defaultValue:value?.low,onChange:v2=>setValueWrapper({...value,low:v2})}),(0,import_jsx_runtime52.jsx)(QuantityInput,{name:props.name+"-high",defaultValue:value?.high,onChange:v2=>setValueWrapper({...value,high:v2})})]})}var import_core54=require("@mantine/core"),import_react34=require("react");var import_jsx_runtime53=require("react/jsx-runtime");function RatioInput(props){let[value,setValue]=(0,import_react34.useState)(props.defaultValue);function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime53.jsxs)(import_core54.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime53.jsx)(QuantityInput,{name:props.name+"-numerator",defaultValue:value?.numerator,onChange:v2=>setValueWrapper({...value,numerator:v2})}),(0,import_jsx_runtime53.jsx)(QuantityInput,{name:props.name+"-denominator",defaultValue:value?.denominator,onChange:v2=>setValueWrapper({...value,denominator:v2})})]})}var import_core57=require("@mantine/core"),import_core58=require("@medplum/core");var import_react36=require("react");var import_core55=require("@medplum/core");var import_react35=require("react");var import_core56=require("@mantine/core");var import_jsx_runtime54=require("react/jsx-runtime"),SEARCH_CODES={Observation:"code",User:"email:contains"},NAME_RESOURCE_TYPES=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function toOption3(resource){return{value:(0,import_core55.getReferenceString)(resource),label:(0,import_core55.getDisplayString)(resource),resource}}function ResourceInput(props){let medplum=s(),{resourceType,searchCriteria}=props,[outcome,setOutcome]=(0,import_react35.useState)(),defaultValue2=j(props.defaultValue,setOutcome),onChange=props.onChange,loadValues=(0,import_react35.useCallback)(async(input,signal)=>{let searchCode=getSearchParamForResourceType(resourceType),searchParams=new URLSearchParams({[searchCode]:input??"",_count:"10",...searchCriteria});return await medplum.searchResources(resourceType,searchParams,{signal})},[medplum,resourceType,searchCriteria]),handleChange=(0,import_react35.useCallback)(newResources=>{onChange&&onChange(newResources[0])},[onChange]);return props.defaultValue&&!outcome&&!defaultValue2?null:(0,import_jsx_runtime54.jsx)(AsyncAutocomplete,{name:props.name,required:props.required,itemComponent:ItemComponent2,defaultValue:defaultValue2,placeholder:props.placeholder,maxValues:1,toOption:toOption3,loadOptions:loadValues,onChange:handleChange,clearable:!0})}var ItemComponent2=(0,import_react35.forwardRef)(({label,resource,...others},ref)=>(0,import_jsx_runtime54.jsx)("div",{ref,...others,children:(0,import_jsx_runtime54.jsxs)(import_core56.Group,{wrap:"nowrap",children:[(0,import_jsx_runtime54.jsx)(ResourceAvatar,{value:resource}),(0,import_jsx_runtime54.jsxs)("div",{children:[(0,import_jsx_runtime54.jsx)(import_core56.Text,{children:label}),(0,import_jsx_runtime54.jsx)(import_core56.Text,{size:"xs",c:"dimmed",children:resource.birthDate})]})]})}));function getSearchParamForResourceType(resourceType){return SEARCH_CODES[resourceType]??(NAME_RESOURCE_TYPES.includes(resourceType)?"name":"_id")}var import_jsx_runtime55=require("react/jsx-runtime");function ReferenceInput(props){let{onChange}=props,medplum=s(),[value,setValue]=(0,import_react36.useState)(props.defaultValue),[targetTypes,setTargetTypes]=(0,import_react36.useState)(()=>createTargetTypes(props.targetTypes)),[targetType,setTargetType]=(0,import_react36.useState)(()=>getInitialTargetType(props.defaultValue,targetTypes)),promiseCache=(0,import_react36.useRef)(new import_core58.LRUCache),searchCriteria=(0,import_react36.useMemo)(()=>targetType?.type==="profile"?{...props.searchCriteria,_profile:targetType.value}:props.searchCriteria,[props.searchCriteria,targetType]);(0,import_react36.useEffect)(()=>{let anyToFetch=!1,newTargetTypePromises=targetTypes?.map(tt=>{if(!shouldFetchResourceType(tt))return Promise.resolve(tt);anyToFetch=!0;let cacheKey=tt.value,cached=promiseCache.current.get(cacheKey);if(cached)return cached;let promise=fetchResourceTypeOfProfile(medplum,tt.value).then(profile=>{let newTargetType={...tt};return profile?(0,import_core58.isPopulated)(profile.type)?(newTargetType.resourceType=profile.type,newTargetType.name=profile.name,newTargetType.title=profile.title):(console.error(`StructureDefinition.type missing for ${tt.value}`),newTargetType.error="StructureDefinition.type missing"):(console.error(`StructureDefinition not found for ${tt.value}`),newTargetType.error="StructureDefinition not found"),newTargetType}).catch(reason=>(console.error(reason),{...tt,error:reason})),readablePromise=new import_core58.ReadablePromise(promise);return promiseCache.current.set(cacheKey,readablePromise),readablePromise});!newTargetTypePromises||!anyToFetch||Promise.all(newTargetTypePromises).then(newTargetTypes=>{if(setTargetTypes(newTargetTypes),!targetType)return;let index=newTargetTypes.findIndex(tt=>tt.value===targetType.value||tt.resourceType===targetType.resourceType);if(index===-1){console.debug(`defaultValue had unexpected resourceType: ${targetType.resourceType}`);return}setTargetType(newTargetTypes[index])}).catch(console.error)},[medplum,targetType,targetTypes]);let setValueHelper=(0,import_react36.useCallback)(item=>{let newValue=item?(0,import_core58.createReference)(item):void 0;setValue(newValue),onChange&&onChange(newValue)},[onChange]),typeSelectOptions=(0,import_react36.useMemo)(()=>targetTypes?targetTypes.map(tt=>({value:tt.value,label:tt.type==="profile"?tt.title??tt.name??tt.resourceType??tt.value:tt.value})):[],[targetTypes]);return(0,import_jsx_runtime55.jsxs)(import_core57.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[targetTypes&&targetTypes.length>1&&(0,import_jsx_runtime55.jsx)(import_core57.NativeSelect,{"data-autofocus":props.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:targetType?.resourceType,autoFocus:props.autoFocus,onChange:e=>{let newValue=e.currentTarget.value,newTargetType=targetTypes.find(tt=>tt.value===newValue);setTargetType(newTargetType)},data:typeSelectOptions}),!targetTypes&&(0,import_jsx_runtime55.jsx)(ResourceTypeInput,{autoFocus:props.autoFocus,testId:"reference-input-resource-type-input",defaultValue:targetType?.resourceType,onChange:newResourceType=>{setTargetType(newResourceType?{type:"resourceType",value:newResourceType,resourceType:newResourceType}:void 0)},name:props.name+"-resourceType",placeholder:"Resource Type"}),(0,import_jsx_runtime55.jsx)(ResourceInput,{resourceType:targetType?.resourceType,name:props.name+"-id",required:props.required,placeholder:props.placeholder,defaultValue:value,searchCriteria,onChange:setValueHelper})]})}function createTargetTypes(resourceTypesAndProfileUrls){if(!resourceTypesAndProfileUrls||resourceTypesAndProfileUrls.length===0||resourceTypesAndProfileUrls.length===1&&resourceTypesAndProfileUrls[0]==="Resource")return;let results=[];for(let value of resourceTypesAndProfileUrls)value.includes("/")?results.push({type:"profile",value}):results.push({type:"resourceType",value,resourceType:value});return results}function getInitialTargetType(defaultValue2,targetTypes){let defaultValueResourceType=defaultValue2?.reference?.split("/")[0];if(defaultValueResourceType){let targetType=targetTypes?.find(tt=>tt.resourceType===defaultValueResourceType);return targetType||{type:"resourceType",value:defaultValueResourceType,resourceType:defaultValueResourceType}}if(targetTypes&&targetTypes.length>0)return targetTypes[0]}async function fetchResourceTypeOfProfile(medplum,profileUrl){let profile=(0,import_core58.tryGetProfile)(profileUrl);if(profile)return{type:profile.type,name:profile.name,title:profile.title};let query=`{
|
|
66
|
+
StructureDefinitionList(url: "${profileUrl}", _sort: "_lastUpdated", _count: 1) {
|
|
67
67
|
type,
|
|
68
68
|
name,
|
|
69
69
|
title,
|
|
70
70
|
}
|
|
71
|
-
}`.replace(/\s+/g," ");return(await e.graphql(r)).data.StructureDefinitionList[0]}function bp(e){return e.type==="profile"&&!e?.error&&(0,So.isEmpty)(e.resourceType)}var $e=require("@mantine/core"),qo=require("@medplum/core");var Mt=require("react");var Ho=require("@medplum/core");function Rp(e,o,t){for(let r of[t.elements,t.typeSchema?.elements]){let a;if((0,Ho.isPopulated)(r)){let n=(0,Ho.getElementDefinitionFromElements)(r,o.path);n&&(a=(0,Ho.getTypedPropertyValueWithSchema)(e.value,o.path,n))}if(a)return(0,Ho.arrayify)(a)?.some(n=>(0,Ho.matchDiscriminant)(n,o,t,r))??!1}return!1}function Pp(e,o,t){if(e)for(let r of o){let a={value:e,type:r.typeSchema?.name??r.type[0].code};if(t.every(n=>Rp(a,n,r)))return r.name}}function rs(e,o,t){if(!t||t.slices.length===0)return[e];let r=new Array(o.length+1);for(let a=0;a<r.length;a++)r[a]=[];for(let a of e){let n=Pp(a,o,t.discriminator),l=n?o.findIndex(f=>f.name===n):-1;l===-1&&(l=o.length),r[l].push(a)}for(let a=0;a<o.length;a++)r[a].length===0&&r[a].push(void 0);return r}function Nu(e){return e.type!==void 0&&e.type.length>0}var ne=require("react/jsx-runtime"),Vu=(0,$e.createStyles)(e=>({indented:{marginTop:"0.5rem",borderLeft:`3px solid ${e.colors.gray[4]}`,padding:"0.5rem 0 0.5rem 0.5rem"}}));function as(e){let{property:o}=e,t=C(),[r,a]=(0,Mt.useState)(!0),[n,l]=(0,Mt.useState)([]),[f]=(0,Mt.useState)(()=>Array.isArray(e.defaultValue)?e.defaultValue:[]),[i,s]=(0,Mt.useState)([[]]),{classes:u}=Vu(),c=o.type[0]?.code;(0,Mt.useEffect)(()=>{if(!o.slicing){let T=[];l(T);let h=rs(f,T,o.slicing);s(h),a(!1);return}let v=[],S=[],R=[];for(let T of o.slicing.slices){if(!Nu(T))continue;let h=T.type[0],E;(0,qo.isEmpty)(T.elements)&&h.profile&&(E=h.profile[0]),v.push(T),S.push(E),E?R.push(t.requestProfileSchema(E)):R.push(Promise.resolve())}Promise.all(R).then(()=>{for(let h=0;h<v.length;h++){let E=v[h],re=S[h];if(re){let Se=(0,qo.tryGetProfile)(re);E.typeSchema=Se}}l(v);let T=rs(f,v,o.slicing);s(T),a(!1)}).catch(T=>{console.error(T),a(!1)})},[t,o.slicing,c,f]);function d(v,S){let R=[...i];if(R[S]=v,s(R),e.onChange){let T=R.flat().filter(h=>h!==void 0);e.onChange(T)}}if(r)return(0,ne.jsx)("div",{children:"Loading..."});let m=n.length,p=i[m],x=!(e.hideNonSliceValues??(c==="Extension"&&n.length>0)),b=(0,qo.getPathDisplayName)(o.path);return(0,ne.jsxs)($e.Stack,{className:e.indent?u.indented:void 0,children:[n.map((v,S)=>(0,ne.jsx)(Tp,{slice:v,property:o,defaultValue:i[S],onChange:R=>{d(R,S)},testId:`slice-${v.name}`},v.name)),x&&p.map((v,S)=>(0,ne.jsxs)($e.Group,{noWrap:!0,style:{flexGrow:1},children:[(0,ne.jsx)("div",{style:{flexGrow:1},children:(0,ne.jsx)(rt,{arrayElement:!0,property:e.property,name:e.name+"."+S,defaultValue:v,onChange:R=>{let T=[...p];T[S]=R,d(T,m)},defaultPropertyType:void 0,outcome:e.outcome})}),(0,ne.jsx)(qu,{propertyDisplayName:b,testId:`nonsliced-remove-${S}`,onClick:R=>{L(R);let T=[...p];T.splice(S,1),d(T,m)}})]},`${S}-${p.length}`)),x&&i.flat().length<o.max&&(0,ne.jsx)($e.Group,{noWrap:!0,style:{justifyContent:"flex-start"},children:(0,ne.jsx)(Hu,{propertyDisplayName:b,onClick:v=>{L(v);let S=[...p];S.push(void 0),d(S,m)},testId:"nonsliced-add"})})]})}function Tp(e){let{slice:o,property:t}=e,[r,a]=(0,Mt.useState)(()=>e.defaultValue.map(u=>u??{})),{classes:n}=Vu();function l(u){a(u),e.onChange&&e.onChange(u)}let f=o.min>0,i=(0,qo.isEmpty)(o.elements),s=(0,qo.getPropertyDisplayName)(o.name);return(0,ne.jsx)(Je,{title:s,description:o.definition,withAsterisk:f,fhirPath:`${t.path}:${o.name}`,testId:e.testId,children:(0,ne.jsxs)($e.Stack,{className:i?n.indented:void 0,children:[r.map((u,c)=>(0,ne.jsxs)($e.Group,{noWrap:!0,children:[(0,ne.jsx)("div",{style:{flexGrow:1},children:(0,ne.jsx)($e.Stack,{children:(0,qo.isEmpty)(o.elements)?(0,ne.jsx)(Ha,{elementDefinitionType:o.type[0],name:o.name,defaultValue:u,onChange:d=>{let m=[...r];m[c]=d,l(m)},outcome:void 0,min:o.min,max:o.max,binding:void 0,path:o.path}):(0,ne.jsx)(Yn,{type:o.type[0].code,elements:o.elements,defaultValue:u,outcome:e.outcome,onChange:d=>{let m=[...r];m[c]=d,l(m)},testId:e.testId&&`${e.testId}-elements-${c}`})})}),r.length>o.min&&(0,ne.jsx)(qu,{propertyDisplayName:s,testId:e.testId&&`${e.testId}-remove-${c}`,onClick:d=>{L(d);let m=[...r];m.splice(c,1),l(m)}})]},`${c}-${r.length}`)),r.length<o.max&&(0,ne.jsx)($e.Group,{noWrap:!0,style:{justifyContent:"flex-start"},children:(0,ne.jsx)(Hu,{propertyDisplayName:s,onClick:u=>{L(u);let c=[...r,void 0];l(c)},testId:e.testId&&`${e.testId}-add`})})]})})}function Hu({propertyDisplayName:e,onClick:o,testId:t}){let r=e?`Add ${e}`:"Add";return e?(0,ne.jsx)($e.Button,{title:r,size:"sm",color:"green.6",variant:"subtle","data-testid":t,leftIcon:(0,ne.jsx)(Jt,{size:"1.25rem"}),onClick:o,children:r}):(0,ne.jsx)($e.ActionIcon,{title:r,color:"green.6","data-testid":t,onClick:o,children:(0,ne.jsx)(Jt,{size:"1.25rem"})})}function qu({propertyDisplayName:e,onClick:o,testId:t}){return(0,ne.jsx)($e.ActionIcon,{title:e?`Remove ${e}`:"Remove",color:"red.5","data-testid":t,onClick:o,children:(0,ne.jsx)(Ct,{size:"1.25rem"})})}var Hr=require("@mantine/core"),Gu=require("@mantine/hooks"),Uu=require("@mantine/notifications");var jn=require("react"),Vr=require("react/jsx-runtime");function Qu(e){let[o,t]=(0,jn.useState)(!1),r=(0,Gu.useClipboard)(),a=(0,jn.useRef)(null),n={...e.styles};return o||(n.input||(n.input={}),n.input.WebkitTextSecurity="disc"),(0,Vr.jsxs)(Hr.Flex,{gap:"xs",children:[(0,Vr.jsx)(Hr.Textarea,{...e,styles:{...n,root:{...n.root??{},flexGrow:1}},ref:a,autosize:!0,minRows:1,onFocus:()=>t(!0),onBlur:()=>t(!1)}),(0,Vr.jsx)(Hr.ActionIcon,{title:"Copy secret",onClick:()=>{r.copy(a.current?.value),(0,Uu.showNotification)({color:"green",message:"Copied"})},children:(0,Vr.jsx)(ma,{})})]})}var Te=require("@mantine/core"),Wu=require("@medplum/core"),sr=require("react");var ue=require("react/jsx-runtime"),kp=["sun","mon","tue","wed","thu","fri","sat"];function ns(e){let[o,t]=(0,sr.useState)(e.defaultValue),[r,a]=(0,sr.useState)(!1),n=(0,sr.useRef)();return n.current=o,(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsxs)(Te.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,ue.jsx)("span",{children:(0,Wu.formatTiming)(n.current)||"No repeat"}),(0,ue.jsx)(Te.Button,{onClick:()=>a(!0),children:"Edit"})]}),(0,ue.jsx)(Dp,{visible:r,defaultValue:n.current,onOk:l=>{e.onChange&&e.onChange(l),t(l),a(!1)},onCancel:()=>a(!1)})]})}var zu={repeat:{period:1,periodUnit:"d"}};function Dp(e){let[o,t]=(0,sr.useState)(e.defaultValue||zu),r=(0,sr.useRef)();r.current=o;function a(s){t({...r.current,event:[s]})}function n(s){t({...r.current,repeat:s})}function l(s){n({...r.current?.repeat,period:s})}function f(s){n({...r.current?.repeat,periodUnit:s})}function i(s){n({...r.current?.repeat,dayOfWeek:s})}return(0,ue.jsx)(Te.Modal,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel(),children:(0,ue.jsxs)(Te.Stack,{children:[(0,ue.jsx)(Je,{title:"Starts on",htmlFor:"timing-dialog-start",children:(0,ue.jsx)(vo,{name:"timing-dialog-start",onChange:s=>a(s)})}),(0,ue.jsx)(Te.Switch,{label:"Repeat",checked:!!o.repeat,onChange:s=>n(s.currentTarget.checked?zu.repeat:void 0)}),o.repeat&&(0,ue.jsxs)(ue.Fragment,{children:[(0,ue.jsx)(Je,{title:"Repeat every",htmlFor:"timing-dialog-period",children:(0,ue.jsxs)(Te.Group,{spacing:"xs",grow:!0,noWrap:!0,children:[(0,ue.jsx)(Te.TextInput,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:s=>l(parseInt(s.currentTarget.value,10)||1)}),(0,ue.jsx)(Te.NativeSelect,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:s=>f(s.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]})]})}),o.repeat.periodUnit==="wk"&&(0,ue.jsx)(Je,{title:"Repeat on",children:(0,ue.jsx)(Te.Chip.Group,{multiple:!0,onChange:i,children:(0,ue.jsx)(Te.Group,{position:"apart",mt:"md",spacing:"xs",children:kp.map(s=>(0,ue.jsx)(Te.Chip,{value:s,size:"xs",radius:"xl",children:s.charAt(0).toUpperCase()},s))})})})]}),(0,ue.jsx)(Te.Group,{position:"right",children:(0,ue.jsx)(Te.Button,{onClick:()=>e.onOk(o),children:"OK"})})]})})}var Q=require("react/jsx-runtime");function rt(e){let{property:o,name:t,defaultValue:r,onChange:a}=e,n=e.defaultPropertyType&&e.defaultPropertyType!=="undefined"?e.defaultPropertyType:o.type[0].code,l=o.type;if((o.isArray||o.max>1)&&!e.arrayElement){if(n===N.PropertyType.Attachment)return(0,Q.jsx)(Gf,{name:t,defaultValue:r,onChange:a});let f=l[0]?.code!==N.PropertyType.Extension;return(0,Q.jsx)(as,{property:o,name:t,defaultValue:r,indent:f,onChange:a,outcome:e.outcome})}return l.length>1?(0,Q.jsx)(Ju,{elementDefinitionTypes:l,...e}):(0,Q.jsx)(Ha,{name:t,defaultValue:r,onChange:f=>{if(e.onChange){let i=e.name.replace("[x]",(0,N.capitalize)(l[0].code));e.onChange(f,i)}},outcome:e.outcome,elementDefinitionType:l[0],min:o.min,max:o.min,binding:o.binding,path:o.path})}function Ju(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=(0,Xu.useState)(t);return(0,Q.jsxs)(Co.Group,{spacing:"xs",grow:!0,noWrap:!0,align:"flex-start",children:[(0,Q.jsx)(Co.NativeSelect,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(l=>l.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),(0,Q.jsx)(Ha,{name:e.name,defaultValue:e.defaultValue,outcome:e.outcome,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",(0,N.capitalize)(r.code)))},min:e.property.min,max:e.property.max,binding:e.property.binding,path:e.property.path})]})}function Ha(e){let{name:o,defaultValue:t,onChange:r,outcome:a,binding:n,path:l}=e,f=e.min!==void 0&&e.min>0,i=e.elementDefinitionType.code;if(!i)return(0,Q.jsx)("div",{children:"Property type not specified "});let s={name:o,defaultValue:t,onChange:r,outcome:a,path:l};switch(i){case N.PropertyType.SystemString:case N.PropertyType.canonical:case N.PropertyType.string:case N.PropertyType.time:case N.PropertyType.uri:case N.PropertyType.url:return e.path==="Project.secret.value[x]"?(0,Q.jsx)(Qu,{id:o,name:o,"data-testid":o,defaultValue:t,required:f,onChange:u=>{e.onChange&&e.onChange(u.currentTarget.value)},error:Z(e.outcome,o)}):(0,Q.jsx)(Co.TextInput,{id:o,name:o,"data-testid":o,defaultValue:t,required:f,onChange:u=>{r&&r(u.currentTarget.value)},error:Z(a,o)});case N.PropertyType.date:return(0,Q.jsx)(Co.TextInput,{type:"date",id:o,name:o,"data-testid":o,defaultValue:t,required:f,onChange:u=>{r&&r(u.currentTarget.value)},error:Z(a,o)});case N.PropertyType.dateTime:case N.PropertyType.instant:return(0,Q.jsx)(vo,{name:o,defaultValue:t,onChange:r,outcome:a});case N.PropertyType.decimal:case N.PropertyType.integer:case N.PropertyType.positiveInt:case N.PropertyType.unsignedInt:return(0,Q.jsx)(Co.TextInput,{type:"number",step:i===N.PropertyType.decimal?"any":"1",id:o,name:o,"data-testid":o,defaultValue:t,required:f,onChange:u=>{r&&r(u.currentTarget.valueAsNumber)}});case N.PropertyType.code:return(0,Q.jsx)(va,{...s,binding:n?.valueSet});case N.PropertyType.boolean:return(0,Q.jsx)(Co.Checkbox,{id:o,name:o,"data-testid":o,defaultChecked:!!t,onChange:u=>{r&&r(u.currentTarget.checked)}});case N.PropertyType.base64Binary:case N.PropertyType.markdown:return(0,Q.jsx)(Co.Textarea,{id:o,spellCheck:i!==N.PropertyType.base64Binary,name:o,"data-testid":o,defaultValue:t,required:f,onChange:u=>{r&&r(u.currentTarget.value)}});case N.PropertyType.Address:return(0,Q.jsx)(_l,{...s});case N.PropertyType.Annotation:return(0,Q.jsx)(Kl,{...s});case N.PropertyType.Attachment:return(0,Q.jsx)(Sa,{...s});case N.PropertyType.CodeableConcept:return(0,Q.jsx)(er,{binding:n?.valueSet,...s});case N.PropertyType.Coding:return(0,Q.jsx)(Da,{binding:n?.valueSet,...s});case N.PropertyType.ContactDetail:return(0,Q.jsx)(Kf,{...s});case N.PropertyType.ContactPoint:return(0,Q.jsx)(Ba,{...s});case N.PropertyType.Extension:return(0,Q.jsx)(Tu,{...s,propertyType:e.elementDefinitionType});case N.PropertyType.HumanName:return(0,Q.jsx)(es,{...s});case N.PropertyType.Identifier:return(0,Q.jsx)(os,{...s});case N.PropertyType.Money:return(0,Q.jsx)(ts,{...s});case N.PropertyType.Period:return(0,Q.jsx)(Au,{...s});case N.PropertyType.Duration:case N.PropertyType.Quantity:return(0,Q.jsx)(ao,{...s});case N.PropertyType.Range:return(0,Q.jsx)(Lr,{...s});case N.PropertyType.Ratio:return(0,Q.jsx)(Lu,{...s});case N.PropertyType.Reference:return(0,Q.jsx)(fr,{...s,targetTypes:Ap(e.elementDefinitionType)});case N.PropertyType.Timing:return(0,Q.jsx)(ns,{...s});case N.PropertyType.Dosage:case N.PropertyType.UsageContext:default:return(0,Q.jsx)(ar,{typeName:i,defaultValue:t,onChange:r,outcome:a})}}var Bp=[`${N.HTTP_HL7_ORG}/fhir/StructureDefinition/`,"https://medplum.com/fhir/StructureDefinition/"];function Ap(e){return e?.targetProfile?.map(o=>{let t=Bp.find(r=>o.startsWith(r));return t?o.slice(t.length):o})}var qa=require("react/jsx-runtime"),ls=new Set(["extension","modifierExtension"]),Mp=new Set(["id",...En].filter(e=>!ls.has(e)));function Yn(e){let{elements:o}=e,[t,r]=(0,el.useState)(e.defaultValue??{}),a=(0,el.useMemo)(()=>{let l=Object.create(null);for(let[f,i]of Object.entries(o))i.fixed&&(l[f]=i);return l},[o]);function n(l){for(let[f,i]of Object.entries(a))Mr(l,f,f,i,i.fixed.value);r(l),e.onChange&&e.onChange(l)}return(0,qa.jsx)($u.Stack,{style:{flexGrow:1},"data-testid":e.testId,children:Object.entries(o).map(([l,f])=>{if(!f.type||f.max===0||l==="url"&&f.fixed||ls.has(l)&&!(0,Ga.isPopulated)(f.slicing?.slices))return null;if(Mp.has(l))return null;if(Ln.includes(l)&&f.path.split(".").length===2||l.includes("."))return null;let[i,s]=cu(t,l,f),u=f.min!==void 0&&f.min>0,c=(0,qa.jsx)(rt,{property:f,name:l,defaultValue:i,defaultPropertyType:s,onChange:(d,m)=>{n(Mr({...t},l,m??l,f,d))},arrayElement:void 0,outcome:e.outcome},l);return e.type==="Extension"||ls.has(l)?c:f.type.length===1&&f.type[0].code==="boolean"?(0,qa.jsx)(Pa,{title:(0,Ga.getPathDisplayName)(l),description:f.description,htmlFor:l,fhirPath:f.path,withAsterisk:u,children:c},l):(0,qa.jsx)(Je,{title:(0,Ga.getPathDisplayName)(l),description:f.description,withAsterisk:u,htmlFor:l,outcome:e.outcome,fhirPath:f.path,children:c},l)})})}var Ua=require("react/jsx-runtime");function ar(e){let{typeName:o}=e,[t,r]=(0,ir.useState)(e.defaultValue??{}),a=(0,ir.useContext)(ko),n=e.profileUrl??a.profileUrl,l=(0,ir.useMemo)(()=>(0,_u.tryGetDataType)(o,n),[o,n]),f=(0,ir.useMemo)(()=>mu(l,n),[l,n]);if(!l)return(0,Ua.jsxs)("div",{children:[o,"\xA0not implemented"]});function i(s){r(s),e.onChange&&e.onChange(s)}return(0,Ua.jsx)(ko.Provider,{value:f,children:(0,Ua.jsx)(Yn,{type:l.type,elements:l.elements,defaultValue:t,onChange:i,outcome:e.outcome})})}var at=require("@mantine/core"),tl=require("react");function Ku(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function ol(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var Ce=require("react/jsx-runtime"),Fp=(0,at.createStyles)(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function fs(e){let{classes:o}=Fp(),{onChangeMonth:t,onClick:r}=e,[a,n]=(0,tl.useState)(ol);function l(i){n(s=>{let u=new Date(s.getTime());return u.setMonth(s.getMonth()+i),t(u),u})}let f=(0,tl.useMemo)(()=>wp(a,e.slots),[a,e.slots]);return(0,Ce.jsxs)("div",{children:[(0,Ce.jsxs)(at.Group,{position:"apart",spacing:"xs",grow:!0,noWrap:!0,children:[(0,Ce.jsx)("p",{style:{flex:1},children:Ku(a)}),(0,Ce.jsxs)(at.Group,{position:"right",spacing:"xs",children:[(0,Ce.jsx)(at.Button,{variant:"outline","aria-label":"Previous month",onClick:()=>l(-1),children:"<"}),(0,Ce.jsx)(at.Button,{variant:"outline","aria-label":"Next month",onClick:()=>l(1),children:">"})]})]}),(0,Ce.jsxs)("table",{className:o.table,children:[(0,Ce.jsx)("thead",{children:(0,Ce.jsxs)("tr",{children:[(0,Ce.jsx)("th",{children:"SUN"}),(0,Ce.jsx)("th",{children:"MON"}),(0,Ce.jsx)("th",{children:"TUE"}),(0,Ce.jsx)("th",{children:"WED"}),(0,Ce.jsx)("th",{children:"THU"}),(0,Ce.jsx)("th",{children:"FRI"}),(0,Ce.jsx)("th",{children:"SAT"})]})}),(0,Ce.jsx)("tbody",{children:f.map((i,s)=>(0,Ce.jsx)("tr",{children:i.map((u,c)=>(0,Ce.jsx)("td",{children:u&&(0,Ce.jsx)(at.Button,{disabled:!u.available,onClick:()=>r(u.date),children:u.date.getDate()})},"day-"+c))},"week-"+s))})]})]})}function wp(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:Op(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function Op(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}var rl=require("@mantine/core"),Zu=require("react/jsx-runtime"),Ep=(0,rl.createStyles)(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function nt(e){let{children:o,...t}=e,{classes:r}=Ep();return(0,Zu.jsx)(rl.Container,{className:r.root,...t,children:o})}var me=require("@mantine/core"),cr=require("@mantine/notifications"),ut=require("@medplum/core");var lo=require("react");var te=require("@mantine/core"),bo=require("@medplum/core");var al=require("react");var qr=require("@mantine/core"),ss=require("react/jsx-runtime"),Lp=(0,qr.createStyles)(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function is({value:e}){let{classes:o}=Lp();return e?(0,ss.jsx)(qr.Stack,{justify:"flex-start",spacing:"xs",children:e.map(t=>t.text&&(0,ss.jsx)(qr.Blockquote,{classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null,children:t.text},`note-${t.text}`))}):null}var ec=require("@mantine/core");var Yu=require("@mantine/core"),Gr=require("@medplum/core");var ju=require("react");var us=require("react/jsx-runtime");function Do(e){let{value:o,link:t,...r}=e,[a,n]=(0,ju.useState)(),l=oe(o,n),f;if(a&&!(0,Gr.isOk)(a))f=`[${(0,Gr.normalizeErrorString)(a)}]`;else if(l)f=(0,Gr.getDisplayString)(l);else return null;return t?(0,us.jsx)(Ve,{to:o,...r,children:f}):(0,us.jsx)(Yu.Text,{component:"span",...r,children:f})}var Qa=require("react/jsx-runtime");function lt(e){return(0,Qa.jsxs)(ec.Group,{spacing:"xs",children:[(0,Qa.jsx)(He,{size:24,radius:12,value:e.value,link:e.link}),(0,Qa.jsx)(Do,{value:e.value,link:e.link})]})}var oc=require("@mantine/core"),tc=require("react/jsx-runtime"),Np={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function za(e){return(0,tc.jsx)(oc.Badge,{color:Np[e.status],children:e.status})}var y=require("react/jsx-runtime"),rc=(0,te.createStyles)(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));nl.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function nl(e){let o=C(),t=oe(e.value),[r,a]=(0,al.useState)();if((0,al.useEffect)(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(l=>o.readReference(l))).then(l=>l.filter(f=>f.status==="fulfilled").map(f=>f.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(l=>l.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let l=t.presentedForm[0];l.contentType?.startsWith("text/plain")&&l.data&&n.push({text:window.atob(l.data)})}return(0,y.jsxs)(te.Stack,{children:[(0,y.jsx)(te.Title,{children:"Diagnostic Report"}),(0,y.jsx)(Vp,{value:t}),r&&!e.hideSpecimenInfo&&Hp(r),t.result&&(0,y.jsx)(ac,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&(0,y.jsx)(is,{value:n})]})}function Vp({value:e}){return(0,y.jsxs)(te.Group,{mt:"md",spacing:30,children:[e.subject&&(0,y.jsxs)("div",{children:[(0,y.jsx)(te.Text,{size:"xs",transform:"uppercase",color:"dimmed",children:"Subject"}),(0,y.jsx)(te.Text,{children:(0,y.jsx)(lt,{value:e.subject,link:!0})})]}),e.resultsInterpreter?.map(o=>(0,y.jsxs)("div",{children:[(0,y.jsx)(te.Text,{size:"xs",transform:"uppercase",color:"dimmed",children:"Interpreter"}),(0,y.jsx)(te.Text,{children:(0,y.jsx)(lt,{value:o,link:!0})})]},o.reference)),e.performer?.map(o=>(0,y.jsxs)("div",{children:[(0,y.jsx)(te.Text,{size:"xs",transform:"uppercase",color:"dimmed",children:"Performer"}),(0,y.jsx)(te.Text,{children:(0,y.jsx)(lt,{value:o,link:!0})})]},o.reference)),e.issued&&(0,y.jsxs)("div",{children:[(0,y.jsx)(te.Text,{size:"xs",transform:"uppercase",color:"dimmed",children:"Issued"}),(0,y.jsx)(te.Text,{children:(0,bo.formatDateTime)(e.issued)})]}),e.status&&(0,y.jsxs)("div",{children:[(0,y.jsx)(te.Text,{size:"xs",transform:"uppercase",color:"dimmed",children:"Status"}),(0,y.jsx)(te.Text,{children:(0,bo.capitalize)(e.status)})]})]})}function Hp(e){return(0,y.jsxs)(te.Stack,{spacing:"xs",children:[(0,y.jsx)(te.Title,{order:2,size:"h6",children:"Specimens"}),(0,y.jsx)(te.List,{type:"ordered",children:e?.map(o=>(0,y.jsx)(te.List.Item,{ml:"sm",children:(0,y.jsxs)(te.Group,{spacing:20,children:[(0,y.jsxs)(te.Group,{spacing:5,children:[(0,y.jsx)(te.Text,{fw:500,children:"Collected:"})," ",(0,bo.formatDateTime)(o.collection?.collectedDateTime)]}),(0,y.jsxs)(te.Group,{spacing:5,children:[(0,y.jsx)(te.Text,{fw:500,children:"Received:"})," ",(0,bo.formatDateTime)(o.receivedTime)]})]})},`specimen-${o.id}`))})]})}function ac(e){let{classes:o}=rc();return(0,y.jsxs)("table",{className:o.table,children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{children:"Test"}),(0,y.jsx)("th",{children:"Value"}),(0,y.jsx)("th",{children:"Reference Range"}),(0,y.jsx)("th",{children:"Interpretation"}),(0,y.jsx)("th",{children:"Category"}),(0,y.jsx)("th",{children:"Performer"}),(0,y.jsx)("th",{children:"Status"})]})}),(0,y.jsx)("tbody",{children:(0,y.jsx)(nc,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})})]})}function nc(e){return(0,y.jsx)(y.Fragment,{children:e.value?.map(o=>(0,y.jsx)(qp,{value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes},`obs-${(0,bo.isReference)(o)?o.reference:o.id}`))})}function qp(e){let{classes:o,cx:t}=rc(),r=oe(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Qp(r);return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)("tr",{className:t({[o.criticalRow]:n}),children:[(0,y.jsx)("td",{rowSpan:a?2:1,children:(0,y.jsx)(Ve,{to:r,children:(0,y.jsx)(_e,{value:r.code})})}),(0,y.jsx)("td",{children:(0,y.jsx)(Gp,{value:r})}),(0,y.jsx)("td",{children:(0,y.jsx)(Up,{value:r.referenceRange})}),(0,y.jsx)("td",{children:r.interpretation&&r.interpretation.length>0&&(0,y.jsx)(_e,{value:r.interpretation[0]})}),(0,y.jsx)("td",{children:r.category&&r.category.length>0&&(0,y.jsx)(y.Fragment,{children:r.category.map(l=>(0,y.jsx)("div",{children:(0,y.jsx)(_e,{value:l})},`category-${(0,bo.formatCodeableConcept)(l)}`))})}),(0,y.jsx)("td",{children:r.performer?.map(l=>(0,y.jsx)(Pt,{value:l},l.reference))}),(0,y.jsx)("td",{children:r.status&&(0,y.jsx)(za,{status:r.status})})]}),r.hasMember&&(0,y.jsx)(nc,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&(0,y.jsx)("tr",{children:(0,y.jsx)("td",{colSpan:6,children:(0,y.jsx)(is,{value:r.note})})})]})}function Gp(e){let o=e.value;return(0,y.jsx)(y.Fragment,{children:(0,bo.formatObservationValue)(o)})}function Up(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?(0,y.jsx)(y.Fragment,{children:o.text}):(0,y.jsx)(ba,{value:o}):null}function Qp(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}var Ur=require("@mantine/core"),lc=require("react/jsx-runtime"),zp=(0,Ur.createStyles)((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Wp={shadow:"xs",radius:"md",withBorder:!0};function ur(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...l}=(0,Ur.useComponentDefaultProps)("Panel",Wp,e),{classes:f,cx:i}=zp({width:r,fill:a},{name:"Panel",unstyled:n});return(0,lc.jsx)(Ur.Paper,{className:i(f.paper,o),...l,children:t})}var bc=require("@mantine/core"),Qo=require("@medplum/core");var sl=require("react"),Rc=Ql(Sc(),1);var Ke=require("react/jsx-runtime"),fx=(0,bc.createStyles)(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],fontFamily:"monospace",textDecoration:"line-through",whiteSpace:"pre-wrap"},added:{color:e.colors.green[7],fontFamily:"monospace",whiteSpace:"pre-wrap"}}));function Pc(e){let{classes:o}=fx(),t=C(),[r,a]=(0,sl.useState)(!1);if((0,sl.useEffect)(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=(0,Rc.createPatch)(e.original,e.revised),l=[(0,Qo.toTypedValue)(e.original)],f=[(0,Qo.toTypedValue)(e.revised)];return(0,Ke.jsxs)("table",{className:o.root,children:[(0,Ke.jsx)("thead",{children:(0,Ke.jsxs)("tr",{children:[(0,Ke.jsx)("th",{}),(0,Ke.jsx)("th",{children:"Before"}),(0,Ke.jsx)("th",{children:"After"})]})}),(0,Ke.jsx)("tbody",{children:n.map(i=>{if(i.path.startsWith("/meta"))return null;let s=i.path,u=sx(s),d=(0,Qo.getSearchParameterDetails)(e.original.resourceType,{resourceType:"SearchParameter",base:[e.original.resourceType],code:e.original.resourceType+"."+u,expression:e.original.resourceType+"."+u})?.elementDefinitions?.[0],m=!!d?.isArray,p=i.op==="add"?void 0:(0,Qo.evalFhirPathTyped)(u,l)?.[0],x=i.op==="remove"?void 0:(0,Qo.evalFhirPathTyped)(u,f)?.[0];return(0,Ke.jsxs)("tr",{children:[(0,Ke.jsxs)("td",{children:[(0,Qo.capitalize)(i.op)," ",u]}),(0,Ke.jsx)("td",{className:o.removed,children:p&&(0,Ke.jsx)(Ue,{property:d,propertyType:p.type,value:Cc(p.value,m),ignoreMissingValues:!0})}),(0,Ke.jsx)("td",{className:o.added,children:x&&(0,Ke.jsx)(Ue,{property:d,propertyType:x.type,value:Cc(x.value,m),ignoreMissingValues:!0})})]},`op-${i.op}-${i.path}`)})})]})}function sx(e){let o=e.split("/").filter(Boolean),t="";for(let r=0;r<o.length;r++){let a=o[r];a==="-"?t+=".last()":/^\d+$/.test(a)?t+=`[${a}]`:(r>0&&(t+="."),t+=a)}return t}function Cc(e,o){return Array.isArray(e)&&!o?e[0]:!Array.isArray(e)&&o?[e]:e}var il=require("react");var Tc=require("react/jsx-runtime");function ul(e){let o=C(),t=oe(e.value),[r,a]=(0,il.useState)(!1);return(0,il.useEffect)(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:(0,Tc.jsx)(Br,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}var Bo=require("@mantine/core"),cl=require("@medplum/core");var be=require("react/jsx-runtime");function Cs(e){return(0,be.jsx)(nt,{children:e.children})}function it(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,l=t??o.meta?.author,f=e.dateTime??o.meta?.lastUpdated;return(0,be.jsxs)(ur,{"data-testid":"timeline-item",fill:!0,...n,children:[(0,be.jsxs)(Bo.Group,{position:"apart",spacing:8,mx:"xs",my:"sm",children:[(0,be.jsx)(He,{value:l,link:!0,size:"md"}),(0,be.jsxs)("div",{style:{flex:1},children:[(0,be.jsx)(Bo.Text,{size:"sm",children:(0,be.jsx)(Do,{color:"dark",weight:500,value:l,link:!0})}),(0,be.jsxs)(Bo.Text,{size:"xs",children:[(0,be.jsx)(Ve,{color:"dimmed",to:e.resource,children:(0,cl.formatDateTime)(f)}),(0,be.jsx)(Bo.Text,{component:"span",color:"dimmed",mx:8,children:"\xB7"}),(0,be.jsx)(Ve,{color:"dimmed",to:e.resource,children:e.resource.resourceType})]})]}),a&&(0,be.jsxs)(Bo.Menu,{position:"bottom-end",shadow:"md",width:200,children:[(0,be.jsx)(Bo.Menu.Target,{children:(0,be.jsx)(Bo.ActionIcon,{radius:"xl","aria-label":`Actions for ${(0,cl.getReferenceString)(e.resource)}`,children:(0,be.jsx)(cf,{})})}),a]})]}),(0,be.jsxs)($t,{children:[r&&(0,be.jsx)("div",{style:{padding:"0 16px 16px 16px"},children:e.children}),!r&&(0,be.jsx)(be.Fragment,{children:e.children})]})]})}function bs(e,o){e.sort((t,r)=>{let a=kc(t,o),n=kc(r,o);return a>n?1:a<n?-1:Dc(t,o)-Dc(r,o)})}function kc(e,o){if(!Bc(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function Dc(e,o){if(!Bc(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function Bc(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var A=require("react/jsx-runtime"),ix=(0,me.createStyles)(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function ct(e){let o=C(),t=Ko(),r=o.getProfile(),a=(0,lo.useRef)(null),n=oe(e.value),[l,f]=(0,lo.useState)(),[i,s]=(0,lo.useState)([]),u=e.loadTimelineResources,c=(0,lo.useRef)(i);c.current=i;let d=(0,lo.useCallback)(P=>{bs(P,n),P.reverse(),s(P)},[n]),m=(0,lo.useCallback)(P=>{let G=[];for(let vt of P){if(vt.status!=="fulfilled")continue;let k=vt.value;if(k.type==="history"&&f(k),k.entry)for(let K of k.entry)G.push(K.resource)}d(G)},[d]),p=(0,lo.useCallback)(P=>d([...c.current,P]),[d]),x=(0,lo.useCallback)(()=>{let P,G;"resourceType"in e.value?(P=e.value.resourceType,G=e.value.id):[P,G]=e.value.reference?.split("/"),u(o,P,G).then(m).catch(console.log)},[o,e.value,u,m]);(0,lo.useEffect)(()=>x(),[x]);function b(P){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,P)).then(G=>p(G)).catch(console.log)}function v(P){!n||!e.createMedia||o.createResource(e.createMedia(n,r,P)).then(G=>p(G)).then(()=>(0,cr.updateNotification)({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:(0,A.jsx)(ca,{size:16}),autoClose:2e3})).catch(G=>(0,cr.updateNotification)({id:"upload-notification",color:"red",title:"Upload error",message:(0,ut.normalizeErrorString)(G),icon:(0,A.jsx)(hn,{size:16}),autoClose:2e3}))}function S(P,G){return o.updateResource({...P,priority:G})}function R(P){S(P,"stat").then(x).catch(console.log)}function T(P){S(P,"routine").then(x).catch(console.log)}function h(P){t(`/${P.resourceType}/${P.id}`)}function E(P){t(`/${P.resourceType}/${P.id}/edit`)}function re(P){t(`/${P.resourceType}/${P.id}/delete`)}function Se(P){t(`/${P.resourceType}/${P.id}/_history/${P.meta?.versionId}`)}function na(){(0,cr.showNotification)({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function go(P){(0,cr.updateNotification)({id:"upload-notification",loading:!0,title:"Uploading...",message:Ix(P),autoClose:!1,withCloseButton:!1})}function ho(P){(0,cr.updateNotification)({id:"upload-notification",color:"red",title:"Upload error",message:(0,ut.normalizeErrorString)(P),icon:(0,A.jsx)(hn,{size:16}),autoClose:2e3})}return n?(0,A.jsxs)(Cs,{children:[e.createCommunication&&(0,A.jsx)(ur,{children:(0,A.jsx)(U,{testid:"timeline-form",onSubmit:P=>{b(P.text);let G=a.current;G&&(G.value="",G.focus())},children:(0,A.jsxs)(me.Group,{spacing:"xs",noWrap:!0,style:{width:"100%"},children:[(0,A.jsx)(He,{value:r}),(0,A.jsx)(me.TextInput,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),(0,A.jsx)(me.ActionIcon,{type:"submit",radius:"xl",color:"blue",variant:"filled",children:(0,A.jsx)(hf,{size:16})}),(0,A.jsx)(Zt,{onUpload:v,onUploadStart:na,onUploadProgress:go,onUploadError:ho,children:P=>(0,A.jsx)(me.ActionIcon,{...P,radius:"xl",color:"blue",variant:"filled",children:(0,A.jsx)(da,{size:16})})})]})})}),i.map(P=>{if(!P)return null;let G=`${P.resourceType}/${P.id}/${P.meta?.versionId}`;if(P.resourceType===n.resourceType&&P.id===n.id)return(0,A.jsx)(ux,{history:l,resource:P,onDetails:Se},G);switch(P.resourceType){case"AuditEvent":return(0,A.jsx)(px,{resource:P,onDetails:h},G);case"Communication":return(0,A.jsx)(dx,{resource:P,onPin:P.priority!=="stat"?R:void 0,onUnpin:P.priority==="stat"?T:void 0,onDetails:h,onEdit:E,onDelete:re},G);case"DiagnosticReport":return(0,A.jsx)(xx,{resource:P,onDetails:h,onEdit:E,onDelete:re},G);case"Media":return(0,A.jsx)(mx,{resource:P,onDetails:h,onEdit:E,onDelete:re},G);default:return(0,A.jsx)(it,{resource:P,padding:!0,children:(0,A.jsx)(ul,{value:P,ignoreMissingValues:!0})},G)}})]}):(0,A.jsx)(me.Center,{style:{width:"100%",height:"100%"},children:(0,A.jsx)(me.Loader,{})})}function Qr(e){return(0,A.jsxs)(me.Menu.Dropdown,{children:[(0,A.jsx)(me.Menu.Label,{children:"Resource"}),e.onPin&&(0,A.jsx)(me.Menu.Item,{icon:(0,A.jsx)(yf,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${(0,ut.getReferenceString)(e.resource)}`,children:"Pin"}),e.onUnpin&&(0,A.jsx)(me.Menu.Item,{icon:(0,A.jsx)(vf,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${(0,ut.getReferenceString)(e.resource)}`,children:"Unpin"}),e.onDetails&&(0,A.jsx)(me.Menu.Item,{icon:(0,A.jsx)(If,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${(0,ut.getReferenceString)(e.resource)}`,children:"Details"}),e.onEdit&&(0,A.jsx)(me.Menu.Item,{icon:(0,A.jsx)(df,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${(0,ut.getReferenceString)(e.resource)}`,children:"Edit"}),e.onDelete&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(me.Menu.Divider,{}),(0,A.jsx)(me.Menu.Label,{children:"Danger zone"}),(0,A.jsx)(me.Menu.Item,{color:"red",icon:(0,A.jsx)(Ia,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${(0,ut.getReferenceString)(e.resource)}`,children:"Delete"})]})]})}function ux(e){let o=cx(e.history,e.resource);return o?(0,A.jsx)(it,{resource:e.resource,padding:!0,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:(0,A.jsx)(Pc,{original:o,revised:e.resource})}):(0,A.jsxs)(it,{resource:e.resource,padding:!0,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:[(0,A.jsx)("h3",{children:"Created"}),(0,A.jsx)(ul,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0})]})}function cx(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function dx(e){let{classes:o}=ix(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return(0,A.jsx)(it,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:(0,A.jsx)("p",{children:e.resource.payload?.[0]?.contentString})})}function mx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return(0,A.jsx)(it,{resource:e.resource,padding:!!t,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:(0,A.jsx)(To,{value:e.resource.content})})}function px(e){return(0,A.jsx)(it,{resource:e.resource,padding:!0,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:(0,A.jsx)(me.ScrollArea,{children:(0,A.jsx)("pre",{children:e.resource.outcomeDesc})})})}function xx(e){return(0,A.jsx)(it,{resource:e.resource,padding:!0,popupMenuItems:(0,A.jsx)(Qr,{...e}),children:(0,A.jsx)(nl,{value:e.resource})})}function Ix(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Rs(e.loaded)} / ${Rs(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Rs(e.loaded)}`}function Rs(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}var Ac=require("react/jsx-runtime");function gx(e){return(0,Ac.jsx)(ct,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:100})])}})}var Ps=require("react/jsx-runtime");function Xa(e){let{children:o,...t}=e;return(0,Ps.jsx)(nt,{children:(0,Ps.jsx)(ur,{...t,children:o})})}var Ja=require("@medplum/core");var Mc=require("react/jsx-runtime");function hx(e){return(0,Mc.jsx)(ct,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:(0,Ja.createReference)(o),subject:o.subject,sender:(0,Ja.createReference)(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:(0,Ja.createReference)(o),subject:o.subject,operator:(0,Ja.createReference)(t),issued:new Date().toISOString(),content:r})})}var Kr=require("@mantine/core"),zc=require("@medplum/core");var io=require("react");var Fc=require("@medplum/core");var Oc=require("react/jsx-runtime");function wc(e){let o;try{o=(0,Fc.evalFhirPath)(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return(0,Oc.jsx)(Ue,{value:o[0]||"",propertyType:e.propertyType})}var z=require("@mantine/core"),_r=require("@medplum/core");var ro=require("react");var wt=require("@mantine/core"),Ft=require("react/jsx-runtime");function Lc(e){return(0,Ft.jsxs)(wt.Modal,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel,children:[(0,Ft.jsxs)(wt.Box,{display:"flex",sx:{justifyContent:"space-between"},children:[e.exportCsv&&(0,Ft.jsx)(Ec,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&(0,Ft.jsx)(Ec,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})]}),(0,Ft.jsx)(wt.Text,{sx:{marginTop:"10px",marginLeft:"2px"},children:"Limited to 1000 records"})]})}function Ec(e){return(0,Ft.jsx)(wt.Button,{onClick:()=>{e.exportLogic(),e.onCancel()},children:`Export as ${e.text}`})}var zo=require("@mantine/core"),Jr=require("@medplum/core"),dt=require("react");var F=require("@medplum/core");var zr=require("react/jsx-runtime"),yx={string:[F.Operator.EQUALS,F.Operator.NOT,F.Operator.CONTAINS,F.Operator.EXACT],fulltext:[F.Operator.EQUALS,F.Operator.NOT,F.Operator.CONTAINS,F.Operator.EXACT],token:[F.Operator.EQUALS,F.Operator.NOT],reference:[F.Operator.EQUALS,F.Operator.NOT],numeric:[F.Operator.EQUALS,F.Operator.NOT_EQUALS,F.Operator.GREATER_THAN,F.Operator.LESS_THAN,F.Operator.GREATER_THAN_OR_EQUALS,F.Operator.LESS_THAN_OR_EQUALS],quantity:[F.Operator.EQUALS,F.Operator.NOT_EQUALS,F.Operator.GREATER_THAN,F.Operator.LESS_THAN,F.Operator.GREATER_THAN_OR_EQUALS,F.Operator.LESS_THAN_OR_EQUALS],date:[F.Operator.EQUALS,F.Operator.NOT_EQUALS,F.Operator.GREATER_THAN,F.Operator.LESS_THAN,F.Operator.GREATER_THAN_OR_EQUALS,F.Operator.LESS_THAN_OR_EQUALS,F.Operator.STARTS_AFTER,F.Operator.ENDS_BEFORE,F.Operator.APPROXIMATELY],datetime:[F.Operator.EQUALS,F.Operator.NOT_EQUALS,F.Operator.GREATER_THAN,F.Operator.LESS_THAN,F.Operator.GREATER_THAN_OR_EQUALS,F.Operator.LESS_THAN_OR_EQUALS,F.Operator.STARTS_AFTER,F.Operator.ENDS_BEFORE,F.Operator.APPROXIMATELY]},vx={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function Wr(e,o){return{...e,filters:o,offset:0,name:void 0}}function Sx(e){return Wr(e,[])}function $a(e,o){return Wr(e,(e.filters??[]).filter(t=>t.code!==o))}function dr(e,o,t,r,a){a&&(e=$a(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),Wr(e,n)}function Cx(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function Ts(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function ks(e,o){return As(e,o,-1)}function Ds(e,o){return As(e,o,0)}function Bs(e,o){return As(e,o,1)}function As(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),dl(e,o,r,a)}function Ms(e,o){return Os(e,o,-1)}function Fs(e,o){return Os(e,o,0)}function ws(e,o){return Os(e,o,1)}function Os(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),dl(e,o,r,a)}function Es(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),dl(e,o,t,new Date)}function dl(e,o,t,r){return e=$a(e,o),e=Nc(e,o,F.Operator.GREATER_THAN_OR_EQUALS,t),e=Nc(e,o,F.Operator.LESS_THAN_OR_EQUALS,r),e}function Nc(e,o,t,r){return dr(e,o,t,r.toISOString())}function ml(e,o,t=!0){return dr(e,o,F.Operator.MISSING,t.toString())}function Vc(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Ls(e,o){let t=e.count??F.DEFAULT_SEARCH_COUNT,r=(o-1)*t;return Vc(e,r)}function pl(e,o,t){return o===Ns(e)&&t!==void 0&&t===Vs(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function bx(e,o){let t=!1;return Ns(e)===o&&(t=!Vs(e)),pl(e,o,t)}function Ns(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Vs(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Hs(e){return yx[e.type]}function Xr(e){return vx[e]??""}function fo(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.toLowerCase()==="id"?"ID":o.split(/\s/).map(F.capitalize).join(" "))}function qs(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?(0,F.formatDateTime)(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Rx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Px(e,o.searchParams[0]):null}function Rx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Dt({type:e.resourceType,value:e},t);return r?(0,zr.jsx)(Ue,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Px(e,o){let t=(0,F.evalFhirPathTyped)(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:(0,zr.jsx)(zr.Fragment,{children:t.map((r,a)=>(0,zr.jsx)(Ue,{propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1},`${a}-${t.length}`))})}var Ot=require("react/jsx-runtime");function Gs(e){let o=(0,dt.useRef)(!1),[t,r]=(0,dt.useState)({search:JSON.parse((0,Jr.stringify)(e.search))}),[a,n]=(0,dt.useState)(!1);(0,dt.useEffect)(()=>{r({search:e.search})},[e.search]);let l=(0,dt.useMemo)(()=>{if(!e.visible)return[];let i=e.search.resourceType,s=(0,Jr.getDataType)(i),u=(0,Jr.getSearchParameters)(i);return Tx(s,u).sort((c,d)=>c.localeCompare(d)).map(c=>({value:c,label:fo(c)}))},[e.visible,e.search.resourceType]);if(!e.visible)return null;function f(i){r({search:{...t.search,fields:i}})}return(0,Ot.jsx)(zo.Modal,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>{e.onCancel()},size:"auto",withOverlay:!0,closeOnClickOutside:!1,overlayProps:{onMouseDownCapture:()=>{o.current=a},onClick:()=>{o.current||e.onCancel(),o.current=!1},children:(0,Ot.jsx)("div",{"data-testid":"overlay-child"})},children:(0,Ot.jsxs)(zo.Stack,{children:[(0,Ot.jsx)(zo.MultiSelect,{withinPortal:!0,style:{width:550},placeholder:"Select fields to display",data:l,value:t.search.fields??[],onChange:f,onDropdownOpen:()=>n(!0),onDropdownClose:()=>n(!1),maxDropdownHeight:"250px",dropdownPosition:"bottom",clearButtonProps:{"aria-label":"Clear selection"},clearable:!0,searchable:!0}),(0,Ot.jsx)(zo.Group,{position:"right",children:(0,Ot.jsx)(zo.Button,{onClick:()=>e.onOk(t.search),children:"OK"})})]})})}function Tx(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(fo(n));if(o)for(let n of Object.keys(o)){let l=fo(n);!r.has(n)&&!a.has(l)&&(t.push(n),r.add(n),a.add(l))}return t}var so=require("@mantine/core"),_a=require("@medplum/core"),pt=require("react");var Ao=require("@medplum/core");var mr=require("react/jsx-runtime");function xl(e){let{resourceType:o,filter:t}=e,r=Ao.globalSchema.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Ao.Operator.EQUALS||t.operator===Ao.Operator.NOT_EQUALS))return(0,mr.jsx)(Do,{value:{reference:t.value}});let a=(0,Ao.getSearchParameterDetails)(o,r);if(t.code==="_lastUpdated"||a.type===Ao.SearchParameterType.DATETIME)return(0,mr.jsx)(mr.Fragment,{children:(0,Ao.formatDateTime)(t.value)})}return(0,mr.jsx)(mr.Fragment,{children:t.value})}var $r=require("@mantine/core"),mt=require("@medplum/core");var Et=require("react/jsx-runtime");function Il(e){let o=(0,mt.getSearchParameterDetails)(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case mt.SearchParameterType.REFERENCE:return(0,Et.jsx)(fr,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case mt.SearchParameterType.BOOLEAN:return(0,Et.jsx)($r.Checkbox,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case mt.SearchParameterType.DATE:return(0,Et.jsx)($r.TextInput,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case mt.SearchParameterType.DATETIME:return(0,Et.jsx)(vo,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case mt.SearchParameterType.NUMBER:return(0,Et.jsx)($r.TextInput,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case mt.SearchParameterType.QUANTITY:return(0,Et.jsx)(ao,{name:t,defaultValue:kx(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return(0,Et.jsx)($r.TextInput,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function kx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}var q=require("react/jsx-runtime");function Us(e){let[o,t]=(0,pt.useState)(JSON.parse((0,_a.stringify)(e.search))),[r,a]=(0,pt.useState)(-1),n=(0,pt.useRef)(o);n.current=o,(0,pt.useEffect)(()=>{t(JSON.parse((0,_a.stringify)(e.search)))},[e.search]);function l(u){t(dr(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let f=e.search.resourceType,i=(0,_a.getSearchParameters)(f)??{},s=o.filters||[];return(0,q.jsxs)(so.Modal,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel,children:[(0,q.jsx)("div",{children:(0,q.jsxs)("table",{children:[(0,q.jsxs)("colgroup",{children:[(0,q.jsx)("col",{style:{width:200}}),(0,q.jsx)("col",{style:{width:200}}),(0,q.jsx)("col",{style:{width:380}}),(0,q.jsx)("col",{style:{width:120}})]}),(0,q.jsx)("thead",{children:(0,q.jsxs)("tr",{children:[(0,q.jsx)("th",{children:"Field"}),(0,q.jsx)("th",{children:"Operation"}),(0,q.jsx)("th",{children:"Value"}),(0,q.jsx)("th",{children:"Actions"})]})}),(0,q.jsxs)("tbody",{children:[s.map((u,c)=>c===r?(0,q.jsx)(Hc,{resourceType:f,searchParams:i,defaultValue:u,okText:"Save",onOk:d=>{let m=[...s];m[c]=d,t(Wr(n.current,m)),a(-1)},onCancel:()=>a(-1)},`filter-${u.code}-${u.operator}-${u.value}-input`):(0,q.jsx)(Dx,{resourceType:f,searchParams:i,filter:u,onEdit:()=>a(c),onDelete:()=>t(Ts(n.current,c))},`filter-${u.code}-${u.operator}-${u.value}-display`)),(0,q.jsx)(Hc,{resourceType:f,searchParams:i,okText:"Add",onOk:l})]})]})}),(0,q.jsx)(so.Group,{position:"right",mt:"xl",children:(0,q.jsx)(so.Button,{onClick:()=>e.onOk(n.current),children:"OK"})})]})}function Dx(e){let{filter:o}=e;return(0,q.jsxs)("tr",{children:[(0,q.jsx)("td",{children:fo(o.code)}),(0,q.jsx)("td",{children:Xr(o.operator)}),(0,q.jsx)("td",{children:(0,q.jsx)(xl,{resourceType:e.resourceType,filter:o})}),(0,q.jsxs)("td",{children:[(0,q.jsx)(so.Button,{compact:!0,variant:"outline",onClick:e.onEdit,children:"Edit"}),(0,q.jsx)(so.Button,{compact:!0,variant:"outline",onClick:e.onDelete,children:"Delete"})]})]})}function Hc(e){let[o,t]=(0,pt.useState)(e.defaultValue??{}),r=(0,pt.useRef)(o);r.current=o;function a(s){t({...r.current,code:s})}function n(s){t({...r.current,operator:s})}function l(s){t({...r.current,value:s})}let f=e.searchParams[o.code],i=f&&Hs(f);return(0,q.jsxs)("tr",{children:[(0,q.jsx)("td",{children:(0,q.jsx)(so.NativeSelect,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:s=>a(s.currentTarget.value),data:["",...Object.keys(e.searchParams).map(s=>({value:s,label:fo(s)}))]})}),(0,q.jsx)("td",{children:i&&(0,q.jsx)(so.NativeSelect,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:s=>n(s.currentTarget.value),data:["",...i.map(s=>({value:s,label:Xr(s)}))]})}),(0,q.jsx)("td",{children:f&&o.operator&&(0,q.jsx)(Il,{resourceType:e.resourceType,searchParam:f,defaultValue:o.value,onChange:l})}),(0,q.jsxs)("td",{children:[o.code&&o.operator&&(0,q.jsx)(so.Button,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})},children:e.okText}),e.onCancel&&(0,q.jsx)(so.Button,{compact:!0,variant:"outline",onClick:e.onCancel,children:"Cancel"})]})]})}var Lt=require("@mantine/core"),qc=require("react");var xt=require("react/jsx-runtime");function Gc(e){let[o,t]=(0,qc.useState)(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return(0,xt.jsx)(Lt.Modal,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel,children:(0,xt.jsx)(U,{onSubmit:r,children:(0,xt.jsxs)(Lt.Grid,{children:[(0,xt.jsx)(Lt.Grid.Col,{span:10,children:(0,xt.jsx)(Il,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})}),(0,xt.jsx)(Lt.Grid.Col,{span:2,children:(0,xt.jsx)(Lt.Button,{onClick:r,fullWidth:!0,children:"OK"})})]})})})}var O=require("@mantine/core"),qe=require("@medplum/core");var I=require("react/jsx-runtime");function Uc(e){if(!e.searchParams)return null;function o(n,l){a(pl(e.search,n.code,l))}function t(n){a($a(e.search,n.code))}function r(n,l){e.onPrompt(n,{code:n.code,operator:l,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?(0,I.jsx)(Bx,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):(0,I.jsx)(O.Menu.Dropdown,{children:e.searchParams.map(n=>(0,I.jsx)(O.Menu.Item,{children:fo(n.code)},n.code))})}function Bx(e){switch(e.searchParam.type){case"date":return(0,I.jsx)(Ax,{...e});case"number":case"quantity":return(0,I.jsx)(Mx,{...e});case"reference":return(0,I.jsx)(Fx,{...e});case"string":case"token":case"uri":return(0,I.jsx)(wx,{...e});default:return(0,I.jsxs)(I.Fragment,{children:["Unknown search param type: ",e.searchParam.type]})}}function Ax(e){let{searchParam:o}=e,t=o.code;return(0,I.jsxs)(O.Menu.Dropdown,{children:[(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(pa,{size:14}),onClick:()=>e.onSort(o,!1),children:"Sort Oldest to Newest"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(xa,{size:14}),onClick:()=>e.onSort(o,!0),children:"Sort Newest to Oldest"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Cr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Equals..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Sr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.NOT_EQUALS),children:"Does not equal..."}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(vn,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.ENDS_BEFORE),children:"Before..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(yn,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.STARTS_AFTER),children:"After..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(rf,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Between..."}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(Bs(e.search,t)),children:"Tomorrow"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(Ds(e.search,t)),children:"Today"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(ks(e.search,t)),children:"Yesterday"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(ws(e.search,t)),children:"Next Month"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(Fs(e.search,t)),children:"This Month"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(Ms(e.search,t)),children:"Last Month"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Yo,{size:14}),onClick:()=>e.onChange(Es(e.search,t)),children:"Year to date"}),(0,I.jsx)(gl,{...e})]})}function Mx(e){let{searchParam:o}=e;return(0,I.jsxs)(O.Menu.Dropdown,{children:[(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(pa,{size:14}),onClick:()=>e.onSort(o,!1),children:"Sort Smallest to Largest"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(xa,{size:14}),onClick:()=>e.onSort(o,!0),children:"Sort Largest to Smallest"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Cr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Equals..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Sr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.NOT_EQUALS),children:"Does not equal..."}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(yn,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.GREATER_THAN),children:"Greater than..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(br,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.GREATER_THAN_OR_EQUALS),children:"Greater than or equal to..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(vn,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.LESS_THAN),children:"Less than..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(br,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.LESS_THAN_OR_EQUALS),children:"Less than or equal to..."}),(0,I.jsx)(gl,{...e})]})}function Fx(e){let{searchParam:o}=e;return(0,I.jsxs)(O.Menu.Dropdown,{children:[(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Cr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Equals..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Sr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.NOT),children:"Does not equal..."}),(0,I.jsx)(gl,{...e})]})}function wx(e){let{searchParam:o}=e;return(0,I.jsxs)(O.Menu.Dropdown,{children:[(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(pa,{size:14}),onClick:()=>e.onSort(o,!1),children:"Sort A to Z"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(xa,{size:14}),onClick:()=>e.onSort(o,!0),children:"Sort Z to A"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Cr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Equals..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Sr,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.NOT),children:"Does not equal..."}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(nf,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.CONTAINS),children:"Contains..."}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(af,{size:14}),onClick:()=>e.onPrompt(o,qe.Operator.EQUALS),children:"Does not contain..."}),(0,I.jsx)(gl,{...e})]})}function gl(e){let{searchParam:o}=e,t=o.code;return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(of,{size:14}),onClick:()=>e.onChange(ml(e.search,t)),children:"Missing"}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(ef,{size:14}),onClick:()=>e.onChange(ml(e.search,t,!1)),children:"Not missing"}),(0,I.jsx)(O.Menu.Divider,{}),(0,I.jsx)(O.Menu.Item,{icon:(0,I.jsx)(Bf,{size:14}),onClick:()=>e.onClear(o),children:"Clear filters"})]})}var Nt=require("@medplum/core");function Qs(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Ox(o,r));return t}function Ox(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=(0,Nt.getElementDefinition)(e,o),r=(0,Nt.getSearchParameter)(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=(0,Nt.getSearchParameters)(e),n;if(a){let l=new RegExp(`${e}\\.${o.replaceAll("[x]","")}([^\\w-]|$)`);n=Object.values(a).filter(f=>!!f.expression&&l.test(f?.expression)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=(0,Nt.getSearchParameterDetails)(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var D=require("react/jsx-runtime"),hl=class extends Event{constructor(o){super("change"),this.definition=o}},yl=class extends Event{constructor(o){super("load"),this.response=o}},Vt=class extends Event{constructor(o,t){super("click"),this.resource=o,this.browserEvent=t}},Ex=(0,z.createStyles)(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function Qc(e){let{classes:o}=Ex(),t=C(),[r,a]=(0,ro.useState)(!1),[n,l]=(0,ro.useState)(),{search:f,onLoad:i}=e,[s,u]=(0,ro.useState)({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=(0,ro.useRef)(s);c.current=s;let d=f.total??"accurate",m=(0,ro.useCallback)(k=>{l(void 0),t.search(f.resourceType,(0,_r.formatSearchQuery)({...f,total:d,fields:void 0}),k).then(K=>{u({...c.current,searchResponse:K}),i&&i(new yl(K))}).catch(K=>{u({...c.current,searchResponse:void 0}),l(K)})},[t,f,d,i]),p=(0,ro.useCallback)(()=>{u({...c.current,searchResponse:void 0}),m({cache:"reload"})},[m]);(0,ro.useEffect)(()=>{m()},[m]);function x(k,K){k.stopPropagation();let Ge=k.target.checked,Xe={...c.current.selected};Ge?Xe[K]=!0:delete Xe[K],u({...c.current,selected:Xe})}function b(k){k.stopPropagation();let Pe=k.target.checked,Ge={},Xe=c.current.searchResponse;Pe&&Xe?.entry&&Xe.entry.forEach(la=>{la.resource?.id&&(Ge[la.resource.id]=!0)}),u({...c.current,selected:Ge})}function v(){let k=c.current;if(!k.searchResponse?.entry||k.searchResponse.entry.length===0)return!1;for(let K of k.searchResponse.entry)if(K.resource?.id&&!k.selected[K.resource.id])return!1;return!0}function S(k){e.onChange&&e.onChange(new hl(k))}function R(k,K){if(Rn(k.target)||k.button===2)return;L(k);let Pe=k.button===1||k.ctrlKey||k.metaKey;!Pe&&e.onClick&&e.onClick(new Vt(K,k)),Pe&&e.onAuxClick&&e.onAuxClick(new Vt(K,k))}function T(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if((0,ro.useEffect)(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return(0,D.jsx)(z.Center,{style:{width:"100%",height:"100%"},children:(0,D.jsx)(z.Loader,{})});let h=e.checkboxesEnabled,E=Qs(f),re=f.resourceType,Se=s.searchResponse,go=Se?.entry?.map(k=>k.resource),ho="subtle",P="gray",G=16,vt=window.innerWidth<768;return(0,D.jsxs)("div",{className:o.root,"data-testid":"search-control",children:[!e.hideToolbar&&(0,D.jsxs)(z.Group,{position:"apart",mb:"xl",children:[(0,D.jsxs)(z.Group,{spacing:2,children:[(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(sf,{size:G}),onClick:()=>u({...c.current,fieldEditorVisible:!0}),children:"Fields"}),(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(pf,{size:G}),onClick:()=>u({...c.current,filterEditorVisible:!0}),children:"Filters"}),e.onNew&&(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(mf,{size:G}),onClick:e.onNew,children:"New..."}),!vt&&T()&&(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(kf,{size:G}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0}),children:"Export..."}),!vt&&e.onDelete&&(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(Ia,{size:G}),onClick:()=>e.onDelete(Object.keys(s.selected)),children:"Delete..."}),!vt&&e.onBulk&&(0,D.jsx)(z.Button,{compact:!0,variant:ho,color:P,leftIcon:(0,D.jsx)(tf,{size:G}),onClick:()=>e.onBulk(Object.keys(s.selected)),children:"Bulk..."})]}),(0,D.jsxs)(z.Group,{spacing:2,children:[Se&&(0,D.jsxs)(z.Text,{size:"xs",color:"dimmed",children:[qx(f,Se.total),"-",Gx(f,Se.total)," of"," ",`${d==="estimate"?"~":""}${Se.total?.toLocaleString()}`]}),(0,D.jsx)(z.ActionIcon,{title:"Refresh",onClick:p,children:(0,D.jsx)(Cf,{size:"1.125rem"})})]})]}),(0,D.jsxs)(z.Table,{className:o.table,children:[(0,D.jsxs)("thead",{children:[(0,D.jsxs)("tr",{children:[h&&(0,D.jsx)("th",{children:(0,D.jsx)("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:k=>b(k)})}),E.map(k=>(0,D.jsx)("th",{children:(0,D.jsxs)(z.Menu,{shadow:"md",width:240,position:"bottom-end",children:[(0,D.jsx)(z.Menu.Target,{children:(0,D.jsx)(z.UnstyledButton,{className:o.control,children:(0,D.jsxs)(z.Group,{position:"apart",noWrap:!0,children:[(0,D.jsx)(z.Text,{weight:500,size:"sm",children:fo(k.name)}),(0,D.jsx)(z.Center,{className:o.icon,children:(0,D.jsx)(Zl,{size:14,stroke:1.5})})]})})}),(0,D.jsx)(Uc,{search:e.search,searchParams:k.searchParams,onPrompt:(K,Pe)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:K,filterDialogFilter:Pe})},onChange:K=>{S(K)}})]})},k.name))]}),!e.hideFilters&&(0,D.jsxs)("tr",{children:[h&&(0,D.jsx)("th",{}),E.map(k=>(0,D.jsx)("th",{children:k.searchParams&&(0,D.jsx)(Nx,{resourceType:re,searchParams:k.searchParams,filters:e.search.filters})},k.name))]})]}),(0,D.jsx)("tbody",{children:go?.map(k=>k&&(0,D.jsxs)("tr",{className:o.tr,"data-testid":"search-control-row",onClick:K=>R(K,k),onAuxClick:K=>R(K,k),children:[h&&(0,D.jsx)("td",{children:(0,D.jsx)("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${k.id}`,checked:!!s.selected[k.id],onChange:K=>x(K,k.id)})}),E.map(K=>(0,D.jsx)("td",{children:qs(k,K)},K.name))]},k.id))})]}),go?.length===0&&(0,D.jsx)(nt,{children:(0,D.jsx)(z.Center,{style:{height:150},children:(0,D.jsx)(z.Text,{size:"xl",color:"dimmed",children:"No results"})})}),Se?.total!==void 0&&Se.total>0&&(0,D.jsx)(z.Center,{m:"md",p:"md",children:(0,D.jsx)(z.Pagination,{value:Vx(f),total:Hx(f,Se.total),onChange:k=>S(Ls(f,k)),getControlProps:k=>{switch(k){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})}),n&&(0,D.jsx)("div",{"data-testid":"search-error",children:(0,D.jsx)("pre",{style:{textAlign:"left"},children:JSON.stringify(n,void 0,2)})}),(0,D.jsx)(Gs,{search:e.search,visible:c.current.fieldEditorVisible,onOk:k=>{S(k),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),(0,D.jsx)(Us,{search:e.search,visible:c.current.filterEditorVisible,onOk:k=>{S(k),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),(0,D.jsx)(Lc,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),(0,D.jsx)(Gc,{visible:c.current.filterDialogVisible,title:s.filterDialogSearchParam?.code?fo(s.filterDialogSearchParam.code):"",resourceType:re,searchParam:s.filterDialogSearchParam,filter:s.filterDialogFilter,defaultValue:"",onOk:k=>{S(dr(e.search,k.code,k.operator,k.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}},s.filterDialogSearchParam?.code)]})}var Lx=(0,ro.memo)(Qc);function Nx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?(0,D.jsx)("span",{children:"no filters"}):(0,D.jsx)(D.Fragment,{children:o.map(t=>(0,D.jsxs)("div",{children:[Xr(t.operator),"\xA0",(0,D.jsx)(xl,{resourceType:e.resourceType,filter:t})]},`filter-${t.code}-${t.operator}-${t.value}`))})}function Vx(e){return Math.floor((e.offset??0)/(e.count??_r.DEFAULT_SEARCH_COUNT))+1}function Hx(e,o){let t=e.count??_r.DEFAULT_SEARCH_COUNT;return Math.ceil(o/t)}function qx(e,o){return Math.min(o,(e.offset??0)+1)}function Gx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??_r.DEFAULT_SEARCH_COUNT))}var we=require("react/jsx-runtime");function Wc(e){let o=C(),[t,r]=(0,io.useState)(!1),[a,n]=(0,io.useState)(),{query:l,fields:f}=e,[i,s]=(0,io.useState)(),[u,c]=(0,io.useState)({}),d=(0,io.useRef)();d.current=i;let m=(0,io.useRef)({});m.current=u,(0,io.useEffect)(()=>{n(void 0),o.graphql(l).then(s).catch(R=>n((0,zc.normalizeOperationOutcome)(R)))},[o,l]);function p(R,T){R.stopPropagation();let E=R.target.checked,re={...m.current};E?re[T]=!0:delete re[T],c(re)}function x(R){R.stopPropagation();let h=R.target.checked,E={},re=d.current?.data.ResourceList;h&&re&&re.forEach(Se=>{Se.id&&(E[Se.id]=!0)}),c(E)}function b(){let R=d.current?.data.ResourceList;if(!R||R.length===0)return!1;for(let T of R)if(T.id&&!m.current[T.id])return!1;return!0}function v(R,T){Rn(R.target)||(L(R),R.button!==1&&e.onClick&&e.onClick(new Vt(T,R)),R.button===1&&e.onAuxClick&&e.onAuxClick(new Vt(T,R)))}if((0,io.useEffect)(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return(0,we.jsx)(Kr.Loader,{});let S=e.checkboxesEnabled;return(0,we.jsxs)("div",{onContextMenu:R=>L(R),"data-testid":"search-control",children:[(0,we.jsxs)(Kr.Table,{children:[(0,we.jsx)("thead",{children:(0,we.jsxs)("tr",{children:[S&&(0,we.jsx)("th",{children:(0,we.jsx)("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:b(),onChange:R=>x(R)})}),f.map(R=>(0,we.jsx)("th",{children:R.name},R.name))]})}),(0,we.jsx)("tbody",{children:i?.data.ResourceList.map(R=>R&&(0,we.jsxs)("tr",{"data-testid":"search-control-row",onClick:T=>v(T,R),onAuxClick:T=>v(T,R),children:[S&&(0,we.jsx)("td",{children:(0,we.jsx)("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${R.id}`,checked:!!u[R.id],onChange:T=>p(T,R.id)})}),f.map(T=>(0,we.jsx)("td",{children:(0,we.jsx)(wc,{propertyType:T.propertyType,path:T.fhirPath,resource:R})},T.name))]},R.id))})]}),i?.data.ResourceList.length===0&&(0,we.jsx)("div",{"data-testid":"empty-search",children:"No results"}),a&&(0,we.jsx)("div",{"data-testid":"search-error",children:(0,we.jsx)("pre",{style:{textAlign:"left"},children:JSON.stringify(a,void 0,2)})}),e.onBulk&&(0,we.jsx)(Kr.Button,{onClick:()=>e.onBulk(Object.keys(m.current)),children:"Bulk..."})]})}var Ux=(0,io.memo)(Wc);var It=require("react/jsx-runtime");function gt(e){return(0,It.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size},children:[(0,It.jsx)("title",{children:"Medplum Logo"}),(0,It.jsx)("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),(0,It.jsx)("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),(0,It.jsx)("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),(0,It.jsx)("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),(0,It.jsx)("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"})]})}var vl=require("@mantine/core");var ce=require("@mantine/core"),zs=require("@medplum/core");var j=require("react/jsx-runtime");function Xc(e){let{group:o}=e;return(0,j.jsx)(ce.Paper,{withBorder:!0,radius:"md",p:"xs",display:"flex",sx:{alignItems:"center",justifyContent:"center"},children:(0,j.jsxs)(ce.Group,{children:[o.measureScore&&(0,j.jsx)(zx,{group:o}),!o.measureScore&&(0,j.jsx)(Qx,{group:o})]})})}function Jc(e){let{measure:o}=e;return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ce.Text,{fz:"md",fw:500,mb:8,children:o.title}),(0,j.jsx)(ce.Text,{fz:"xs",c:"dimmed",mb:8,children:o.subtitle})]})}function Qx(e){let{group:o}=e,t=o.population,r=t?.find(i=>(0,zs.formatCodeableConcept)(i.code)==="numerator"),a=t?.find(i=>(0,zs.formatCodeableConcept)(i.code)==="denominator"),n=r?.count,l=a?.count;if(l===0)return(0,j.jsxs)(ce.Box,{children:[(0,j.jsx)(ce.Title,{order:3,children:"Not Applicable"}),(0,j.jsx)(ce.Text,{children:`Denominator: ${l}`})]});if(n===void 0||l===void 0)return(0,j.jsxs)(ce.Box,{children:[(0,j.jsx)(ce.Title,{order:3,children:"Insufficient Data"}),(0,j.jsx)(ce.Text,{children:`Numerator: ${n}`}),(0,j.jsx)(ce.Text,{children:`Denominator: ${l}`})]});let f=n/l*100;return(0,j.jsx)(ce.RingProgress,{size:120,thickness:12,roundCaps:!0,sections:[{value:f,color:$c(f)}],label:(0,j.jsx)(ce.Flex,{justify:"center",children:(0,j.jsxs)(ce.Text,{fw:700,fz:18,children:[n," / ",l]})})})}function zx(e){let{group:o}=e,t=o.measureScore?.unit??o.measureScore?.code;return(0,j.jsx)(j.Fragment,{children:t==="%"?(0,j.jsx)(ce.RingProgress,{size:120,thickness:12,roundCaps:!0,sections:[{value:Wx(o),color:$c(o?.measureScore?.value??0)}],label:(0,j.jsx)(ce.Flex,{justify:"center",children:(0,j.jsx)(ce.Text,{fw:700,fz:18,children:(0,j.jsx)(Fe,{value:o.measureScore})})})}):(0,j.jsx)(ce.Flex,{h:120,align:"center",children:(0,j.jsx)(ce.Title,{order:3,children:(0,j.jsx)(Fe,{value:o.measureScore})})})})}function Wx(e){let o=e.measureScore?.value,t=e.measureScore?.unit;return o?o<=1&&t==="%"?o*100:o:0}function $c(e){return e<=33?"red":e<=67?"yellow":"green"}var Zr=require("react/jsx-runtime");function Xx(e){let o=oe(e.measureReport),[t]=Wl("Measure",{url:o?.measure});return o?(0,Zr.jsxs)(vl.Box,{children:[t&&(0,Zr.jsx)(Jc,{measure:t}),(0,Zr.jsx)(vl.SimpleGrid,{cols:3,breakpoints:[{maxWidth:"48rem",cols:2,spacing:"md"},{maxWidth:"36rem",cols:1,spacing:"sm"}],spacing:"md",children:o.group?.map((r,a)=>(0,Zr.jsx)(Xc,{group:r},r.id??a))})]}):null}var _c=require("@mantine/core"),Kc=require("@medplum/core");var Sl=require("react/jsx-runtime");function pr(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:(0,Sl.jsx)(_c.Alert,{icon:(0,Sl.jsx)(Xt,{size:16}),color:"red",children:o.map(t=>(0,Sl.jsx)("div",{"data-testid":"text-field-error",children:(0,Kc.operationOutcomeIssueToString)(t)},t.details?.text))})}var ae=require("@mantine/core"),jr=require("@medplum/core");var yt=require("react");var he=require("@mantine/core"),Zc=require("@mantine/hooks"),Ws=require("@medplum/core");var Ka=require("react");var ke=require("react/jsx-runtime");function Yc(e){let o=C(),{patient:t,encounter:r}=e,[a,n]=(0,Ka.useState)(e.allergies),[l,{open:f,close:i}]=(0,Zc.useDisclosure)(!1),[s,u]=(0,Ka.useState)(),c=(0,Ka.useCallback)(d=>{o.createResource({resourceType:"AllergyIntolerance",patient:(0,Ws.createReference)(t),encounter:r?(0,Ws.createReference)(r):void 0,code:s,onsetDateTime:d.onset?d.onset:void 0,reaction:d.reaction?[{manifestation:[{text:d.reaction}]}]:void 0}).then(m=>{n([...a,m]),i()}).catch(console.error)},[o,t,r,a,i,s]);return(0,ke.jsxs)(ke.Fragment,{children:[(0,ke.jsxs)(he.Group,{position:"apart",children:[(0,ke.jsx)(he.Text,{fz:"md",fw:700,children:"Allergies"}),(0,ke.jsx)(he.Anchor,{href:"#",onClick:d=>{L(d),f()},children:"+ Add"})]}),a.length>0?(0,ke.jsx)(he.Box,{children:a.map(d=>(0,ke.jsx)(he.Badge,{maw:"100%",children:(0,ke.jsx)(_e,{value:d.code})},d.id))}):(0,ke.jsx)(he.Text,{children:"(none)"}),(0,ke.jsx)(he.Modal,{opened:l,onClose:i,title:"Add Allergy",children:(0,ke.jsx)(U,{onSubmit:c,children:(0,ke.jsxs)(he.Stack,{children:[(0,ke.jsx)(er,{name:"allergy","data-autofocus":!0,binding:"http://hl7.org/fhir/us/core/ValueSet/us-core-allergy-substance",onChange:d=>u(d)}),(0,ke.jsx)(he.TextInput,{name:"reaction",label:"Reaction"}),(0,ke.jsx)(he.NativeSelect,{name:"status",label:"Status",data:["active"]}),(0,ke.jsx)(he.TextInput,{name:"onset",label:"Onset",type:"date"}),(0,ke.jsx)(he.Group,{position:"right",spacing:4,mt:"md",children:(0,ke.jsx)(he.Button,{type:"submit",children:"Save"})})]})})})]})}var Re=require("@mantine/core"),jc=require("@mantine/hooks"),Xs=require("@medplum/core");var Za=require("react");var De=require("react/jsx-runtime");function ed(e){let o=C(),[t,r]=(0,Za.useState)(e.medicationRequests),[a,{open:n,close:l}]=(0,jc.useDisclosure)(!1),[f,i]=(0,Za.useState)(),s=(0,Za.useCallback)(u=>{let c=u.status;o.createResource({resourceType:"MedicationRequest",status:c,intent:"order",encounter:e.encounter?(0,Xs.createReference)(e.encounter):void 0,medicationCodeableConcept:f,subject:(0,Xs.createReference)(e.patient)}).then(d=>{r([d,...t]),l()}).catch(console.error)},[o,e.patient,e.encounter,t,l,f]);return(0,De.jsxs)(De.Fragment,{children:[(0,De.jsxs)(Re.Group,{position:"apart",children:[(0,De.jsx)(Re.Text,{fz:"md",fw:700,children:"Medications"}),(0,De.jsx)(Re.Anchor,{href:"#",onClick:u=>{L(u),n()},children:"+ Add"})]}),t.length>0?(0,De.jsx)(Re.Box,{children:t.map(u=>(0,De.jsx)(Re.Badge,{mt:4,maw:"50%",color:u.status==="active"?"blue":"gray",children:(0,De.jsx)(_e,{value:u.medicationCodeableConcept})},u.id))}):(0,De.jsx)(Re.Text,{children:"(none)"}),(0,De.jsx)(Re.Modal,{opened:a,onClose:l,title:"Add Medication Request",children:(0,De.jsx)(U,{onSubmit:s,children:(0,De.jsxs)(Re.Stack,{h:275,children:[(0,De.jsx)(er,{name:"request","data-autofocus":!0,binding:"https://app.medplum.com/ValueSet/16d6f7b7-7eeb-4d0e-a83b-83be082aa10b",onChange:u=>i(u)}),(0,De.jsxs)(Re.Radio.Group,{mt:32,name:"status",label:"Request Status",required:!0,children:[(0,De.jsx)(Re.Radio,{value:"active",label:"active",my:"xs"},"active"),(0,De.jsx)(Re.Radio,{value:"stopped",label:"stopped",my:"xs"},"stopped")]}),(0,De.jsx)(Re.Group,{position:"right",spacing:4,mt:"md",children:(0,De.jsx)(Re.Button,{type:"submit",children:"Save"})})]})})})]})}var le=require("@mantine/core"),od=require("@mantine/hooks"),Js=require("@medplum/core");var Yr=require("react");var Ie=require("react/jsx-runtime");function td(e){let o=C(),{patient:t,encounter:r}=e,[a,n]=(0,Yr.useState)(e.problems),[l,{open:f,close:i}]=(0,od.useDisclosure)(!1),s=(0,Yr.useCallback)(u=>{o.createResource({resourceType:"Condition",subject:(0,Js.createReference)(t),encounter:r?(0,Js.createReference)(r):void 0,code:{coding:[{code:u.problem,display:u.problem}]},onsetDateTime:u.onset?u.onset:void 0}).then(c=>{n([...a,c]),i()}).catch(console.error)},[o,t,r,a,i]);return(0,Ie.jsxs)(Ie.Fragment,{children:[(0,Ie.jsxs)(le.Group,{position:"apart",children:[(0,Ie.jsx)(le.Text,{fz:"md",fw:700,children:"Problem List"}),(0,Ie.jsx)(le.Anchor,{href:"#",onClick:u=>{L(u),f()},children:"+ Add"})]}),a.length>0?(0,Ie.jsx)(le.Grid,{gutter:"xs",children:a.map(u=>(0,Ie.jsxs)(Yr.Fragment,{children:[(0,Ie.jsx)(le.Grid.Col,{span:2,children:u.onsetDateTime?.substring(0,4)}),(0,Ie.jsx)(le.Grid.Col,{span:10,children:(0,Ie.jsx)(le.Badge,{maw:"100%",children:(0,Ie.jsx)(_e,{value:u.code})},u.id)})]},u.id))}):(0,Ie.jsx)(le.Text,{children:"(none)"}),(0,Ie.jsx)(le.Modal,{opened:l,onClose:i,title:"Add Problem",children:(0,Ie.jsx)(U,{onSubmit:s,children:(0,Ie.jsxs)(le.Stack,{children:[(0,Ie.jsx)(le.TextInput,{name:"problem",label:"Problem","data-autofocus":!0,autoFocus:!0,required:!0}),(0,Ie.jsx)(le.TextInput,{name:"onset",label:"Dx Date",type:"date",required:!0}),(0,Ie.jsx)(le.NativeSelect,{name:"status",label:"Status",data:["active"]}),(0,Ie.jsx)(le.Textarea,{name:"notes",label:"Notes"}),(0,Ie.jsx)(le.Group,{position:"right",spacing:4,mt:"md",children:(0,Ie.jsx)(le.Button,{type:"submit",children:"Save"})})]})})})]})}var Be=require("@mantine/core"),ad=require("@mantine/hooks"),Wo=require("@medplum/core");var Cl=require("react");var Le=require("react/jsx-runtime"),rd={266919005:"Never smoked tobacco",266927001:"Tobacco smoking consumption unknown","428041000124106":"Occasional tobacco smoker","428061000124105":"Light tobacco smoker","428071000124103":"Heavy tobacco smoker",449868002:"Smokes tobacco daily",77176002:"Smoker",8517006:"Ex-smoker"};function nd(e){let o=C(),{patient:t,encounter:r}=e,[a,n]=(0,Cl.useState)(e.smokingStatus),[l,{open:f,close:i}]=(0,ad.useDisclosure)(!1),s=(0,Cl.useCallback)(u=>{o.createResource({resourceType:"Observation",meta:{profile:[Wo.HTTP_HL7_ORG+"/fhir/us/core/StructureDefinition/us-core-smokingstatus"]},status:"final",category:[{coding:[{system:"http://terminology.hl7.org/CodeSystem/observation-category",code:"social-history",display:"Social History"}],text:"Social History"}],code:{coding:[{system:Wo.LOINC,code:"72166-2",display:"Tobacco smoking status"}],text:"Tobacco smoking status"},subject:(0,Wo.createReference)(t),encounter:r?(0,Wo.createReference)(r):void 0,effectiveDateTime:new Date().toISOString(),valueCodeableConcept:{coding:[{system:Wo.SNOMED,version:Wo.SNOMED+"/731000124108",code:u.smokingStatus}],text:rd[u.smokingStatus]}}).then(c=>{n(c),i()}).catch(console.error)},[o,t,r,i]);return(0,Le.jsxs)(Le.Fragment,{children:[(0,Le.jsxs)(Be.Group,{position:"apart",children:[(0,Le.jsx)(Be.Text,{fz:"md",fw:700,children:"Smoking Status"}),(0,Le.jsx)(Be.Anchor,{href:"#",onClick:u=>{L(u),f()},children:"+ Edit"})]}),a?.valueCodeableConcept?(0,Le.jsx)(Be.Box,{children:(0,Le.jsx)(Be.Badge,{children:(0,Le.jsx)(_e,{value:a.valueCodeableConcept})})}):(0,Le.jsx)(Be.Text,{children:"(none)"}),(0,Le.jsx)(Be.Modal,{opened:l,onClose:i,title:"Set Smoking Status",children:(0,Le.jsx)(U,{onSubmit:s,children:(0,Le.jsxs)(Be.Stack,{children:[(0,Le.jsx)(Be.Radio.Group,{name:"smokingStatus",label:"Smoking Status",required:!0,children:Object.entries(rd).map(([u,c])=>(0,Le.jsx)(Be.Radio,{value:u,label:c,my:"xs"},u))}),(0,Le.jsx)(Be.Group,{position:"right",spacing:4,mt:"md",children:(0,Le.jsx)(Be.Button,{type:"submit",children:"Save"})})]})})})]})}var w=require("@mantine/core"),dd=require("@mantine/hooks");var Pl=require("react");var xr=require("@medplum/core");function ht(e,o){return e.find(r=>r.code?.coding?.[0].code===o)?.valueQuantity}function $s(e,o,t){return e.find(n=>n.code?.coding?.[0].code===o)?.component?.find(n=>n.code?.coding?.[0].code===t)?.valueQuantity}function ld(e,o,t,r,a){if(id(a.value))return{...sd(e,o,t,r),valueQuantity:a}}function fd(e,o,t,r,a){let n=a.filter(l=>id(l.valueQuantity?.value));if(n.length!==0)return{...sd(e,o,t,r),component:n}}function sd(e,o,t,r){return{resourceType:"Observation",status:"preliminary",subject:(0,xr.createReference)(e),encounter:o?(0,xr.createReference)(o):void 0,effectiveDateTime:new Date().toISOString(),category:[{coding:[{system:"http://terminology.hl7.org/CodeSystem/observation-category",code:"vital-signs",display:"Vital Signs"}]}],code:bl(t,r)}}function bl(e,o){return{coding:[{code:e,display:o,system:xr.LOINC}],text:o}}function Rl(e,o){return{value:e,system:xr.UCUM,unit:o,code:o}}function id(e){return e!==void 0&&!isNaN(e)&&isFinite(e)}var M=require("react/jsx-runtime"),Mo={bloodPressure:{code:"85354-9",title:"Blood Pressure",unit:"mm[Hg]"},heartRate:{code:"8867-4",title:"Heart Rate",unit:"/min"},bodyTemperature:{code:"8310-5",title:"Body Temperature",unit:"Cel"},respiratoryRate:{code:"9279-1",title:"Respiratory Rate",unit:"/min"},height:{code:"8302-2",title:"height",unit:"cm"},weight:{code:"29463-7",title:"weight",unit:"kg"},bmi:{code:"39156-5",title:"BMI",unit:"kg/m2"},oxygen:{code:"2708-6",title:"Oxygen",unit:"%"},headCircumference:{code:"9843-4",title:"Head Circumference",unit:"cm"}},ud="8480-6",cd="8462-4";function md(e){let o=C(),{patient:t,encounter:r}=e,[a,n]=(0,Pl.useState)(e.vitals),[l,{open:f,close:i}]=(0,dd.useDisclosure)(!1),s=(0,Pl.useCallback)(u=>{let c=Object.entries(Mo).map(([d,m])=>d==="bloodPressure"?fd(t,r,m.code,m.title,[{code:bl(ud,"Systolic blood pressure"),valueQuantity:Rl(parseFloat(u.systolic),"mm[Hg]")},{code:bl(cd,"Diastolic blood pressure"),valueQuantity:Rl(parseFloat(u.diastolic),"mm[Hg]")}]):ld(t,r,m.code,m.title,Rl(parseFloat(u[d]),m.unit))).filter(Boolean);Promise.all(c.map(d=>o.createResource(d))).then(d=>n([...d,...a])).catch(console.error),i()},[o,t,r,a,i]);return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(w.Group,{position:"apart",children:[(0,M.jsx)(w.Text,{fz:"md",fw:700,children:"Vitals"}),(0,M.jsx)(w.Anchor,{href:"#",onClick:u=>{L(u),f()},children:"+ Add"})]}),(0,M.jsxs)(w.Grid,{children:[(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BP Sys"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:$s(a,Mo.bloodPressure.code,ud)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BP Dias"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:$s(a,Mo.bloodPressure.code,cd)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"HR"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.heartRate.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Temp"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.bodyTemperature.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"RR"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.respiratoryRate.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Height"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.height.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Weight"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.weight.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BMI"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.bmi.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"O2"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.oxygen.code)})}),(0,M.jsx)(w.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"HC"}),(0,M.jsx)(w.Grid.Col,{span:3,children:(0,M.jsx)(Fe,{value:ht(a,Mo.headCircumference.code)})})]}),(0,M.jsx)(w.Modal,{opened:l,onClose:i,title:"Add Vitals",children:(0,M.jsxs)(U,{onSubmit:s,children:[(0,M.jsxs)(w.Stack,{children:[(0,M.jsxs)(w.Group,{grow:!0,children:[(0,M.jsx)(w.TextInput,{name:"systolic",label:"BP Sys","data-autofocus":!0,autoFocus:!0}),(0,M.jsx)(w.TextInput,{name:"diastolic",label:"BP Dias"})]}),(0,M.jsxs)(w.Group,{grow:!0,children:[(0,M.jsx)(w.TextInput,{name:"heartRate",label:"HR"}),(0,M.jsx)(w.TextInput,{name:"bodyTemperature",label:"Temp"})]}),(0,M.jsxs)(w.Group,{grow:!0,children:[(0,M.jsx)(w.TextInput,{name:"respiratoryRate",label:"RR"}),(0,M.jsx)(w.TextInput,{name:"height",label:"height"})]}),(0,M.jsxs)(w.Group,{grow:!0,children:[(0,M.jsx)(w.TextInput,{name:"weight",label:"Wt"}),(0,M.jsx)(w.TextInput,{name:"bmi",label:"BMI"})]}),(0,M.jsxs)(w.Group,{grow:!0,children:[(0,M.jsx)(w.TextInput,{name:"oxygen",label:"O2"}),(0,M.jsx)(w.TextInput,{name:"headCircumference",label:"HC"})]}),(0,M.jsx)(w.Textarea,{name:"notes",label:"Notes"})]}),(0,M.jsx)(w.Group,{position:"right",spacing:4,mt:"md",children:(0,M.jsx)(w.Button,{type:"submit",children:"Save"})})]})})]})}var Y=require("react/jsx-runtime");function Jx(e){let o=C(),{patient:t,background:r,...a}=e,[n,l]=(0,yt.useState)(),[f,i]=(0,yt.useState)(),[s,u]=(0,yt.useState)(),[c,d]=(0,yt.useState)(),[m,p]=(0,yt.useState)(),[x,b]=(0,yt.useState)();return(0,yt.useEffect)(()=>{let v=(0,jr.resolveId)(t),S=`Patient/${v}`,R={_count:100,_sort:"-_lastUpdated"};Promise.all([o.readResource("Patient",v),o.searchResources("AllergyIntolerance",{patient:S,...R}),o.searchResources("Condition",{patient:S,...R}),o.searchResources("MedicationRequest",{subject:S,...R}),o.searchResources("Observation",{subject:S,...R})]).then(T=>{l(T[0]),i(T[1]),u(T[2]),b(T[3]);let h=T[4];d(h.find(E=>E.code?.coding?.[0].code==="72166-2")),p(h.filter(E=>E.category?.[0]?.coding?.[0].code==="vital-signs"))}).catch(console.error)},[o,t]),n?(0,Y.jsxs)(ae.Card,{...a,children:[(0,Y.jsx)(ae.Card.Section,{h:100,style:{background:r}}),(0,Y.jsx)(He,{value:n,size:80,radius:80,mx:"auto",mt:-50,sx:{border:"2px solid white"}}),(0,Y.jsx)(ae.Text,{ta:"center",fz:"lg",fw:500,children:(0,jr.formatHumanName)(n.name?.[0])}),(0,Y.jsxs)(ae.Text,{ta:"center",fz:"xs",color:"dimmed",children:[n.birthDate," (",(0,jr.calculateAgeString)(n.birthDate),")"]}),(0,Y.jsx)(ae.Paper,{withBorder:!0,p:"md",my:"md",children:(0,Y.jsxs)(ae.Group,{grow:!0,children:[(0,Y.jsxs)(ae.Flex,{justify:"center",align:"center",direction:"column",gap:0,maw:"33%",children:[(0,Y.jsx)(Df,{size:24,color:"gray"}),(0,Y.jsx)(ae.Text,{fz:"xs",align:"center",sx:{whiteSpace:"nowrap"},children:"Self"})]}),(0,Y.jsxs)(ae.Flex,{justify:"center",align:"center",direction:"column",gap:0,children:[(0,Y.jsx)(Pf,{size:24,color:"gray"}),(0,Y.jsx)(ae.Text,{fz:"xs",sx:{whiteSpace:"nowrap"},children:n?.generalPractitioner?.[0]?.display??"No provider"})]}),(0,Y.jsxs)(ae.Flex,{justify:"center",align:"center",direction:"column",gap:0,children:[(0,Y.jsx)(xf,{size:24,color:"gray"}),(0,Y.jsx)(ae.Text,{fz:"xs",sx:{whiteSpace:"nowrap"},children:n.gender})]})]})}),(0,Y.jsxs)(ae.Stack,{spacing:"xs",children:[(0,Y.jsx)(ae.Anchor,{href:"#",children:"No upcoming appointments"}),(0,Y.jsx)(ae.Anchor,{href:"#",children:"No documented visits"}),(0,Y.jsx)(ae.Divider,{}),(0,Y.jsx)(Yc,{patient:n,allergies:f}),(0,Y.jsx)(ae.Divider,{}),(0,Y.jsx)(td,{patient:n,problems:s}),(0,Y.jsx)(ae.Divider,{}),(0,Y.jsx)(ed,{patient:n,medicationRequests:x}),(0,Y.jsx)(ae.Divider,{}),(0,Y.jsx)(nd,{patient:n,smokingStatus:c}),(0,Y.jsx)(ae.Divider,{}),(0,Y.jsx)(md,{patient:n,vitals:m})]})]}):null}var Ya=require("@medplum/core"),pd=require("react");var xd=require("react/jsx-runtime");function $x(e){let o=(0,pd.useCallback)((t,r,a)=>{let n=`${r}/${a}`,l=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:l}),t.search("Device",{patient:n,_count:l}),t.search("DeviceRequest",{patient:n,_count:l}),t.search("DiagnosticReport",{subject:n,_count:l}),t.search("Media",{subject:n,_count:l}),t.search("ServiceRequest",{subject:n,_count:l}),t.search("Task",{subject:n,_count:l})])},[]);return(0,xd.jsx)(ct,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:(0,Ya.createReference)(t),sender:(0,Ya.createReference)(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:(0,Ya.createReference)(t),operator:(0,Ya.createReference)(r),issued:new Date().toISOString(),content:a})})}var Ze=require("@mantine/core"),Id=require("@medplum/core");var Ro=require("react");var W=require("react/jsx-runtime"),gd=(0,Ze.createStyles)(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function _x(e){let o=C(),t=oe(e.value),[r,a]=(0,Ro.useState)(!1),[n,l]=(0,Ro.useState)(),[f,i]=(0,Ro.useState)(),[s,u]=(0,Ro.useState)();function c(){i(void 0)}function d(){l(void 0)}let m=(0,Ro.useRef)();if(m.current=s,(0,Ro.useEffect)(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),(0,Ro.useEffect)(()=>(u(oI(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!s)return null;function p(x,b){u({...m.current,[x]:b})}return(0,W.jsx)("div",{children:(0,W.jsxs)(U,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(s),children:[(0,W.jsx)(Ze.TextInput,{label:"Plan Title",defaultValue:s.title,onChange:x=>p("title",x.currentTarget.value)}),(0,W.jsx)(hd,{actions:s.action||[],selectedKey:n,setSelectedKey:l,hoverKey:f,setHoverKey:i,onChange:x=>p("action",x)}),(0,W.jsx)(Ze.Button,{type:"submit",children:"Save"})]})})}function hd(e){let{classes:o}=gd(),t=(0,Ro.useRef)();t.current=e.actions;function r(l){e.onChange(t.current.map(f=>f.id===l.id?l:f))}function a(l){e.onChange([...t.current,l]),e.setSelectedKey(l.id)}function n(l){e.onChange(t.current.filter(f=>f!==l))}return(0,W.jsxs)("div",{className:o.section,children:[e.actions.map(l=>(0,W.jsx)("div",{children:(0,W.jsx)(Kx,{action:l,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(l)})},l.id)),(0,W.jsx)("div",{className:o.bottomActions,children:(0,W.jsx)(Ze.Anchor,{href:"#",onClick:l=>{L(l),a({id:vd()})},children:"Add action"})})]})}function Kx(e){let{classes:o,cx:t}=gd(),{action:r}=e,a=eI(r),n=e.selectedKey===e.action.id,l=e.hoverKey===e.action.id;function f(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function i(u){L(u),e.setHoverKey(e.action.id)}let s=t(o.section,{[o.editing]:n,[o.hovering]:l&&!n});return(0,W.jsxs)("div",{"data-testid":r.id,className:s,onClick:f,onMouseOver:i,onFocus:i,children:[n?(0,W.jsx)(Yx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):(0,W.jsx)(Zx,{action:r,actionType:a}),(0,W.jsx)("div",{className:o.bottomActions,children:(0,W.jsx)(Ze.Anchor,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()},children:"Remove"})})]})}var Ks={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function Zx(e){let{action:o,actionType:t}=e,[r,a]=yd(o);return(0,W.jsxs)("div",{children:[(0,W.jsxs)("div",{children:[o.title||"Untitled"," ",t&&`(${t})`]}),o.definitionCanonical&&(0,W.jsx)("div",{children:(0,W.jsx)(Pt,{value:{reference:o.definitionCanonical}})}),r&&(0,W.jsx)("div",{children:(0,W.jsx)(Ue,{property:Ks,propertyType:a,value:r})})]})}function Yx(e){let{action:o}=e,[t,r]=(0,Ro.useState)(e.actionType);function a(n,l){e.onChange({...o,[n]:l})}return(0,W.jsxs)(Ze.Stack,{spacing:"xl",children:[(0,W.jsx)(Ze.TextInput,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),(0,W.jsx)(Ze.TextInput,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),(0,W.jsx)(Ze.NativeSelect,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&(0,W.jsx)(hd,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return(0,W.jsx)(Tl,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return(0,W.jsx)(Tl,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return(0,W.jsx)(Tl,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return(0,W.jsx)(Tl,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),(0,W.jsx)(Je,{title:"Timing",description:"When the action should take place.",children:(0,W.jsx)(jx,{name:"timing-"+o.id,action:o,onChange:e.onChange})})]})}function Tl(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return(0,W.jsx)(Va,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:(0,Id.getReferenceString)(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function jx(e){let o=e.action,t="timing",[r,a]=yd(o);return(0,W.jsx)(rt,{property:Ks,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,l)=>{e.onChange(Mr(o,t,l??t,Ks,n))},outcome:void 0})}function eI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function yd(e){return Dt({type:"PlanDefinitionAction",value:e},"timing")}var _s=1;function vd(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(_s=Math.max(_s,o+1))}return e}return"id-"+_s++}function oI(e){return{...e,action:Sd(e.action)}}function Sd(e){if(e)return e.map(o=>({...o,id:vd(o.id),action:Sd(o.action)}))}var X=require("@mantine/core"),Bl=require("@medplum/core");var Xo=require("react");var Oe=require("@mantine/core"),se=require("@medplum/core"),kd=require("react");var Ae=require("@medplum/core"),ja=(v=>(v.group="group",v.display="display",v.question="question",v.boolean="boolean",v.decimal="decimal",v.integer="integer",v.date="date",v.dateTime="dateTime",v.time="time",v.string="string",v.text="text",v.url="url",v.choice="choice",v.openChoice="open-choice",v.attachment="attachment",v.reference="reference",v.quantity="quantity",v))(ja||{});function Zs(e){return e.type==="choice"||e.type==="open-choice"}function Ys(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Cd(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:l}=rI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!l)return!1}return t!=="any"}function js(e,o,t){return e.map(r=>{let a=t.answerOption?.find(l=>(0,Ae.formatCoding)(l.valueCoding)===r||l[o]===r),n=(0,Ae.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Cd(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Cd(t.item,o);if(r)return r}}}function tI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=(0,Ae.evalFhirPathTyped)(`%actualAnswer ${r} %expectedAnswer`,[e],{"%actualAnswer":e,"%expectedAnswer":o});return a}else return!1}function rI(e,o,t){let r=o||[],a=(0,Ae.getTypedPropertyValue)({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,l=!0;for(let f of r){let i=(0,Ae.getTypedPropertyValue)({type:"QuestionnaireResponseItemAnswer",value:f},"value[x]"),{operator:s}=e;if(tI(i,a,s)?n=!0:l=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:l}}function en(e){let o=(0,Ae.getExtension)(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function on(e,o){let t=(0,Ae.deepClone)(e),r=(0,Ae.getExtension)(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function ei(e,o,t){let r=(0,Ae.getExtension)(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceFilter");if(!r?.valueString)return;let a=r.valueString;o?.reference&&(a=a.replaceAll("$subj",o.reference)),t?.reference&&(a=a.replaceAll("$encounter",t.reference));let n={},l=a.split("&");for(let f of l){let[i,s]=(0,Ae.splitN)(f,"=",2);n[i]=s}return n}function oi(e){return{resourceType:"QuestionnaireResponse",questionnaire:(0,Ae.getReferenceString)(e),item:bd(e.item)}}function bd(e){return e?.map(kl)??[]}function kl(e){return{id:nI(),linkId:e.linkId,text:e.text,item:bd(e.item),answer:e.initial?.map(lI)??[]}}var aI=1;function nI(){return"id-"+aI++}function lI(e){return{...e}}function ti(e){return e.value.display||e.value.reference||(0,Ae.stringify)(e.value)}function ri(e){let o=e?.item?.[0];return o&&(0,Ae.getExtension)(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}var Rd=require("react"),Dl=(0,Rd.createContext)({});var fe=require("react/jsx-runtime");function tn(e){let o=(0,kd.useContext)(Dl),t=e.item,r=e.response;function a(s){let u;Array.isArray(s)?u=s:e.index>=(e.response?.answer?.length??0)?u=(e.response?.answer??[]).concat([s]):u=(e.response?.answer??[]).map((d,m)=>m===e.index?s:d)??[],e.onChange({id:r?.id,linkId:r?.linkId,text:t.text,answer:u})}let n=t.type;if(!n)return null;let l=t.linkId;if(!l)return null;let f=t.initial&&t.initial.length>0?t.initial[0]:void 0,i=ai(r,e.index)??(0,se.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:f},"value");switch(n){case"display":return(0,fe.jsx)("p",{children:e.item.text},e.item.linkId);case"boolean":return(0,fe.jsx)(Pa,{title:e.item.text,htmlFor:e.item.linkId,children:(0,fe.jsx)(Oe.Checkbox,{id:e.item.linkId,name:e.item.linkId,defaultChecked:i?.value,onChange:s=>a({valueBoolean:s.currentTarget.checked})})},e.item.linkId);case"decimal":return(0,fe.jsx)(Oe.TextInput,{type:"number",step:"any",id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueDecimal:s.currentTarget.valueAsNumber})});case"integer":return(0,fe.jsx)(Oe.TextInput,{type:"number",step:1,id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueInteger:s.currentTarget.valueAsNumber})});case"date":return(0,fe.jsx)(Oe.TextInput,{type:"date",id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueDate:s.currentTarget.value})});case"dateTime":return(0,fe.jsx)(vo,{name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueDateTime:s})});case"time":return(0,fe.jsx)(Oe.TextInput,{type:"time",id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueTime:s.currentTarget.value})});case"string":case"url":return(0,fe.jsx)(Oe.TextInput,{id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueString:s.currentTarget.value})});case"text":return(0,fe.jsx)(Oe.Textarea,{id:l,name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueString:s.currentTarget.value})});case"attachment":return(0,fe.jsx)(Oe.Group,{py:4,children:(0,fe.jsx)(Sa,{name:l,defaultValue:i?.value,onChange:s=>a({valueAttachment:s})})});case"reference":return(0,fe.jsx)(fr,{name:l,required:t.required,targetTypes:en(t),searchCriteria:ei(t,o.subject,o.encounter),defaultValue:i?.value,onChange:s=>a({valueReference:s})});case"quantity":return(0,fe.jsx)(ao,{name:l,required:t.required,defaultValue:i?.value,onChange:s=>a({valueQuantity:s}),disableWheel:!0});case"choice":case"open-choice":return dI(t)&&!t.answerValueSet?(0,fe.jsx)(fI,{name:l,item:t,initial:f,response:r,onChangeAnswer:s=>a(s)}):(0,fe.jsx)(sI,{name:l,item:t,initial:f,response:r,onChangeAnswer:s=>a(s)});default:return null}}function fI(e){let{name:o,item:t,initial:r,response:a}=e;if(!t.answerOption?.length)return(0,fe.jsx)(Dd,{});let n=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:r},"value"),l=[""];for(let i of t.answerOption){let s=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:i},"value");l.push(Pd(s))}let f=ai(a)??n;if(t.repeats){let{propertyName:i,data:s}=mI(e.item),u=uI(a);return(0,fe.jsx)(Oe.MultiSelect,{data:s,placeholder:"Select items",searchable:!0,defaultValue:u||[Pd(n)],onChange:c=>{let d=js(c,i,t);e.onChangeAnswer(d)}})}return(0,fe.jsx)(Oe.NativeSelect,{id:o,name:o,onChange:i=>{let s=i.currentTarget.selectedIndex;if(s===0){e.onChangeAnswer({});return}let u=t.answerOption[s-1],c=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:u},"value"),d="value"+(0,se.capitalize)(c.type);e.onChangeAnswer({[d]:c.value})},defaultValue:(0,se.formatCoding)(f?.value)||f?.value,data:l})}function sI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e;return!t.answerOption?.length&&!t.answerValueSet?(0,fe.jsx)(Dd,{}):t.answerValueSet?(0,fe.jsx)(Da,{name:o,binding:t.answerValueSet,onChange:l=>a({valueCoding:l})}):(0,fe.jsx)(iI,{name:n?.id??o,item:t,initial:r,response:n,onChangeAnswer:a})}function iI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e,l=(0,se.getElementDefinition)("QuestionnaireItemAnswerOption","value[x]"),f=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:r},"value"),i=[],s;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let m=t.answerOption[d],p=`${o}-option-${d}`,x=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:m},"value");x?.value&&(f&&(0,se.stringify)(x)===(0,se.stringify)(f)&&(s=p),i.push([p,x]))}let u=ai(n),c=cI(i,u);return(0,fe.jsx)(Oe.Radio.Group,{name:o,value:c??s,onChange:d=>{let m=i.find(p=>p[0]===d);if(m){let p=m[1],x="value"+(0,se.capitalize)(p.type);a({[x]:p.value})}},children:i.map(([d,m])=>(0,fe.jsx)(Oe.Radio,{id:d,value:d,py:4,label:(0,fe.jsx)(Ue,{property:l,propertyType:m.type,value:m.value})},d))})}function Dd(){return(0,fe.jsx)(Oe.TextInput,{disabled:!0,placeholder:"No Answers Defined"})}function Bd(e){return(0,se.getTypedPropertyValue)({type:"QuestionnaireItemAnswer",value:e},"value")}function ai(e,o=0){let t=e.answer;return Bd(t?.[o]??{})}function uI(e){let o=e.answer;return o?o.map(r=>Bd(r)).map(r=>(0,se.formatCoding)(r?.value)||r?.value):[]}function cI(e,o){return e.find(t=>(0,se.deepEquals)(t[1].value,o?.value))?.[0]}function Pd(e){if(e)return e.type==="CodeableConcept"?(0,se.formatCodeableConcept)(e.value):e.type==="Coding"?(0,se.formatCoding)(e.value):e.type==="Reference"?ti(e):e.value.toString()}function dI(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function mI(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=(0,se.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+(0,se.capitalize)(t.type),a=(e.answerOption??[]).map(n=>({value:Td(n,r),label:Td(n,r)}));return{propertyName:r,data:a}}function Td(e,o){return(0,se.formatCoding)(e.valueCoding)||e[o]?.toString()}var B=require("react/jsx-runtime"),pI=(0,X.createStyles)(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:32,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function xI(e){let o=C(),t=oe(e.questionnaire),[r,a]=(0,Xo.useState)(!1),[n,l]=(0,Xo.useState)(),[f,i]=(0,Xo.useState)(),[s,u]=(0,Xo.useState)();function c(){u(void 0)}function d(){i(void 0)}(0,Xo.useEffect)(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),(0,Xo.useEffect)(()=>(l(yI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]);let m=(p,x)=>{l(p),e.autoSave&&!x&&e.onSubmit&&e.onSubmit(p)};return!r||!n?null:(0,B.jsx)("div",{children:(0,B.jsxs)(U,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n),children:[(0,B.jsx)(Ad,{item:n,selectedKey:f,setSelectedKey:i,hoverKey:s,setHoverKey:u,onChange:m}),(0,B.jsx)(X.Button,{type:"submit",children:"Save"})]})})}function Ad(e){let{classes:o,cx:t}=pI(),r=e.item,a=e.item,n=(0,Bl.isResource)(e.item),l=n||a.type==="group",f=a.linkId??"[untitled]",i=e.selectedKey===e.item.id,s=e.hoverKey===e.item.id,u=(0,Xo.useRef)();u.current=e.item;function c(h){L(h),e.setSelectedKey(e.item.id)}function d(h){L(h),e.setHoverKey(e.item.id)}function m(h){let E=u.current;e.onChange({...E,item:E.item?.map(re=>re.id===h.id?h:re)})}function p(h,E){e.onChange({...e.item,item:[...e.item.item??[],h]},E)}function x(h){e.onChange({...e.item,item:e.item.item?.filter(E=>E!==h)})}function b(h,E){e.onChange({...u.current,[h]:E})}function v(h){e.onChange({...e.item,...h})}function S(h){e.onChange({...e.item,item:e.item.item?.map(E=>E===h?{...E,repeats:!E.repeats}:E)})}function R(h,E){let re=CI(e.item.item,h,E);e.onChange({...e.item,item:re})}let T=t(o.section,{[o.editing]:i,[o.hovering]:s&&!i});return(0,B.jsxs)("div",{"data-testid":a.linkId,className:T,onClick:c,onMouseOver:d,onFocus:d,children:[(0,B.jsx)("div",{className:o.questionBody,children:i?(0,B.jsxs)(B.Fragment,{children:[n&&(0,B.jsx)(X.TextInput,{size:"xl",defaultValue:r.title,onBlur:h=>b("title",h.currentTarget.value)}),!n&&(0,B.jsx)(X.Textarea,{autosize:!0,minRows:2,defaultValue:a.text,onBlur:h=>b("text",h.currentTarget.value)}),a.type==="reference"&&(0,B.jsx)(hI,{item:a,onChange:v}),Zs(a)&&(0,B.jsx)(II,{item:a,onChange:h=>v(h)})]}):(0,B.jsxs)(B.Fragment,{children:[r.title&&(0,B.jsx)(X.Title,{children:r.title}),a.text&&(0,B.jsx)("div",{children:a.text}),!l&&(0,B.jsx)(tn,{item:a,index:0,onChange:()=>{},response:{}})]})}),a.item?.map((h,E)=>(0,B.jsx)("div",{children:(0,B.jsx)(Ad,{item:h,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:E===0,isLast:E===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:m,onRemove:()=>x(h),onRepeatable:S,onMoveUp:()=>R(E,-1),onMoveDown:()=>R(E,1)})},h.id)),!l&&(0,B.jsx)("div",{className:o.topActions,children:i?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(X.TextInput,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onBlur:h=>b("linkId",h.currentTarget.value)}),!l&&(0,B.jsx)(X.NativeSelect,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:h=>b("type",h.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})]}):(0,B.jsx)("div",{children:f})}),!n&&(0,B.jsx)(X.Box,{className:o.movementActions,children:(0,B.jsxs)(X.Box,{className:o.columnAlignment,children:[!e.isFirst&&(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveUp&&e.onMoveUp()},children:(0,B.jsx)(jl,{"data-testid":"up-button",size:15,className:o.movementIcons})}),!e.isLast&&(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveDown&&e.onMoveDown()},children:(0,B.jsx)(Yl,{"data-testid":"down-button",size:15,className:o.movementIcons})})]})}),(0,B.jsxs)("div",{className:o.bottomActions,children:[l&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),p({id:Ir(),linkId:fi("q"),type:"string",text:"Question"})},children:"Add item"}),(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),p({id:Ir(),linkId:fi("g"),type:"group",text:"Group"},!0)},children:"Add group"})]}),n&&(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),p(SI(),!0)},children:"Add Page"}),i&&!n&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),e.onRepeatable&&e.onRepeatable(a)},children:a.repeats?"Remove Repeatable":"Make Repeatable"}),(0,B.jsx)(X.Anchor,{href:"#",onClick:h=>{h.preventDefault(),e.onRemove&&e.onRemove()},children:"Remove"})]})]})]})}function II(e){let o=(0,Bl.getElementDefinition)("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return(0,B.jsxs)("div",{children:[e.item.answerValueSet!==void 0?(0,B.jsx)(X.TextInput,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):(0,B.jsx)(gI,{options:t,property:o,item:e.item,onChange:e.onChange}),(0,B.jsxs)(X.Box,{display:"flex",children:[(0,B.jsx)(X.Anchor,{href:"#",onClick:r=>{L(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:Ir()}]})},children:"Add choice"}),(0,B.jsx)(X.Space,{w:"lg"}),(0,B.jsx)(X.Anchor,{href:"#",onClick:r=>{L(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})},children:"Add value set"})]})]})}function gI(e){return(0,B.jsx)("div",{children:e.options.map(o=>{let[t,r]=Dt({type:"QuestionnaireItemAnswerOption",value:o},"value");return(0,B.jsxs)("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"},children:[(0,B.jsx)("div",{children:(0,B.jsx)(rt,{name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let l=[...e.options],f=l.findIndex(i=>i.id===o.id);l[f]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:l})},outcome:void 0},o.id)}),(0,B.jsx)("div",{children:(0,B.jsx)(X.Anchor,{href:"#",onClick:a=>{L(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})},children:"Remove"})})]},o.id)})})}function hI(e){let o=en(e.item)??[];return(0,B.jsxs)(B.Fragment,{children:[o.map((t,r)=>(0,B.jsxs)(X.Group,{children:[(0,B.jsx)(Pr,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(on(e.item,o.map(n=>n===t?a:n)))}}),(0,B.jsx)(X.Anchor,{href:"#",onClick:a=>{L(a),e.onChange(on(e.item,o.filter(n=>n!==t)))},children:"Remove"})]},`${t}-${r}`)),(0,B.jsx)(X.Anchor,{href:"#",onClick:t=>{L(t),e.onChange(on(e.item,[...o,""]))},children:"Add Resource Type"})]})}var ni=1,li=1;function fi(e){return e+ni++}function Ir(){return"id-"+li++}function yI(e){return{...e,id:e.id||Ir(),item:Md(e.item)}}function Md(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(li=Math.max(li,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(ni=Math.max(ni,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||Ir(),item:Md(o.item),answerOption:vI(o.answerOption)}))}function vI(e){if(e)return e.map(o=>({...o,id:o.id||Ir()}))}function SI(){return{id:Ir(),linkId:fi("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function CI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}var Nd=require("@mantine/core"),Ml=require("@medplum/core");var hr=require("react");var Fo=require("@mantine/core");var Fd=require("@mantine/core"),wd=require("react");var gr=require("react/jsx-runtime");function Al(e){let{item:o,response:t,onChange:r}=e,[a,n]=(0,wd.useState)(bI(o,t??{}));if(!e.checkForQuestionEnabled(o)||!t)return null;if(o.type==="display")return(0,gr.jsx)("p",{children:o.text},o.linkId);let l=o?.repeats&&o.type!=="choice"&&o.type!=="open-choice";return o.type==="boolean"?(0,gr.jsx)(tn,{item:o,response:t,onChange:f=>r([f]),index:0},o.linkId):(0,gr.jsxs)(Je,{htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required,children:[[...Array(a)].map((f,i)=>(0,gr.jsx)(tn,{item:o,response:t,onChange:s=>r([s]),index:i},`${o.linkId}-${i}`)),l&&(0,gr.jsx)(Fd.Anchor,{onClick:()=>n(f=>f+1),children:"Add Item"})]},e.item.linkId)}function bI(e,o){if(e.type==="choice"||e.type==="open-choice")return 1;let t=o.answer;return t?.length?t.length:1}var ea=require("@mantine/core"),Od=require("react");var uo=require("react/jsx-runtime");function si(e){let[o,t]=(0,Od.useState)(e.response);if(o.length===0)return null;function r(n,l){let f=o.map((i,s)=>s===l?n[0]:i);t(f),e.onChange(f)}function a(){let n=kl(e.item);t([...o,n])}return(0,uo.jsxs)(uo.Fragment,{children:[o.map((n,l)=>(0,uo.jsx)(Ed,{item:e.item,response:n,checkForQuestionEnabled:e.checkForQuestionEnabled,onChange:f=>r(f,l)},n.id)),e.item.repeats&&(0,uo.jsx)(ea.Anchor,{onClick:a,children:`Add Group: ${e.item.text}`})]})}function Ed(e){let{response:o,checkForQuestionEnabled:t,onChange:r}=e;function a(n){let f=o.item?.map(s=>n.find(c=>c.id===s.id)??s)?.concat(n.slice(1)),i={...o,item:f};r([i])}return e.checkForQuestionEnabled(e.item)?(0,uo.jsxs)("div",{children:[e.item.text&&(0,uo.jsx)(ea.Title,{order:3,mb:"md",children:e.item.text}),(0,uo.jsx)(ea.Stack,{children:e.item.item?.map(n=>n.type==="group"?n.repeats?(0,uo.jsx)(si,{item:n,response:o.item?.filter(l=>l.linkId===n.linkId)??[],checkForQuestionEnabled:t,onChange:a},n.linkId):(0,uo.jsx)(Ed,{item:n,checkForQuestionEnabled:t,response:o.item?.find(l=>l.linkId===n.linkId)??{},onChange:a},n.linkId):(0,uo.jsx)(Al,{item:n,response:o.item?.find(l=>l.linkId===n.linkId),onChange:a,checkForQuestionEnabled:t},n.linkId))})]},e.item.linkId):null}var Ye=require("react/jsx-runtime");function Ld(e){let{items:o,response:t,activePage:r,onChange:a,nextStep:n,prevStep:l,numberOfPages:f,renderPages:i,submitButtonText:s,checkForQuestionEnabled:u}=e,c=o.map(d=>{let m=t?.item?.filter(x=>x.linkId===d.linkId)??[],p=d.type==="group"?(0,Ye.jsx)(si,{item:d,response:m,onChange:a,checkForQuestionEnabled:u},d.linkId):(0,Ye.jsx)(Al,{item:d,response:m?.[0],onChange:a,checkForQuestionEnabled:u},d.linkId);return i?(0,Ye.jsx)(Fo.Stepper.Step,{label:d.text,children:p},d.linkId):p});return(0,Ye.jsxs)(Ye.Fragment,{children:[i&&(0,Ye.jsx)(Fo.Stepper,{active:r??0,allowNextStepsSelect:!1,p:6,children:c}),!i&&(0,Ye.jsx)(Fo.Stack,{children:c}),(0,Ye.jsx)(RI,{activePage:r??0,numberOfPages:f,nextStep:n,prevStep:l,submitButtonText:s})]})}function RI(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return(0,Ye.jsxs)(Fo.Group,{position:"right",mt:"xl",spacing:"xs",children:[o&&(0,Ye.jsx)(Fo.Button,{onClick:e.prevStep,children:"Back"}),t&&(0,Ye.jsx)(Fo.Button,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()},children:"Next"}),r&&(0,Ye.jsx)(Fo.Button,{type:"submit",children:e.submitButtonText??"Submit"})]})}var oa=require("react/jsx-runtime");function ii(e){let o=C(),t=o.getProfile(),[r,a]=(0,hr.useState)(!1),n=oe(e.questionnaire),[l,f]=(0,hr.useState)(),[i,s]=(0,hr.useState)(0);(0,hr.useEffect)(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),(0,hr.useEffect)(()=>{f(n?oi(n):void 0)},[n]);function u(x){let b=l?.item??[],S={resourceType:"QuestionnaireResponse",item:Vd(b,Array.isArray(x)?x:[x])};f(S)}function c(x){return Ys(x,l?.item??[])}if(!r||!n)return null;let d=ri(n),m=()=>s(x=>x+1),p=()=>s(x=>x-1);return(0,oa.jsx)(Dl.Provider,{value:{subject:e.subject,encounter:e.encounter},children:(0,oa.jsxs)(U,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&l&&e.onSubmit({...l,questionnaire:(0,Ml.getReferenceString)(n),subject:e.subject,source:(0,Ml.createReference)(t),authored:new Date().toISOString(),status:"completed"})},children:[n.title&&(0,oa.jsx)(Nd.Title,{children:n.title}),(0,oa.jsx)(Ld,{items:n.item??[],response:l,onChange:u,renderPages:d>1,activePage:i,numberOfPages:d,submitButtonText:e.submitButtonText,checkForQuestionEnabled:c,nextStep:m,prevStep:p})]})})}function PI(e,o){let t=Vd(e.item??[],o.item??[]);return{...o,item:t.length>0?t:void 0,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function Vd(e,o){let t=[],r=new Set;for(let a of e){let n=a.id,l=o.find(f=>f.id===n);l?(t.push(PI(a,l)),r.add(l.id)):t.push(a)}for(let a of o)r.has(a.id)||t.push(a);return t}var ee=require("@mantine/core"),rn=require("@medplum/core");var ta=require("react");var $=require("react/jsx-runtime"),TI=(0,ee.createStyles)(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),kI=["gender","age","gestationalAge","context","appliesTo","category"],DI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function BI(e){e=Object.assign(DI,e);let o=e.definition,[t,r]=(0,ta.useState)([]),[a,n]=(0,ta.useState)(1),[l,f]=(0,ta.useState)(1);return(0,ta.useEffect)(()=>{let p=MI(o,f);r(FI(p.qualifiedInterval||[],n))},[o]),(0,$.jsxs)(U,{testid:"reference-range-editor",onSubmit:i,children:[(0,$.jsx)(ee.Stack,{children:t.map(p=>(0,$.jsx)(Hd,{unit:OI(o.quantitativeDetails?.unit),onChange:c,onAdd:d,onRemove:m,onRemoveGroup:u,intervalGroup:p},`group-${p.id}`))}),(0,$.jsx)(ee.ActionIcon,{title:"Add Group",size:"sm",onClick:p=>{L(p),s({id:`group-id-${a}`,filters:{},intervals:[]}),n(x=>x+1)},children:(0,$.jsx)(Jt,{})}),(0,$.jsx)(ee.Group,{position:"right",children:(0,$.jsx)(ee.Button,{type:"submit",children:"Save"})})]});function i(){let p=t.flatMap(x=>x.intervals).filter(x=>!EI(x));e.onSubmit({...o,qualifiedInterval:p})}function s(p){r(x=>[...x,p])}function u(p){r(x=>x.filter(b=>b.id!==p.id))}function c(p,x){r(b=>{b=[...b];let v=b.find(R=>R.id===p),S=v?.intervals.findIndex(R=>R.id===x.id);return S!==void 0&&v?.intervals[S]&&(v.intervals[S]=x),b})}function d(p,x){x.id===void 0&&(x.id=`id-${l}`,f(b=>b+1)),r(b=>{b=[...b];let v=b.findIndex(S=>S.id===p);if(v!==-1){let S={...b[v]};x={...x,...S.filters},S.intervals=[...S.intervals,x],b[v]=S}return b})}function m(p,x){r(b=>{b=[...b];let v=b.find(S=>S.id===p);return v&&(v.intervals=v.intervals.filter(S=>S.id!==x.id)),b})}}function Hd(e){let{intervalGroup:o,unit:t}=e,{classes:r}=TI();return(0,$.jsx)(nt,{"data-testid":o.id,className:r.section,children:(0,$.jsxs)(ee.Stack,{spacing:"lg",children:[(0,$.jsx)(ee.Group,{position:"right",children:(0,$.jsx)(ee.ActionIcon,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,size:"sm",onClick:a=>{L(a),e.onRemoveGroup(o)},children:(0,$.jsx)(Ct,{})},`remove-group-button-${o.id}`)}),(0,$.jsx)(AI,{intervalGroup:o,onChange:e.onChange}),(0,$.jsx)(ee.Divider,{}),o.intervals.map(a=>(0,$.jsxs)(ee.Stack,{spacing:"xs",children:[(0,$.jsxs)(ee.Group,{children:[(0,$.jsx)(ee.TextInput,{"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{L(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}},`condition-${a.id}`),(0,$.jsx)(ee.ActionIcon,{title:"Remove Interval",size:"sm","data-testid":`remove-interval-${a.id}`,onClick:n=>{L(n),e.onRemove(o.id,a)},children:(0,$.jsx)(Ct,{})},`remove-interval-${a.id}`)]}),(0,$.jsx)(Lr,{onChange:n=>{e.onChange(o.id,{...a,range:n})},name:`range-${a.id}`,defaultValue:a.range},`range-${a.id}`)]},`interval-${a.id}`)),(0,$.jsx)(ee.ActionIcon,{title:"Add Interval",size:"sm",onClick:a=>{L(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})},children:(0,$.jsx)(Jt,{})})]})})}function AI(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return(0,$.jsxs)(ee.Stack,{style:{maxWidth:"50%"},children:[(0,$.jsx)(ee.Group,{children:(0,$.jsx)(ee.NativeSelect,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})}),(0,$.jsxs)(ee.Group,{spacing:"xs",children:[(0,$.jsx)(ee.Text,{component:"label",htmlFor:`div-age-${o.id}`,children:"Age:"}),(0,$.jsx)("div",{id:`div-age-${o.id}`,children:(0,$.jsx)(Lr,{name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}},`age-${o.id}`)})]}),(0,$.jsx)(ee.NativeSelect,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),(0,$.jsx)(ee.NativeSelect,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}})]})}function MI(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function FI(e,o){let t=1,r={};for(let a of e){let n=wI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(kI.map(l=>[l,a[l]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function wI(e){return[`gender=${e.gender}`,`age=${(0,rn.formatRange)(e.age)}`,`gestationalAge=${(0,rn.formatRange)(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function OI(e){return e&&((0,rn.getCodeBySystem)(e,"http://unitsofmeasure.org")||e.text)}function EI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}var Jo=require("@mantine/core"),Fl=require("@medplum/core");var yr=require("react");var Qe=require("react/jsx-runtime");function LI(e){let o=C(),t=oe(e.value),[r,a]=(0,yr.useState)(!1),[n,l]=(0,yr.useState)();if((0,yr.useEffect)(()=>{t&&!r&&(o.executeBatch(f(t)).then(l).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return(0,Qe.jsx)(Jo.Grid,{children:t.action?.map((s,u)=>{let c=s.resource&&i(s.resource),d=c?.input?.[0]?.valueReference,m=c?.output?.[0]?.valueReference;return(0,Qe.jsxs)(yr.Fragment,{children:[(0,Qe.jsx)(Jo.Grid.Col,{span:1,p:"md",children:c?.status==="completed"?(0,Qe.jsx)(lf,{}):(0,Qe.jsx)(Rf,{color:"gray"})}),(0,Qe.jsxs)(Jo.Grid.Col,{span:9,p:"xs",children:[(0,Qe.jsx)(Jo.Text,{weight:500,children:s.title}),s.description&&(0,Qe.jsx)("div",{children:s.description}),(0,Qe.jsxs)("div",{children:["Last edited by\xA0",(0,Qe.jsx)(Do,{value:c?.meta?.author}),"\xA0on\xA0",(0,Fl.formatDateTime)(c?.meta?.lastUpdated)]}),(0,Qe.jsxs)("div",{children:["Status: ",(0,Qe.jsx)(za,{status:c?.status||"unknown"})]})]}),(0,Qe.jsxs)(Jo.Grid.Col,{span:2,p:"md",children:[d&&!m&&(0,Qe.jsx)(Jo.Button,{onClick:()=>e.onStart(c,d),children:"Start"}),d&&m&&(0,Qe.jsx)(Jo.Button,{onClick:()=>e.onEdit(c,d,m),children:"Edit"})]})]},`action-${u}`)})});function f(s){let u=[];if(s.action)for(let c of s.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function i(s){for(let u of n?.entry)if(u.resource&&s.reference===(0,Fl.getReferenceString)(u.resource))return u.resource}}var zd=require("@mantine/core");var Ol=require("react");var qd=require("@medplum/core");function wl(e,o){let t=NI(e,o);return VI(t,e,o)}function NI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,l=n/2|0,f=new Array(n);f[l+1]={i:0,j:-1,prev:void 0,snake:!0};for(let i=0;i<a;i++){for(let s=-i;s<=i;s+=2){let u=l+s,c=u+1,d=u-1,m=f[c],p=f[d],x,b=0;s===-i||s!==i&&p.i<m.i?(b=m.i,x=m):(b=p.i+1,x=p),f[d]=void 0;let v=b-s,S={i:b,j:v,prev:HI(x),snake:!1};for(;b<t&&v<r&&e[b]===o[v];)b++,v++;if(b>S.i&&(S={i:b,j:v,prev:S,snake:!0}),f[u]=S,b>=t&&v>=r)return f[u]}f[l+i-1]=void 0}}function VI(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,l=a.j;a=a.prev;let f=a.i,i=a.j,s={position:f,lines:o.slice(f,n)},u={position:i,lines:t.slice(i,l)},c;s.lines.length===0&&u.lines.length>0?c="insert":s.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:s,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function HI(e){return e&&!e.snake&&e.prev?e.prev:e}function Gd(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:(0,qd.stringify)(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return qI(t,o),GI(t),t}function qI(e,o){for(let t=1;t<o.length;t++){let r=wl(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,l=a.original.lines,f=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,l.length),a.type==="insert"||a.type==="change")for(let i=0;i<a.revised.lines.length;i++)e.splice(n+i,0,{id:o[t].meta.versionId,meta:o[t].meta,value:f[i],span:1})}}}function GI(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}function Ud(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Qd(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return ra(t,"year");let r=Math.floor(o/2592e3);if(r>0)return ra(r,"month");let a=Math.floor(o/86400);if(a>0)return ra(a,"day");let n=Math.floor(o/3600);if(n>0)return ra(n,"hour");let l=Math.floor(o/60);return l>0?ra(l,"minute"):ra(o,"second")}function ra(e,o){return`${e} ${e===1?o:o+"s"} ago`}var ze=require("react/jsx-runtime"),UI=(0,zd.createStyles)(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function QI(e){let{classes:o}=UI(),t=C(),[r,a]=(0,Ol.useState)(e.history);if((0,Ol.useEffect)(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return(0,ze.jsx)("div",{children:"Loading..."});let n=r.entry?.[0]?.resource;if(!n)return null;let l=Gd(r);return(0,ze.jsx)("div",{className:o.container,children:(0,ze.jsx)("table",{className:o.root,children:(0,ze.jsx)("tbody",{children:l.map((f,i)=>(0,ze.jsxs)("tr",{className:f.span>0?o.startRow:o.normalRow,children:[f.span>0&&(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)("td",{className:o.author,rowSpan:f.span,children:(0,ze.jsx)(lt,{value:f.meta.author,link:!0})}),(0,ze.jsx)("td",{className:o.dateTime,rowSpan:f.span,children:(0,ze.jsx)(Ve,{to:Ud(n,f.meta.versionId),children:Qd(f.meta.lastUpdated)})})]}),(0,ze.jsx)("td",{className:o.lineNumber,children:i+1}),(0,ze.jsx)("td",{className:o.line,children:(0,ze.jsx)("pre",{className:o.pre,children:f.value})})]},"row-"+i))})})})}var Wd=require("@mantine/core"),ui=require("@medplum/core");var wo=require("react/jsx-runtime"),zI=(0,Wd.createStyles)(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function WI(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=(0,ui.stringify)(o,!0).match(/[^\r\n]+/g),a=(0,ui.stringify)(t,!0).match(/[^\r\n]+/g),n=wl(r,a);return(0,wo.jsx)("pre",{style:{color:"gray"},children:n.map((l,f)=>(0,wo.jsx)(XI,{delta:l},"delta"+f))})}function XI(e){let{classes:o}=zI();return(0,wo.jsxs)(wo.Fragment,{children:["...",(0,wo.jsx)("br",{}),e.delta.original.lines.length>0&&(0,wo.jsx)("div",{className:o.removed,children:e.delta.original.lines.join(`
|
|
72
|
-
`)}),
|
|
73
|
-
`)}),"...",(0,wo.jsx)("br",{})]})}var $o=require("@mantine/core"),El=require("@medplum/core");var an=require("react");var co=require("react/jsx-runtime");function JI(e){let{outcome:o}=e,t=C(),r=oe(e.defaultValue),[a,n]=(0,an.useState)(),[l,f]=(0,an.useState)();return(0,an.useEffect)(()=>{if(r)if(f((0,El.deepClone)(r)),e.profileUrl){let i=e.profileUrl;t.requestProfileSchema(e.profileUrl).then(()=>{let s=(0,El.tryGetProfile)(i);s?n(s.name):console.log(`Schema not found for ${i}`)}).catch(console.log)}else{let i=e.schemaName??r?.resourceType;t.requestSchema(i).then(()=>n(i)).catch(console.log)}},[t,r,e.schemaName,e.profileUrl]),!a||!l?(0,co.jsx)("div",{children:"Loading..."}):(0,co.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:i=>{i.preventDefault(),e.onSubmit&&e.onSubmit(l)},children:[(0,co.jsxs)($o.Stack,{mb:"xl",children:[(0,co.jsx)(Je,{title:"Resource Type",htmlFor:"resourceType",outcome:o,children:(0,co.jsx)($o.TextInput,{name:"resourceType",defaultValue:l.resourceType,disabled:!0})}),(0,co.jsx)(Je,{title:"ID",htmlFor:"id",outcome:o,children:(0,co.jsx)($o.TextInput,{name:"id",defaultValue:l.id,disabled:!0})})]}),(0,co.jsx)(ar,{typeName:a,defaultValue:l,outcome:o,onChange:f,profileUrl:e.profileUrl}),(0,co.jsxs)($o.Group,{position:"right",mt:"xl",children:[(0,co.jsx)($o.Button,{type:"submit",children:"OK"}),e.onDelete&&(0,co.jsx)($o.Button,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(l)},children:"Delete"})]})]})}var Xd=require("@mantine/core"),Ll=require("@medplum/core");var Nl=require("react");var Ne=require("react/jsx-runtime");function $I(e){let o=C(),[t,r]=(0,Nl.useState)(e.history);return(0,Nl.useEffect)(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?(0,Ne.jsxs)(Xd.Table,{withBorder:!0,withColumnBorders:!0,children:[(0,Ne.jsx)("thead",{children:(0,Ne.jsxs)("tr",{children:[(0,Ne.jsx)("th",{children:"Author"}),(0,Ne.jsx)("th",{children:"Date"}),(0,Ne.jsx)("th",{children:"Version"})]})}),(0,Ne.jsx)("tbody",{children:t.entry?.map((a,n)=>(0,Ne.jsx)(_I,{entry:a},"entry-"+n))})]}):(0,Ne.jsx)("div",{children:"Loading..."})}function _I(e){let{response:o,resource:t}=e.entry;return t?(0,Ne.jsxs)("tr",{children:[(0,Ne.jsx)("td",{children:(0,Ne.jsx)(lt,{value:t.meta?.author,link:!0})}),(0,Ne.jsx)("td",{children:(0,Ll.formatDateTime)(t.meta?.lastUpdated)}),(0,Ne.jsx)("td",{children:(0,Ne.jsx)(Ve,{to:KI(t),children:t.meta?.versionId})})]}):(0,Ne.jsx)("tr",{children:(0,Ne.jsx)("td",{colSpan:3,children:(0,Ll.normalizeErrorString)(o?.outcome)})})}function KI(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}var Ht=require("@mantine/core"),Vl=require("@medplum/core");var nn=require("react");var ye=require("react/jsx-runtime"),ZI=(0,Ht.createStyles)(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function YI(e){let{classes:o}=ZI(),t=oe(e.schedule),r=oe(e.questionnaire),[a,n]=(0,nn.useState)(ol()),[l,f]=(0,nn.useState)(),[i,s]=(0,nn.useState)(),[u,c]=(0,nn.useState)(),[d]=Xl("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",(0,Vl.isReference)(e.schedule)?e.schedule.reference:(0,Vl.getReferenceString)(e.schedule)],["start","gt"+jI(a)],["start","lt"+eg(a)]]));if(!t||!d||!r)return null;let m=t.actor?.[0];return(0,ye.jsxs)("div",{className:o.container,"data-testid":"scheduler",children:[(0,ye.jsxs)("div",{className:o.info,children:[m&&(0,ye.jsx)(He,{value:m,size:"xl"}),m&&(0,ye.jsx)(Ht.Text,{size:"xl",weight:500,children:(0,ye.jsx)(Do,{value:m})}),(0,ye.jsx)("p",{children:"1 hour"}),l&&(0,ye.jsx)("p",{children:l.toLocaleDateString()}),i&&(0,ye.jsx)("p",{children:Jd(new Date(i.start))})]}),(0,ye.jsxs)("div",{className:o.selection,children:[!l&&(0,ye.jsxs)("div",{children:[(0,ye.jsx)("h3",{children:"Select date"}),(0,ye.jsx)(fs,{slots:d,onChangeMonth:n,onClick:f})]}),l&&!i&&(0,ye.jsxs)("div",{children:[(0,ye.jsx)("h3",{children:"Select time"}),(0,ye.jsx)(Ht.Stack,{children:d.map(p=>{let x=new Date(p.start);return x.getTime()>l.getTime()&&x.getTime()<l.getTime()+24*3600*1e3&&(0,ye.jsx)("div",{children:(0,ye.jsx)(Ht.Button,{variant:"outline",style:{width:150},onClick:()=>s(p),children:Jd(x)})},p.id)})})]}),l&&i&&!u&&(0,ye.jsx)(ii,{questionnaire:r,submitButtonText:"Next",onSubmit:c}),l&&i&&u&&(0,ye.jsxs)("div",{children:[(0,ye.jsx)("h3",{children:"You're all set!"}),(0,ye.jsx)("p",{children:"Check your email for a calendar invite."})]})]})]})}function jI(e){return $d(e.getTime())}function eg(e){return $d(e.getTime()+31*24*60*60*1e3)}function $d(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function Jd(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}var ln=require("@medplum/core");var _d=require("react/jsx-runtime");function og(e){return(0,_d.jsx)(ct,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[(0,ln.createReference)(o)],subject:o.subject,sender:(0,ln.createReference)(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[(0,ln.createReference)(o)],subject:o.subject,operator:(0,ln.createReference)(t),issued:new Date().toISOString(),content:r})})}var Kd=require("@mantine/core"),Zd=require("@mantine/notifications"),Yd=require("@medplum/core");var jd=require("react/jsx-runtime");function tg(e){let o=C(),{client:t,patient:r,encounter:a,children:n,...l}=e;function f(){o.createResource({resourceType:"SmartAppLaunch",patient:r,encounter:a}).then(i=>{let s=new URL(t.launchUri);s.searchParams.set("iss",o.getBaseUrl()+"fhir/R4"),s.searchParams.set("launch",i.id),window.location.assign(s.toString())}).catch(i=>(0,Zd.showNotification)({color:"red",message:(0,Yd.normalizeErrorString)(i),autoClose:!1}))}return(0,jd.jsx)(Kd.Anchor,{onClick:()=>f(),...l,children:n})}var am=require("@medplum/core");var sn=require("react");var We=require("@mantine/core"),em=require("@medplum/core"),om=require("react");var mo=require("react/jsx-runtime");function Hl(e){let o=C(),[t,r]=(0,om.useState)();return(0,mo.jsxs)(U,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r((0,em.normalizeOperationOutcome)(n))}},children:[(0,mo.jsxs)(We.Center,{sx:{flexDirection:"column"},children:[(0,mo.jsx)(gt,{size:32}),(0,mo.jsx)(We.Title,{children:"Create project"})]}),(0,mo.jsxs)(We.Stack,{spacing:"xl",children:[(0,mo.jsx)(We.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Z(t,"firstName")}),(0,mo.jsxs)(We.Text,{color:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,mo.jsx)(We.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,mo.jsx)(We.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]})]}),(0,mo.jsx)(We.Group,{position:"right",mt:"xl",noWrap:!0,children:(0,mo.jsx)(We.Button,{type:"submit",children:"Create project"})})]})}var ie=require("@mantine/core"),mi=require("@medplum/core");var Ul=require("react");var qt=require("react");function fn(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}var tm=require("react/jsx-runtime");function ql(e){let o=C(),{googleClientId:t,handleGoogleCredential:r}=e,a=(0,qt.useRef)(null),[n,l]=(0,qt.useState)(typeof google<"u"),[f,i]=(0,qt.useState)(!1),[s,u]=(0,qt.useState)(!1);return(0,qt.useEffect)(()=>{if(typeof google>"u"){fn("https://accounts.google.com/gsi/client",()=>l(!0));return}f||(google.accounts.id.initialize({client_id:t,callback:r}),i(!0)),a.current&&!s&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,f,n,a,s,r]),t?(0,tm.jsx)("div",{ref:a}):null}function Gl(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"__GOOGLE_CLIENT_ID__"}}function ci(e){typeof grecaptcha>"u"&&fn("https://www.google.com/recaptcha/api.js?render="+e)}function di(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}var pe=require("react/jsx-runtime");function rm(e){let o=Gl(e.googleClientId),t=e.recaptchaSiteKey,r=C(),[a,n]=(0,Ul.useState)(),l=Ta(a,void 0);return(0,Ul.useEffect)(()=>{t&&ci(t)},[t]),(0,pe.jsxs)(U,{style:{maxWidth:400},onSubmit:async f=>{try{let i="";t&&(i=await di(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:f.firstName,lastName:f.lastName,email:f.email,password:f.password,remember:f.remember==="true",recaptchaSiteKey:t,recaptchaToken:i}))}catch(i){n((0,mi.normalizeOperationOutcome)(i))}},children:[(0,pe.jsx)(ie.Center,{sx:{flexDirection:"column"},children:e.children}),(0,pe.jsx)(pr,{issues:l}),o&&(0,pe.jsxs)(pe.Fragment,{children:[(0,pe.jsx)(ie.Group,{position:"center",p:"xl",style:{height:70},children:(0,pe.jsx)(ql,{googleClientId:o,handleGoogleCredential:async f=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:f.clientId,googleCredential:f.credential,createUser:!0}))}catch(i){n((0,mi.normalizeOperationOutcome)(i))}}})}),(0,pe.jsx)(ie.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),(0,pe.jsxs)(ie.Stack,{spacing:"xl",children:[(0,pe.jsx)(ie.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Z(a,"firstName")}),(0,pe.jsx)(ie.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Z(a,"lastName")}),(0,pe.jsx)(ie.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Z(a,"email")}),(0,pe.jsx)(ie.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Z(a,"password")}),(0,pe.jsxs)(ie.Text,{color:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,pe.jsx)(ie.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,pe.jsx)(ie.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]}),(0,pe.jsxs)(ie.Text,{color:"dimmed",size:"xs",children:["This site is protected by reCAPTCHA and the Google"," ",(0,pe.jsx)(ie.Anchor,{href:"https://policies.google.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,pe.jsx)(ie.Anchor,{href:"https://policies.google.com/terms",children:"Terms\xA0of\xA0Service"})," apply."]})]}),(0,pe.jsxs)(ie.Group,{position:"apart",mt:"xl",noWrap:!0,children:[(0,pe.jsx)(ie.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),(0,pe.jsx)(ie.Button,{type:"submit",children:"Create account"})]})]})}var aa=require("react/jsx-runtime");function rg(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:l}=e,f=C(),[i,s]=(0,sn.useState)(),[u,c]=(0,sn.useState)();(0,sn.useEffect)(()=>{o==="patient"&&i&&f.startNewPatient({login:i,projectId:t}).then(m=>f.processCode(m.code)).then(()=>l()).catch(m=>c((0,am.normalizeOperationOutcome)(m)))},[f,o,t,i,l]);function d(m){m.code?f.processCode(m.code).then(()=>l()).catch(console.log):m.login&&s(m.login)}return(0,aa.jsxs)(Xa,{width:450,children:[u&&(0,aa.jsx)("pre",{children:JSON.stringify(u,null,2)}),!i&&(0,aa.jsx)(rm,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:d,children:e.children}),i&&o==="project"&&(0,aa.jsx)(Hl,{login:i,handleAuthResponse:d})]})}var pi=require("@mantine/notifications"),xi=require("@medplum/core");var _o=require("react");var ve=require("@mantine/core"),nm=require("@medplum/core");var Gt=require("react");var de=require("react/jsx-runtime");function lm(e){let[o,t]=(0,Gt.useState)();return o?(0,de.jsx)(ng,{email:o,...e}):(0,de.jsx)(ag,{setEmail:t,...e})}function ag(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...l}=e,f=C(),i=!e.disableGoogleAuth&&Gl(e.googleClientId),s=(0,Gt.useCallback)(async d=>{if(!d.authorizeUrl)return!1;let m=JSON.stringify({...await f.ensureCodeChallenge(l),domain:d.domain}),p=new URL(d.authorizeUrl);return p.searchParams.set("state",m),window.location.assign(p.toString()),!0},[f,l]),u=(0,Gt.useCallback)(async d=>{let m=await f.post("auth/method",{email:d.email});await s(m)||o(d.email)},[f,s,o]),c=(0,Gt.useCallback)(async d=>{let m=await f.startGoogleLogin({...l,googleCredential:d.credential});await s(m)||r(m)},[f,l,s,r]);return(0,de.jsxs)(U,{style:{maxWidth:400},onSubmit:u,children:[(0,de.jsx)(ve.Center,{sx:{flexDirection:"column"},children:a}),i&&(0,de.jsxs)(de.Fragment,{children:[(0,de.jsx)(ve.Group,{position:"center",p:"xl",style:{height:70},children:(0,de.jsx)(ql,{googleClientId:i,handleGoogleCredential:c})}),!n&&(0,de.jsx)(ve.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),!n&&(0,de.jsx)(ve.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),(0,de.jsxs)(ve.Group,{position:"apart",mt:"xl",spacing:0,noWrap:!0,children:[(0,de.jsx)("div",{children:t&&(0,de.jsx)(ve.Anchor,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs",children:"Register"})}),!n&&(0,de.jsx)(ve.Button,{type:"submit",children:"Next"})]})]})}function ng(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=C(),[l,f]=(0,Gt.useState)(),i=Ta(l,void 0),s=(0,Gt.useCallback)(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>f((0,nm.normalizeOperationOutcome)(c)))},[n,a,t]);return(0,de.jsxs)(U,{style:{maxWidth:400},onSubmit:s,children:[(0,de.jsx)(ve.Center,{sx:{flexDirection:"column"},children:r}),(0,de.jsx)(pr,{issues:i}),(0,de.jsx)(ve.Stack,{spacing:"xl",children:(0,de.jsx)(ve.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:Z(l,"password")})}),(0,de.jsxs)(ve.Group,{position:"apart",mt:"xl",spacing:0,noWrap:!0,children:[o&&(0,de.jsx)(ve.Anchor,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs",children:"Forgot password"}),(0,de.jsx)(ve.Checkbox,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),(0,de.jsx)(ve.Button,{type:"submit",children:"Sign in"})]})]})}var je=require("@mantine/core"),fm=require("@medplum/core"),sm=require("react");var po=require("react/jsx-runtime");function im(e){let o=C(),[t,r]=(0,sm.useState)();return(0,po.jsxs)(je.Stack,{children:[(0,po.jsxs)(je.Center,{sx:{flexDirection:"column"},children:[(0,po.jsx)(gt,{size:32}),(0,po.jsx)(je.Title,{order:3,children:"Choose profile"})]}),(0,po.jsx)(pr,{outcome:t}),e.memberships.map(a=>(0,po.jsx)(je.UnstyledButton,{onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r((0,fm.normalizeOperationOutcome)(n)))},children:(0,po.jsxs)(je.Group,{children:[(0,po.jsx)(je.Avatar,{radius:"xl"}),(0,po.jsxs)("div",{style:{flex:1},children:[(0,po.jsx)(je.Text,{size:"sm",weight:500,children:a.profile?.display}),(0,po.jsx)(je.Text,{color:"dimmed",size:"xs",children:a.project?.display})]})]})},a.id))]})}var xo=require("@mantine/core");var Oo=require("react/jsx-runtime");function um(e){let o=C();return(0,Oo.jsx)(U,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)},children:(0,Oo.jsxs)(xo.Stack,{children:[(0,Oo.jsxs)(xo.Center,{sx:{flexDirection:"column"},children:[(0,Oo.jsx)(gt,{size:32}),(0,Oo.jsx)(xo.Title,{children:"Choose scope"})]}),(0,Oo.jsx)(xo.Stack,{children:(e.scope??"openid").split(" ").map(t=>(0,Oo.jsx)(xo.Checkbox,{id:t,name:t,label:t,defaultChecked:!0},t))}),(0,Oo.jsx)(xo.Group,{position:"right",mt:"xl",children:(0,Oo.jsx)(xo.Button,{type:"submit",children:"Set scope"})})]})})}var eo=require("@mantine/core"),cm=require("@medplum/core");var dm=require("react");var Io=require("react/jsx-runtime");function mm(e){let o=C(),[t,r]=(0,dm.useState)();return(0,Io.jsx)(U,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r((0,cm.normalizeErrorString)(n)))},children:(0,Io.jsxs)(eo.Stack,{children:[(0,Io.jsxs)(eo.Center,{sx:{flexDirection:"column"},children:[(0,Io.jsx)(gt,{size:32}),(0,Io.jsx)(eo.Title,{children:"Enter MFA code"})]}),t&&(0,Io.jsx)(eo.Alert,{icon:(0,Io.jsx)(Xt,{size:16}),title:"Error",color:"red",children:t}),(0,Io.jsx)(eo.Stack,{children:(0,Io.jsx)(eo.TextInput,{name:"token",label:"MFA code",required:!0})}),(0,Io.jsx)(eo.Group,{position:"right",mt:"xl",children:(0,Io.jsx)(eo.Button,{type:"submit",children:"Submit code"})})]})})}var Ut=require("react/jsx-runtime");function lg(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:l,...f}=e,i=C(),[s,u]=(0,_o.useState)(),[c,d]=(0,_o.useState)(!1),[m,p]=(0,_o.useState)(),x=(0,_o.useCallback)(S=>{l?l(S):i.processCode(S).then(()=>{r&&r()}).catch(R=>(0,pi.showNotification)({color:"red",message:(0,xi.normalizeErrorString)(R)}))},[i,l,r]),b=(0,_o.useCallback)(S=>{d(!!S.mfaRequired),S.login&&u(S.login),S.memberships&&p(S.memberships),S.code&&(t?p(void 0):x(S.code))},[t,x]),v=(0,_o.useCallback)(S=>{x(S.code)},[x]);return(0,_o.useEffect)(()=>{o&&!s&&i.get("auth/login/"+o).then(b).catch(S=>(0,pi.showNotification)({color:"red",message:(0,xi.normalizeErrorString)(S)}))},[i,o,s,b]),(0,Ut.jsx)(Xa,{width:450,children:s?c?(0,Ut.jsx)(mm,{login:s,handleAuthResponse:b}):m?(0,Ut.jsx)(im,{login:s,memberships:m,handleAuthResponse:b}):e.projectId==="new"?(0,Ut.jsx)(Hl,{login:s,handleAuthResponse:b}):e.chooseScopes?(0,Ut.jsx)(um,{login:s,scope:e.scope,handleAuthResponse:v}):(0,Ut.jsx)("div",{children:"Success"}):(0,Ut.jsx)(lm,{onForgotPassword:a,onRegister:n,handleAuthResponse:b,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...f,children:e.children})})}
|
|
71
|
+
}`.replace(/\s+/g," ");return(await medplum.graphql(query)).data.StructureDefinitionList[0]}function shouldFetchResourceType(targetType){return targetType.type==="profile"&&!targetType?.error&&(0,import_core58.isEmpty)(targetType.resourceType)}var import_core60=require("@mantine/core"),import_core61=require("@medplum/core");var import_react37=require("react");var ResourceArrayInput_default={indented:"ResourceArrayInput_indented"};var import_core59=require("@medplum/core");function isDiscriminatorComponentMatch(typedValue,discriminator,slice){for(let elementList of[slice.elements,slice.typeSchema?.elements]){let nestedProp;if((0,import_core59.isPopulated)(elementList)){let ed=(0,import_core59.getElementDefinitionFromElements)(elementList,discriminator.path);ed&&(nestedProp=(0,import_core59.getTypedPropertyValueWithSchema)(typedValue.value,discriminator.path,ed))}if(nestedProp)return(0,import_core59.arrayify)(nestedProp)?.some(v2=>(0,import_core59.matchDiscriminant)(v2,discriminator,slice,elementList))??!1}return!1}function getValueSliceName(value,slices,discriminators){if(value)for(let slice of slices){let typedValue={value,type:slice.typeSchema?.name??slice.type[0].code};if(discriminators.every(d2=>isDiscriminatorComponentMatch(typedValue,d2,slice)))return slice.name}}function assignValuesIntoSlices(values,slices,slicing){if(!slicing||slicing.slices.length===0)return[values];let slicedValues=new Array(slices.length+1);for(let i=0;i<slicedValues.length;i++)slicedValues[i]=[];for(let value of values){let sliceName=getValueSliceName(value,slices,slicing.discriminator),sliceIndex=sliceName?slices.findIndex(slice=>slice.name===sliceName):-1;sliceIndex===-1&&(sliceIndex=slices.length),slicedValues[sliceIndex].push(value)}for(let i=0;i<slices.length;i++)slicedValues[i].length===0&&slicedValues[i].push(void 0);return slicedValues}function isSupportedSliceDefinition(slice){return slice.type!==void 0&&slice.type.length>0}var import_jsx_runtime56=require("react/jsx-runtime");function ResourceArrayInput(props){let{property}=props,medplum=s(),[loading,setLoading]=(0,import_react37.useState)(!0),[slices,setSlices]=(0,import_react37.useState)([]),[defaultValue2]=(0,import_react37.useState)(()=>Array.isArray(props.defaultValue)?props.defaultValue:[]),[slicedValues,setSlicedValues]=(0,import_react37.useState)([[]]),propertyTypeCode=property.type[0]?.code;(0,import_react37.useEffect)(()=>{if(!property.slicing){let emptySlices=[];setSlices(emptySlices);let results=assignValuesIntoSlices(defaultValue2,emptySlices,property.slicing);setSlicedValues(results),setLoading(!1);return}let supportedSlices=[],profileUrls=[],promises=[];for(let slice of property.slicing.slices){if(!isSupportedSliceDefinition(slice))continue;let sliceType=slice.type[0],profileUrl;(0,import_core61.isEmpty)(slice.elements)&&sliceType.profile&&(profileUrl=sliceType.profile[0]),supportedSlices.push(slice),profileUrls.push(profileUrl),profileUrl?promises.push(medplum.requestProfileSchema(profileUrl)):promises.push(Promise.resolve())}Promise.all(promises).then(()=>{for(let i=0;i<supportedSlices.length;i++){let slice=supportedSlices[i],profileUrl=profileUrls[i];if(profileUrl){let typeSchema=(0,import_core61.tryGetProfile)(profileUrl);slice.typeSchema=typeSchema}}setSlices(supportedSlices);let results=assignValuesIntoSlices(defaultValue2,supportedSlices,property.slicing);setSlicedValues(results),setLoading(!1)}).catch(reason=>{console.error(reason),setLoading(!1)})},[medplum,property.slicing,propertyTypeCode,defaultValue2]);function setValuesWrapper(newValues,sliceIndex){let newSlicedValues=[...slicedValues];if(newSlicedValues[sliceIndex]=newValues,setSlicedValues(newSlicedValues),props.onChange){let cleaned=newSlicedValues.flat().filter(val=>val!==void 0);props.onChange(cleaned)}}if(loading)return(0,import_jsx_runtime56.jsx)("div",{children:"Loading..."});let nonSliceIndex=slices.length,nonSliceValues=slicedValues[nonSliceIndex],showNonSliceValues=!(props.hideNonSliceValues??(propertyTypeCode==="Extension"&&slices.length>0)),propertyDisplayName=(0,import_core61.getPathDisplayName)(property.path);return(0,import_jsx_runtime56.jsxs)(import_core60.Stack,{className:props.indent?ResourceArrayInput_default.indented:void 0,children:[slices.map((slice,sliceIndex)=>(0,import_jsx_runtime56.jsx)(SliceInput,{slice,property,defaultValue:slicedValues[sliceIndex],onChange:newValue=>{setValuesWrapper(newValue,sliceIndex)},testId:`slice-${slice.name}`},slice.name)),showNonSliceValues&&nonSliceValues.map((value,valueIndex)=>(0,import_jsx_runtime56.jsxs)(import_core60.Group,{wrap:"nowrap",style:{flexGrow:1},children:[(0,import_jsx_runtime56.jsx)("div",{style:{flexGrow:1},children:(0,import_jsx_runtime56.jsx)(ResourcePropertyInput,{arrayElement:!0,property:props.property,name:props.name+"."+valueIndex,defaultValue:value,onChange:newValue=>{let newNonSliceValues=[...nonSliceValues];newNonSliceValues[valueIndex]=newValue,setValuesWrapper(newNonSliceValues,nonSliceIndex)},defaultPropertyType:void 0,outcome:props.outcome})}),(0,import_jsx_runtime56.jsx)(RemoveButton,{propertyDisplayName,testId:`nonsliced-remove-${valueIndex}`,onClick:e=>{killEvent(e);let newNonSliceValues=[...nonSliceValues];newNonSliceValues.splice(valueIndex,1),setValuesWrapper(newNonSliceValues,nonSliceIndex)}})]},`${valueIndex}-${nonSliceValues.length}`)),showNonSliceValues&&slicedValues.flat().length<property.max&&(0,import_jsx_runtime56.jsx)(import_core60.Group,{wrap:"nowrap",style:{justifyContent:"flex-start"},children:(0,import_jsx_runtime56.jsx)(AddButton,{propertyDisplayName,onClick:e=>{killEvent(e);let newNonSliceValues=[...nonSliceValues];newNonSliceValues.push(void 0),setValuesWrapper(newNonSliceValues,nonSliceIndex)},testId:"nonsliced-add"})})]})}function SliceInput(props){let{slice,property}=props,[values,setValues]=(0,import_react37.useState)(()=>props.defaultValue.map(v2=>v2??{}));function setValuesWrapper(newValues){setValues(newValues),props.onChange&&props.onChange(newValues)}let required=slice.min>0,indentedStack=(0,import_core61.isEmpty)(slice.elements),propertyDisplayName=(0,import_core61.getPropertyDisplayName)(slice.name);return(0,import_jsx_runtime56.jsx)(FormSection,{title:propertyDisplayName,description:slice.definition,withAsterisk:required,fhirPath:`${property.path}:${slice.name}`,testId:props.testId,children:(0,import_jsx_runtime56.jsxs)(import_core60.Stack,{className:indentedStack?ResourceArrayInput_default.indented:void 0,children:[values.map((value,valueIndex)=>(0,import_jsx_runtime56.jsxs)(import_core60.Group,{wrap:"nowrap",children:[(0,import_jsx_runtime56.jsx)("div",{style:{flexGrow:1},children:(0,import_jsx_runtime56.jsx)(import_core60.Stack,{children:(0,import_core61.isEmpty)(slice.elements)?(0,import_jsx_runtime56.jsx)(ElementDefinitionTypeInput,{elementDefinitionType:slice.type[0],name:slice.name,defaultValue:value,onChange:newValue=>{let newValues=[...values];newValues[valueIndex]=newValue,setValuesWrapper(newValues)},outcome:void 0,min:slice.min,max:slice.max,binding:void 0,path:slice.path}):(0,import_jsx_runtime56.jsx)(ElementsInput,{type:slice.type[0].code,elements:slice.elements,defaultValue:value,outcome:props.outcome,onChange:newValue=>{let newValues=[...values];newValues[valueIndex]=newValue,setValuesWrapper(newValues)},testId:props.testId&&`${props.testId}-elements-${valueIndex}`})})}),values.length>slice.min&&(0,import_jsx_runtime56.jsx)(RemoveButton,{propertyDisplayName,testId:props.testId&&`${props.testId}-remove-${valueIndex}`,onClick:e=>{killEvent(e);let newValues=[...values];newValues.splice(valueIndex,1),setValuesWrapper(newValues)}})]},`${valueIndex}-${values.length}`)),values.length<slice.max&&(0,import_jsx_runtime56.jsx)(import_core60.Group,{wrap:"nowrap",style:{justifyContent:"flex-start"},children:(0,import_jsx_runtime56.jsx)(AddButton,{propertyDisplayName,onClick:e=>{killEvent(e);let newValues=[...values,void 0];setValuesWrapper(newValues)},testId:props.testId&&`${props.testId}-add`})})]})})}function AddButton({propertyDisplayName,onClick,testId}){let text=propertyDisplayName?`Add ${propertyDisplayName}`:"Add";return propertyDisplayName?(0,import_jsx_runtime56.jsx)(import_core60.Button,{title:text,size:"sm",color:"green.6",variant:"subtle","data-testid":testId,leftSection:(0,import_jsx_runtime56.jsx)(IconCirclePlus,{size:"1.25rem"}),onClick,children:text}):(0,import_jsx_runtime56.jsx)(import_core60.ActionIcon,{title:text,color:"green.6","data-testid":testId,onClick,children:(0,import_jsx_runtime56.jsx)(IconCirclePlus,{size:"1.25rem"})})}function RemoveButton({propertyDisplayName,onClick,testId}){return(0,import_jsx_runtime56.jsx)(import_core60.ActionIcon,{title:propertyDisplayName?`Remove ${propertyDisplayName}`:"Remove",color:"red.5","data-testid":testId,onClick,children:(0,import_jsx_runtime56.jsx)(IconCircleMinus,{size:"1.25rem"})})}var import_core62=require("@mantine/core"),import_hooks=require("@mantine/hooks"),import_notifications4=require("@mantine/notifications");var import_react38=require("react"),import_jsx_runtime57=require("react/jsx-runtime");function SensitiveTextarea(props){let[revealed,setRevealed]=(0,import_react38.useState)(!1),clipboard=(0,import_hooks.useClipboard)(),ref=(0,import_react38.useRef)(null),styles={...props.styles};return revealed||(styles.input||(styles.input={}),styles.input.WebkitTextSecurity="disc"),(0,import_jsx_runtime57.jsxs)(import_core62.Flex,{gap:"xs",children:[(0,import_jsx_runtime57.jsx)(import_core62.Textarea,{...props,styles:{...styles,root:{...styles.root??{},flexGrow:1}},ref,autosize:!0,minRows:1,onFocus:()=>setRevealed(!0),onBlur:()=>setRevealed(!1)}),(0,import_jsx_runtime57.jsx)(import_core62.ActionIcon,{title:"Copy secret",onClick:()=>{clipboard.copy(ref.current?.value),(0,import_notifications4.showNotification)({color:"green",message:"Copied"})},children:(0,import_jsx_runtime57.jsx)(IconCopy,{})})]})}var import_core63=require("@mantine/core"),import_core64=require("@medplum/core"),import_react39=require("react");var import_jsx_runtime58=require("react/jsx-runtime"),daysOfWeek=["sun","mon","tue","wed","thu","fri","sat"];function TimingInput(props){let[value,setValue]=(0,import_react39.useState)(props.defaultValue),[open,setOpen]=(0,import_react39.useState)(!1),valueRef=(0,import_react39.useRef)();return valueRef.current=value,(0,import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment,{children:[(0,import_jsx_runtime58.jsxs)(import_core63.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime58.jsx)("span",{children:(0,import_core64.formatTiming)(valueRef.current)||"No repeat"}),(0,import_jsx_runtime58.jsx)(import_core63.Button,{onClick:()=>setOpen(!0),children:"Edit"})]}),(0,import_jsx_runtime58.jsx)(TimingEditorDialog,{visible:open,defaultValue:valueRef.current,onOk:newValue=>{props.onChange&&props.onChange(newValue),setValue(newValue),setOpen(!1)},onCancel:()=>setOpen(!1)})]})}var defaultValue={repeat:{period:1,periodUnit:"d"}};function TimingEditorDialog(props){let[value,setValue]=(0,import_react39.useState)(props.defaultValue||defaultValue),valueRef=(0,import_react39.useRef)();valueRef.current=value;function setStart(newStart){setValue({...valueRef.current,event:[newStart]})}function setRepeat(repeat){setValue({...valueRef.current,repeat})}function setPeriod(newPeriod){setRepeat({...valueRef.current?.repeat,period:newPeriod})}function setPeriodUnit(newPeriodUnit){setRepeat({...valueRef.current?.repeat,periodUnit:newPeriodUnit})}function setDaysOfWeek(newDaysOfWeek){setRepeat({...valueRef.current?.repeat,dayOfWeek:newDaysOfWeek})}return(0,import_jsx_runtime58.jsx)(import_core63.Modal,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:props.visible,onClose:()=>props.onCancel(),children:(0,import_jsx_runtime58.jsxs)(import_core63.Stack,{children:[(0,import_jsx_runtime58.jsx)(FormSection,{title:"Starts on",htmlFor:"timing-dialog-start",children:(0,import_jsx_runtime58.jsx)(DateTimeInput,{name:"timing-dialog-start",onChange:newValue=>setStart(newValue)})}),(0,import_jsx_runtime58.jsx)(import_core63.Switch,{label:"Repeat",checked:!!value.repeat,onChange:e=>setRepeat(e.currentTarget.checked?defaultValue.repeat:void 0)}),value.repeat&&(0,import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment,{children:[(0,import_jsx_runtime58.jsx)(FormSection,{title:"Repeat every",htmlFor:"timing-dialog-period",children:(0,import_jsx_runtime58.jsxs)(import_core63.Group,{gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime58.jsx)(import_core63.TextInput,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:value.repeat.period||1,onChange:e=>setPeriod(parseInt(e.currentTarget.value,10)||1)}),(0,import_jsx_runtime58.jsx)(import_core63.NativeSelect,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:value.repeat.periodUnit,onChange:e=>setPeriodUnit(e.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]})]})}),value.repeat.periodUnit==="wk"&&(0,import_jsx_runtime58.jsx)(FormSection,{title:"Repeat on",children:(0,import_jsx_runtime58.jsx)(import_core63.Chip.Group,{multiple:!0,onChange:setDaysOfWeek,children:(0,import_jsx_runtime58.jsx)(import_core63.Group,{justify:"space-between",mt:"md",gap:"xs",children:daysOfWeek.map(day=>(0,import_jsx_runtime58.jsx)(import_core63.Chip,{value:day,size:"xs",radius:"xl",children:day.charAt(0).toUpperCase()},day))})})})]}),(0,import_jsx_runtime58.jsx)(import_core63.Group,{justify:"flex-end",children:(0,import_jsx_runtime58.jsx)(import_core63.Button,{onClick:()=>props.onOk(value),children:"OK"})})]})})}var import_jsx_runtime59=require("react/jsx-runtime");function ResourcePropertyInput(props){let{property,name,defaultValue:defaultValue2,onChange}=props,defaultPropertyType=props.defaultPropertyType&&props.defaultPropertyType!=="undefined"?props.defaultPropertyType:property.type[0].code,propertyTypes=property.type;if((property.isArray||property.max>1)&&!props.arrayElement){if(defaultPropertyType===import_core66.PropertyType.Attachment)return(0,import_jsx_runtime59.jsx)(AttachmentArrayInput,{name,defaultValue:defaultValue2,onChange});let indent=propertyTypes[0]?.code!==import_core66.PropertyType.Extension;return(0,import_jsx_runtime59.jsx)(ResourceArrayInput,{property,name,defaultValue:defaultValue2,indent,onChange,outcome:props.outcome})}return propertyTypes.length>1?(0,import_jsx_runtime59.jsx)(ElementDefinitionInputSelector,{elementDefinitionTypes:propertyTypes,...props}):(0,import_jsx_runtime59.jsx)(ElementDefinitionTypeInput,{name,defaultValue:defaultValue2,onChange:newValue=>{if(props.onChange){let newPropName=props.name.replace("[x]",(0,import_core66.capitalize)(propertyTypes[0].code));props.onChange(newValue,newPropName)}},outcome:props.outcome,elementDefinitionType:propertyTypes[0],min:property.min,max:property.min,binding:property.binding,path:property.path})}function ElementDefinitionInputSelector(props){let propertyTypes=props.elementDefinitionTypes,initialPropertyType;props.defaultPropertyType&&(initialPropertyType=propertyTypes.find(t=>t.code===props.defaultPropertyType)),initialPropertyType||(initialPropertyType=propertyTypes[0]);let[selectedType,setSelectedType]=(0,import_react40.useState)(initialPropertyType);return(0,import_jsx_runtime59.jsxs)(import_core65.Group,{gap:"xs",grow:!0,wrap:"nowrap",align:"flex-start",children:[(0,import_jsx_runtime59.jsx)(import_core65.NativeSelect,{style:{width:"200px"},defaultValue:selectedType.code,onChange:e=>{setSelectedType(propertyTypes.find(type=>type.code===e.currentTarget.value))},data:propertyTypes.map(type=>({value:type.code,label:type.code}))}),(0,import_jsx_runtime59.jsx)(ElementDefinitionTypeInput,{name:props.name,defaultValue:props.defaultValue,outcome:props.outcome,elementDefinitionType:selectedType,onChange:newValue=>{props.onChange&&props.onChange(newValue,props.name.replace("[x]",(0,import_core66.capitalize)(selectedType.code)))},min:props.property.min,max:props.property.max,binding:props.property.binding,path:props.property.path})]})}function ElementDefinitionTypeInput(props){let{name,defaultValue:defaultValue2,onChange,outcome,binding,path}=props,required=props.min!==void 0&&props.min>0,propertyType=props.elementDefinitionType.code;if(!propertyType)return(0,import_jsx_runtime59.jsx)("div",{children:"Property type not specified "});let properties={name,defaultValue:defaultValue2,onChange,outcome,path};switch(propertyType){case import_core66.PropertyType.SystemString:case import_core66.PropertyType.canonical:case import_core66.PropertyType.string:case import_core66.PropertyType.time:case import_core66.PropertyType.uri:case import_core66.PropertyType.url:return props.path==="Project.secret.value[x]"?(0,import_jsx_runtime59.jsx)(SensitiveTextarea,{id:name,name,"data-testid":name,defaultValue:defaultValue2,required,onChange:e=>{props.onChange&&props.onChange(e.currentTarget.value)},error:getErrorsForInput(props.outcome,name)}):(0,import_jsx_runtime59.jsx)(import_core65.TextInput,{id:name,name,"data-testid":name,defaultValue:defaultValue2,required,onChange:e=>{onChange&&onChange(e.currentTarget.value)},error:getErrorsForInput(outcome,name)});case import_core66.PropertyType.date:return(0,import_jsx_runtime59.jsx)(import_core65.TextInput,{type:"date",id:name,name,"data-testid":name,defaultValue:defaultValue2,required,onChange:e=>{onChange&&onChange(e.currentTarget.value)},error:getErrorsForInput(outcome,name)});case import_core66.PropertyType.dateTime:case import_core66.PropertyType.instant:return(0,import_jsx_runtime59.jsx)(DateTimeInput,{name,defaultValue:defaultValue2,onChange,outcome});case import_core66.PropertyType.decimal:case import_core66.PropertyType.integer:case import_core66.PropertyType.positiveInt:case import_core66.PropertyType.unsignedInt:return(0,import_jsx_runtime59.jsx)(import_core65.TextInput,{type:"number",step:propertyType===import_core66.PropertyType.decimal?"any":"1",id:name,name,"data-testid":name,defaultValue:defaultValue2,required,onChange:e=>{onChange&&onChange(e.currentTarget.valueAsNumber)}});case import_core66.PropertyType.code:return(0,import_jsx_runtime59.jsx)(CodeInput,{...properties,binding:binding?.valueSet});case import_core66.PropertyType.boolean:return(0,import_jsx_runtime59.jsx)(import_core65.Checkbox,{id:name,name,"data-testid":name,defaultChecked:!!defaultValue2,onChange:e=>{onChange&&onChange(e.currentTarget.checked)}});case import_core66.PropertyType.base64Binary:case import_core66.PropertyType.markdown:return(0,import_jsx_runtime59.jsx)(import_core65.Textarea,{id:name,spellCheck:propertyType!==import_core66.PropertyType.base64Binary,name,"data-testid":name,defaultValue:defaultValue2,required,onChange:e=>{onChange&&onChange(e.currentTarget.value)}});case import_core66.PropertyType.Address:return(0,import_jsx_runtime59.jsx)(AddressInput,{...properties});case import_core66.PropertyType.Annotation:return(0,import_jsx_runtime59.jsx)(AnnotationInput,{...properties});case import_core66.PropertyType.Attachment:return(0,import_jsx_runtime59.jsx)(AttachmentInput,{...properties});case import_core66.PropertyType.CodeableConcept:return(0,import_jsx_runtime59.jsx)(CodeableConceptInput,{binding:binding?.valueSet,...properties});case import_core66.PropertyType.Coding:return(0,import_jsx_runtime59.jsx)(CodingInput,{binding:binding?.valueSet,...properties});case import_core66.PropertyType.ContactDetail:return(0,import_jsx_runtime59.jsx)(ContactDetailInput,{...properties});case import_core66.PropertyType.ContactPoint:return(0,import_jsx_runtime59.jsx)(ContactPointInput,{...properties});case import_core66.PropertyType.Extension:return(0,import_jsx_runtime59.jsx)(ExtensionInput,{...properties,propertyType:props.elementDefinitionType});case import_core66.PropertyType.HumanName:return(0,import_jsx_runtime59.jsx)(HumanNameInput,{...properties});case import_core66.PropertyType.Identifier:return(0,import_jsx_runtime59.jsx)(IdentifierInput,{...properties});case import_core66.PropertyType.Money:return(0,import_jsx_runtime59.jsx)(MoneyInput,{...properties});case import_core66.PropertyType.Period:return(0,import_jsx_runtime59.jsx)(PeriodInput,{...properties});case import_core66.PropertyType.Duration:case import_core66.PropertyType.Quantity:return(0,import_jsx_runtime59.jsx)(QuantityInput,{...properties});case import_core66.PropertyType.Range:return(0,import_jsx_runtime59.jsx)(RangeInput,{...properties});case import_core66.PropertyType.Ratio:return(0,import_jsx_runtime59.jsx)(RatioInput,{...properties});case import_core66.PropertyType.Reference:return(0,import_jsx_runtime59.jsx)(ReferenceInput,{...properties,targetTypes:getTargetTypes(props.elementDefinitionType)});case import_core66.PropertyType.Timing:return(0,import_jsx_runtime59.jsx)(TimingInput,{...properties});case import_core66.PropertyType.Dosage:case import_core66.PropertyType.UsageContext:default:return(0,import_jsx_runtime59.jsx)(BackboneElementInput,{typeName:propertyType,defaultValue:defaultValue2,onChange,outcome})}}var RESOURCE_TYPE_URL_PREFIXES=[`${import_core66.HTTP_HL7_ORG}/fhir/StructureDefinition/`,"https://medplum.com/fhir/StructureDefinition/"];function getTargetTypes(elementDefinitionType){return elementDefinitionType?.targetProfile?.map(p2=>{let resourceTypePrefix=RESOURCE_TYPE_URL_PREFIXES.find(prefix=>p2.startsWith(prefix));return resourceTypePrefix?p2.slice(resourceTypePrefix.length):p2})}var import_jsx_runtime60=require("react/jsx-runtime"),EXTENSION_KEYS=new Set(["extension","modifierExtension"]),IGNORED_PROPERTIES=new Set(["id",...DEFAULT_IGNORED_PROPERTIES].filter(prop=>!EXTENSION_KEYS.has(prop)));function ElementsInput(props){let{elements}=props,[value,setValue]=(0,import_react41.useState)(props.defaultValue??{}),fixedProperties=(0,import_react41.useMemo)(()=>{let result=Object.create(null);for(let[key,property]of Object.entries(elements))property.fixed&&(result[key]=property);return result},[elements]);function setValueWrapper(newValue){for(let[key,prop]of Object.entries(fixedProperties))setPropertyValue(newValue,key,key,prop,prop.fixed.value);setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime60.jsx)(import_core67.Stack,{style:{flexGrow:1},"data-testid":props.testId,children:Object.entries(elements).map(([key,element])=>{if(!element.type||element.max===0||key==="url"&&element.fixed||EXTENSION_KEYS.has(key)&&!(0,import_core68.isPopulated)(element.slicing?.slices))return null;if(IGNORED_PROPERTIES.has(key))return null;if(DEFAULT_IGNORED_NON_NESTED_PROPERTIES.includes(key)&&element.path.split(".").length===2||key.includes("."))return null;let[propertyValue,propertyType]=getValueAndTypeFromElement(value,key,element),required=element.min!==void 0&&element.min>0,resourcePropertyInput=(0,import_jsx_runtime60.jsx)(ResourcePropertyInput,{property:element,name:key,defaultValue:propertyValue,defaultPropertyType:propertyType,onChange:(newValue,propName)=>{setValueWrapper(setPropertyValue({...value},key,propName??key,element,newValue))},arrayElement:void 0,outcome:props.outcome},key);return props.type==="Extension"||EXTENSION_KEYS.has(key)?resourcePropertyInput:element.type.length===1&&element.type[0].code==="boolean"?(0,import_jsx_runtime60.jsx)(CheckboxFormSection,{title:(0,import_core68.getPathDisplayName)(key),description:element.description,htmlFor:key,fhirPath:element.path,withAsterisk:required,children:resourcePropertyInput},key):(0,import_jsx_runtime60.jsx)(FormSection,{title:(0,import_core68.getPathDisplayName)(key),description:element.description,withAsterisk:required,htmlFor:key,outcome:props.outcome,fhirPath:element.path,children:resourcePropertyInput},key)})})}var import_jsx_runtime61=require("react/jsx-runtime");function BackboneElementInput(props){let{typeName}=props,[value,setValue]=(0,import_react42.useState)(props.defaultValue??{}),backboneContext=(0,import_react42.useContext)(BackboneElementContext),profileUrl=props.profileUrl??backboneContext.profileUrl,typeSchema=(0,import_react42.useMemo)(()=>(0,import_core69.tryGetDataType)(typeName,profileUrl),[typeName,profileUrl]),context=(0,import_react42.useMemo)(()=>buildBackboneElementContext(typeSchema,profileUrl),[typeSchema,profileUrl]);if(!typeSchema)return(0,import_jsx_runtime61.jsxs)("div",{children:[typeName,"\xA0not implemented"]});function setValueWrapper(newValue){setValue(newValue),props.onChange&&props.onChange(newValue)}return(0,import_jsx_runtime61.jsx)(BackboneElementContext.Provider,{value:context,children:(0,import_jsx_runtime61.jsx)(ElementsInput,{type:typeSchema.type,elements:typeSchema.elements,defaultValue:value,onChange:setValueWrapper,outcome:props.outcome})})}var import_core70=require("@mantine/core"),import_react43=require("react");var CalendarInput_default={table:"CalendarInput_table"};function getMonthString(date){return date.toLocaleString("default",{month:"long"})+" "+date.getFullYear()}function getStartMonth(){let result=new Date;return result.setDate(1),result.setHours(0,0,0,0),result}var import_jsx_runtime62=require("react/jsx-runtime");function CalendarInput(props){let{onChangeMonth,onClick}=props,[month,setMonth]=(0,import_react43.useState)(getStartMonth);function moveMonth(delta){setMonth(currMonth=>{let newMonth=new Date(currMonth.getTime());return newMonth.setMonth(currMonth.getMonth()+delta),onChangeMonth(newMonth),newMonth})}let grid=(0,import_react43.useMemo)(()=>buildGrid(month,props.slots),[month,props.slots]);return(0,import_jsx_runtime62.jsxs)("div",{children:[(0,import_jsx_runtime62.jsxs)(import_core70.Group,{justify:"space-between",gap:"xs",grow:!0,wrap:"nowrap",children:[(0,import_jsx_runtime62.jsx)("p",{style:{flex:1},children:getMonthString(month)}),(0,import_jsx_runtime62.jsxs)(import_core70.Group,{justify:"flex-end",gap:"xs",children:[(0,import_jsx_runtime62.jsx)(import_core70.Button,{variant:"outline","aria-label":"Previous month",onClick:()=>moveMonth(-1),children:"<"}),(0,import_jsx_runtime62.jsx)(import_core70.Button,{variant:"outline","aria-label":"Next month",onClick:()=>moveMonth(1),children:">"})]})]}),(0,import_jsx_runtime62.jsxs)("table",{className:CalendarInput_default.table,children:[(0,import_jsx_runtime62.jsx)("thead",{children:(0,import_jsx_runtime62.jsxs)("tr",{children:[(0,import_jsx_runtime62.jsx)("th",{children:"SUN"}),(0,import_jsx_runtime62.jsx)("th",{children:"MON"}),(0,import_jsx_runtime62.jsx)("th",{children:"TUE"}),(0,import_jsx_runtime62.jsx)("th",{children:"WED"}),(0,import_jsx_runtime62.jsx)("th",{children:"THU"}),(0,import_jsx_runtime62.jsx)("th",{children:"FRI"}),(0,import_jsx_runtime62.jsx)("th",{children:"SAT"})]})}),(0,import_jsx_runtime62.jsx)("tbody",{children:grid.map((week,weekIndex)=>(0,import_jsx_runtime62.jsx)("tr",{children:week.map((day,dayIndex)=>(0,import_jsx_runtime62.jsx)("td",{children:day&&(0,import_jsx_runtime62.jsx)(import_core70.Button,{disabled:!day.available,onClick:()=>onClick(day.date),children:day.date.getDate()})},"day-"+dayIndex))},"week-"+weekIndex))})]})]})}function buildGrid(startDate,slots){let d2=new Date(startDate.getFullYear(),startDate.getMonth()),grid=[],row=[];for(let i=0;i<d2.getDay();i++)row.push(void 0);for(;d2.getMonth()===startDate.getMonth();)row.push({date:new Date(d2.getTime()),available:isDayAvailable(d2,slots)}),d2.getDay()===6&&(grid.push(row),row=[]),d2.setDate(d2.getDate()+1);if(d2.getDay()!==0){for(let i=d2.getDay();i<7;i++)row.push(void 0);grid.push(row)}return grid}function isDayAvailable(day,slots){for(let slot of slots){let slotStart=new Date(slot.start);if(slotStart.getFullYear()===day.getFullYear()&&slotStart.getMonth()===day.getMonth()&&slotStart.getDate()===day.getDate())return!0}return!1}var import_core71=require("@mantine/core");var Container_default={root:"Container_root"};var import_jsx_runtime63=require("react/jsx-runtime");function Container(props){let{children,...others}=props;return(0,import_jsx_runtime63.jsx)(import_core71.Container,{className:Container_default.root,...others,children})}var import_core84=require("@mantine/core"),import_notifications5=require("@mantine/notifications"),import_core85=require("@medplum/core");var import_react48=require("react");var import_core77=require("@mantine/core"),import_core78=require("@medplum/core");var import_react45=require("react");var import_core72=require("@mantine/core");var NoteDisplay_default={noteBody:"NoteDisplay_noteBody",noteCite:"NoteDisplay_noteCite",noteRoot:"NoteDisplay_noteRoot"};var import_jsx_runtime64=require("react/jsx-runtime");function NoteDisplay({value}){return value?(0,import_jsx_runtime64.jsx)(import_core72.Stack,{justify:"flex-start",gap:"xs",children:value.map(note=>note.text&&(0,import_jsx_runtime64.jsx)(import_core72.Blockquote,{classNames:{cite:NoteDisplay_default.noteCite,root:NoteDisplay_default.noteRoot},cite:note.authorReference?.display||note.authorString,icon:null,children:note.text},`note-${note.text}`))}):null}var import_core75=require("@mantine/core");var import_core73=require("@mantine/core"),import_core74=require("@medplum/core");var import_react44=require("react");var import_jsx_runtime65=require("react/jsx-runtime");function ResourceName(props){let{value,link,...rest}=props,[outcome,setOutcome]=(0,import_react44.useState)(),resource=j(value,setOutcome),text;if(outcome&&!(0,import_core74.isOk)(outcome))text=`[${(0,import_core74.normalizeErrorString)(outcome)}]`;else if(resource)text=(0,import_core74.getDisplayString)(resource);else return null;return link?(0,import_jsx_runtime65.jsx)(MedplumLink,{to:value,...rest,children:text}):(0,import_jsx_runtime65.jsx)(import_core73.Text,{component:"span",...rest,children:text})}var import_jsx_runtime66=require("react/jsx-runtime");function ResourceBadge(props){return(0,import_jsx_runtime66.jsxs)(import_core75.Group,{gap:"xs",children:[(0,import_jsx_runtime66.jsx)(ResourceAvatar,{size:24,radius:12,value:props.value,link:props.link}),(0,import_jsx_runtime66.jsx)(ResourceName,{value:props.value,link:props.link})]})}var import_core76=require("@mantine/core"),import_jsx_runtime67=require("react/jsx-runtime"),statusToColor={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red","not-done":"red"};function StatusBadge(props){return(0,import_jsx_runtime67.jsx)(import_core76.Badge,{color:statusToColor[props.status],children:props.status})}var DiagnosticReportDisplay_default={table:"DiagnosticReportDisplay_table",criticalRow:"DiagnosticReportDisplay_criticalRow",noteBody:"DiagnosticReportDisplay_noteBody",noteCite:"DiagnosticReportDisplay_noteCite",noteRoot:"DiagnosticReportDisplay_noteRoot"};var import_jsx_runtime68=require("react/jsx-runtime");DiagnosticReportDisplay.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function DiagnosticReportDisplay(props){let medplum=s(),diagnosticReport=j(props.value),[specimens,setSpecimens]=(0,import_react45.useState)();if((0,import_react45.useEffect)(()=>{diagnosticReport?.specimen&&Promise.allSettled(diagnosticReport.specimen.map(ref=>medplum.readReference(ref))).then(outcomes=>outcomes.filter(outcome=>outcome.status==="fulfilled").map(outcome=>outcome.value)).then(setSpecimens).catch(console.error)},[medplum,diagnosticReport]),!diagnosticReport)return null;let specimenNotes=specimens?.flatMap(spec=>spec.note||[])||[];if(diagnosticReport.presentedForm&&diagnosticReport.presentedForm.length>0){let pf=diagnosticReport.presentedForm[0];pf.contentType?.startsWith("text/plain")&&pf.data&&specimenNotes.push({text:window.atob(pf.data)})}return(0,import_jsx_runtime68.jsxs)(import_core77.Stack,{children:[(0,import_jsx_runtime68.jsx)(import_core77.Title,{children:"Diagnostic Report"}),(0,import_jsx_runtime68.jsx)(DiagnosticReportHeader,{value:diagnosticReport}),specimens&&!props.hideSpecimenInfo&&SpecimenInfo(specimens),diagnosticReport.result&&(0,import_jsx_runtime68.jsx)(ObservationTable,{hideObservationNotes:props.hideObservationNotes,value:diagnosticReport.result}),specimenNotes.length>0&&(0,import_jsx_runtime68.jsx)(NoteDisplay,{value:specimenNotes})]})}function DiagnosticReportHeader({value}){return(0,import_jsx_runtime68.jsxs)(import_core77.Group,{mt:"md",gap:30,children:[value.subject&&(0,import_jsx_runtime68.jsxs)("div",{children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{size:"xs",tt:"uppercase",c:"dimmed",children:"Subject"}),(0,import_jsx_runtime68.jsx)(ResourceBadge,{value:value.subject,link:!0})]}),value.resultsInterpreter?.map(interpreter=>(0,import_jsx_runtime68.jsxs)("div",{children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{size:"xs",tt:"uppercase",c:"dimmed",children:"Interpreter"}),(0,import_jsx_runtime68.jsx)(ResourceBadge,{value:interpreter,link:!0})]},interpreter.reference)),value.performer?.map(performer=>(0,import_jsx_runtime68.jsxs)("div",{children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{size:"xs",tt:"uppercase",c:"dimmed",children:"Performer"}),(0,import_jsx_runtime68.jsx)(ResourceBadge,{value:performer,link:!0})]},performer.reference)),value.issued&&(0,import_jsx_runtime68.jsxs)("div",{children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{size:"xs",tt:"uppercase",c:"dimmed",children:"Issued"}),(0,import_jsx_runtime68.jsx)(import_core77.Text,{children:(0,import_core78.formatDateTime)(value.issued)})]}),value.status&&(0,import_jsx_runtime68.jsxs)("div",{children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{size:"xs",tt:"uppercase",c:"dimmed",children:"Status"}),(0,import_jsx_runtime68.jsx)(import_core77.Text,{children:(0,import_core78.capitalize)(value.status)})]})]})}function SpecimenInfo(specimens){return(0,import_jsx_runtime68.jsxs)(import_core77.Stack,{gap:"xs",children:[(0,import_jsx_runtime68.jsx)(import_core77.Title,{order:2,size:"h6",children:"Specimens"}),(0,import_jsx_runtime68.jsx)(import_core77.List,{type:"ordered",children:specimens?.map(specimen=>(0,import_jsx_runtime68.jsx)(import_core77.List.Item,{ml:"sm",children:(0,import_jsx_runtime68.jsxs)(import_core77.Group,{gap:20,children:[(0,import_jsx_runtime68.jsxs)(import_core77.Group,{gap:5,children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{fw:500,children:"Collected:"})," ",(0,import_core78.formatDateTime)(specimen.collection?.collectedDateTime)]}),(0,import_jsx_runtime68.jsxs)(import_core77.Group,{gap:5,children:[(0,import_jsx_runtime68.jsx)(import_core77.Text,{fw:500,children:"Received:"})," ",(0,import_core78.formatDateTime)(specimen.receivedTime)]})]})},`specimen-${specimen.id}`))})]})}function ObservationTable(props){return(0,import_jsx_runtime68.jsxs)("table",{className:DiagnosticReportDisplay_default.table,children:[(0,import_jsx_runtime68.jsx)("thead",{children:(0,import_jsx_runtime68.jsxs)("tr",{children:[(0,import_jsx_runtime68.jsx)("th",{children:"Test"}),(0,import_jsx_runtime68.jsx)("th",{children:"Value"}),(0,import_jsx_runtime68.jsx)("th",{children:"Reference Range"}),(0,import_jsx_runtime68.jsx)("th",{children:"Interpretation"}),(0,import_jsx_runtime68.jsx)("th",{children:"Category"}),(0,import_jsx_runtime68.jsx)("th",{children:"Performer"}),(0,import_jsx_runtime68.jsx)("th",{children:"Status"})]})}),(0,import_jsx_runtime68.jsx)("tbody",{children:(0,import_jsx_runtime68.jsx)(ObservationRowGroup,{value:props.value,ancestorIds:props.ancestorIds,hideObservationNotes:props.hideObservationNotes})})]})}function ObservationRowGroup(props){return(0,import_jsx_runtime68.jsx)(import_jsx_runtime68.Fragment,{children:props.value?.map(observation=>(0,import_jsx_runtime68.jsx)(ObservationRow,{value:observation,ancestorIds:props.ancestorIds,hideObservationNotes:props.hideObservationNotes},`obs-${(0,import_core78.isReference)(observation)?observation.reference:observation.id}`))})}function ObservationRow(props){let observation=j(props.value);if(!observation||props.ancestorIds?.includes(observation.id))return null;let displayNotes=!props.hideObservationNotes&&observation.note,critical=isCritical(observation);return(0,import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment,{children:[(0,import_jsx_runtime68.jsxs)("tr",{className:clsx_default({[DiagnosticReportDisplay_default.criticalRow]:critical}),children:[(0,import_jsx_runtime68.jsx)("td",{rowSpan:displayNotes?2:1,children:(0,import_jsx_runtime68.jsx)(MedplumLink,{to:observation,children:(0,import_jsx_runtime68.jsx)(CodeableConceptDisplay,{value:observation.code})})}),(0,import_jsx_runtime68.jsx)("td",{children:(0,import_jsx_runtime68.jsx)(ObservationValueDisplay,{value:observation})}),(0,import_jsx_runtime68.jsx)("td",{children:(0,import_jsx_runtime68.jsx)(ReferenceRangeDisplay,{value:observation.referenceRange})}),(0,import_jsx_runtime68.jsx)("td",{children:observation.interpretation&&observation.interpretation.length>0&&(0,import_jsx_runtime68.jsx)(CodeableConceptDisplay,{value:observation.interpretation[0]})}),(0,import_jsx_runtime68.jsx)("td",{children:observation.category&&observation.category.length>0&&(0,import_jsx_runtime68.jsx)(import_jsx_runtime68.Fragment,{children:observation.category.map(concept=>(0,import_jsx_runtime68.jsx)("div",{children:(0,import_jsx_runtime68.jsx)(CodeableConceptDisplay,{value:concept})},`category-${(0,import_core78.formatCodeableConcept)(concept)}`))})}),(0,import_jsx_runtime68.jsx)("td",{children:observation.performer?.map(performer=>(0,import_jsx_runtime68.jsx)(ReferenceDisplay,{value:performer},performer.reference))}),(0,import_jsx_runtime68.jsx)("td",{children:observation.status&&(0,import_jsx_runtime68.jsx)(StatusBadge,{status:observation.status})})]}),observation.hasMember&&(0,import_jsx_runtime68.jsx)(ObservationRowGroup,{value:observation.hasMember,ancestorIds:props.ancestorIds?[...props.ancestorIds,observation.id]:[observation.id],hideObservationNotes:props.hideObservationNotes}),displayNotes&&(0,import_jsx_runtime68.jsx)("tr",{children:(0,import_jsx_runtime68.jsx)("td",{colSpan:6,children:(0,import_jsx_runtime68.jsx)(NoteDisplay,{value:observation.note})})})]})}function ObservationValueDisplay(props){let obs=props.value;return(0,import_jsx_runtime68.jsx)(import_jsx_runtime68.Fragment,{children:(0,import_core78.formatObservationValue)(obs)})}function ReferenceRangeDisplay(props){let range=props.value&&props.value.length>0&&props.value[0];return range?range.text?(0,import_jsx_runtime68.jsx)(import_jsx_runtime68.Fragment,{children:range.text}):(0,import_jsx_runtime68.jsx)(RangeDisplay,{value:range}):null}function isCritical(observation){let code=observation.interpretation?.[0]?.coding?.[0]?.code;return code==="AA"||code==="LL"||code==="HH"||code==="A"}var import_core79=require("@mantine/core");var Panel_default={paper:"Panel_paper",fill:"Panel_fill"};var import_jsx_runtime69=require("react/jsx-runtime");function Panel(props){let{width,fill,className,children,...rest}=props,style=width?{width}:void 0;return(0,import_jsx_runtime69.jsx)(import_core79.Paper,{className:clsx_default(Panel_default.paper,fill&&Panel_default.fill,className),style,shadow:"sm",radius:"sm",withBorder:!0,...rest,children})}var import_core80=require("@mantine/core"),import_core81=require("@medplum/core");var import_react46=require("react"),import_rfc6902=__toESM(require_rfc6902(),1);var ResourceDiffTable_default={root:"ResourceDiffTable_root",removed:"ResourceDiffTable_removed",added:"ResourceDiffTable_added"};var import_jsx_runtime70=require("react/jsx-runtime");function ResourceDiffTable(props){let medplum=s(),[schemaLoaded,setSchemaLoaded]=(0,import_react46.useState)(!1);if((0,import_react46.useEffect)(()=>{medplum.requestSchema(props.original.resourceType).then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum,props.original.resourceType]),!schemaLoaded)return null;let patch=(0,import_rfc6902.createPatch)(props.original,props.revised),typedOriginal=[(0,import_core81.toTypedValue)(props.original)],typedRevised=[(0,import_core81.toTypedValue)(props.revised)];return(0,import_jsx_runtime70.jsxs)(import_core80.Table,{className:ResourceDiffTable_default.root,children:[(0,import_jsx_runtime70.jsx)(import_core80.Table.Thead,{children:(0,import_jsx_runtime70.jsxs)(import_core80.Table.Tr,{children:[(0,import_jsx_runtime70.jsx)(import_core80.Table.Th,{}),(0,import_jsx_runtime70.jsx)(import_core80.Table.Th,{children:"Before"}),(0,import_jsx_runtime70.jsx)(import_core80.Table.Th,{children:"After"})]})}),(0,import_jsx_runtime70.jsx)(import_core80.Table.Tbody,{children:patch.map(op=>{if(op.path.startsWith("/meta"))return null;let path=op.path,fhirPath=jsonPathToFhirPath(path),property=(0,import_core81.getSearchParameterDetails)(props.original.resourceType,{resourceType:"SearchParameter",base:[props.original.resourceType],code:props.original.resourceType+"."+fhirPath,expression:props.original.resourceType+"."+fhirPath})?.elementDefinitions?.[0],isArray=!!property?.isArray,originalValue=op.op==="add"?void 0:(0,import_core81.evalFhirPathTyped)(fhirPath,typedOriginal)?.[0],revisedValue=op.op==="remove"?void 0:(0,import_core81.evalFhirPathTyped)(fhirPath,typedRevised)?.[0];return(0,import_jsx_runtime70.jsxs)(import_core80.Table.Tr,{children:[(0,import_jsx_runtime70.jsxs)(import_core80.Table.Td,{children:[(0,import_core81.capitalize)(op.op)," ",fhirPath]}),(0,import_jsx_runtime70.jsx)(import_core80.Table.Td,{className:ResourceDiffTable_default.removed,children:originalValue&&(0,import_jsx_runtime70.jsx)(ResourcePropertyDisplay,{property,propertyType:originalValue.type,value:fixArray(originalValue.value,isArray),ignoreMissingValues:!0})}),(0,import_jsx_runtime70.jsx)(import_core80.Table.Td,{className:ResourceDiffTable_default.added,children:revisedValue&&(0,import_jsx_runtime70.jsx)(ResourcePropertyDisplay,{property,propertyType:revisedValue.type,value:fixArray(revisedValue.value,isArray),ignoreMissingValues:!0})})]},`op-${op.op}-${op.path}`)})})]})}function jsonPathToFhirPath(path){let parts=path.split("/").filter(Boolean),result="";for(let i=0;i<parts.length;i++){let part=parts[i];part==="-"?result+=".last()":/^\d+$/.test(part)?result+=`[${part}]`:(i>0&&(result+="."),result+=part)}return result}function fixArray(inputValue,isArray){return Array.isArray(inputValue)&&!isArray?inputValue[0]:!Array.isArray(inputValue)&&isArray?[inputValue]:inputValue}var import_react47=require("react");var import_jsx_runtime71=require("react/jsx-runtime");function ResourceTable(props){let medplum=s(),value=j(props.value),[schemaLoaded,setSchemaLoaded]=(0,import_react47.useState)(!1);return(0,import_react47.useEffect)(()=>{value&&medplum.requestSchema(value.resourceType).then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum,value]),!schemaLoaded||!value?null:(0,import_jsx_runtime71.jsx)(BackboneElementDisplay,{value:{type:value.resourceType,value:props.forceUseInput?props.value:value},ignoreMissingValues:props.ignoreMissingValues})}var import_core82=require("@mantine/core"),import_core83=require("@medplum/core");var import_jsx_runtime72=require("react/jsx-runtime");function Timeline(props){return(0,import_jsx_runtime72.jsx)(Container,{children:props.children})}function TimelineItem(props){let{resource,profile,padding,popupMenuItems,...others}=props,author=profile??resource.meta?.author,dateTime=props.dateTime??resource.meta?.lastUpdated;return(0,import_jsx_runtime72.jsxs)(Panel,{"data-testid":"timeline-item",fill:!0,...others,children:[(0,import_jsx_runtime72.jsxs)(import_core82.Group,{justify:"space-between",gap:8,mx:"xs",my:"sm",children:[(0,import_jsx_runtime72.jsx)(ResourceAvatar,{value:author,link:!0,size:"md"}),(0,import_jsx_runtime72.jsxs)("div",{style:{flex:1},children:[(0,import_jsx_runtime72.jsx)(import_core82.Text,{size:"sm",children:(0,import_jsx_runtime72.jsx)(ResourceName,{c:"dark",fw:500,value:author,link:!0})}),(0,import_jsx_runtime72.jsxs)(import_core82.Text,{size:"xs",children:[(0,import_jsx_runtime72.jsx)(MedplumLink,{c:"dimmed",to:props.resource,children:(0,import_core83.formatDateTime)(dateTime)}),(0,import_jsx_runtime72.jsx)(import_core82.Text,{component:"span",c:"dimmed",mx:8,children:"\xB7"}),(0,import_jsx_runtime72.jsx)(MedplumLink,{c:"dimmed",to:props.resource,children:props.resource.resourceType})]})]}),popupMenuItems&&(0,import_jsx_runtime72.jsxs)(import_core82.Menu,{position:"bottom-end",shadow:"md",width:200,children:[(0,import_jsx_runtime72.jsx)(import_core82.Menu.Target,{children:(0,import_jsx_runtime72.jsx)(import_core82.ActionIcon,{color:"gray",variant:"subtle",radius:"xl","aria-label":`Actions for ${(0,import_core83.getReferenceString)(props.resource)}`,children:(0,import_jsx_runtime72.jsx)(IconDots,{})})}),popupMenuItems]})]}),(0,import_jsx_runtime72.jsxs)(ErrorBoundary,{children:[padding&&(0,import_jsx_runtime72.jsx)("div",{style:{padding:"0 16px 16px 16px"},children:props.children}),!padding&&(0,import_jsx_runtime72.jsx)(import_jsx_runtime72.Fragment,{children:props.children})]})]})}function sortByDateAndPriority(resources,timelineResource){resources.sort((a,b2)=>{let priority1=getPriorityScore(a,timelineResource),priority2=getPriorityScore(b2,timelineResource);return priority1>priority2?1:priority1<priority2?-1:getTime(a,timelineResource)-getTime(b2,timelineResource)})}function getPriorityScore(resource,timelineResource){if(!isSameResourceType(resource,timelineResource)){let priority=resource.priority;if(typeof priority=="string")return{stat:4,asap:3,urgent:2}[priority]??0}return 0}function getTime(resource,timelineResource){if(!isSameResourceType(resource,timelineResource)){if(resource.resourceType==="Communication"&&resource.sent)return new Date(resource.sent).getTime();if((resource.resourceType==="DiagnosticReport"||resource.resourceType==="Media"||resource.resourceType==="Observation")&&resource.issued)return new Date(resource.issued).getTime();if(resource.resourceType==="DocumentReference"&&resource.date)return new Date(resource.date).getTime()}let dateTime=resource.meta?.lastUpdated;return dateTime?new Date(dateTime).getTime():0}function isSameResourceType(a,b2){return!!b2&&a.resourceType===b2.resourceType&&a.id===b2.id}var ResourceTimeline_default={pinnedComment:"ResourceTimeline_pinnedComment"};var import_jsx_runtime73=require("react/jsx-runtime");function ResourceTimeline(props){let medplum=s(),navigate=B(),sender=medplum.getProfile(),inputRef=(0,import_react48.useRef)(null),resource=j(props.value),[history,setHistory]=(0,import_react48.useState)(),[items,setItems]=(0,import_react48.useState)([]),loadTimelineResources=props.loadTimelineResources,itemsRef=(0,import_react48.useRef)(items);itemsRef.current=items;let sortAndSetItems=(0,import_react48.useCallback)(newItmes=>{sortByDateAndPriority(newItmes,resource),newItmes.reverse(),setItems(newItmes)},[resource]),handleBatchResponse=(0,import_react48.useCallback)(batchResponse=>{let newItems=[];for(let settledResult of batchResponse){if(settledResult.status!=="fulfilled")continue;let bundle=settledResult.value;if(bundle.type==="history"&&setHistory(bundle),bundle.entry)for(let entry of bundle.entry)newItems.push(entry.resource)}sortAndSetItems(newItems)},[sortAndSetItems]),addResource=(0,import_react48.useCallback)(resource2=>sortAndSetItems([...itemsRef.current,resource2]),[sortAndSetItems]),loadTimeline=(0,import_react48.useCallback)(()=>{let resourceType,id;"resourceType"in props.value?(resourceType=props.value.resourceType,id=props.value.id):[resourceType,id]=props.value.reference?.split("/"),loadTimelineResources(medplum,resourceType,id).then(handleBatchResponse).catch(console.log)},[medplum,props.value,loadTimelineResources,handleBatchResponse]);(0,import_react48.useEffect)(()=>loadTimeline(),[loadTimeline]);function createComment(contentString){!resource||!props.createCommunication||medplum.createResource(props.createCommunication(resource,sender,contentString)).then(result=>addResource(result)).catch(console.log)}function createMedia(attachment){!resource||!props.createMedia||medplum.createResource(props.createMedia(resource,sender,attachment)).then(result=>addResource(result)).then(()=>(0,import_notifications5.updateNotification)({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:(0,import_jsx_runtime73.jsx)(IconCheck,{size:16}),autoClose:2e3})).catch(reason=>(0,import_notifications5.updateNotification)({id:"upload-notification",color:"red",title:"Upload error",message:(0,import_core85.normalizeErrorString)(reason),icon:(0,import_jsx_runtime73.jsx)(IconFileAlert,{size:16}),autoClose:2e3}))}function setPriority(communication,priority){return medplum.updateResource({...communication,priority})}function onPin(communication){setPriority(communication,"stat").then(loadTimeline).catch(console.log)}function onUnpin(communication){setPriority(communication,"routine").then(loadTimeline).catch(console.log)}function onDetails(timelineItem){navigate(`/${timelineItem.resourceType}/${timelineItem.id}`)}function onEdit(timelineItem){navigate(`/${timelineItem.resourceType}/${timelineItem.id}/edit`)}function onDelete(timelineItem){navigate(`/${timelineItem.resourceType}/${timelineItem.id}/delete`)}function onVersionDetails(version){navigate(`/${version.resourceType}/${version.id}/_history/${version.meta?.versionId}`)}function onUploadStart(){(0,import_notifications5.showNotification)({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function onUploadProgress(e){(0,import_notifications5.updateNotification)({id:"upload-notification",loading:!0,title:"Uploading...",message:getProgressMessage(e),autoClose:!1,withCloseButton:!1})}function onUploadError(outcome){(0,import_notifications5.updateNotification)({id:"upload-notification",color:"red",title:"Upload error",message:(0,import_core85.normalizeErrorString)(outcome),icon:(0,import_jsx_runtime73.jsx)(IconFileAlert,{size:16}),autoClose:2e3})}return resource?(0,import_jsx_runtime73.jsxs)(Timeline,{children:[props.createCommunication&&(0,import_jsx_runtime73.jsx)(Panel,{children:(0,import_jsx_runtime73.jsx)(Form,{testid:"timeline-form",onSubmit:formData=>{createComment(formData.text);let input=inputRef.current;input&&(input.value="",input.focus())},children:(0,import_jsx_runtime73.jsxs)(import_core84.Group,{gap:"xs",wrap:"nowrap",style:{width:"100%"},children:[(0,import_jsx_runtime73.jsx)(ResourceAvatar,{value:sender}),(0,import_jsx_runtime73.jsx)(import_core84.TextInput,{name:"text",ref:inputRef,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),(0,import_jsx_runtime73.jsx)(import_core84.ActionIcon,{type:"submit",radius:"xl",color:"blue",variant:"filled",children:(0,import_jsx_runtime73.jsx)(IconMessage,{size:16})}),(0,import_jsx_runtime73.jsx)(AttachmentButton,{onUpload:createMedia,onUploadStart,onUploadProgress,onUploadError,children:props2=>(0,import_jsx_runtime73.jsx)(import_core84.ActionIcon,{...props2,radius:"xl",color:"blue",variant:"filled",children:(0,import_jsx_runtime73.jsx)(IconCloudUpload,{size:16})})})]})})}),items.map(item=>{if(!item)return null;let key=`${item.resourceType}/${item.id}/${item.meta?.versionId}`;if(item.resourceType===resource.resourceType&&item.id===resource.id)return(0,import_jsx_runtime73.jsx)(HistoryTimelineItem,{history,resource:item,onDetails:onVersionDetails},key);switch(item.resourceType){case"AuditEvent":return(0,import_jsx_runtime73.jsx)(AuditEventTimelineItem,{resource:item,onDetails},key);case"Communication":return(0,import_jsx_runtime73.jsx)(CommunicationTimelineItem,{resource:item,onPin:item.priority!=="stat"?onPin:void 0,onUnpin:item.priority==="stat"?onUnpin:void 0,onDetails,onEdit,onDelete},key);case"DiagnosticReport":return(0,import_jsx_runtime73.jsx)(DiagnosticReportTimelineItem,{resource:item,onDetails,onEdit,onDelete},key);case"Media":return(0,import_jsx_runtime73.jsx)(MediaTimelineItem,{resource:item,onDetails,onEdit,onDelete},key);default:return(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:item,padding:!0,children:(0,import_jsx_runtime73.jsx)(ResourceTable,{value:item,ignoreMissingValues:!0})},key)}})]}):(0,import_jsx_runtime73.jsx)(import_core84.Center,{style:{width:"100%",height:"100%"},children:(0,import_jsx_runtime73.jsx)(import_core84.Loader,{})})}function TimelineItemPopupMenu(props){return(0,import_jsx_runtime73.jsxs)(import_core84.Menu.Dropdown,{children:[(0,import_jsx_runtime73.jsx)(import_core84.Menu.Label,{children:"Resource"}),props.onPin&&(0,import_jsx_runtime73.jsx)(import_core84.Menu.Item,{leftSection:(0,import_jsx_runtime73.jsx)(IconPin,{size:14}),onClick:()=>props.onPin(props.resource),"aria-label":`Pin ${(0,import_core85.getReferenceString)(props.resource)}`,children:"Pin"}),props.onUnpin&&(0,import_jsx_runtime73.jsx)(import_core84.Menu.Item,{leftSection:(0,import_jsx_runtime73.jsx)(IconPinnedOff,{size:14}),onClick:()=>props.onUnpin(props.resource),"aria-label":`Unpin ${(0,import_core85.getReferenceString)(props.resource)}`,children:"Unpin"}),props.onDetails&&(0,import_jsx_runtime73.jsx)(import_core84.Menu.Item,{leftSection:(0,import_jsx_runtime73.jsx)(IconListDetails,{size:14}),onClick:()=>props.onDetails(props.resource),"aria-label":`Details ${(0,import_core85.getReferenceString)(props.resource)}`,children:"Details"}),props.onEdit&&(0,import_jsx_runtime73.jsx)(import_core84.Menu.Item,{leftSection:(0,import_jsx_runtime73.jsx)(IconEdit,{size:14}),onClick:()=>props.onEdit(props.resource),"aria-label":`Edit ${(0,import_core85.getReferenceString)(props.resource)}`,children:"Edit"}),props.onDelete&&(0,import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment,{children:[(0,import_jsx_runtime73.jsx)(import_core84.Menu.Divider,{}),(0,import_jsx_runtime73.jsx)(import_core84.Menu.Label,{children:"Danger zone"}),(0,import_jsx_runtime73.jsx)(import_core84.Menu.Item,{color:"red",leftSection:(0,import_jsx_runtime73.jsx)(IconTrash,{size:14}),onClick:()=>props.onDelete(props.resource),"aria-label":`Delete ${(0,import_core85.getReferenceString)(props.resource)}`,children:"Delete"})]})]})}function HistoryTimelineItem(props){let previous=getPrevious(props.history,props.resource);return previous?(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:props.resource,padding:!0,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:(0,import_jsx_runtime73.jsx)(ResourceDiffTable,{original:previous,revised:props.resource})}):(0,import_jsx_runtime73.jsxs)(TimelineItem,{resource:props.resource,padding:!0,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:[(0,import_jsx_runtime73.jsx)("h3",{children:"Created"}),(0,import_jsx_runtime73.jsx)(ResourceTable,{value:props.resource,ignoreMissingValues:!0,forceUseInput:!0})]})}function getPrevious(history,version){let entries=history.entry,index=entries.findIndex(entry=>entry.resource?.meta?.versionId===version.meta?.versionId);if(!(index>=entries.length-1))return entries[index+1].resource}function CommunicationTimelineItem(props){let className=!props.resource.priority||props.resource.priority==="routine"?void 0:ResourceTimeline_default.pinnedComment;return(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:props.resource,profile:props.resource.sender,dateTime:props.resource.sent,padding:!0,className,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:(0,import_jsx_runtime73.jsx)("p",{children:props.resource.payload?.[0]?.contentString})})}function MediaTimelineItem(props){let contentType=props.resource.content?.contentType,padding=contentType&&!contentType.startsWith("image/")&&!contentType.startsWith("video/")&&contentType!=="application/pdf";return(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:props.resource,padding:!!padding,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:(0,import_jsx_runtime73.jsx)(AttachmentDisplay,{value:props.resource.content})})}function AuditEventTimelineItem(props){return(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:props.resource,padding:!0,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:(0,import_jsx_runtime73.jsx)(import_core84.ScrollArea,{children:(0,import_jsx_runtime73.jsx)("pre",{children:props.resource.outcomeDesc})})})}function DiagnosticReportTimelineItem(props){return(0,import_jsx_runtime73.jsx)(TimelineItem,{resource:props.resource,padding:!0,popupMenuItems:(0,import_jsx_runtime73.jsx)(TimelineItemPopupMenu,{...props}),children:(0,import_jsx_runtime73.jsx)(DiagnosticReportDisplay,{value:props.resource})})}function getProgressMessage(e){if(e.lengthComputable){let percent=100*e.loaded/e.total;return`Uploaded: ${formatFileSize(e.loaded)} / ${formatFileSize(e.total)} ${percent.toFixed(2)}%`}return`Uploaded: ${formatFileSize(e.loaded)}`}function formatFileSize(bytes){if(bytes===0)return"0.00 B";let e=Math.floor(Math.log(bytes)/Math.log(1024));return(bytes/Math.pow(1024,e)).toFixed(2)+" "+" KMGTP".charAt(e)+"B"}var import_jsx_runtime74=require("react/jsx-runtime");function DefaultResourceTimeline(props){return(0,import_jsx_runtime74.jsx)(ResourceTimeline,{value:props.resource,loadTimelineResources:async(medplum,resourceType,id)=>{let ref=`${resourceType}/${id}`;return Promise.allSettled([medplum.readHistory(resourceType,id),medplum.search("Task",{_filter:`based-on eq ${ref} or focus eq ${ref} or subject eq ${ref}`,_count:100})])}})}var import_jsx_runtime75=require("react/jsx-runtime");function Document(props){let{children,...others}=props;return(0,import_jsx_runtime75.jsx)(Container,{children:(0,import_jsx_runtime75.jsx)(Panel,{...others,children})})}var import_core86=require("@medplum/core");var import_jsx_runtime76=require("react/jsx-runtime");function EncounterTimeline(props){return(0,import_jsx_runtime76.jsx)(ResourceTimeline,{value:props.encounter,loadTimelineResources:async(medplum,_resourceType,id)=>Promise.allSettled([medplum.readHistory("Encounter",id),medplum.search("Communication","encounter=Encounter/"+id),medplum.search("Media","encounter=Encounter/"+id)]),createCommunication:(resource,sender,text)=>({resourceType:"Communication",status:"completed",encounter:(0,import_core86.createReference)(resource),subject:resource.subject,sender:(0,import_core86.createReference)(sender),sent:new Date().toISOString(),payload:[{contentString:text}]}),createMedia:(resource,operator,content)=>({resourceType:"Media",status:"completed",encounter:(0,import_core86.createReference)(resource),subject:resource.subject,operator:(0,import_core86.createReference)(operator),issued:new Date().toISOString(),content})})}var import_core103=require("@mantine/core"),import_core104=require("@medplum/core");var import_react53=require("react");var import_core87=require("@medplum/core");var import_jsx_runtime77=require("react/jsx-runtime");function FhirPathDisplay(props){let value;try{value=(0,import_core87.evalFhirPath)(props.path,props.resource)}catch(err){return console.warn("FhirPathDisplay:",err),null}if(value.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${value.length} elements [${JSON.stringify(value,null,2)}]`);return(0,import_jsx_runtime77.jsx)(ResourcePropertyDisplay,{value:value[0]||"",propertyType:props.propertyType})}var import_core101=require("@mantine/core"),import_core102=require("@medplum/core");var import_react52=require("react");var import_core88=require("@mantine/core"),import_jsx_runtime78=require("react/jsx-runtime");function SearchExportDialog(props){return(0,import_jsx_runtime78.jsxs)(import_core88.Modal,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:props.visible,onClose:props.onCancel,children:[(0,import_jsx_runtime78.jsxs)(import_core88.Box,{display:"flex",style:{justifyContent:"space-between"},children:[props.exportCsv&&(0,import_jsx_runtime78.jsx)(ExportButton,{text:"CSV",exportLogic:props.exportCsv,onCancel:props.onCancel}),props.exportTransactionBundle&&(0,import_jsx_runtime78.jsx)(ExportButton,{text:"Transaction Bundle",exportLogic:props.exportTransactionBundle,onCancel:props.onCancel})]}),(0,import_jsx_runtime78.jsx)(import_core88.Text,{style:{marginTop:"10px",marginLeft:"2px"},children:"Limited to 1000 records"})]})}function ExportButton(props){return(0,import_jsx_runtime78.jsx)(import_core88.Button,{onClick:()=>{props.exportLogic(),props.onCancel()},children:`Export as ${props.text}`})}var import_core90=require("@mantine/core"),import_core91=require("@medplum/core"),import_react49=require("react");var import_core89=require("@medplum/core");var import_jsx_runtime79=require("react/jsx-runtime"),searchParamToOperators={string:[import_core89.Operator.EQUALS,import_core89.Operator.NOT,import_core89.Operator.CONTAINS,import_core89.Operator.EXACT],fulltext:[import_core89.Operator.EQUALS,import_core89.Operator.NOT,import_core89.Operator.CONTAINS,import_core89.Operator.EXACT],token:[import_core89.Operator.EQUALS,import_core89.Operator.NOT],reference:[import_core89.Operator.EQUALS,import_core89.Operator.NOT],numeric:[import_core89.Operator.EQUALS,import_core89.Operator.NOT_EQUALS,import_core89.Operator.GREATER_THAN,import_core89.Operator.LESS_THAN,import_core89.Operator.GREATER_THAN_OR_EQUALS,import_core89.Operator.LESS_THAN_OR_EQUALS],quantity:[import_core89.Operator.EQUALS,import_core89.Operator.NOT_EQUALS,import_core89.Operator.GREATER_THAN,import_core89.Operator.LESS_THAN,import_core89.Operator.GREATER_THAN_OR_EQUALS,import_core89.Operator.LESS_THAN_OR_EQUALS],date:[import_core89.Operator.EQUALS,import_core89.Operator.NOT_EQUALS,import_core89.Operator.GREATER_THAN,import_core89.Operator.LESS_THAN,import_core89.Operator.GREATER_THAN_OR_EQUALS,import_core89.Operator.LESS_THAN_OR_EQUALS,import_core89.Operator.STARTS_AFTER,import_core89.Operator.ENDS_BEFORE,import_core89.Operator.APPROXIMATELY],datetime:[import_core89.Operator.EQUALS,import_core89.Operator.NOT_EQUALS,import_core89.Operator.GREATER_THAN,import_core89.Operator.LESS_THAN,import_core89.Operator.GREATER_THAN_OR_EQUALS,import_core89.Operator.LESS_THAN_OR_EQUALS,import_core89.Operator.STARTS_AFTER,import_core89.Operator.ENDS_BEFORE,import_core89.Operator.APPROXIMATELY]},operatorNames={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function setFilters(definition,filters){return{...definition,filters,offset:0,name:void 0}}function clearFilters(definition){return setFilters(definition,[])}function clearFiltersOnField(definition,code){return setFilters(definition,(definition.filters??[]).filter(f=>f.code!==code))}function addFilter(definition,field,op,value,opt_clear){opt_clear&&(definition=clearFiltersOnField(definition,field));let nextFilters=[];return definition.filters&&nextFilters.push(...definition.filters),nextFilters.push({code:field,operator:op,value:value??""}),setFilters(definition,nextFilters)}function addField(definition,field){if(definition.fields?.includes(field))return definition;let newFields=[];return definition.fields&&newFields.push(...definition.fields),newFields.push(field),{...definition,fields:newFields,name:void 0}}function deleteFilter(definition,index){if(!definition.filters)return definition;let newFilters=[...definition.filters];return newFilters.splice(index,1),{...definition,filters:newFilters,name:void 0}}function addYesterdayFilter(definition,field){return addDayFilter(definition,field,-1)}function addTodayFilter(definition,field){return addDayFilter(definition,field,0)}function addTomorrowFilter(definition,field){return addDayFilter(definition,field,1)}function addDayFilter(definition,field,delta){let startTime=new Date;startTime.setDate(startTime.getDate()+delta),startTime.setHours(0,0,0,0);let endTime=new Date(startTime.getTime());return endTime.setDate(endTime.getDate()+1),endTime.setTime(endTime.getTime()-1),addDateFilterBetween(definition,field,startTime,endTime)}function addLastMonthFilter(definition,field){return addMonthFilter(definition,field,-1)}function addThisMonthFilter(definition,field){return addMonthFilter(definition,field,0)}function addNextMonthFilter(definition,field){return addMonthFilter(definition,field,1)}function addMonthFilter(definition,field,delta){let startTime=new Date;startTime.setMonth(startTime.getMonth()+delta),startTime.setDate(1),startTime.setHours(0,0,0,0);let endTime=new Date(startTime.getTime());return endTime.setMonth(endTime.getMonth()+1),endTime.setDate(1),endTime.setHours(0,0,0,0),endTime.setTime(endTime.getTime()-1),addDateFilterBetween(definition,field,startTime,endTime)}function addYearToDateFilter(definition,field){let startTime=new Date;return startTime.setMonth(0),startTime.setDate(1),startTime.setHours(0,0,0,0),addDateFilterBetween(definition,field,startTime,new Date)}function addDateFilterBetween(definition,field,d1,d2){return definition=clearFiltersOnField(definition,field),definition=addDateFilterImpl(definition,field,import_core89.Operator.GREATER_THAN_OR_EQUALS,d1),definition=addDateFilterImpl(definition,field,import_core89.Operator.LESS_THAN_OR_EQUALS,d2),definition}function addDateFilterImpl(definition,field,op,value){return addFilter(definition,field,op,value.toISOString())}function addMissingFilter(definition,field,value=!0){return addFilter(definition,field,import_core89.Operator.MISSING,value.toString())}function setOffset(definition,offset){return definition.offset===offset?definition:{...definition,offset,name:void 0}}function setPage(definition,page){let count=definition.count??import_core89.DEFAULT_SEARCH_COUNT,newOffset=(page-1)*count;return setOffset(definition,newOffset)}function setSort(definition,sort,desc){return sort===getSortField(definition)&&desc!==void 0&&desc===isSortDescending(definition)?definition:{...definition,sortRules:[{code:sort,descending:!!desc}],name:void 0}}function toggleSort(definition,key){let desc=!1;return getSortField(definition)===key&&(desc=!isSortDescending(definition)),setSort(definition,key,desc)}function getSortField(definition){let sortRules=definition.sortRules;if(!sortRules||sortRules.length===0)return;let field=sortRules[0].code;return field.startsWith("-")?field.substr(1):field}function isSortDescending(definition){let sortRules=definition.sortRules;return!sortRules||sortRules.length===0?!1:!!sortRules[0].descending}function getSearchOperators(searchParam){return searchParamToOperators[searchParam.type]}function getOpString(op){return operatorNames[op]??""}function buildFieldNameString(key){let tmp=key;return tmp.includes(".")&&(tmp=tmp.split(".").pop()),tmp==="versionId"?"Version ID":(tmp=tmp.replace("[x]",""),tmp=tmp.replace(/([A-Z])/g," $1"),tmp=tmp.replace(/[-_]/g," "),tmp=tmp.replace(/\s+/g," "),tmp=tmp.trim(),tmp.toLowerCase()==="id"?"ID":tmp.split(/\s/).map(import_core89.capitalize).join(" "))}function renderValue(resource,field){let key=field.name;return key==="id"?resource.id:key==="meta.versionId"?resource.meta?.versionId:key==="_lastUpdated"?(0,import_core89.formatDateTime)(resource.meta?.lastUpdated):field.elementDefinition&&`${resource.resourceType}.${field.name}`===field.elementDefinition.path?renderPropertyValue(resource,field.elementDefinition):field.searchParams&&field.searchParams.length===1&&field.name===field.searchParams[0].code?renderSearchParameterValue(resource,field.searchParams[0]):null}function renderPropertyValue(resource,elementDefinition){let path=elementDefinition.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[value,propertyType]=getValueAndType({type:resource.resourceType,value:resource},path);return value?(0,import_jsx_runtime79.jsx)(ResourcePropertyDisplay,{property:elementDefinition,propertyType,value,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function renderSearchParameterValue(resource,searchParam){let value=(0,import_core89.evalFhirPathTyped)(searchParam.expression,[{type:resource.resourceType,value:resource}]);return!value||value.length===0?null:(0,import_jsx_runtime79.jsx)(import_jsx_runtime79.Fragment,{children:value.map((v2,index)=>(0,import_jsx_runtime79.jsx)(ResourcePropertyDisplay,{propertyType:v2.type,value:v2.value,maxWidth:200,ignoreMissingValues:!0,link:!1},`${index}-${value.length}`))})}var import_jsx_runtime80=require("react/jsx-runtime");function SearchFieldEditor(props){let wasDropdownOpen=(0,import_react49.useRef)(!1),[state,setState]=(0,import_react49.useState)({search:JSON.parse((0,import_core91.stringify)(props.search))}),[isDropdownOpen,setIsDropdownOpen]=(0,import_react49.useState)(!1);(0,import_react49.useEffect)(()=>{setState({search:props.search})},[props.search]);let allFields=(0,import_react49.useMemo)(()=>{if(!props.visible)return[];let resourceType=props.search.resourceType,typeSchema=(0,import_core91.getDataType)(resourceType),searchParams=(0,import_core91.getSearchParameters)(resourceType);return getFieldsList(typeSchema,searchParams).sort((a,b2)=>a.localeCompare(b2)).map(field=>({value:field,label:buildFieldNameString(field)}))},[props.visible,props.search.resourceType]);if(!props.visible)return null;function handleChange(newFields){setState({search:{...state.search,fields:newFields}})}return(0,import_jsx_runtime80.jsx)(import_core90.Modal,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:props.visible,onClose:()=>{props.onCancel()},size:"auto",withOverlay:!0,closeOnClickOutside:!1,overlayProps:{onMouseDownCapture:()=>{wasDropdownOpen.current=isDropdownOpen},onClick:()=>{wasDropdownOpen.current||props.onCancel(),wasDropdownOpen.current=!1},children:(0,import_jsx_runtime80.jsx)("div",{"data-testid":"overlay-child"})},children:(0,import_jsx_runtime80.jsxs)(import_core90.Stack,{children:[(0,import_jsx_runtime80.jsx)(import_core90.MultiSelect,{style:{width:550},placeholder:"Select fields to display",data:allFields,value:state.search.fields??[],onChange:handleChange,onDropdownOpen:()=>setIsDropdownOpen(!0),onDropdownClose:()=>setIsDropdownOpen(!1),maxDropdownHeight:"250px",clearButtonProps:{"aria-label":"Clear selection"},clearable:!0,searchable:!0}),(0,import_jsx_runtime80.jsx)(import_core90.Group,{justify:"flex-end",children:(0,import_jsx_runtime80.jsx)(import_core90.Button,{onClick:()=>props.onOk(state.search),children:"OK"})})]})})}function getFieldsList(typeSchema,searchParams){let result=[],keys=new Set,names=new Set;for(let key of Object.keys(typeSchema.elements))result.push(key),keys.add(key.toLowerCase()),names.add(buildFieldNameString(key));if(searchParams)for(let code of Object.keys(searchParams)){let name=buildFieldNameString(code);!keys.has(code)&&!names.has(name)&&(result.push(code),keys.add(code),names.add(name))}return result}var import_core95=require("@mantine/core"),import_core96=require("@medplum/core"),import_react50=require("react");var import_core92=require("@medplum/core");var import_jsx_runtime81=require("react/jsx-runtime");function SearchFilterValueDisplay(props){let{resourceType,filter}=props,searchParam=import_core92.globalSchema.types[resourceType].searchParams?.[filter.code];if(searchParam){if(searchParam.type==="reference"&&(filter.operator===import_core92.Operator.EQUALS||filter.operator===import_core92.Operator.NOT_EQUALS))return(0,import_jsx_runtime81.jsx)(ResourceName,{value:{reference:filter.value}});let searchParamDetails=(0,import_core92.getSearchParameterDetails)(resourceType,searchParam);if(filter.code==="_lastUpdated"||searchParamDetails.type===import_core92.SearchParameterType.DATETIME)return(0,import_jsx_runtime81.jsx)(import_jsx_runtime81.Fragment,{children:(0,import_core92.formatDateTime)(filter.value)})}return(0,import_jsx_runtime81.jsx)(import_jsx_runtime81.Fragment,{children:filter.value})}var import_core93=require("@mantine/core"),import_core94=require("@medplum/core");var import_jsx_runtime82=require("react/jsx-runtime");function SearchFilterValueInput(props){let details=(0,import_core94.getSearchParameterDetails)(props.resourceType,props.searchParam),name="filter-value";switch(details.type){case import_core94.SearchParameterType.REFERENCE:return(0,import_jsx_runtime82.jsx)(ReferenceInput,{name,defaultValue:props.defaultValue?{reference:props.defaultValue}:void 0,targetTypes:props.searchParam.target,autoFocus:props.autoFocus,onChange:newReference=>{newReference?props.onChange(newReference.reference):props.onChange("")}});case import_core94.SearchParameterType.BOOLEAN:return(0,import_jsx_runtime82.jsx)(import_core93.Checkbox,{name,"data-autofocus":props.autoFocus,"data-testid":name,defaultChecked:props.defaultValue==="true",autoFocus:props.autoFocus,onChange:e=>props.onChange(e.currentTarget.checked.toString())});case import_core94.SearchParameterType.DATE:return(0,import_jsx_runtime82.jsx)(import_core93.TextInput,{type:"date",name,"data-autofocus":props.autoFocus,"data-testid":name,defaultValue:props.defaultValue,autoFocus:props.autoFocus,onChange:e=>props.onChange(e.currentTarget.value)});case import_core94.SearchParameterType.DATETIME:return(0,import_jsx_runtime82.jsx)(DateTimeInput,{name,defaultValue:props.defaultValue,autoFocus:props.autoFocus,onChange:props.onChange});case import_core94.SearchParameterType.NUMBER:return(0,import_jsx_runtime82.jsx)(import_core93.TextInput,{type:"number",name,"data-autofocus":props.autoFocus,"data-testid":name,defaultValue:props.defaultValue,autoFocus:props.autoFocus,onChange:e=>props.onChange(e.currentTarget.value)});case import_core94.SearchParameterType.QUANTITY:return(0,import_jsx_runtime82.jsx)(QuantityInput,{name,defaultValue:tryParseQuantity(props.defaultValue),autoFocus:props.autoFocus,onChange:newQuantity=>{newQuantity?props.onChange(`${newQuantity.value}`):props.onChange("")}});default:return(0,import_jsx_runtime82.jsx)(import_core93.TextInput,{name,"data-autofocus":props.autoFocus,"data-testid":name,defaultValue:props.defaultValue,autoFocus:props.autoFocus,onChange:e=>props.onChange(e.currentTarget.value),placeholder:"Search value"})}}function tryParseQuantity(value){if(value){let[valueString,systemString,unitString]=value.split("|");if(valueString)return{value:parseFloat(valueString),system:systemString,unit:unitString}}}var import_jsx_runtime83=require("react/jsx-runtime");function SearchFilterEditor(props){let[search,setSearch]=(0,import_react50.useState)(JSON.parse((0,import_core96.stringify)(props.search))),[editingIndex,setEditingIndex]=(0,import_react50.useState)(-1),searchRef=(0,import_react50.useRef)(search);searchRef.current=search,(0,import_react50.useEffect)(()=>{setSearch(JSON.parse((0,import_core96.stringify)(props.search)))},[props.search]);function onAddFilter(filter){setSearch(addFilter(searchRef.current,filter.code,filter.operator,filter.value))}if(!props.visible)return null;let resourceType=props.search.resourceType,searchParams=(0,import_core96.getSearchParameters)(resourceType)??{},filters=search.filters||[];return(0,import_jsx_runtime83.jsxs)(import_core95.Modal,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:props.visible,onClose:props.onCancel,children:[(0,import_jsx_runtime83.jsx)("div",{children:(0,import_jsx_runtime83.jsxs)("table",{children:[(0,import_jsx_runtime83.jsxs)("colgroup",{children:[(0,import_jsx_runtime83.jsx)("col",{style:{width:200}}),(0,import_jsx_runtime83.jsx)("col",{style:{width:200}}),(0,import_jsx_runtime83.jsx)("col",{style:{width:380}}),(0,import_jsx_runtime83.jsx)("col",{style:{width:120}})]}),(0,import_jsx_runtime83.jsx)("thead",{children:(0,import_jsx_runtime83.jsxs)("tr",{children:[(0,import_jsx_runtime83.jsx)("th",{children:"Field"}),(0,import_jsx_runtime83.jsx)("th",{children:"Operation"}),(0,import_jsx_runtime83.jsx)("th",{children:"Value"}),(0,import_jsx_runtime83.jsx)("th",{children:"Actions"})]})}),(0,import_jsx_runtime83.jsxs)("tbody",{children:[filters.map((filter,index)=>index===editingIndex?(0,import_jsx_runtime83.jsx)(FilterRowInput,{resourceType,searchParams,defaultValue:filter,okText:"Save",onOk:newFilter=>{let newFilters=[...filters];newFilters[index]=newFilter,setSearch(setFilters(searchRef.current,newFilters)),setEditingIndex(-1)},onCancel:()=>setEditingIndex(-1)},`filter-${filter.code}-${filter.operator}-${filter.value}-input`):(0,import_jsx_runtime83.jsx)(FilterRowDisplay,{resourceType,searchParams,filter,onEdit:()=>setEditingIndex(index),onDelete:()=>setSearch(deleteFilter(searchRef.current,index))},`filter-${filter.code}-${filter.operator}-${filter.value}-display`)),(0,import_jsx_runtime83.jsx)(FilterRowInput,{resourceType,searchParams,okText:"Add",onOk:onAddFilter})]})]})}),(0,import_jsx_runtime83.jsx)(import_core95.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime83.jsx)(import_core95.Button,{onClick:()=>props.onOk(searchRef.current),children:"OK"})})]})}function FilterRowDisplay(props){let{filter}=props;return(0,import_jsx_runtime83.jsxs)("tr",{children:[(0,import_jsx_runtime83.jsx)("td",{children:buildFieldNameString(filter.code)}),(0,import_jsx_runtime83.jsx)("td",{children:getOpString(filter.operator)}),(0,import_jsx_runtime83.jsx)("td",{children:(0,import_jsx_runtime83.jsx)(SearchFilterValueDisplay,{resourceType:props.resourceType,filter})}),(0,import_jsx_runtime83.jsxs)("td",{children:[(0,import_jsx_runtime83.jsx)(import_core95.Button,{size:"compact-md",variant:"outline",onClick:props.onEdit,children:"Edit"}),(0,import_jsx_runtime83.jsx)(import_core95.Button,{size:"size-md",variant:"outline",onClick:props.onDelete,children:"Delete"})]})]})}function FilterRowInput(props){let[value,setValue]=(0,import_react50.useState)(props.defaultValue??{}),valueRef=(0,import_react50.useRef)(value);valueRef.current=value;function setFilterCode(newCode){setValue({...valueRef.current,code:newCode})}function setFilterOperator(newOperator){setValue({...valueRef.current,operator:newOperator})}function setFilterValue(newFilterValue){setValue({...valueRef.current,value:newFilterValue})}let searchParam=props.searchParams[value.code],operators=searchParam&&getSearchOperators(searchParam);return(0,import_jsx_runtime83.jsxs)("tr",{children:[(0,import_jsx_runtime83.jsx)("td",{children:(0,import_jsx_runtime83.jsx)(import_core95.NativeSelect,{"data-testid":"filter-field",defaultValue:valueRef.current.code,onChange:e=>setFilterCode(e.currentTarget.value),data:["",...Object.keys(props.searchParams).map(param=>({value:param,label:buildFieldNameString(param)}))]})}),(0,import_jsx_runtime83.jsx)("td",{children:operators&&(0,import_jsx_runtime83.jsx)(import_core95.NativeSelect,{"data-testid":"filter-operation",defaultValue:value.operator,onChange:e=>setFilterOperator(e.currentTarget.value),data:["",...operators.map(op=>({value:op,label:getOpString(op)}))]})}),(0,import_jsx_runtime83.jsx)("td",{children:searchParam&&value.operator&&(0,import_jsx_runtime83.jsx)(SearchFilterValueInput,{resourceType:props.resourceType,searchParam,defaultValue:value.value,onChange:setFilterValue})}),(0,import_jsx_runtime83.jsxs)("td",{children:[value.code&&value.operator&&(0,import_jsx_runtime83.jsx)(import_core95.Button,{size:"compact-md",variant:"outline",onClick:()=>{props.onOk(valueRef.current),setValue({})},children:props.okText}),props.onCancel&&(0,import_jsx_runtime83.jsx)(import_core95.Button,{size:"compact-md",variant:"outline",onClick:props.onCancel,children:"Cancel"})]})]})}var import_core97=require("@mantine/core"),import_react51=require("react");var import_jsx_runtime84=require("react/jsx-runtime");function SearchFilterValueDialog(props){let[value,setValue]=(0,import_react51.useState)(props.defaultValue??"");if(!props.visible||!props.searchParam||!props.filter)return null;function onOk(){props.onOk({...props.filter,value})}return(0,import_jsx_runtime84.jsx)(import_core97.Modal,{title:props.title,size:"xl",opened:props.visible,onClose:props.onCancel,children:(0,import_jsx_runtime84.jsx)(Form,{onSubmit:onOk,children:(0,import_jsx_runtime84.jsxs)(import_core97.Grid,{children:[(0,import_jsx_runtime84.jsx)(import_core97.Grid.Col,{span:10,children:(0,import_jsx_runtime84.jsx)(SearchFilterValueInput,{resourceType:props.resourceType,searchParam:props.searchParam,defaultValue:value,autoFocus:!0,onChange:setValue})}),(0,import_jsx_runtime84.jsx)(import_core97.Grid.Col,{span:2,children:(0,import_jsx_runtime84.jsx)(import_core97.Button,{onClick:onOk,fullWidth:!0,children:"OK"})})]})})})}var import_core98=require("@mantine/core"),import_core99=require("@medplum/core");var import_jsx_runtime85=require("react/jsx-runtime");function SearchPopupMenu(props){if(!props.searchParams)return null;function onSort(searchParam,desc){onChange(setSort(props.search,searchParam.code,desc))}function onClear(searchParam){onChange(clearFiltersOnField(props.search,searchParam.code))}function onPrompt(searchParam,operator){props.onPrompt(searchParam,{code:searchParam.code,operator,value:""})}function onChange(definition){props.onChange(definition)}return props.searchParams.length===1?(0,import_jsx_runtime85.jsx)(SearchParameterSubMenu,{search:props.search,searchParam:props.searchParams[0],onSort,onPrompt,onChange,onClear}):(0,import_jsx_runtime85.jsx)(import_core98.Menu.Dropdown,{children:props.searchParams.map(searchParam=>(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{children:buildFieldNameString(searchParam.code)},searchParam.code))})}function SearchParameterSubMenu(props){switch(props.searchParam.type){case"date":return(0,import_jsx_runtime85.jsx)(DateFilterSubMenu,{...props});case"number":case"quantity":return(0,import_jsx_runtime85.jsx)(NumericFilterSubMenu,{...props});case"reference":return(0,import_jsx_runtime85.jsx)(ReferenceFilterSubMenu,{...props});case"string":case"token":case"uri":return(0,import_jsx_runtime85.jsx)(TextFilterSubMenu,{...props});default:return(0,import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment,{children:["Unknown search param type: ",props.searchParam.type]})}}function DateFilterSubMenu(props){let{searchParam}=props,code=searchParam.code;return(0,import_jsx_runtime85.jsxs)(import_core98.Menu.Dropdown,{children:[(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortAscending,{size:14}),onClick:()=>props.onSort(searchParam,!1),children:"Sort Oldest to Newest"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortDescending,{size:14}),onClick:()=>props.onSort(searchParam,!0),children:"Sort Newest to Oldest"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqual,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Equals..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqualNot,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.NOT_EQUALS),children:"Does not equal..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconMathLower,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.ENDS_BEFORE),children:"Before..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconMathGreater,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.STARTS_AFTER),children:"After..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconBracketsContain,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Between..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addTomorrowFilter(props.search,code)),children:"Tomorrow"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addTodayFilter(props.search,code)),children:"Today"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addYesterdayFilter(props.search,code)),children:"Yesterday"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addNextMonthFilter(props.search,code)),children:"Next Month"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addThisMonthFilter(props.search,code)),children:"This Month"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addLastMonthFilter(props.search,code)),children:"Last Month"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconCalendar,{size:14}),onClick:()=>props.onChange(addYearToDateFilter(props.search,code)),children:"Year to date"}),(0,import_jsx_runtime85.jsx)(CommonMenuItems,{...props})]})}function NumericFilterSubMenu(props){let{searchParam}=props;return(0,import_jsx_runtime85.jsxs)(import_core98.Menu.Dropdown,{children:[(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortAscending,{size:14}),onClick:()=>props.onSort(searchParam,!1),children:"Sort Smallest to Largest"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortDescending,{size:14}),onClick:()=>props.onSort(searchParam,!0),children:"Sort Largest to Smallest"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqual,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Equals..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqualNot,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.NOT_EQUALS),children:"Does not equal..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconMathGreater,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.GREATER_THAN),children:"Greater than..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSettings,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.GREATER_THAN_OR_EQUALS),children:"Greater than or equal to..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconMathLower,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.LESS_THAN),children:"Less than..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSettings,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.LESS_THAN_OR_EQUALS),children:"Less than or equal to..."}),(0,import_jsx_runtime85.jsx)(CommonMenuItems,{...props})]})}function ReferenceFilterSubMenu(props){let{searchParam}=props;return(0,import_jsx_runtime85.jsxs)(import_core98.Menu.Dropdown,{children:[(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqual,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Equals..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqualNot,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.NOT),children:"Does not equal..."}),(0,import_jsx_runtime85.jsx)(CommonMenuItems,{...props})]})}function TextFilterSubMenu(props){let{searchParam}=props;return(0,import_jsx_runtime85.jsxs)(import_core98.Menu.Dropdown,{children:[(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortAscending,{size:14}),onClick:()=>props.onSort(searchParam,!1),children:"Sort A to Z"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconSortDescending,{size:14}),onClick:()=>props.onSort(searchParam,!0),children:"Sort Z to A"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqual,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Equals..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconEqualNot,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.NOT),children:"Does not equal..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconBucket,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.CONTAINS),children:"Contains..."}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconBucketOff,{size:14}),onClick:()=>props.onPrompt(searchParam,import_core99.Operator.EQUALS),children:"Does not contain..."}),(0,import_jsx_runtime85.jsx)(CommonMenuItems,{...props})]})}function CommonMenuItems(props){let{searchParam}=props,code=searchParam.code;return(0,import_jsx_runtime85.jsxs)(import_jsx_runtime85.Fragment,{children:[(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconBleach,{size:14}),onClick:()=>props.onChange(addMissingFilter(props.search,code)),children:"Missing"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconBleachOff,{size:14}),onClick:()=>props.onChange(addMissingFilter(props.search,code,!1)),children:"Not missing"}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Divider,{}),(0,import_jsx_runtime85.jsx)(import_core98.Menu.Item,{leftSection:(0,import_jsx_runtime85.jsx)(IconX,{size:14}),onClick:()=>props.onClear(searchParam),children:"Clear filters"})]})}var SearchControl_default={root:"SearchControl_root",table:"SearchControl_table",tr:"SearchControl_tr",th:"SearchControl_th",control:"SearchControl_control",icon:"SearchControl_icon"};var import_core100=require("@medplum/core");function getFieldDefinitions(search){let resourceType=search.resourceType,fields=[];for(let name of search.fields||["id","_lastUpdated"])fields.push(getFieldDefinition(resourceType,name));return fields}function getFieldDefinition(resourceType,name){if(name==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(name==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let exactElementDefinition=(0,import_core100.getElementDefinition)(resourceType,name),exactSearchParam=(0,import_core100.getSearchParameter)(resourceType,name.toLowerCase());if(exactElementDefinition&&exactSearchParam)return{name,elementDefinition:exactElementDefinition,searchParams:[exactSearchParam]};if(exactElementDefinition){let allSearchParams=(0,import_core100.getSearchParameters)(resourceType),searchParams;if(allSearchParams){let pathRegex=new RegExp(`${resourceType}\\.${name.replaceAll("[x]","")}([^\\w-]|$)`);searchParams=Object.values(allSearchParams).filter(p2=>!!p2.expression&&pathRegex.test(p2?.expression)),searchParams.length===0&&(searchParams=void 0)}return{name,elementDefinition:exactElementDefinition,searchParams}}if(exactSearchParam){let details=(0,import_core100.getSearchParameterDetails)(resourceType,exactSearchParam);return{name,elementDefinition:details.elementDefinitions?.[0],searchParams:[exactSearchParam]}}return{name}}var import_jsx_runtime86=require("react/jsx-runtime"),SearchChangeEvent=class extends Event{constructor(definition){super("change"),this.definition=definition}},SearchLoadEvent=class extends Event{constructor(response){super("load"),this.response=response}},SearchClickEvent=class extends Event{constructor(resource,browserEvent){super("click"),this.resource=resource,this.browserEvent=browserEvent}};function SearchControl(props){let medplum=s(),[schemaLoaded,setSchemaLoaded]=(0,import_react52.useState)(!1),[outcome,setOutcome]=(0,import_react52.useState)(),{search,onLoad}=props,[state,setState]=(0,import_react52.useState)({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),stateRef=(0,import_react52.useRef)(state);stateRef.current=state;let totalType=search.total??"accurate",loadResults=(0,import_react52.useCallback)(options=>{setOutcome(void 0),medplum.search(search.resourceType,(0,import_core102.formatSearchQuery)({...search,total:totalType,fields:void 0}),options).then(response=>{setState({...stateRef.current,searchResponse:response}),onLoad&&onLoad(new SearchLoadEvent(response))}).catch(reason=>{setState({...stateRef.current,searchResponse:void 0}),setOutcome(reason)})},[medplum,search,totalType,onLoad]),refreshResults=(0,import_react52.useCallback)(()=>{setState({...stateRef.current,searchResponse:void 0}),loadResults({cache:"reload"})},[loadResults]);(0,import_react52.useEffect)(()=>{loadResults()},[loadResults]);function handleSingleCheckboxClick(e,id){e.stopPropagation();let checked=e.target.checked,newSelected={...stateRef.current.selected};checked?newSelected[id]=!0:delete newSelected[id],setState({...stateRef.current,selected:newSelected})}function handleAllCheckboxClick(e){e.stopPropagation();let checked=e.target.checked,newSelected={},searchResponse=stateRef.current.searchResponse;checked&&searchResponse?.entry&&searchResponse.entry.forEach(entry=>{entry.resource?.id&&(newSelected[entry.resource.id]=!0)}),setState({...stateRef.current,selected:newSelected})}function isAllSelected(){let state2=stateRef.current;if(!state2.searchResponse?.entry||state2.searchResponse.entry.length===0)return!1;for(let e of state2.searchResponse.entry)if(e.resource?.id&&!state2.selected[e.resource.id])return!1;return!0}function emitSearchChange(newSearch){props.onChange&&props.onChange(new SearchChangeEvent(newSearch))}function handleRowClick(e,resource){if(isCheckboxCell(e.target)||e.button===2)return;killEvent(e);let isAux=e.button===1||e.ctrlKey||e.metaKey;!isAux&&props.onClick&&props.onClick(new SearchClickEvent(resource,e)),isAux&&props.onAuxClick&&props.onAuxClick(new SearchClickEvent(resource,e))}function isExportPassed(){return!!(props.onExport??props.onExportCsv??props.onExportTransactionBundle)}if((0,import_react52.useEffect)(()=>{setSchemaLoaded(!1),medplum.requestSchema(props.search.resourceType).then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum,props.search.resourceType]),!schemaLoaded)return(0,import_jsx_runtime86.jsx)(import_core101.Center,{style:{width:"100%",height:"100%"},children:(0,import_jsx_runtime86.jsx)(import_core101.Loader,{})});let checkboxColumn=props.checkboxesEnabled,fields=getFieldDefinitions(search),resourceType=search.resourceType,lastResult=state.searchResponse,resources=lastResult?.entry?.map(e=>e.resource),buttonVariant="subtle",buttonColor="gray",iconSize=16,isMobile=window.innerWidth<768;return(0,import_jsx_runtime86.jsxs)("div",{className:SearchControl_default.root,"data-testid":"search-control",children:[!props.hideToolbar&&(0,import_jsx_runtime86.jsxs)(import_core101.Group,{justify:"space-between",mb:"xl",children:[(0,import_jsx_runtime86.jsxs)(import_core101.Group,{gap:2,children:[(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconColumns,{size:iconSize}),onClick:()=>setState({...stateRef.current,fieldEditorVisible:!0}),children:"Fields"}),(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconFilter,{size:iconSize}),onClick:()=>setState({...stateRef.current,filterEditorVisible:!0}),children:"Filters"}),props.onNew&&(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconFilePlus,{size:iconSize}),onClick:props.onNew,children:"New..."}),!isMobile&&isExportPassed()&&(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconTableExport,{size:iconSize}),onClick:props.onExport?props.onExport:()=>setState({...stateRef.current,exportDialogVisible:!0}),children:"Export..."}),!isMobile&&props.onDelete&&(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconTrash,{size:iconSize}),onClick:()=>props.onDelete(Object.keys(state.selected)),children:"Delete..."}),!isMobile&&props.onBulk&&(0,import_jsx_runtime86.jsx)(import_core101.Button,{size:"compact-md",variant:buttonVariant,color:buttonColor,leftSection:(0,import_jsx_runtime86.jsx)(IconBoxMultiple,{size:iconSize}),onClick:()=>props.onBulk(Object.keys(state.selected)),children:"Bulk..."})]}),(0,import_jsx_runtime86.jsxs)(import_core101.Group,{gap:2,children:[lastResult&&(0,import_jsx_runtime86.jsxs)(import_core101.Text,{size:"xs",c:"dimmed",children:[getStart(search,lastResult.total),"-",getEnd(search,lastResult.total)," of"," ",`${totalType==="estimate"?"~":""}${lastResult.total?.toLocaleString()}`]}),(0,import_jsx_runtime86.jsx)(import_core101.ActionIcon,{variant:buttonVariant,color:buttonColor,title:"Refresh",onClick:refreshResults,children:(0,import_jsx_runtime86.jsx)(IconRefresh,{size:iconSize})})]})]}),(0,import_jsx_runtime86.jsxs)(import_core101.Table,{className:SearchControl_default.table,children:[(0,import_jsx_runtime86.jsxs)(import_core101.Table.Thead,{children:[(0,import_jsx_runtime86.jsxs)(import_core101.Table.Tr,{children:[checkboxColumn&&(0,import_jsx_runtime86.jsx)(import_core101.Table.Th,{children:(0,import_jsx_runtime86.jsx)("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:isAllSelected(),onChange:e=>handleAllCheckboxClick(e)})}),fields.map(field=>(0,import_jsx_runtime86.jsx)(import_core101.Table.Th,{children:(0,import_jsx_runtime86.jsxs)(import_core101.Menu,{shadow:"md",width:240,position:"bottom-end",children:[(0,import_jsx_runtime86.jsx)(import_core101.Menu.Target,{children:(0,import_jsx_runtime86.jsx)(import_core101.UnstyledButton,{className:SearchControl_default.control,p:2,children:(0,import_jsx_runtime86.jsxs)(import_core101.Group,{justify:"space-between",wrap:"nowrap",children:[(0,import_jsx_runtime86.jsx)(import_core101.Text,{fw:500,children:buildFieldNameString(field.name)}),(0,import_jsx_runtime86.jsx)(import_core101.Center,{className:SearchControl_default.icon,children:(0,import_jsx_runtime86.jsx)(IconAdjustmentsHorizontal,{size:14,stroke:1.5})})]})})}),(0,import_jsx_runtime86.jsx)(SearchPopupMenu,{search:props.search,searchParams:field.searchParams,onPrompt:(searchParam,filter)=>{setState({...stateRef.current,filterDialogVisible:!0,filterDialogSearchParam:searchParam,filterDialogFilter:filter})},onChange:result=>{emitSearchChange(result)}})]})},field.name))]}),!props.hideFilters&&(0,import_jsx_runtime86.jsxs)(import_core101.Table.Tr,{children:[checkboxColumn&&(0,import_jsx_runtime86.jsx)(import_core101.Table.Th,{}),fields.map(field=>(0,import_jsx_runtime86.jsx)(import_core101.Table.Th,{children:field.searchParams&&(0,import_jsx_runtime86.jsx)(FilterDescription,{resourceType,searchParams:field.searchParams,filters:props.search.filters})},field.name))]})]}),(0,import_jsx_runtime86.jsx)(import_core101.Table.Tbody,{children:resources?.map(resource=>resource&&(0,import_jsx_runtime86.jsxs)(import_core101.Table.Tr,{className:SearchControl_default.tr,"data-testid":"search-control-row",onClick:e=>handleRowClick(e,resource),onAuxClick:e=>handleRowClick(e,resource),children:[checkboxColumn&&(0,import_jsx_runtime86.jsx)(import_core101.Table.Td,{children:(0,import_jsx_runtime86.jsx)("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${resource.id}`,checked:!!state.selected[resource.id],onChange:e=>handleSingleCheckboxClick(e,resource.id)})}),fields.map(field=>(0,import_jsx_runtime86.jsx)(import_core101.Table.Td,{children:renderValue(resource,field)},field.name))]},resource.id))})]}),resources?.length===0&&(0,import_jsx_runtime86.jsx)(Container,{children:(0,import_jsx_runtime86.jsx)(import_core101.Center,{style:{height:150},children:(0,import_jsx_runtime86.jsx)(import_core101.Text,{size:"xl",c:"dimmed",children:"No results"})})}),lastResult?.total!==void 0&&lastResult.total>0&&(0,import_jsx_runtime86.jsx)(import_core101.Center,{m:"md",p:"md",children:(0,import_jsx_runtime86.jsx)(import_core101.Pagination,{value:getPage(search),total:getTotalPages(search,lastResult.total),onChange:newPage=>emitSearchChange(setPage(search,newPage)),getControlProps:control=>{switch(control){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})}),outcome&&(0,import_jsx_runtime86.jsx)("div",{"data-testid":"search-error",children:(0,import_jsx_runtime86.jsx)("pre",{style:{textAlign:"left"},children:JSON.stringify(outcome,void 0,2)})}),(0,import_jsx_runtime86.jsx)(SearchFieldEditor,{search:props.search,visible:stateRef.current.fieldEditorVisible,onOk:result=>{emitSearchChange(result),setState({...stateRef.current,fieldEditorVisible:!1})},onCancel:()=>{setState({...stateRef.current,fieldEditorVisible:!1})}}),(0,import_jsx_runtime86.jsx)(SearchFilterEditor,{search:props.search,visible:stateRef.current.filterEditorVisible,onOk:result=>{emitSearchChange(result),setState({...stateRef.current,filterEditorVisible:!1})},onCancel:()=>{setState({...stateRef.current,filterEditorVisible:!1})}}),(0,import_jsx_runtime86.jsx)(SearchExportDialog,{visible:stateRef.current.exportDialogVisible,exportCsv:props.onExportCsv,exportTransactionBundle:props.onExportTransactionBundle,onCancel:()=>{setState({...stateRef.current,exportDialogVisible:!1})}}),(0,import_jsx_runtime86.jsx)(SearchFilterValueDialog,{visible:stateRef.current.filterDialogVisible,title:state.filterDialogSearchParam?.code?buildFieldNameString(state.filterDialogSearchParam.code):"",resourceType,searchParam:state.filterDialogSearchParam,filter:state.filterDialogFilter,defaultValue:"",onOk:filter=>{emitSearchChange(addFilter(props.search,filter.code,filter.operator,filter.value)),setState({...stateRef.current,filterDialogVisible:!1})},onCancel:()=>{setState({...stateRef.current,filterDialogVisible:!1})}},state.filterDialogSearchParam?.code)]})}var MemoizedSearchControl=(0,import_react52.memo)(SearchControl);function FilterDescription(props){let filters=(props.filters??[]).filter(f=>props.searchParams.find(p2=>p2.code===f.code));return filters.length===0?(0,import_jsx_runtime86.jsx)("span",{children:"no filters"}):(0,import_jsx_runtime86.jsx)(import_jsx_runtime86.Fragment,{children:filters.map(filter=>(0,import_jsx_runtime86.jsxs)("div",{children:[getOpString(filter.operator),"\xA0",(0,import_jsx_runtime86.jsx)(SearchFilterValueDisplay,{resourceType:props.resourceType,filter})]},`filter-${filter.code}-${filter.operator}-${filter.value}`))})}function getPage(search){return Math.floor((search.offset??0)/(search.count??import_core102.DEFAULT_SEARCH_COUNT))+1}function getTotalPages(search,total){let pageSize=search.count??import_core102.DEFAULT_SEARCH_COUNT;return Math.ceil(total/pageSize)}function getStart(search,total){return Math.min(total,(search.offset??0)+1)}function getEnd(search,total){return Math.min(total,((search.offset??0)+1)*(search.count??import_core102.DEFAULT_SEARCH_COUNT))}var import_jsx_runtime87=require("react/jsx-runtime");function FhirPathTable(props){let medplum=s(),[schemaLoaded,setSchemaLoaded]=(0,import_react53.useState)(!1),[outcome,setOutcome]=(0,import_react53.useState)(),{query,fields}=props,[response,setResponse]=(0,import_react53.useState)(),[selected,setSelected]=(0,import_react53.useState)({}),responseRef=(0,import_react53.useRef)();responseRef.current=response;let selectedRef=(0,import_react53.useRef)({});selectedRef.current=selected,(0,import_react53.useEffect)(()=>{setOutcome(void 0),medplum.graphql(query).then(setResponse).catch(err=>setOutcome((0,import_core104.normalizeOperationOutcome)(err)))},[medplum,query]);function handleSingleCheckboxClick(e,id){e.stopPropagation();let checked=e.target.checked,newSelected={...selectedRef.current};checked?newSelected[id]=!0:delete newSelected[id],setSelected(newSelected)}function handleAllCheckboxClick(e){e.stopPropagation();let checked=e.target.checked,newSelected={},resources=responseRef.current?.data.ResourceList;checked&&resources&&resources.forEach(resource=>{resource.id&&(newSelected[resource.id]=!0)}),setSelected(newSelected)}function isAllSelected(){let resources=responseRef.current?.data.ResourceList;if(!resources||resources.length===0)return!1;for(let resource of resources)if(resource.id&&!selectedRef.current[resource.id])return!1;return!0}function handleRowClick(e,resource){isCheckboxCell(e.target)||(killEvent(e),e.button!==1&&props.onClick&&props.onClick(new SearchClickEvent(resource,e)),e.button===1&&props.onAuxClick&&props.onAuxClick(new SearchClickEvent(resource,e)))}if((0,import_react53.useEffect)(()=>{medplum.requestSchema(props.resourceType).then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum,props.resourceType]),!schemaLoaded)return(0,import_jsx_runtime87.jsx)(import_core103.Loader,{});let checkboxColumn=props.checkboxesEnabled;return(0,import_jsx_runtime87.jsxs)("div",{onContextMenu:e=>killEvent(e),"data-testid":"search-control",children:[(0,import_jsx_runtime87.jsxs)(import_core103.Table,{children:[(0,import_jsx_runtime87.jsx)(import_core103.Table.Thead,{children:(0,import_jsx_runtime87.jsxs)(import_core103.Table.Tr,{children:[checkboxColumn&&(0,import_jsx_runtime87.jsx)(import_core103.Table.Th,{children:(0,import_jsx_runtime87.jsx)("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:isAllSelected(),onChange:e=>handleAllCheckboxClick(e)})}),fields.map(field=>(0,import_jsx_runtime87.jsx)(import_core103.Table.Th,{children:field.name},field.name))]})}),(0,import_jsx_runtime87.jsx)(import_core103.Table.Tbody,{children:response?.data.ResourceList.map(resource=>resource&&(0,import_jsx_runtime87.jsxs)(import_core103.Table.Tr,{"data-testid":"search-control-row",onClick:e=>handleRowClick(e,resource),onAuxClick:e=>handleRowClick(e,resource),children:[checkboxColumn&&(0,import_jsx_runtime87.jsx)(import_core103.Table.Td,{children:(0,import_jsx_runtime87.jsx)("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${resource.id}`,checked:!!selected[resource.id],onChange:e=>handleSingleCheckboxClick(e,resource.id)})}),fields.map(field=>(0,import_jsx_runtime87.jsx)(import_core103.Table.Td,{children:(0,import_jsx_runtime87.jsx)(FhirPathDisplay,{propertyType:field.propertyType,path:field.fhirPath,resource})},field.name))]},resource.id))})]}),response?.data.ResourceList.length===0&&(0,import_jsx_runtime87.jsx)("div",{"data-testid":"empty-search",children:"No results"}),outcome&&(0,import_jsx_runtime87.jsx)("div",{"data-testid":"search-error",children:(0,import_jsx_runtime87.jsx)("pre",{style:{textAlign:"left"},children:JSON.stringify(outcome,void 0,2)})}),props.onBulk&&(0,import_jsx_runtime87.jsx)(import_core103.Button,{onClick:()=>props.onBulk(Object.keys(selectedRef.current)),children:"Bulk..."})]})}var MemoizedFhirPathTable=(0,import_react53.memo)(FhirPathTable);var import_jsx_runtime88=require("react/jsx-runtime");function Logo(props){return(0,import_jsx_runtime88.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:props.size,height:props.size},children:[(0,import_jsx_runtime88.jsx)("title",{children:"Medplum Logo"}),(0,import_jsx_runtime88.jsx)("path",{fill:props.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),(0,import_jsx_runtime88.jsx)("path",{fill:props.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),(0,import_jsx_runtime88.jsx)("path",{fill:props.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),(0,import_jsx_runtime88.jsx)("path",{fill:props.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),(0,import_jsx_runtime88.jsx)("path",{fill:props.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"})]})}var import_core107=require("@mantine/core");var import_core105=require("@mantine/core"),import_core106=require("@medplum/core");var import_jsx_runtime89=require("react/jsx-runtime");function MeasureReportGroupDisplay(props){let{group}=props;return(0,import_jsx_runtime89.jsx)(import_core105.Paper,{withBorder:!0,radius:"md",p:"xs",display:"flex",style:{alignItems:"center",justifyContent:"center"},children:(0,import_jsx_runtime89.jsxs)(import_core105.Group,{children:[group.measureScore&&(0,import_jsx_runtime89.jsx)(MeasureScore,{group}),!group.measureScore&&(0,import_jsx_runtime89.jsx)(MeasureReportPopulation,{group})]})})}function MeasureTitle(props){let{measure}=props;return(0,import_jsx_runtime89.jsxs)(import_jsx_runtime89.Fragment,{children:[(0,import_jsx_runtime89.jsx)(import_core105.Text,{fz:"md",fw:500,mb:8,children:measure.title}),(0,import_jsx_runtime89.jsx)(import_core105.Text,{fz:"xs",c:"dimmed",mb:8,children:measure.subtitle})]})}function MeasureReportPopulation(props){let{group}=props,populations=group.population,numerator=populations?.find(p2=>(0,import_core106.formatCodeableConcept)(p2.code)==="numerator"),denominator=populations?.find(p2=>(0,import_core106.formatCodeableConcept)(p2.code)==="denominator"),numeratorCount=numerator?.count,denominatorCount=denominator?.count;if(denominatorCount===0)return(0,import_jsx_runtime89.jsxs)(import_core105.Box,{children:[(0,import_jsx_runtime89.jsx)(import_core105.Title,{order:3,children:"Not Applicable"}),(0,import_jsx_runtime89.jsx)(import_core105.Text,{children:`Denominator: ${denominatorCount}`})]});if(numeratorCount===void 0||denominatorCount===void 0)return(0,import_jsx_runtime89.jsxs)(import_core105.Box,{children:[(0,import_jsx_runtime89.jsx)(import_core105.Title,{order:3,children:"Insufficient Data"}),(0,import_jsx_runtime89.jsx)(import_core105.Text,{children:`Numerator: ${numeratorCount}`}),(0,import_jsx_runtime89.jsx)(import_core105.Text,{children:`Denominator: ${denominatorCount}`})]});let value=numeratorCount/denominatorCount*100;return(0,import_jsx_runtime89.jsx)(import_core105.RingProgress,{size:120,thickness:12,roundCaps:!0,sections:[{value,color:groupColor(value)}],label:(0,import_jsx_runtime89.jsx)(import_core105.Flex,{justify:"center",children:(0,import_jsx_runtime89.jsxs)(import_core105.Text,{fw:700,fz:18,children:[numeratorCount," / ",denominatorCount]})})})}function MeasureScore(props){let{group}=props,unit=group.measureScore?.unit??group.measureScore?.code;return(0,import_jsx_runtime89.jsx)(import_jsx_runtime89.Fragment,{children:unit==="%"?(0,import_jsx_runtime89.jsx)(import_core105.RingProgress,{size:120,thickness:12,roundCaps:!0,sections:[{value:groupValue(group),color:groupColor(group?.measureScore?.value??0)}],label:(0,import_jsx_runtime89.jsx)(import_core105.Flex,{justify:"center",children:(0,import_jsx_runtime89.jsx)(import_core105.Text,{fw:700,fz:18,children:(0,import_jsx_runtime89.jsx)(QuantityDisplay,{value:group.measureScore})})})}):(0,import_jsx_runtime89.jsx)(import_core105.Flex,{h:120,align:"center",children:(0,import_jsx_runtime89.jsx)(import_core105.Title,{order:3,children:(0,import_jsx_runtime89.jsx)(QuantityDisplay,{value:group.measureScore})})})})}function groupValue(group){let score=group.measureScore?.value,unit=group.measureScore?.unit;return score?score<=1&&unit==="%"?score*100:score:0}function groupColor(score){return score<=33?"red":score<=67?"yellow":"green"}var import_jsx_runtime90=require("react/jsx-runtime");function MeasureReportDisplay(props){let report=j(props.measureReport),[measure]=ue("Measure",{url:report?.measure});return report?(0,import_jsx_runtime90.jsxs)(import_core107.Box,{children:[measure&&(0,import_jsx_runtime90.jsx)(MeasureTitle,{measure}),(0,import_jsx_runtime90.jsx)(import_core107.SimpleGrid,{cols:{base:3,sm:1},spacing:{base:"md",sm:"sm"},children:report.group?.map((group,idx)=>(0,import_jsx_runtime90.jsx)(MeasureReportGroupDisplay,{group},group.id??idx))})]}):null}var import_core108=require("@mantine/core"),import_core109=require("@medplum/core");var import_jsx_runtime91=require("react/jsx-runtime");function OperationOutcomeAlert(props){let issues=props.outcome?.issue||props.issues;return!issues||issues.length===0?null:(0,import_jsx_runtime91.jsx)(import_core108.Alert,{icon:(0,import_jsx_runtime91.jsx)(IconAlertCircle,{size:16}),color:"red",children:issues.map(issue=>(0,import_jsx_runtime91.jsx)("div",{"data-testid":"text-field-error",children:(0,import_core109.operationOutcomeIssueToString)(issue)},issue.details?.text))})}var import_core120=require("@mantine/core"),import_core121=require("@medplum/core");var import_react59=require("react");var import_core110=require("@mantine/core"),import_hooks2=require("@mantine/hooks"),import_core111=require("@medplum/core");var import_react54=require("react");var import_jsx_runtime92=require("react/jsx-runtime");function Allergies(props){let medplum=s(),{patient,encounter}=props,[allergies,setAllergies]=(0,import_react54.useState)(props.allergies),[opened,{open,close}]=(0,import_hooks2.useDisclosure)(!1),[code,setCode]=(0,import_react54.useState)(),handleSubmit=(0,import_react54.useCallback)(formData=>{medplum.createResource({resourceType:"AllergyIntolerance",patient:(0,import_core111.createReference)(patient),encounter:encounter?(0,import_core111.createReference)(encounter):void 0,code,onsetDateTime:formData.onset?formData.onset:void 0,reaction:formData.reaction?[{manifestation:[{text:formData.reaction}]}]:void 0}).then(newAllergy=>{setAllergies([...allergies,newAllergy]),close()}).catch(console.error)},[medplum,patient,encounter,allergies,close,code]);return(0,import_jsx_runtime92.jsxs)(import_jsx_runtime92.Fragment,{children:[(0,import_jsx_runtime92.jsxs)(import_core110.Group,{justify:"space-between",children:[(0,import_jsx_runtime92.jsx)(import_core110.Text,{fz:"md",fw:700,children:"Allergies"}),(0,import_jsx_runtime92.jsx)(import_core110.Anchor,{href:"#",onClick:e=>{killEvent(e),open()},children:"+ Add"})]}),allergies.length>0?(0,import_jsx_runtime92.jsx)(import_core110.Box,{children:allergies.map(allergy=>(0,import_jsx_runtime92.jsx)(import_core110.Badge,{variant:"light",maw:"100%",children:(0,import_jsx_runtime92.jsx)(CodeableConceptDisplay,{value:allergy.code})},allergy.id))}):(0,import_jsx_runtime92.jsx)(import_core110.Text,{children:"(none)"}),(0,import_jsx_runtime92.jsx)(import_core110.Modal,{opened,onClose:close,title:"Add Allergy",children:(0,import_jsx_runtime92.jsx)(Form,{onSubmit:handleSubmit,children:(0,import_jsx_runtime92.jsxs)(import_core110.Stack,{children:[(0,import_jsx_runtime92.jsx)(CodeableConceptInput,{name:"allergy","data-autofocus":!0,binding:"http://hl7.org/fhir/us/core/ValueSet/us-core-allergy-substance",onChange:allergy=>setCode(allergy)}),(0,import_jsx_runtime92.jsx)(import_core110.TextInput,{name:"reaction",label:"Reaction"}),(0,import_jsx_runtime92.jsx)(import_core110.NativeSelect,{name:"status",label:"Status",data:["active"]}),(0,import_jsx_runtime92.jsx)(import_core110.TextInput,{name:"onset",label:"Onset",type:"date"}),(0,import_jsx_runtime92.jsx)(import_core110.Group,{justify:"flex-end",gap:4,mt:"md",children:(0,import_jsx_runtime92.jsx)(import_core110.Button,{type:"submit",children:"Save"})})]})})})]})}var import_core112=require("@mantine/core"),import_hooks3=require("@mantine/hooks"),import_core113=require("@medplum/core");var import_react55=require("react");var import_jsx_runtime93=require("react/jsx-runtime");function Medications(props){let medplum=s(),[medicationRequests,setMedicationRequests]=(0,import_react55.useState)(props.medicationRequests),[opened,{open,close}]=(0,import_hooks3.useDisclosure)(!1),[code,setCode]=(0,import_react55.useState)(),handleSubmit=(0,import_react55.useCallback)(formData=>{let status=formData.status;medplum.createResource({resourceType:"MedicationRequest",status,intent:"order",encounter:props.encounter?(0,import_core113.createReference)(props.encounter):void 0,medicationCodeableConcept:code,subject:(0,import_core113.createReference)(props.patient)}).then(newRequest=>{setMedicationRequests([newRequest,...medicationRequests]),close()}).catch(console.error)},[medplum,props.patient,props.encounter,medicationRequests,close,code]);return(0,import_jsx_runtime93.jsxs)(import_jsx_runtime93.Fragment,{children:[(0,import_jsx_runtime93.jsxs)(import_core112.Group,{justify:"space-between",children:[(0,import_jsx_runtime93.jsx)(import_core112.Text,{fz:"md",fw:700,children:"Medications"}),(0,import_jsx_runtime93.jsx)(import_core112.Anchor,{href:"#",onClick:e=>{killEvent(e),open()},children:"+ Add"})]}),medicationRequests.length>0?(0,import_jsx_runtime93.jsx)(import_core112.Box,{children:medicationRequests.map(request=>(0,import_jsx_runtime93.jsx)(import_core112.Badge,{mt:4,variant:"light",maw:"50%",color:request.status==="active"?"blue":"gray",children:(0,import_jsx_runtime93.jsx)(CodeableConceptDisplay,{value:request.medicationCodeableConcept})},request.id))}):(0,import_jsx_runtime93.jsx)(import_core112.Text,{children:"(none)"}),(0,import_jsx_runtime93.jsx)(import_core112.Modal,{opened,onClose:close,title:"Add Medication Request",children:(0,import_jsx_runtime93.jsx)(Form,{onSubmit:handleSubmit,children:(0,import_jsx_runtime93.jsxs)(import_core112.Stack,{h:275,children:[(0,import_jsx_runtime93.jsx)(CodeableConceptInput,{name:"request","data-autofocus":!0,binding:"https://app.medplum.com/ValueSet/16d6f7b7-7eeb-4d0e-a83b-83be082aa10b",onChange:request=>setCode(request)}),(0,import_jsx_runtime93.jsxs)(import_core112.Radio.Group,{mt:32,name:"status",label:"Request Status",required:!0,children:[(0,import_jsx_runtime93.jsx)(import_core112.Radio,{value:"active",label:"active",my:"xs"},"active"),(0,import_jsx_runtime93.jsx)(import_core112.Radio,{value:"stopped",label:"stopped",my:"xs"},"stopped")]}),(0,import_jsx_runtime93.jsx)(import_core112.Group,{justify:"flex-end",gap:4,mt:"md",children:(0,import_jsx_runtime93.jsx)(import_core112.Button,{type:"submit",children:"Save"})})]})})})]})}var import_core114=require("@mantine/core"),import_hooks4=require("@mantine/hooks"),import_core115=require("@medplum/core");var import_react56=require("react");var import_jsx_runtime94=require("react/jsx-runtime");function ProblemList(props){let medplum=s(),{patient,encounter}=props,[problems,setProblems]=(0,import_react56.useState)(props.problems),[opened,{open,close}]=(0,import_hooks4.useDisclosure)(!1),handleSubmit=(0,import_react56.useCallback)(formData=>{medplum.createResource({resourceType:"Condition",subject:(0,import_core115.createReference)(patient),encounter:encounter?(0,import_core115.createReference)(encounter):void 0,code:{coding:[{code:formData.problem,display:formData.problem}]},onsetDateTime:formData.onset?formData.onset:void 0}).then(newProblem=>{setProblems([...problems,newProblem]),close()}).catch(console.error)},[medplum,patient,encounter,problems,close]);return(0,import_jsx_runtime94.jsxs)(import_jsx_runtime94.Fragment,{children:[(0,import_jsx_runtime94.jsxs)(import_core114.Group,{justify:"space-between",children:[(0,import_jsx_runtime94.jsx)(import_core114.Text,{fz:"md",fw:700,children:"Problem List"}),(0,import_jsx_runtime94.jsx)(import_core114.Anchor,{href:"#",onClick:e=>{killEvent(e),open()},children:"+ Add"})]}),problems.length>0?(0,import_jsx_runtime94.jsx)(import_core114.Grid,{gutter:"xs",children:problems.map(problem=>(0,import_jsx_runtime94.jsxs)(import_react56.Fragment,{children:[(0,import_jsx_runtime94.jsx)(import_core114.Grid.Col,{span:2,children:problem.onsetDateTime?.substring(0,4)}),(0,import_jsx_runtime94.jsx)(import_core114.Grid.Col,{span:10,children:(0,import_jsx_runtime94.jsx)(import_core114.Badge,{variant:"light",maw:"100%",children:(0,import_jsx_runtime94.jsx)(CodeableConceptDisplay,{value:problem.code})},problem.id)})]},problem.id))}):(0,import_jsx_runtime94.jsx)(import_core114.Text,{children:"(none)"}),(0,import_jsx_runtime94.jsx)(import_core114.Modal,{opened,onClose:close,title:"Add Problem",children:(0,import_jsx_runtime94.jsx)(Form,{onSubmit:handleSubmit,children:(0,import_jsx_runtime94.jsxs)(import_core114.Stack,{children:[(0,import_jsx_runtime94.jsx)(import_core114.TextInput,{name:"problem",label:"Problem","data-autofocus":!0,autoFocus:!0,required:!0}),(0,import_jsx_runtime94.jsx)(import_core114.TextInput,{name:"onset",label:"Dx Date",type:"date",required:!0}),(0,import_jsx_runtime94.jsx)(import_core114.NativeSelect,{name:"status",label:"Status",data:["active"]}),(0,import_jsx_runtime94.jsx)(import_core114.Textarea,{name:"notes",label:"Notes"}),(0,import_jsx_runtime94.jsx)(import_core114.Group,{justify:"flex-end",gap:4,mt:"md",children:(0,import_jsx_runtime94.jsx)(import_core114.Button,{type:"submit",children:"Save"})})]})})})]})}var import_core116=require("@mantine/core"),import_hooks5=require("@mantine/hooks"),import_core117=require("@medplum/core");var import_react57=require("react");var import_jsx_runtime95=require("react/jsx-runtime"),smokingStatusOptions={266919005:"Never smoked tobacco",266927001:"Tobacco smoking consumption unknown","428041000124106":"Occasional tobacco smoker","428061000124105":"Light tobacco smoker","428071000124103":"Heavy tobacco smoker",449868002:"Smokes tobacco daily",77176002:"Smoker",8517006:"Ex-smoker"};function SmokingStatus(props){let medplum=s(),{patient,encounter}=props,[smokingStatus,setSmokingStatus]=(0,import_react57.useState)(props.smokingStatus),[opened,{open,close}]=(0,import_hooks5.useDisclosure)(!1),handleSubmit=(0,import_react57.useCallback)(formData=>{medplum.createResource({resourceType:"Observation",meta:{profile:[import_core117.HTTP_HL7_ORG+"/fhir/us/core/StructureDefinition/us-core-smokingstatus"]},status:"final",category:[{coding:[{system:"http://terminology.hl7.org/CodeSystem/observation-category",code:"social-history",display:"Social History"}],text:"Social History"}],code:{coding:[{system:import_core117.LOINC,code:"72166-2",display:"Tobacco smoking status"}],text:"Tobacco smoking status"},subject:(0,import_core117.createReference)(patient),encounter:encounter?(0,import_core117.createReference)(encounter):void 0,effectiveDateTime:new Date().toISOString(),valueCodeableConcept:{coding:[{system:import_core117.SNOMED,version:import_core117.SNOMED+"/731000124108",code:formData.smokingStatus}],text:smokingStatusOptions[formData.smokingStatus]}}).then(newSmokingStatus=>{setSmokingStatus(newSmokingStatus),close()}).catch(console.error)},[medplum,patient,encounter,close]);return(0,import_jsx_runtime95.jsxs)(import_jsx_runtime95.Fragment,{children:[(0,import_jsx_runtime95.jsxs)(import_core116.Group,{justify:"space-between",children:[(0,import_jsx_runtime95.jsx)(import_core116.Text,{fz:"md",fw:700,children:"Smoking Status"}),(0,import_jsx_runtime95.jsx)(import_core116.Anchor,{href:"#",onClick:e=>{killEvent(e),open()},children:"+ Edit"})]}),smokingStatus?.valueCodeableConcept?(0,import_jsx_runtime95.jsx)(import_core116.Box,{children:(0,import_jsx_runtime95.jsx)(import_core116.Badge,{variant:"light",children:(0,import_jsx_runtime95.jsx)(CodeableConceptDisplay,{value:smokingStatus.valueCodeableConcept})})}):(0,import_jsx_runtime95.jsx)(import_core116.Text,{children:"(none)"}),(0,import_jsx_runtime95.jsx)(import_core116.Modal,{opened,onClose:close,title:"Set Smoking Status",children:(0,import_jsx_runtime95.jsx)(Form,{onSubmit:handleSubmit,children:(0,import_jsx_runtime95.jsxs)(import_core116.Stack,{children:[(0,import_jsx_runtime95.jsx)(import_core116.Radio.Group,{name:"smokingStatus",label:"Smoking Status",required:!0,children:Object.entries(smokingStatusOptions).map(([code,text])=>(0,import_jsx_runtime95.jsx)(import_core116.Radio,{value:code,label:text,my:"xs"},code))}),(0,import_jsx_runtime95.jsx)(import_core116.Group,{justify:"flex-end",gap:4,mt:"md",children:(0,import_jsx_runtime95.jsx)(import_core116.Button,{type:"submit",children:"Save"})})]})})})]})}var import_core119=require("@mantine/core"),import_hooks6=require("@mantine/hooks");var import_react58=require("react");var import_core118=require("@medplum/core");function getObservationValue(observations,code){return observations.find(o=>o.code?.coding?.[0].code===code)?.valueQuantity}function getCompoundObservationValue(observations,code,innerCode){return observations.find(o=>o.code?.coding?.[0].code===code)?.component?.find(c=>c.code?.coding?.[0].code===innerCode)?.valueQuantity}function createObservation(patient,encounter,code,title,valueQuantity){if(isValidNumber(valueQuantity.value))return{...createBaseObservation(patient,encounter,code,title),valueQuantity}}function createCompoundObservation(patient,encounter,code,title,components){let component=components.filter(c=>isValidNumber(c.valueQuantity?.value));if(component.length!==0)return{...createBaseObservation(patient,encounter,code,title),component}}function createBaseObservation(patient,encounter,code,title){return{resourceType:"Observation",status:"preliminary",subject:(0,import_core118.createReference)(patient),encounter:encounter?(0,import_core118.createReference)(encounter):void 0,effectiveDateTime:new Date().toISOString(),category:[{coding:[{system:"http://terminology.hl7.org/CodeSystem/observation-category",code:"vital-signs",display:"Vital Signs"}]}],code:createLoincCode(code,title)}}function createLoincCode(code,display){return{coding:[{code,display,system:import_core118.LOINC}],text:display}}function createQuantity(value,unit){return{value,system:import_core118.UCUM,unit,code:unit}}function isValidNumber(value){return value!==void 0&&!isNaN(value)&&isFinite(value)}var import_jsx_runtime96=require("react/jsx-runtime"),LOINC_CODES={bloodPressure:{code:"85354-9",title:"Blood Pressure",unit:"mm[Hg]"},heartRate:{code:"8867-4",title:"Heart Rate",unit:"/min"},bodyTemperature:{code:"8310-5",title:"Body Temperature",unit:"Cel"},respiratoryRate:{code:"9279-1",title:"Respiratory Rate",unit:"/min"},height:{code:"8302-2",title:"height",unit:"cm"},weight:{code:"29463-7",title:"weight",unit:"kg"},bmi:{code:"39156-5",title:"BMI",unit:"kg/m2"},oxygen:{code:"2708-6",title:"Oxygen",unit:"%"},headCircumference:{code:"9843-4",title:"Head Circumference",unit:"cm"}},SYSTOLIC="8480-6",DIASTOLIC="8462-4";function Vitals(props){let medplum=s(),{patient,encounter}=props,[vitals,setVitals]=(0,import_react58.useState)(props.vitals),[opened,{open,close}]=(0,import_hooks6.useDisclosure)(!1),handleSubmit=(0,import_react58.useCallback)(formData=>{let newObservations=Object.entries(LOINC_CODES).map(([name,meta])=>name==="bloodPressure"?createCompoundObservation(patient,encounter,meta.code,meta.title,[{code:createLoincCode(SYSTOLIC,"Systolic blood pressure"),valueQuantity:createQuantity(parseFloat(formData.systolic),"mm[Hg]")},{code:createLoincCode(DIASTOLIC,"Diastolic blood pressure"),valueQuantity:createQuantity(parseFloat(formData.diastolic),"mm[Hg]")}]):createObservation(patient,encounter,meta.code,meta.title,createQuantity(parseFloat(formData[name]),meta.unit))).filter(Boolean);Promise.all(newObservations.map(obs=>medplum.createResource(obs))).then(newVitals=>setVitals([...newVitals,...vitals])).catch(console.error),close()},[medplum,patient,encounter,vitals,close]);return(0,import_jsx_runtime96.jsxs)(import_jsx_runtime96.Fragment,{children:[(0,import_jsx_runtime96.jsxs)(import_core119.Group,{justify:"space-between",children:[(0,import_jsx_runtime96.jsx)(import_core119.Text,{fz:"md",fw:700,children:"Vitals"}),(0,import_jsx_runtime96.jsx)(import_core119.Anchor,{href:"#",onClick:e=>{killEvent(e),open()},children:"+ Add"})]}),(0,import_jsx_runtime96.jsxs)(import_core119.Grid,{children:[(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BP Sys"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getCompoundObservationValue(vitals,LOINC_CODES.bloodPressure.code,SYSTOLIC)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BP Dias"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getCompoundObservationValue(vitals,LOINC_CODES.bloodPressure.code,DIASTOLIC)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"HR"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.heartRate.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Temp"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.bodyTemperature.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"RR"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.respiratoryRate.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Height"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.height.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"Weight"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.weight.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"BMI"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.bmi.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"O2"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.oxygen.code)})}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,ta:"right",c:"dimmed",children:"HC"}),(0,import_jsx_runtime96.jsx)(import_core119.Grid.Col,{span:3,children:(0,import_jsx_runtime96.jsx)(QuantityDisplay,{value:getObservationValue(vitals,LOINC_CODES.headCircumference.code)})})]}),(0,import_jsx_runtime96.jsx)(import_core119.Modal,{opened,onClose:close,title:"Add Vitals",children:(0,import_jsx_runtime96.jsxs)(Form,{onSubmit:handleSubmit,children:[(0,import_jsx_runtime96.jsxs)(import_core119.Stack,{children:[(0,import_jsx_runtime96.jsxs)(import_core119.Group,{grow:!0,children:[(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"systolic",label:"BP Sys","data-autofocus":!0,autoFocus:!0}),(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"diastolic",label:"BP Dias"})]}),(0,import_jsx_runtime96.jsxs)(import_core119.Group,{grow:!0,children:[(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"heartRate",label:"HR"}),(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"bodyTemperature",label:"Temp"})]}),(0,import_jsx_runtime96.jsxs)(import_core119.Group,{grow:!0,children:[(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"respiratoryRate",label:"RR"}),(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"height",label:"height"})]}),(0,import_jsx_runtime96.jsxs)(import_core119.Group,{grow:!0,children:[(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"weight",label:"Wt"}),(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"bmi",label:"BMI"})]}),(0,import_jsx_runtime96.jsxs)(import_core119.Group,{grow:!0,children:[(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"oxygen",label:"O2"}),(0,import_jsx_runtime96.jsx)(import_core119.TextInput,{name:"headCircumference",label:"HC"})]}),(0,import_jsx_runtime96.jsx)(import_core119.Textarea,{name:"notes",label:"Notes"})]}),(0,import_jsx_runtime96.jsx)(import_core119.Group,{justify:"flex-end",gap:4,mt:"md",children:(0,import_jsx_runtime96.jsx)(import_core119.Button,{type:"submit",children:"Save"})})]})})]})}var import_jsx_runtime97=require("react/jsx-runtime");function PatientSummary(props){let medplum=s(),{patient:propsPatient,background,...rest}=props,[patient,setPatient]=(0,import_react59.useState)(),[allergies,setAllergies]=(0,import_react59.useState)(),[problems,setProblems]=(0,import_react59.useState)(),[smokingStatus,setSmokingStatus]=(0,import_react59.useState)(),[vitals,setVitals]=(0,import_react59.useState)(),[medicationRequest,setMedicationRequest]=(0,import_react59.useState)();return(0,import_react59.useEffect)(()=>{let id=(0,import_core121.resolveId)(propsPatient),ref=`Patient/${id}`,searchMeta={_count:100,_sort:"-_lastUpdated"};Promise.all([medplum.readResource("Patient",id),medplum.searchResources("AllergyIntolerance",{patient:ref,...searchMeta}),medplum.searchResources("Condition",{patient:ref,...searchMeta}),medplum.searchResources("MedicationRequest",{subject:ref,...searchMeta}),medplum.searchResources("Observation",{subject:ref,...searchMeta})]).then(results=>{setPatient(results[0]),setAllergies(results[1]),setProblems(results[2]),setMedicationRequest(results[3]);let observations=results[4];setSmokingStatus(observations.find(obs=>obs.code?.coding?.[0].code==="72166-2")),setVitals(observations.filter(obs=>obs.category?.[0]?.coding?.[0].code==="vital-signs"))}).catch(console.error)},[medplum,propsPatient]),patient?(0,import_jsx_runtime97.jsxs)(import_core120.Card,{...rest,children:[(0,import_jsx_runtime97.jsx)(import_core120.Card.Section,{h:100,style:{background}}),(0,import_jsx_runtime97.jsx)(ResourceAvatar,{value:patient,size:80,radius:80,mx:"auto",mt:-50,style:{border:"2px solid white"}}),(0,import_jsx_runtime97.jsx)(import_core120.Text,{ta:"center",fz:"lg",fw:500,children:(0,import_core121.formatHumanName)(patient.name?.[0])}),(0,import_jsx_runtime97.jsxs)(import_core120.Text,{ta:"center",fz:"xs",color:"dimmed",children:[patient.birthDate," (",(0,import_core121.calculateAgeString)(patient.birthDate),")"]}),(0,import_jsx_runtime97.jsx)(import_core120.Paper,{withBorder:!0,p:"md",my:"md",children:(0,import_jsx_runtime97.jsxs)(import_core120.Group,{grow:!0,children:[(0,import_jsx_runtime97.jsxs)(import_core120.Flex,{justify:"center",align:"center",direction:"column",gap:0,maw:"33%",children:[(0,import_jsx_runtime97.jsx)(IconUserSquare,{size:24,color:"gray"}),(0,import_jsx_runtime97.jsx)(import_core120.Text,{fz:"xs",ta:"center",style:{whiteSpace:"nowrap"},children:"Self"})]}),(0,import_jsx_runtime97.jsxs)(import_core120.Flex,{justify:"center",align:"center",direction:"column",gap:0,children:[(0,import_jsx_runtime97.jsx)(IconStethoscope,{size:24,color:"gray"}),(0,import_jsx_runtime97.jsx)(import_core120.Text,{fz:"xs",style:{whiteSpace:"nowrap"},children:patient?.generalPractitioner?.[0]?.display??"No provider"})]}),(0,import_jsx_runtime97.jsxs)(import_core120.Flex,{justify:"center",align:"center",direction:"column",gap:0,children:[(0,import_jsx_runtime97.jsx)(IconGenderFemale,{size:24,color:"gray"}),(0,import_jsx_runtime97.jsx)(import_core120.Text,{fz:"xs",style:{whiteSpace:"nowrap"},children:patient.gender})]})]})}),(0,import_jsx_runtime97.jsxs)(import_core120.Stack,{gap:"xs",children:[(0,import_jsx_runtime97.jsx)(import_core120.Anchor,{href:"#",children:"No upcoming appointments"}),(0,import_jsx_runtime97.jsx)(import_core120.Anchor,{href:"#",children:"No documented visits"}),(0,import_jsx_runtime97.jsx)(import_core120.Divider,{}),(0,import_jsx_runtime97.jsx)(Allergies,{patient,allergies}),(0,import_jsx_runtime97.jsx)(import_core120.Divider,{}),(0,import_jsx_runtime97.jsx)(ProblemList,{patient,problems}),(0,import_jsx_runtime97.jsx)(import_core120.Divider,{}),(0,import_jsx_runtime97.jsx)(Medications,{patient,medicationRequests:medicationRequest}),(0,import_jsx_runtime97.jsx)(import_core120.Divider,{}),(0,import_jsx_runtime97.jsx)(SmokingStatus,{patient,smokingStatus}),(0,import_jsx_runtime97.jsx)(import_core120.Divider,{}),(0,import_jsx_runtime97.jsx)(Vitals,{patient,vitals})]})]}):null}var import_core122=require("@medplum/core"),import_react60=require("react");var import_jsx_runtime98=require("react/jsx-runtime");function PatientTimeline(props){let loadTimelineResources=(0,import_react60.useCallback)((medplum,resourceType,id)=>{let ref=`${resourceType}/${id}`,_count=100;return Promise.allSettled([medplum.readHistory("Patient",id),medplum.search("Communication",{subject:ref,_count}),medplum.search("Device",{patient:ref,_count}),medplum.search("DeviceRequest",{patient:ref,_count}),medplum.search("DiagnosticReport",{subject:ref,_count}),medplum.search("Media",{subject:ref,_count}),medplum.search("ServiceRequest",{subject:ref,_count}),medplum.search("Task",{subject:ref,_count})])},[]);return(0,import_jsx_runtime98.jsx)(ResourceTimeline,{value:props.patient,loadTimelineResources,createCommunication:(resource,sender,text)=>({resourceType:"Communication",status:"completed",subject:(0,import_core122.createReference)(resource),sender:(0,import_core122.createReference)(sender),sent:new Date().toISOString(),payload:[{contentString:text}]}),createMedia:(resource,operator,content)=>({resourceType:"Media",status:"completed",subject:(0,import_core122.createReference)(resource),operator:(0,import_core122.createReference)(operator),issued:new Date().toISOString(),content})})}var import_core123=require("@mantine/core"),import_core124=require("@medplum/core");var import_react61=require("react");var PlanDefinitionBuilder_default={section:"PlanDefinitionBuilder_section",hovering:"PlanDefinitionBuilder_hovering",editing:"PlanDefinitionBuilder_editing",bottomActions:"PlanDefinitionBuilder_bottomActions"};var import_jsx_runtime99=require("react/jsx-runtime");function PlanDefinitionBuilder(props){let medplum=s(),defaultValue2=j(props.value),[schemaLoaded,setSchemaLoaded]=(0,import_react61.useState)(!1),[selectedKey,setSelectedKey]=(0,import_react61.useState)(),[hoverKey,setHoverKey]=(0,import_react61.useState)(),[value,setValue]=(0,import_react61.useState)();function handleDocumentMouseOver(){setHoverKey(void 0)}function handleDocumentClick(){setSelectedKey(void 0)}let valueRef=(0,import_react61.useRef)();if(valueRef.current=value,(0,import_react61.useEffect)(()=>{medplum.requestSchema("PlanDefinition").then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum]),(0,import_react61.useEffect)(()=>(setValue(ensurePlanDefinitionKeys(defaultValue2??{resourceType:"PlanDefinition",status:"active"})),document.addEventListener("mouseover",handleDocumentMouseOver),document.addEventListener("click",handleDocumentClick),()=>{document.removeEventListener("mouseover",handleDocumentMouseOver),document.removeEventListener("click",handleDocumentClick)}),[defaultValue2]),!schemaLoaded||!value)return null;function changeProperty(property,newValue){setValue({...valueRef.current,[property]:newValue})}return(0,import_jsx_runtime99.jsx)("div",{children:(0,import_jsx_runtime99.jsxs)(Form,{testid:"questionnaire-form",onSubmit:()=>props.onSubmit(value),children:[(0,import_jsx_runtime99.jsx)(import_core123.TextInput,{label:"Plan Title",defaultValue:value.title,onChange:e=>changeProperty("title",e.currentTarget.value)}),(0,import_jsx_runtime99.jsx)(ActionArrayBuilder,{actions:value.action||[],selectedKey,setSelectedKey,hoverKey,setHoverKey,onChange:x=>changeProperty("action",x)}),(0,import_jsx_runtime99.jsx)(import_core123.Button,{type:"submit",children:"Save"})]})})}function ActionArrayBuilder(props){let actionsRef=(0,import_react61.useRef)();actionsRef.current=props.actions;function changeAction(changedAction){props.onChange(actionsRef.current.map(i=>i.id===changedAction.id?changedAction:i))}function addAction(addedAction){props.onChange([...actionsRef.current,addedAction]),props.setSelectedKey(addedAction.id)}function removeAction(removedAction){props.onChange(actionsRef.current.filter(i=>i!==removedAction))}return(0,import_jsx_runtime99.jsxs)("div",{className:PlanDefinitionBuilder_default.section,children:[props.actions.map(action=>(0,import_jsx_runtime99.jsx)("div",{children:(0,import_jsx_runtime99.jsx)(ActionBuilder,{action,selectedKey:props.selectedKey,setSelectedKey:props.setSelectedKey,hoverKey:props.hoverKey,setHoverKey:props.setHoverKey,onChange:changeAction,onRemove:()=>removeAction(action)})},action.id)),(0,import_jsx_runtime99.jsx)("div",{className:PlanDefinitionBuilder_default.bottomActions,children:(0,import_jsx_runtime99.jsx)(import_core123.Anchor,{href:"#",onClick:e=>{killEvent(e),addAction({id:generateId()})},children:"Add action"})})]})}function ActionBuilder(props){let{action}=props,actionType=getInitialActionType(action),editing=props.selectedKey===props.action.id,hovering=props.hoverKey===props.action.id;function onClick(e){e.stopPropagation(),props.setSelectedKey(props.action.id)}function onHover(e){killEvent(e),props.setHoverKey(props.action.id)}let className=clsx_default(PlanDefinitionBuilder_default.section,{[PlanDefinitionBuilder_default.editing]:editing,[PlanDefinitionBuilder_default.hovering]:hovering&&!editing});return(0,import_jsx_runtime99.jsxs)("div",{"data-testid":action.id,className,onClick,onMouseOver:onHover,onFocus:onHover,children:[editing?(0,import_jsx_runtime99.jsx)(ActionEditor,{action,actionType,onChange:props.onChange,selectedKey:props.selectedKey,setSelectedKey:props.setSelectedKey,hoverKey:props.hoverKey,setHoverKey:props.setHoverKey,onRemove:props.onRemove}):(0,import_jsx_runtime99.jsx)(ActionDisplay,{action,actionType}),(0,import_jsx_runtime99.jsx)("div",{className:PlanDefinitionBuilder_default.bottomActions,children:(0,import_jsx_runtime99.jsx)(import_core123.Anchor,{href:"#",onClick:e=>{e.preventDefault(),props.onRemove()},children:"Remove"})})]})}var timingProperty={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(t=>({code:t}))};function ActionDisplay(props){let{action,actionType}=props,[propertyValue,propertyType]=getActionTiming(action);return(0,import_jsx_runtime99.jsxs)("div",{children:[(0,import_jsx_runtime99.jsxs)("div",{children:[action.title||"Untitled"," ",actionType&&`(${actionType})`]}),action.definitionCanonical&&(0,import_jsx_runtime99.jsx)("div",{children:(0,import_jsx_runtime99.jsx)(ReferenceDisplay,{value:{reference:action.definitionCanonical}})}),propertyValue&&(0,import_jsx_runtime99.jsx)("div",{children:(0,import_jsx_runtime99.jsx)(ResourcePropertyDisplay,{property:timingProperty,propertyType,value:propertyValue})})]})}function ActionEditor(props){let{action}=props,[actionType,setActionType]=(0,import_react61.useState)(props.actionType);function changeProperty(property,value){props.onChange({...action,[property]:value})}return(0,import_jsx_runtime99.jsxs)(import_core123.Stack,{gap:"xl",children:[(0,import_jsx_runtime99.jsx)(import_core123.TextInput,{name:`actionTitle-${action.id}`,label:"Title",defaultValue:action.title,onChange:e=>changeProperty("title",e.currentTarget.value)}),(0,import_jsx_runtime99.jsx)(import_core123.TextInput,{name:`actionDescription-${action.id}`,label:"Description",defaultValue:action.description,onChange:e=>changeProperty("description",e.currentTarget.value)}),(0,import_jsx_runtime99.jsx)(import_core123.NativeSelect,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${action.id}`,defaultValue:actionType,onChange:e=>setActionType(e.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),action.action&&action.action.length>0&&(0,import_jsx_runtime99.jsx)(ActionArrayBuilder,{actions:action.action,selectedKey:props.selectedKey,setSelectedKey:props.setSelectedKey,hoverKey:props.hoverKey,setHoverKey:props.setHoverKey,onChange:x=>changeProperty("action",x)}),(()=>{switch(actionType){case"appointment":return(0,import_jsx_runtime99.jsx)(ActionResourceTypeBuilder,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action,onChange:props.onChange});case"lab":return(0,import_jsx_runtime99.jsx)(ActionResourceTypeBuilder,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action,onChange:props.onChange});case"questionnaire":return(0,import_jsx_runtime99.jsx)(ActionResourceTypeBuilder,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action,onChange:props.onChange});case"task":return(0,import_jsx_runtime99.jsx)(ActionResourceTypeBuilder,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action,onChange:props.onChange});default:return null}})(),(0,import_jsx_runtime99.jsx)(FormSection,{title:"Timing",description:"When the action should take place.",children:(0,import_jsx_runtime99.jsx)(ActionTimingInput,{name:"timing-"+action.id,action,onChange:props.onChange})})]})}function ActionResourceTypeBuilder(props){let{id,definitionCanonical}=props.action,reference=definitionCanonical?.startsWith(props.resourceType+"/")?{reference:definitionCanonical}:void 0;return(0,import_jsx_runtime99.jsx)(ResourceInput,{name:id,resourceType:props.resourceType,defaultValue:reference,loadOnFocus:!0,onChange:newValue=>{newValue?props.onChange({...props.action,definitionCanonical:(0,import_core124.getReferenceString)(newValue)}):props.onChange({...props.action,definitionCanonical:void 0})}})}function ActionTimingInput(props){let value=props.action,key="timing",[propertyValue,propertyType]=getActionTiming(value);return(0,import_jsx_runtime99.jsx)(ResourcePropertyInput,{property:timingProperty,name:"timing[x]",defaultValue:propertyValue,defaultPropertyType:propertyType,onChange:(newValue,propName)=>{props.onChange(setPropertyValue(value,key,propName??key,timingProperty,newValue))},outcome:void 0})}function getInitialActionType(action){if(action.definitionCanonical?.startsWith("Schedule"))return"appointment";if(action.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(action.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function getActionTiming(action){return getValueAndType({type:"PlanDefinitionAction",value:action},"timing")}var nextId=1;function generateId(existing){if(existing){if(existing.startsWith("id-")){let existingNum=parseInt(existing.substring(3),10);isNaN(existingNum)||(nextId=Math.max(nextId,existingNum+1))}return existing}return"id-"+nextId++}function ensurePlanDefinitionKeys(planDefinition){return{...planDefinition,action:ensurePlanDefinitionActionKeys(planDefinition.action)}}function ensurePlanDefinitionActionKeys(actions){if(actions)return actions.map(action=>({...action,id:generateId(action.id),action:ensurePlanDefinitionActionKeys(action.action)}))}var import_core128=require("@mantine/core"),import_core129=require("@medplum/core");var import_react64=require("react");var import_core126=require("@mantine/core"),import_core127=require("@medplum/core"),import_react63=require("react");var import_core125=require("@medplum/core"),QuestionnaireItemType=(QuestionnaireItemType2=>(QuestionnaireItemType2.group="group",QuestionnaireItemType2.display="display",QuestionnaireItemType2.question="question",QuestionnaireItemType2.boolean="boolean",QuestionnaireItemType2.decimal="decimal",QuestionnaireItemType2.integer="integer",QuestionnaireItemType2.date="date",QuestionnaireItemType2.dateTime="dateTime",QuestionnaireItemType2.time="time",QuestionnaireItemType2.string="string",QuestionnaireItemType2.text="text",QuestionnaireItemType2.url="url",QuestionnaireItemType2.choice="choice",QuestionnaireItemType2.openChoice="open-choice",QuestionnaireItemType2.attachment="attachment",QuestionnaireItemType2.reference="reference",QuestionnaireItemType2.quantity="quantity",QuestionnaireItemType2))(QuestionnaireItemType||{});function isChoiceQuestion(item){return item.type==="choice"||item.type==="open-choice"}function isQuestionEnabled(item,responseItems){if(!item.enableWhen)return!0;let enableBehavior=item.enableBehavior??"any";for(let enableWhen of item.enableWhen){let actualAnswers=getByLinkId(responseItems,enableWhen.question);if(enableWhen.operator==="exists"&&!enableWhen.answerBoolean&&!actualAnswers?.length){if(enableBehavior==="any")return!0;continue}let{anyMatch,allMatch}=checkAnswers(enableWhen,actualAnswers,enableBehavior);if(enableBehavior==="any"&&anyMatch)return!0;if(enableBehavior==="all"&&!allMatch)return!1}return enableBehavior!=="any"}function getNewMultiSelectValues(selected,propertyName,item){return selected.map(o=>{let option=item.answerOption?.find(option2=>(0,import_core125.formatCoding)(option2.valueCoding)===o||option2[propertyName]===o),optionValue=(0,import_core125.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:option},"value");return{[propertyName]:optionValue?.value}})}function getByLinkId(responseItems,linkId){if(responseItems)for(let response of responseItems){if(response.linkId===linkId)return response.answer;if(response.item){let nestedAnswer=getByLinkId(response.item,linkId);if(nestedAnswer)return nestedAnswer}}}function evaluateMatch(actualAnswer,expectedAnswer,operator){if(operator==="exists")return!!actualAnswer===expectedAnswer.value;if(actualAnswer){let fhirPathOperator=operator==="="||operator==="!="?operator?.replace("=","~"):operator,[{value}]=(0,import_core125.evalFhirPathTyped)(`%actualAnswer ${fhirPathOperator} %expectedAnswer`,[actualAnswer],{"%actualAnswer":actualAnswer,"%expectedAnswer":expectedAnswer});return value}else return!1}function checkAnswers(enableWhen,answers,enableBehavior){let actualAnswers=answers||[],expectedAnswer=(0,import_core125.getTypedPropertyValue)({type:"QuestionnaireItemEnableWhen",value:enableWhen},"answer[x]"),anyMatch=!1,allMatch=!0;for(let actualAnswerValue of actualAnswers){let actualAnswer=(0,import_core125.getTypedPropertyValue)({type:"QuestionnaireResponseItemAnswer",value:actualAnswerValue},"value[x]"),{operator}=enableWhen;if(evaluateMatch(actualAnswer,expectedAnswer,operator)?anyMatch=!0:allMatch=!1,enableBehavior==="any"&&anyMatch)break}return{anyMatch,allMatch}}function getQuestionnaireItemReferenceTargetTypes(item){let extension=(0,import_core125.getExtension)(item,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(extension){if(extension.valueCode!==void 0)return[extension.valueCode];if(extension.valueCodeableConcept)return extension.valueCodeableConcept?.coding?.map(c=>c.code)}}function setQuestionnaireItemReferenceTargetTypes(item,targetTypes){let result=(0,import_core125.deepClone)(item),extension=(0,import_core125.getExtension)(result,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!targetTypes||targetTypes.length===0?(extension&&(result.extension=result.extension?.filter(e=>e!==extension)),result):(extension||(result.extension||(result.extension=[]),extension={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},result.extension.push(extension)),targetTypes.length===1?(extension.valueCode=targetTypes[0],delete extension.valueCodeableConcept):(extension.valueCodeableConcept={coding:targetTypes.map(t=>({code:t}))},delete extension.valueCode),result)}function getQuestionnaireItemReferenceFilter(item,subject,encounter){let extension=(0,import_core125.getExtension)(item,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceFilter");if(!extension?.valueString)return;let filter=extension.valueString;subject?.reference&&(filter=filter.replaceAll("$subj",subject.reference)),encounter?.reference&&(filter=filter.replaceAll("$encounter",encounter.reference));let result={},parts=filter.split("&");for(let part of parts){let[key,value]=(0,import_core125.splitN)(part,"=",2);result[key]=value}return result}function buildInitialResponse(questionnaire){return{resourceType:"QuestionnaireResponse",questionnaire:(0,import_core125.getReferenceString)(questionnaire),item:buildInitialResponseItems(questionnaire.item),status:"in-progress"}}function buildInitialResponseItems(items){return items?.map(buildInitialResponseItem)??[]}function buildInitialResponseItem(item){return{id:generateId2(),linkId:item.linkId,text:item.text,item:buildInitialResponseItems(item.item),answer:item.initial?.map(buildInitialResponseAnswer)??[]}}var nextId2=1;function generateId2(){return"id-"+nextId2++}function buildInitialResponseAnswer(answer){return{...answer}}function formatReferenceString(typedValue){return typedValue.value.display||typedValue.value.reference||(0,import_core125.stringify)(typedValue.value)}function getNumberOfPages(questionnaire){let firstItem=questionnaire?.item?.[0];return firstItem&&(0,import_core125.getExtension)(firstItem,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?questionnaire.item.length:1}var import_react62=require("react"),QuestionnaireFormContext=(0,import_react62.createContext)({});var import_jsx_runtime100=require("react/jsx-runtime");function QuestionnaireFormItem(props){let context=(0,import_react63.useContext)(QuestionnaireFormContext),item=props.item,response=props.response;function onChangeAnswer(newResponseAnswer){let updatedAnswers;Array.isArray(newResponseAnswer)?updatedAnswers=newResponseAnswer:props.index>=(props.response?.answer?.length??0)?updatedAnswers=(props.response?.answer??[]).concat([newResponseAnswer]):updatedAnswers=(props.response?.answer??[]).map((a,idx)=>idx===props.index?newResponseAnswer:a)??[],props.onChange({id:response?.id,linkId:response?.linkId,text:item.text,answer:updatedAnswers})}let type=item.type;if(!type)return null;let name=item.linkId;if(!name)return null;let initial=item.initial&&item.initial.length>0?item.initial[0]:void 0,defaultValue2=getCurrentAnswer(response,props.index)??(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:initial},"value");switch(type){case"display":return(0,import_jsx_runtime100.jsx)("p",{children:props.item.text},props.item.linkId);case"boolean":return(0,import_jsx_runtime100.jsx)(CheckboxFormSection,{title:props.item.text,htmlFor:props.item.linkId,children:(0,import_jsx_runtime100.jsx)(import_core126.Checkbox,{id:props.item.linkId,name:props.item.linkId,defaultChecked:defaultValue2?.value,onChange:e=>onChangeAnswer({valueBoolean:e.currentTarget.checked})})},props.item.linkId);case"decimal":return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{type:"number",step:"any",id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueDecimal:e.currentTarget.valueAsNumber})});case"integer":return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{type:"number",step:1,id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueInteger:e.currentTarget.valueAsNumber})});case"date":return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{type:"date",id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueDate:e.currentTarget.value})});case"dateTime":return(0,import_jsx_runtime100.jsx)(DateTimeInput,{name,required:item.required,defaultValue:defaultValue2?.value,onChange:newValue=>onChangeAnswer({valueDateTime:newValue})});case"time":return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{type:"time",id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueTime:e.currentTarget.value})});case"string":case"url":return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueString:e.currentTarget.value})});case"text":return(0,import_jsx_runtime100.jsx)(import_core126.Textarea,{id:name,name,required:item.required,defaultValue:defaultValue2?.value,onChange:e=>onChangeAnswer({valueString:e.currentTarget.value})});case"attachment":return(0,import_jsx_runtime100.jsx)(import_core126.Group,{py:4,children:(0,import_jsx_runtime100.jsx)(AttachmentInput,{name,defaultValue:defaultValue2?.value,onChange:newValue=>onChangeAnswer({valueAttachment:newValue})})});case"reference":return(0,import_jsx_runtime100.jsx)(ReferenceInput,{name,required:item.required,targetTypes:getQuestionnaireItemReferenceTargetTypes(item),searchCriteria:getQuestionnaireItemReferenceFilter(item,context.subject,context.encounter),defaultValue:defaultValue2?.value,onChange:newValue=>onChangeAnswer({valueReference:newValue})});case"quantity":return(0,import_jsx_runtime100.jsx)(QuantityInput,{name,required:item.required,defaultValue:defaultValue2?.value,onChange:newValue=>onChangeAnswer({valueQuantity:newValue}),disableWheel:!0});case"choice":case"open-choice":return isDropDownChoice(item)&&!item.answerValueSet?(0,import_jsx_runtime100.jsx)(QuestionnaireChoiceDropDownInput,{name,item,initial,response,onChangeAnswer:e=>onChangeAnswer(e)}):(0,import_jsx_runtime100.jsx)(QuestionnaireChoiceSetInput,{name,item,initial,response,onChangeAnswer:e=>onChangeAnswer(e)});default:return null}}function QuestionnaireChoiceDropDownInput(props){let{name,item,initial,response}=props;if(!item.answerOption?.length)return(0,import_jsx_runtime100.jsx)(NoAnswerDisplay,{});let initialValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:initial},"value"),data2=[""];for(let option of item.answerOption){let optionValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:option},"value");data2.push(typedValueToString(optionValue))}let defaultValue2=getCurrentAnswer(response)??initialValue;if(item.repeats){let{propertyName,data:data3}=formatSelectData(props.item),currentAnswer=getCurrentMultiSelectAnswer(response);return(0,import_jsx_runtime100.jsx)(import_core126.MultiSelect,{data:data3,placeholder:"Select items",searchable:!0,defaultValue:currentAnswer||[typedValueToString(initialValue)],onChange:selected=>{let values=getNewMultiSelectValues(selected,propertyName,item);props.onChangeAnswer(values)}})}return(0,import_jsx_runtime100.jsx)(import_core126.NativeSelect,{id:name,name,onChange:e=>{let index=e.currentTarget.selectedIndex;if(index===0){props.onChangeAnswer({});return}let option=item.answerOption[index-1],optionValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:option},"value"),propertyName="value"+(0,import_core127.capitalize)(optionValue.type);props.onChangeAnswer({[propertyName]:optionValue.value})},defaultValue:(0,import_core127.formatCoding)(defaultValue2?.value)||defaultValue2?.value,data:data2})}function QuestionnaireChoiceSetInput(props){let{name,item,initial,onChangeAnswer,response}=props;return!item.answerOption?.length&&!item.answerValueSet?(0,import_jsx_runtime100.jsx)(NoAnswerDisplay,{}):item.answerValueSet?(0,import_jsx_runtime100.jsx)(CodingInput,{name,binding:item.answerValueSet,onChange:code=>onChangeAnswer({valueCoding:code})}):(0,import_jsx_runtime100.jsx)(QuestionnaireChoiceRadioInput,{name:response?.id??name,item,initial,response,onChangeAnswer})}function QuestionnaireChoiceRadioInput(props){let{name,item,initial,onChangeAnswer,response}=props,valueElementDefinition=(0,import_core127.getElementDefinition)("QuestionnaireItemAnswerOption","value[x]"),initialValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemInitial",value:initial},"value"),options=[],defaultValue2;if(item.answerOption)for(let i=0;i<item.answerOption.length;i++){let option=item.answerOption[i],optionName=`${name}-option-${i}`,optionValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:option},"value");optionValue?.value&&(initialValue&&(0,import_core127.stringify)(optionValue)===(0,import_core127.stringify)(initialValue)&&(defaultValue2=optionName),options.push([optionName,optionValue]))}let defaultAnswer=getCurrentAnswer(response),answerLinkId=getCurrentRadioAnswer(options,defaultAnswer);return(0,import_jsx_runtime100.jsx)(import_core126.Radio.Group,{name,value:answerLinkId??defaultValue2,onChange:newValue=>{let option=options.find(option2=>option2[0]===newValue);if(option){let optionValue=option[1],propertyName="value"+(0,import_core127.capitalize)(optionValue.type);onChangeAnswer({[propertyName]:optionValue.value})}},children:options.map(([optionName,optionValue])=>(0,import_jsx_runtime100.jsx)(import_core126.Radio,{id:optionName,value:optionName,py:4,label:(0,import_jsx_runtime100.jsx)(ResourcePropertyDisplay,{property:valueElementDefinition,propertyType:optionValue.type,value:optionValue.value})},optionName))})}function NoAnswerDisplay(){return(0,import_jsx_runtime100.jsx)(import_core126.TextInput,{disabled:!0,placeholder:"No Answers Defined"})}function getItemValue(answer){return(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemAnswer",value:answer},"value")}function getCurrentAnswer(response,index=0){let results=response.answer;return getItemValue(results?.[index]??{})}function getCurrentMultiSelectAnswer(response){let results=response.answer;return results?results.map(a=>getItemValue(a)).map(type=>(0,import_core127.formatCoding)(type?.value)||type?.value):[]}function getCurrentRadioAnswer(options,defaultAnswer){return options.find(option=>(0,import_core127.deepEquals)(option[1].value,defaultAnswer?.value))?.[0]}function typedValueToString(typedValue){if(typedValue)return typedValue.type==="CodeableConcept"?(0,import_core127.formatCodeableConcept)(typedValue.value):typedValue.type==="Coding"?(0,import_core127.formatCoding)(typedValue.value):typedValue.type==="Reference"?formatReferenceString(typedValue):typedValue.value.toString()}function isDropDownChoice(item){return!!item.extension?.some(e=>e.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&e.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function formatSelectData(item){if(item.answerOption?.length===0)return{propertyName:"",data:[]};let option=item.answerOption[0],optionValue=(0,import_core127.getTypedPropertyValue)({type:"QuestionnaireItemAnswerOption",value:option},"value"),propertyName="value"+(0,import_core127.capitalize)(optionValue.type),data2=(item.answerOption??[]).map(a=>({value:getValueAndLabel(a,propertyName),label:getValueAndLabel(a,propertyName)}));return{propertyName,data:data2}}function getValueAndLabel(option,propertyName){return(0,import_core127.formatCoding)(option.valueCoding)||option[propertyName]?.toString()}var QuestionnaireBuilder_default={section:"QuestionnaireBuilder_section",hovering:"QuestionnaireBuilder_hovering",editing:"QuestionnaireBuilder_editing",questionBody:"QuestionnaireBuilder_questionBody",topActions:"QuestionnaireBuilder_topActions",bottomActions:"QuestionnaireBuilder_bottomActions",movementActions:"QuestionnaireBuilder_movementActions",movementIcons:"QuestionnaireBuilder_movementIcons",columnAlignment:"QuestionnaireBuilder_columnAlignment",linkIdInput:"QuestionnaireBuilder_linkIdInput",typeSelect:"QuestionnaireBuilder_typeSelect"};var import_jsx_runtime101=require("react/jsx-runtime");function QuestionnaireBuilder(props){let medplum=s(),defaultValue2=j(props.questionnaire),[schemaLoaded,setSchemaLoaded]=(0,import_react64.useState)(!1),[value,setValue]=(0,import_react64.useState)(),[selectedKey,setSelectedKey]=(0,import_react64.useState)(),[hoverKey,setHoverKey]=(0,import_react64.useState)();function handleDocumentMouseOver(){setHoverKey(void 0)}function handleDocumentClick(){setSelectedKey(void 0)}(0,import_react64.useEffect)(()=>{medplum.requestSchema("Questionnaire").then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum]),(0,import_react64.useEffect)(()=>(setValue(ensureQuestionnaireKeys(defaultValue2??{resourceType:"Questionnaire",status:"active"})),document.addEventListener("mouseover",handleDocumentMouseOver),document.addEventListener("click",handleDocumentClick),()=>{document.removeEventListener("mouseover",handleDocumentMouseOver),document.removeEventListener("click",handleDocumentClick)}),[defaultValue2]);let handleChange=(questionnaire,disableSubmit)=>{setValue(questionnaire),props.autoSave&&!disableSubmit&&props.onSubmit&&props.onSubmit(questionnaire)};return!schemaLoaded||!value?null:(0,import_jsx_runtime101.jsx)("div",{children:(0,import_jsx_runtime101.jsxs)(Form,{testid:"questionnaire-form",onSubmit:()=>props.onSubmit(value),children:[(0,import_jsx_runtime101.jsx)(ItemBuilder,{item:value,selectedKey,setSelectedKey,hoverKey,setHoverKey,onChange:handleChange}),(0,import_jsx_runtime101.jsx)(import_core128.Button,{type:"submit",children:"Save"})]})})}function ItemBuilder(props){let resource=props.item,item=props.item,isResource2=(0,import_core129.isResource)(props.item),isContainer=isResource2||item.type==="group",linkId=item.linkId??"[untitled]",editing=props.selectedKey===props.item.id,hovering=props.hoverKey===props.item.id,itemRef=(0,import_react64.useRef)();itemRef.current=props.item;function onClick(e){killEvent(e),props.setSelectedKey(props.item.id)}function onHover(e){killEvent(e),props.setHoverKey(props.item.id)}function changeItem(changedItem){let curr=itemRef.current;props.onChange({...curr,item:curr.item?.map(i=>i.id===changedItem.id?changedItem:i)})}function addItem(addedItem,disableSubmit){props.onChange({...props.item,item:[...props.item.item??[],addedItem]},disableSubmit)}function removeItem(removedItem){props.onChange({...props.item,item:props.item.item?.filter(i=>i!==removedItem)})}function changeProperty(property,value){props.onChange({...itemRef.current,[property]:value})}function updateItem(updatedItem){props.onChange({...props.item,...updatedItem})}function toggleRepeatable(item2){props.onChange({...props.item,item:props.item.item?.map(i=>i===item2?{...i,repeats:!i.repeats}:i)})}function moveItem(itemIndex,delta){let updatedItems=reorderItems(props.item.item,itemIndex,delta);props.onChange({...props.item,item:updatedItems})}let className=clsx_default(QuestionnaireBuilder_default.section,{[QuestionnaireBuilder_default.editing]:editing,[QuestionnaireBuilder_default.hovering]:hovering&&!editing});return(0,import_jsx_runtime101.jsxs)("div",{"data-testid":item.linkId,className,onClick,onMouseOver:onHover,onFocus:onHover,children:[(0,import_jsx_runtime101.jsx)("div",{className:QuestionnaireBuilder_default.questionBody,children:editing?(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[isResource2&&(0,import_jsx_runtime101.jsx)(import_core128.TextInput,{size:"xl",defaultValue:resource.title,onBlur:e=>changeProperty("title",e.currentTarget.value)}),!isResource2&&(0,import_jsx_runtime101.jsx)(import_core128.Textarea,{autosize:!0,minRows:2,defaultValue:item.text,onBlur:e=>changeProperty("text",e.currentTarget.value)}),item.type==="reference"&&(0,import_jsx_runtime101.jsx)(ReferenceProfiles,{item,onChange:updateItem}),isChoiceQuestion(item)&&(0,import_jsx_runtime101.jsx)(AnswerBuilder,{item,onChange:item2=>updateItem(item2)})]}):(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[resource.title&&(0,import_jsx_runtime101.jsx)(import_core128.Title,{children:resource.title}),item.text&&(0,import_jsx_runtime101.jsx)("div",{children:item.text}),!isContainer&&(0,import_jsx_runtime101.jsx)(QuestionnaireFormItem,{item,index:0,onChange:()=>{},response:{linkId:item.linkId}})]})}),item.item?.map((item2,i)=>(0,import_jsx_runtime101.jsx)("div",{children:(0,import_jsx_runtime101.jsx)(ItemBuilder,{item:item2,selectedKey:props.selectedKey,setSelectedKey:props.setSelectedKey,hoverKey:props.hoverKey,isFirst:i===0,isLast:i===(props.item.item??[]).length-1,setHoverKey:props.setHoverKey,onChange:changeItem,onRemove:()=>removeItem(item2),onRepeatable:toggleRepeatable,onMoveUp:()=>moveItem(i,-1),onMoveDown:()=>moveItem(i,1)})},item2.id)),!isContainer&&(0,import_jsx_runtime101.jsx)("div",{className:QuestionnaireBuilder_default.topActions,children:editing?(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[(0,import_jsx_runtime101.jsx)(import_core128.TextInput,{size:"xs",className:QuestionnaireBuilder_default.linkIdInput,defaultValue:item.linkId,onBlur:e=>changeProperty("linkId",e.currentTarget.value)}),!isContainer&&(0,import_jsx_runtime101.jsx)(import_core128.NativeSelect,{size:"xs",className:QuestionnaireBuilder_default.typeSelect,defaultValue:item.type,onChange:e=>changeProperty("type",e.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})]}):(0,import_jsx_runtime101.jsx)("div",{children:linkId})}),!isResource2&&(0,import_jsx_runtime101.jsx)(import_core128.Box,{className:QuestionnaireBuilder_default.movementActions,children:(0,import_jsx_runtime101.jsxs)(import_core128.Box,{className:QuestionnaireBuilder_default.columnAlignment,children:[!props.isFirst&&(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),props.onMoveUp&&props.onMoveUp()},children:(0,import_jsx_runtime101.jsx)(IconArrowUp,{"data-testid":"up-button",size:15,className:QuestionnaireBuilder_default.movementIcons})}),!props.isLast&&(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),props.onMoveDown&&props.onMoveDown()},children:(0,import_jsx_runtime101.jsx)(IconArrowDown,{"data-testid":"down-button",size:15,className:QuestionnaireBuilder_default.movementIcons})})]})}),(0,import_jsx_runtime101.jsxs)("div",{className:QuestionnaireBuilder_default.bottomActions,children:[isContainer&&(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),addItem({id:generateId3(),linkId:generateLinkId("q"),type:"string",text:"Question"})},children:"Add item"}),(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),addItem({id:generateId3(),linkId:generateLinkId("g"),type:"group",text:"Group"},!0)},children:"Add group"})]}),isResource2&&(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),addItem(createPage(),!0)},children:"Add Page"}),editing&&!isResource2&&(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),props.onRepeatable&&props.onRepeatable(item)},children:item.repeats?"Remove Repeatable":"Make Repeatable"}),(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{e.preventDefault(),props.onRemove&&props.onRemove()},children:"Remove"})]})]})]})}function AnswerBuilder(props){let property=(0,import_core129.getElementDefinition)("QuestionnaireItemAnswerOption","value[x]"),options=props.item.answerOption??[];return(0,import_jsx_runtime101.jsxs)("div",{children:[props.item.answerValueSet!==void 0?(0,import_jsx_runtime101.jsx)(import_core128.TextInput,{placeholder:"Enter Value Set",defaultValue:props.item.answerValueSet,onChange:e=>props.onChange({...props.item,answerValueSet:e.target.value})}):(0,import_jsx_runtime101.jsx)(AnswerOptionsInput,{options,property,item:props.item,onChange:props.onChange}),(0,import_jsx_runtime101.jsxs)(import_core128.Box,{display:"flex",children:[(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{killEvent(e),props.onChange({...props.item,answerValueSet:void 0,answerOption:[...options,{id:generateId3()}]})},children:"Add choice"}),(0,import_jsx_runtime101.jsx)(import_core128.Space,{w:"lg"}),(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{killEvent(e),props.onChange({...props.item,answerOption:[],answerValueSet:""})},children:"Add value set"})]})]})}function AnswerOptionsInput(props){return(0,import_jsx_runtime101.jsx)("div",{children:props.options.map(option=>{let[propertyValue,propertyType]=getValueAndType({type:"QuestionnaireItemAnswerOption",value:option},"value");return(0,import_jsx_runtime101.jsxs)("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"},children:[(0,import_jsx_runtime101.jsx)("div",{children:(0,import_jsx_runtime101.jsx)(ResourcePropertyInput,{name:"value[x]",property:props.property,defaultPropertyType:propertyType,defaultValue:propertyValue,onChange:(newValue,propName)=>{let newOptions=[...props.options],index=newOptions.findIndex(o=>o.id===option.id);newOptions[index]={id:option.id,[propName]:newValue},props.onChange({...props.item,answerOption:newOptions})},outcome:void 0},option.id)}),(0,import_jsx_runtime101.jsx)("div",{children:(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{killEvent(e),props.onChange({...props.item,answerOption:props.options.filter(o=>o.id!==option.id)})},children:"Remove"})})]},option.id)})})}function ReferenceProfiles(props){let targetTypes=getQuestionnaireItemReferenceTargetTypes(props.item)??[];return(0,import_jsx_runtime101.jsxs)(import_jsx_runtime101.Fragment,{children:[targetTypes.map((targetType,index)=>(0,import_jsx_runtime101.jsxs)(import_core128.Group,{children:[(0,import_jsx_runtime101.jsx)(ResourceTypeInput,{name:"resourceType",placeholder:"Resource Type",defaultValue:targetType,onChange:newValue=>{props.onChange(setQuestionnaireItemReferenceTargetTypes(props.item,targetTypes.map(t=>t===targetType?newValue:t)))}}),(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{killEvent(e),props.onChange(setQuestionnaireItemReferenceTargetTypes(props.item,targetTypes.filter(t=>t!==targetType)))},children:"Remove"})]},`${targetType}-${index}`)),(0,import_jsx_runtime101.jsx)(import_core128.Anchor,{href:"#",onClick:e=>{killEvent(e),props.onChange(setQuestionnaireItemReferenceTargetTypes(props.item,[...targetTypes,""]))},children:"Add Resource Type"})]})}var nextLinkId=1,nextId3=1;function generateLinkId(prefix){return prefix+nextLinkId++}function generateId3(){return"id-"+nextId3++}function ensureQuestionnaireKeys(questionnaire){return{...questionnaire,id:questionnaire.id||generateId3(),item:ensureQuestionnaireItemKeys(questionnaire.item)}}function ensureQuestionnaireItemKeys(items){if(items)return items.forEach(item=>{item.id?.match(/^id-\d+$/)&&(nextId3=Math.max(nextId3,parseInt(item.id.substring(3),10)+1)),item.linkId?.match(/^q\d+$/)&&(nextLinkId=Math.max(nextLinkId,parseInt(item.linkId.substring(1),10)+1))}),items.map(item=>({...item,id:item.id||generateId3(),item:ensureQuestionnaireItemKeys(item.item),answerOption:ensureQuestionnaireOptionKeys(item.answerOption)}))}function ensureQuestionnaireOptionKeys(options){if(options)return options.map(option=>({...option,id:option.id||generateId3()}))}function createPage(){return{id:generateId3(),linkId:generateLinkId("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function reorderItems(items,itemIndex,delta){let currentItems=items??[],newIndex=itemIndex+delta;if(newIndex<0||newIndex>=currentItems.length)return currentItems;let updatedItems=[...currentItems];return[updatedItems[itemIndex],updatedItems[newIndex]]=[updatedItems[newIndex],updatedItems[itemIndex]],updatedItems}var import_core133=require("@mantine/core"),import_core134=require("@medplum/core");var import_react67=require("react");var import_core132=require("@mantine/core");var import_core130=require("@mantine/core"),import_react65=require("react");var import_jsx_runtime102=require("react/jsx-runtime");function QuestionnaireRepeatableItem(props){let{item,response,onChange}=props,[number,setNumber]=(0,import_react65.useState)(getNumberOfRepeats(item,response??{linkId:item.linkId}));if(!props.checkForQuestionEnabled(item)||!response)return null;if(item.type==="display")return(0,import_jsx_runtime102.jsx)("p",{children:item.text},item.linkId);let showAddButton=item?.repeats&&item.type!=="choice"&&item.type!=="open-choice";return item.type==="boolean"?(0,import_jsx_runtime102.jsx)(QuestionnaireFormItem,{item,response,onChange:r2=>onChange([r2]),index:0},item.linkId):(0,import_jsx_runtime102.jsxs)(FormSection,{htmlFor:props.item.linkId,title:props.item.text,withAsterisk:props.item.required,children:[[...Array(number)].map((_,index)=>(0,import_jsx_runtime102.jsx)(QuestionnaireFormItem,{item,response,onChange:r2=>onChange([r2]),index},`${item.linkId}-${index}`)),showAddButton&&(0,import_jsx_runtime102.jsx)(import_core130.Anchor,{onClick:()=>setNumber(n=>n+1),children:"Add Item"})]},props.item.linkId)}function getNumberOfRepeats(item,response){if(item.type==="choice"||item.type==="open-choice")return 1;let answers=response.answer;return answers?.length?answers.length:1}var import_core131=require("@mantine/core"),import_react66=require("react");var import_jsx_runtime103=require("react/jsx-runtime");function QuestionnaireRepeatedGroup(props){let[responses,setResponses]=(0,import_react66.useState)(props.response);if(responses.length===0)return null;function handleRepeatableGroup(newResponseItems,index){let newResponses=responses.map((responses2,idx)=>idx===index?newResponseItems[0]:responses2);setResponses(newResponses),props.onChange(newResponses)}function insertNewGroup(){let newResponse=buildInitialResponseItem(props.item);setResponses([...responses,newResponse])}return(0,import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment,{children:[responses.map((response,idx)=>(0,import_jsx_runtime103.jsx)(QuestionnaireGroup,{item:props.item,response,checkForQuestionEnabled:props.checkForQuestionEnabled,onChange:r2=>handleRepeatableGroup(r2,idx)},response.id)),props.item.repeats&&(0,import_jsx_runtime103.jsx)(import_core131.Anchor,{onClick:insertNewGroup,children:`Add Group: ${props.item.text}`})]})}function QuestionnaireGroup(props){let{response,checkForQuestionEnabled,onChange}=props;function onSetGroup(newResponseItem){let mergedResponse=response.item?.map(current=>newResponseItem.find(newResponse2=>newResponse2.id===current.id)??current)?.concat(newResponseItem.slice(1)),groupResponse={...response,item:mergedResponse};onChange([groupResponse])}return props.checkForQuestionEnabled(props.item)?(0,import_jsx_runtime103.jsxs)("div",{children:[props.item.text&&(0,import_jsx_runtime103.jsx)(import_core131.Title,{order:3,mb:"md",children:props.item.text}),(0,import_jsx_runtime103.jsx)(import_core131.Stack,{children:props.item.item?.map(item=>item.type==="group"?item.repeats?(0,import_jsx_runtime103.jsx)(QuestionnaireRepeatedGroup,{item,response:response.item?.filter(i=>i.linkId===item.linkId)??[],checkForQuestionEnabled,onChange:onSetGroup},item.linkId):(0,import_jsx_runtime103.jsx)(QuestionnaireGroup,{item,checkForQuestionEnabled,response:response.item?.find(i=>i.linkId===item.linkId)??{linkId:item.linkId},onChange:onSetGroup},item.linkId):(0,import_jsx_runtime103.jsx)(QuestionnaireRepeatableItem,{item,response:response.item?.find(i=>i.linkId===item.linkId),onChange:onSetGroup,checkForQuestionEnabled},item.linkId))})]},props.item.linkId):null}var import_jsx_runtime104=require("react/jsx-runtime");function QuestionnairePageSequence(props){let{items,response,activePage,onChange,nextStep,prevStep,numberOfPages,renderPages,submitButtonText,checkForQuestionEnabled}=props,form=items.map(item=>{let itemResponse=response?.item?.filter(i=>i.linkId===item.linkId)??[],repeatedItem=item.type==="group"?(0,import_jsx_runtime104.jsx)(QuestionnaireRepeatedGroup,{item,response:itemResponse,onChange,checkForQuestionEnabled},item.linkId):(0,import_jsx_runtime104.jsx)(QuestionnaireRepeatableItem,{item,response:itemResponse?.[0],onChange,checkForQuestionEnabled},item.linkId);return renderPages?(0,import_jsx_runtime104.jsx)(import_core132.Stepper.Step,{label:item.text,children:repeatedItem},item.linkId):repeatedItem});return(0,import_jsx_runtime104.jsxs)(import_jsx_runtime104.Fragment,{children:[renderPages&&(0,import_jsx_runtime104.jsx)(import_core132.Stepper,{active:activePage??0,allowNextStepsSelect:!1,p:6,children:form}),!renderPages&&(0,import_jsx_runtime104.jsx)(import_core132.Stack,{children:form}),(0,import_jsx_runtime104.jsx)(ButtonGroup,{activePage:activePage??0,numberOfPages,nextStep,prevStep,submitButtonText})]})}function ButtonGroup(props){let showBackButton=props.activePage>0,showNextButton=props.activePage<props.numberOfPages-1,showSubmitButton=props.activePage===props.numberOfPages-1;return(0,import_jsx_runtime104.jsxs)(import_core132.Group,{justify:"flex-end",mt:"xl",gap:"xs",children:[showBackButton&&(0,import_jsx_runtime104.jsx)(import_core132.Button,{onClick:props.prevStep,children:"Back"}),showNextButton&&(0,import_jsx_runtime104.jsx)(import_core132.Button,{onClick:e=>{e.currentTarget.closest("form").reportValidity()&&props.nextStep()},children:"Next"}),showSubmitButton&&(0,import_jsx_runtime104.jsx)(import_core132.Button,{type:"submit",children:props.submitButtonText??"Submit"})]})}var import_jsx_runtime105=require("react/jsx-runtime");function QuestionnaireForm(props){let medplum=s(),source=medplum.getProfile(),[schemaLoaded,setSchemaLoaded]=(0,import_react67.useState)(!1),questionnaire=j(props.questionnaire),[response,setResponse]=(0,import_react67.useState)(),[activePage,setActivePage]=(0,import_react67.useState)(0);(0,import_react67.useEffect)(()=>{medplum.requestSchema("Questionnaire").then(()=>medplum.requestSchema("QuestionnaireResponse")).then(()=>setSchemaLoaded(!0)).catch(console.log)},[medplum]),(0,import_react67.useEffect)(()=>{setResponse(questionnaire?buildInitialResponse(questionnaire):void 0)},[questionnaire]);function setItems(newResponseItems){let currentItems=response?.item??[],newResponse={resourceType:"QuestionnaireResponse",status:"in-progress",item:mergeItems(currentItems,Array.isArray(newResponseItems)?newResponseItems:[newResponseItems])};setResponse(newResponse)}function checkForQuestionEnabled(item){return isQuestionEnabled(item,response?.item??[])}if(!schemaLoaded||!questionnaire)return null;let numberOfPages=getNumberOfPages(questionnaire),nextStep=()=>setActivePage(current=>current+1),prevStep=()=>setActivePage(current=>current-1);return(0,import_jsx_runtime105.jsx)(QuestionnaireFormContext.Provider,{value:{subject:props.subject,encounter:props.encounter},children:(0,import_jsx_runtime105.jsxs)(Form,{testid:"questionnaire-form",onSubmit:()=>{props.onSubmit&&response&&props.onSubmit({...response,questionnaire:(0,import_core134.getReferenceString)(questionnaire),subject:props.subject,source:(0,import_core134.createReference)(source),authored:new Date().toISOString(),status:"completed"})},children:[questionnaire.title&&(0,import_jsx_runtime105.jsx)(import_core133.Title,{children:questionnaire.title}),(0,import_jsx_runtime105.jsx)(QuestionnairePageSequence,{items:questionnaire.item??[],response,onChange:setItems,renderPages:numberOfPages>1,activePage,numberOfPages,submitButtonText:props.submitButtonText,checkForQuestionEnabled,nextStep,prevStep})]})})}function mergeIndividualItems(prevItem,newItem){let mergedNestedItems=mergeItems(prevItem.item??[],newItem.item??[]);return{...newItem,item:mergedNestedItems.length>0?mergedNestedItems:void 0,answer:newItem.answer&&newItem.answer.length>0?newItem.answer:prevItem.answer}}function mergeItems(prevItems,newItems){let result=[],usedIds=new Set;for(let prevItem of prevItems){let itemId=prevItem.id,newItem=newItems.find(item=>item.id===itemId);newItem?(result.push(mergeIndividualItems(prevItem,newItem)),usedIds.add(newItem.id)):result.push(prevItem)}for(let newItem of newItems)usedIds.has(newItem.id)||result.push(newItem);return result}var import_core135=require("@mantine/core"),import_core136=require("@medplum/core");var import_react68=require("react");var ReferenceRangeEditor_default={section:"ReferenceRangeEditor_section"};var import_jsx_runtime106=require("react/jsx-runtime"),intervalFilters=["gender","age","gestationalAge","context","appliesTo","category"],defaultProps={definition:{resourceType:"ObservationDefinition",code:{text:""}},onSubmit:()=>{}};function ReferenceRangeEditor(props){props=Object.assign(defaultProps,props);let defaultDefinition=props.definition,[intervalGroups,setIntervalGroups]=(0,import_react68.useState)([]),[groupId,setGroupId]=(0,import_react68.useState)(1),[intervalId,setIntervalId]=(0,import_react68.useState)(1);return(0,import_react68.useEffect)(()=>{let definition=ensureQualifiedIntervalKeys(defaultDefinition,setIntervalId);setIntervalGroups(groupQualifiedIntervals(definition.qualifiedInterval||[],setGroupId))},[defaultDefinition]),(0,import_jsx_runtime106.jsxs)(Form,{testid:"reference-range-editor",onSubmit:submitDefinition,children:[(0,import_jsx_runtime106.jsx)(import_core135.Stack,{children:intervalGroups.map(intervalGroup=>(0,import_jsx_runtime106.jsx)(ReferenceRangeGroupEditor,{unit:getUnitString(defaultDefinition.quantitativeDetails?.unit),onChange:changeInterval,onAdd:addInterval,onRemove:removeInterval,onRemoveGroup:removeGroup,intervalGroup},`group-${intervalGroup.id}`))}),(0,import_jsx_runtime106.jsx)(import_core135.ActionIcon,{title:"Add Group",variant:"subtle",size:"sm",onClick:e=>{killEvent(e),addGroup({id:`group-id-${groupId}`,filters:{},intervals:[]}),setGroupId(id=>id+1)},children:(0,import_jsx_runtime106.jsx)(IconCirclePlus,{})}),(0,import_jsx_runtime106.jsx)(import_core135.Group,{justify:"flex-end",children:(0,import_jsx_runtime106.jsx)(import_core135.Button,{type:"submit",children:"Save"})})]});function submitDefinition(){let qualifiedInterval=intervalGroups.flatMap(group=>group.intervals).filter(interval=>!isEmptyInterval(interval));props.onSubmit({...defaultDefinition,qualifiedInterval})}function addGroup(addedGroup){setIntervalGroups(currentGroups=>[...currentGroups,addedGroup])}function removeGroup(removedGroup){setIntervalGroups(currentGroups=>currentGroups.filter(group=>group.id!==removedGroup.id))}function changeInterval(groupId2,changedInterval){setIntervalGroups(groups=>{groups=[...groups];let currentGroup=groups.find(g2=>g2.id===groupId2),index=currentGroup?.intervals.findIndex(interval=>interval.id===changedInterval.id);return index!==void 0&¤tGroup?.intervals[index]&&(currentGroup.intervals[index]=changedInterval),groups})}function addInterval(groupId2,addedInterval){addedInterval.id===void 0&&(addedInterval.id=`id-${intervalId}`,setIntervalId(id=>id+1)),setIntervalGroups(groups=>{groups=[...groups];let currentGroupIndex=groups.findIndex(g2=>g2.id===groupId2);if(currentGroupIndex!==-1){let currentGroup={...groups[currentGroupIndex]};addedInterval={...addedInterval,...currentGroup.filters},currentGroup.intervals=[...currentGroup.intervals,addedInterval],groups[currentGroupIndex]=currentGroup}return groups})}function removeInterval(groupId2,removedInterval){setIntervalGroups(groups=>{groups=[...groups];let currentGroup=groups.find(g2=>g2.id===groupId2);return currentGroup&&(currentGroup.intervals=currentGroup.intervals.filter(interval=>interval.id!==removedInterval.id)),groups})}}function ReferenceRangeGroupEditor(props){let{intervalGroup,unit}=props;return(0,import_jsx_runtime106.jsx)(Container,{"data-testid":intervalGroup.id,className:ReferenceRangeEditor_default.section,children:(0,import_jsx_runtime106.jsxs)(import_core135.Stack,{gap:"lg",children:[(0,import_jsx_runtime106.jsx)(import_core135.Group,{justify:"flex-end",children:(0,import_jsx_runtime106.jsx)(import_core135.ActionIcon,{title:"Remove Group",variant:"subtle","data-testid":`remove-group-button-${intervalGroup.id}`,size:"sm",onClick:e=>{killEvent(e),props.onRemoveGroup(intervalGroup)},children:(0,import_jsx_runtime106.jsx)(IconCircleMinus,{})},`remove-group-button-${intervalGroup.id}`)}),(0,import_jsx_runtime106.jsx)(ReferenceRangeGroupFilters,{intervalGroup,onChange:props.onChange}),(0,import_jsx_runtime106.jsx)(import_core135.Divider,{}),intervalGroup.intervals.map(interval=>(0,import_jsx_runtime106.jsxs)(import_core135.Stack,{gap:"xs",children:[(0,import_jsx_runtime106.jsxs)(import_core135.Group,{children:[(0,import_jsx_runtime106.jsx)(import_core135.TextInput,{"data-testid":`condition-${interval.id}`,defaultValue:interval.condition,label:"Condition: ",size:"sm",onChange:e=>{killEvent(e),props.onChange(intervalGroup.id,{...interval,condition:e.currentTarget.value.trim()})}},`condition-${interval.id}`),(0,import_jsx_runtime106.jsx)(import_core135.ActionIcon,{title:"Remove Interval",variant:"subtle",size:"sm","data-testid":`remove-interval-${interval.id}`,onClick:e=>{killEvent(e),props.onRemove(intervalGroup.id,interval)},children:(0,import_jsx_runtime106.jsx)(IconCircleMinus,{})},`remove-interval-${interval.id}`)]}),(0,import_jsx_runtime106.jsx)(RangeInput,{onChange:range=>{props.onChange(intervalGroup.id,{...interval,range})},name:`range-${interval.id}`,defaultValue:interval.range},`range-${interval.id}`)]},`interval-${interval.id}`)),(0,import_jsx_runtime106.jsx)(import_core135.ActionIcon,{title:"Add Interval",variant:"subtle",size:"sm",onClick:e=>{killEvent(e),props.onAdd(intervalGroup.id,{range:{low:{unit},high:{unit}}})},children:(0,import_jsx_runtime106.jsx)(IconCirclePlus,{})})]})})}function ReferenceRangeGroupFilters(props){let{intervalGroup,onChange}=props;intervalGroup.filters.age||(intervalGroup.filters.age={});for(let key of["low","high"])intervalGroup.filters.age[key]?.unit||(intervalGroup.filters.age[key]={...intervalGroup.filters.age[key],unit:"years",system:"http://unitsofmeasure.org"});return(0,import_jsx_runtime106.jsxs)(import_core135.Stack,{style:{maxWidth:"50%"},children:[(0,import_jsx_runtime106.jsx)(import_core135.Group,{children:(0,import_jsx_runtime106.jsx)(import_core135.NativeSelect,{data:["","male","female"],label:"Gender:",defaultValue:intervalGroup.filters.gender||"",onChange:e=>{for(let interval of intervalGroup.intervals){let newGender=e.currentTarget.value;newGender===""&&(newGender=void 0),onChange(intervalGroup.id,{...interval,gender:newGender})}}})}),(0,import_jsx_runtime106.jsxs)(import_core135.Group,{gap:"xs",children:[(0,import_jsx_runtime106.jsx)(import_core135.Text,{component:"label",htmlFor:`div-age-${intervalGroup.id}`,children:"Age:"}),(0,import_jsx_runtime106.jsx)("div",{id:`div-age-${intervalGroup.id}`,children:(0,import_jsx_runtime106.jsx)(RangeInput,{name:`age-${intervalGroup.id}`,defaultValue:intervalGroup.filters.age,onChange:ageRange=>{for(let interval of intervalGroup.intervals)onChange(intervalGroup.id,{...interval,age:ageRange})}},`age-${intervalGroup.id}`)})]}),(0,import_jsx_runtime106.jsx)(import_core135.NativeSelect,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:intervalGroup.filters.context?.text||"",onChange:e=>{for(let interval of intervalGroup.intervals){let newEndocrine=e.currentTarget.value;newEndocrine===""?(newEndocrine=void 0,onChange(intervalGroup.id,{...interval,context:void 0})):onChange(intervalGroup.id,{...interval,context:{text:newEndocrine,coding:[{code:newEndocrine,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),(0,import_jsx_runtime106.jsx)(import_core135.NativeSelect,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:intervalGroup.filters.category,onChange:e=>{for(let interval of intervalGroup.intervals){let newCategory=e.currentTarget.value;newCategory===""?onChange(intervalGroup.id,{...interval,category:void 0}):onChange(intervalGroup.id,{...interval,category:newCategory})}}})]})}function ensureQualifiedIntervalKeys(definition,setIntervalId){let intervals=definition.qualifiedInterval||[],nextId4=Math.max(...intervals.map(interval=>{let existingNum=parseInt(interval.id?.substring(3)||"",10);return isNaN(existingNum)?Number.NEGATIVE_INFINITY:existingNum}))+1;return Number.isFinite(nextId4)||(nextId4=1),definition={...definition,qualifiedInterval:intervals.map(interval=>({...interval,id:interval.id||`id-${nextId4++}`}))},setIntervalId(nextId4),definition}function groupQualifiedIntervals(intervals,setGroupId){let groupId=1,groups={};for(let interval of intervals){let groupKey=generateGroupKey(interval);groupKey in groups||(groups[groupKey]={id:`group-id-${groupId++}`,filters:Object.fromEntries(intervalFilters.map(f=>[f,interval[f]])),intervals:[]}),groups[groupKey].intervals.push(interval)}return setGroupId(groupId),Object.values(groups)}function generateGroupKey(interval){return[`gender=${interval.gender}`,`age=${(0,import_core136.formatRange)(interval.age)}`,`gestationalAge=${(0,import_core136.formatRange)(interval.gestationalAge)}`,`context=${interval.context?.text}`,`appliesTo=${interval.appliesTo?.map(c=>c.text).join("+")}`,`category=${interval.category}`].join(":")}function getUnitString(unit){return unit&&((0,import_core136.getCodeBySystem)(unit,"http://unitsofmeasure.org")||unit.text)}function isEmptyInterval(interval){return interval.range?.low?.value===void 0&&interval.range?.high?.value===void 0}var import_core137=require("@mantine/core"),import_core138=require("@medplum/core");var import_react69=require("react");var import_jsx_runtime107=require("react/jsx-runtime");function RequestGroupDisplay(props){let medplum=s(),requestGroup=j(props.value),[startedLoading,setStartedLoading]=(0,import_react69.useState)(!1),[responseBundle,setResponseBundle]=(0,import_react69.useState)();if((0,import_react69.useEffect)(()=>{requestGroup&&!startedLoading&&(medplum.executeBatch(buildBatchRequest(requestGroup)).then(setResponseBundle).catch(console.log),setStartedLoading(!0))},[medplum,requestGroup,startedLoading]),!requestGroup||!responseBundle)return null;return(0,import_jsx_runtime107.jsx)(import_core137.Grid,{children:requestGroup.action?.map((action,index)=>{let task=action.resource&&findBundleEntry(action.resource),taskInput=task?.input?.[0]?.valueReference,taskOutput=task?.output?.[0]?.valueReference;return(0,import_jsx_runtime107.jsxs)(import_react69.Fragment,{children:[(0,import_jsx_runtime107.jsx)(import_core137.Grid.Col,{span:1,p:"md",children:task?.status==="completed"?(0,import_jsx_runtime107.jsx)(IconCheckbox,{}):(0,import_jsx_runtime107.jsx)(IconSquare,{color:"gray"})}),(0,import_jsx_runtime107.jsxs)(import_core137.Grid.Col,{span:9,p:"xs",children:[(0,import_jsx_runtime107.jsx)(import_core137.Text,{fw:500,children:action.title}),action.description&&(0,import_jsx_runtime107.jsx)("div",{children:action.description}),(0,import_jsx_runtime107.jsxs)("div",{children:["Last edited by\xA0",(0,import_jsx_runtime107.jsx)(ResourceName,{value:task?.meta?.author}),"\xA0on\xA0",(0,import_core138.formatDateTime)(task?.meta?.lastUpdated)]}),(0,import_jsx_runtime107.jsxs)("div",{children:["Status: ",(0,import_jsx_runtime107.jsx)(StatusBadge,{status:task?.status||"unknown"})]})]}),(0,import_jsx_runtime107.jsxs)(import_core137.Grid.Col,{span:2,p:"md",children:[taskInput&&!taskOutput&&(0,import_jsx_runtime107.jsx)(import_core137.Button,{onClick:()=>props.onStart(task,taskInput),children:"Start"}),taskInput&&taskOutput&&(0,import_jsx_runtime107.jsx)(import_core137.Button,{onClick:()=>props.onEdit(task,taskInput,taskOutput),children:"Edit"})]})]},`action-${index}`)})});function buildBatchRequest(request){let batchEntries=[];if(request.action)for(let action of request.action)action.resource?.reference&&batchEntries.push({request:{method:"GET",url:action.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:batchEntries}}function findBundleEntry(reference){for(let entry of responseBundle?.entry)if(entry.resource&&reference.reference===(0,import_core138.getReferenceString)(entry.resource))return entry.resource}}var import_react70=require("react");var import_core139=require("@medplum/core");function diff(original,revised){let path=buildPath(original,revised);return buildRevisions(path,original,revised)}function buildPath(orig,rev){let N2=orig.length,M2=rev.length,MAX=N2+M2+1,size=1+2*MAX,middle=size/2|0,diagonal=new Array(size);diagonal[middle+1]={i:0,j:-1,prev:void 0,snake:!0};for(let d2=0;d2<MAX;d2++){for(let k2=-d2;k2<=d2;k2+=2){let kmiddle=middle+k2,kplus=kmiddle+1,kminus=kmiddle-1,kplusNode=diagonal[kplus],kminusNode=diagonal[kminus],prev,i=0;k2===-d2||k2!==d2&&kminusNode.i<kplusNode.i?(i=kplusNode.i,prev=kplusNode):(i=kminusNode.i+1,prev=kminusNode),diagonal[kminus]=void 0;let j2=i-k2,node={i,j:j2,prev:previousSnake(prev),snake:!1};for(;i<N2&&j2<M2&&orig[i]===rev[j2];)i++,j2++;if(i>node.i&&(node={i,j:j2,prev:node,snake:!0}),diagonal[kmiddle]=node,i>=N2&&j2>=M2)return diagonal[kmiddle]}diagonal[middle+d2-1]=void 0}}function buildRevisions(startNode,orig,rev){let deltas=[],path=startNode;for(path.snake&&(path=path.prev);path?.prev&&path.prev.j>=0;){let i=path.i,j2=path.j;path=path.prev;let ianchor=path.i,janchor=path.j,original={position:ianchor,lines:orig.slice(ianchor,i)},revised={position:janchor,lines:rev.slice(janchor,j2)},type;original.lines.length===0&&revised.lines.length>0?type="insert":original.lines.length>0&&revised.lines.length===0?type="delete":type="change",deltas.push({original,revised,type}),path.snake&&(path=path.prev)}return deltas}function previousSnake(node){return node&&!node.snake&&node.prev?node.prev:node}function blame(history){let versions=history.entry.filter(entry=>!!entry.resource).map(entry=>({meta:entry.resource?.meta,lines:(0,import_core139.stringify)(entry.resource,!0).match(/[^\r\n]+/g)})).sort((a,b2)=>a.meta.lastUpdated.localeCompare(b2.meta.lastUpdated)),table=versions[0].lines.map(line=>({id:versions[0].meta.versionId,meta:versions[0].meta,value:line,span:1}));return compareVersions(table,versions),combineSpans(table),table}function compareVersions(table,versions){for(let i=1;i<versions.length;i++){let revisions=diff(versions[i-1].lines,versions[i].lines);for(let revision of revisions){let position=revision.original.position,oldLines=revision.original.lines,newLines=revision.revised.lines;if((revision.type==="delete"||revision.type==="change")&&table.splice(position,oldLines.length),revision.type==="insert"||revision.type==="change")for(let k2=0;k2<revision.revised.lines.length;k2++)table.splice(position+k2,0,{id:versions[i].meta.versionId,meta:versions[i].meta,value:newLines[k2],span:1})}}}function combineSpans(table){let start=0;for(;start<table.length;){let curr=start;for(;curr<table.length&&table[curr].id===table[start].id;)table[curr].span=-1,curr++;table[start].span=curr-start,start=curr}}var ResourceBlame_default={container:"ResourceBlame_container",root:"ResourceBlame_root",startRow:"ResourceBlame_startRow",normalRow:"ResourceBlame_normalRow",author:"ResourceBlame_author",dateTime:"ResourceBlame_dateTime",lineNumber:"ResourceBlame_lineNumber",line:"ResourceBlame_line",pre:"ResourceBlame_pre"};function getVersionUrl(resource,versionId){return`/${resource.resourceType}/${resource.id}/_history/${versionId}`}function getTimeString(lastUpdated){let seconds=Math.floor((Date.now()-Date.parse(lastUpdated))/1e3),years=Math.floor(seconds/31536e3);if(years>0)return pluralizeTime(years,"year");let months=Math.floor(seconds/2592e3);if(months>0)return pluralizeTime(months,"month");let days=Math.floor(seconds/86400);if(days>0)return pluralizeTime(days,"day");let hours=Math.floor(seconds/3600);if(hours>0)return pluralizeTime(hours,"hour");let minutes=Math.floor(seconds/60);return minutes>0?pluralizeTime(minutes,"minute"):pluralizeTime(seconds,"second")}function pluralizeTime(count,noun){return`${count} ${count===1?noun:noun+"s"} ago`}var import_jsx_runtime108=require("react/jsx-runtime");function ResourceBlame(props){let medplum=s(),[value,setValue]=(0,import_react70.useState)(props.history);if((0,import_react70.useEffect)(()=>{!props.history&&props.resourceType&&props.id&&medplum.readHistory(props.resourceType,props.id).then(setValue).catch(console.log)},[medplum,props.history,props.resourceType,props.id]),!value)return(0,import_jsx_runtime108.jsx)("div",{children:"Loading..."});let resource=value.entry?.[0]?.resource;if(!resource)return null;let table=blame(value);return(0,import_jsx_runtime108.jsx)("div",{className:ResourceBlame_default.container,children:(0,import_jsx_runtime108.jsx)("table",{className:ResourceBlame_default.root,children:(0,import_jsx_runtime108.jsx)("tbody",{children:table.map((row,index)=>(0,import_jsx_runtime108.jsxs)("tr",{className:row.span>0?ResourceBlame_default.startRow:ResourceBlame_default.normalRow,children:[row.span>0&&(0,import_jsx_runtime108.jsxs)(import_jsx_runtime108.Fragment,{children:[(0,import_jsx_runtime108.jsx)("td",{className:ResourceBlame_default.author,rowSpan:row.span,children:(0,import_jsx_runtime108.jsx)(ResourceBadge,{value:row.meta.author,link:!0})}),(0,import_jsx_runtime108.jsx)("td",{className:ResourceBlame_default.dateTime,rowSpan:row.span,children:(0,import_jsx_runtime108.jsx)(MedplumLink,{to:getVersionUrl(resource,row.meta.versionId),children:getTimeString(row.meta.lastUpdated)})})]}),(0,import_jsx_runtime108.jsx)("td",{className:ResourceBlame_default.lineNumber,children:index+1}),(0,import_jsx_runtime108.jsx)("td",{className:ResourceBlame_default.line,children:(0,import_jsx_runtime108.jsx)("pre",{className:ResourceBlame_default.pre,children:row.value})})]},"row-"+index))})})})}var import_core140=require("@medplum/core");var ResourceDiff_default={removed:"ResourceDiff_removed",added:"ResourceDiff_added"};var import_jsx_runtime109=require("react/jsx-runtime");function ResourceDiff(props){let originalResource=props.original,revisedResource=props.revised;props.ignoreMeta&&(originalResource={...originalResource,meta:void 0},revisedResource={...revisedResource,meta:void 0});let original=(0,import_core140.stringify)(originalResource,!0).match(/[^\r\n]+/g),revised=(0,import_core140.stringify)(revisedResource,!0).match(/[^\r\n]+/g),deltas=diff(original,revised);return(0,import_jsx_runtime109.jsx)("pre",{style:{color:"gray"},children:deltas.map((delta,index)=>(0,import_jsx_runtime109.jsx)(ChangeDiff,{delta},"delta"+index))})}function ChangeDiff(props){return(0,import_jsx_runtime109.jsxs)(import_jsx_runtime109.Fragment,{children:["...",(0,import_jsx_runtime109.jsx)("br",{}),props.delta.original.lines.length>0&&(0,import_jsx_runtime109.jsx)("div",{className:ResourceDiff_default.removed,children:props.delta.original.lines.join(`
|
|
72
|
+
`)}),props.delta.revised.lines.length>0&&(0,import_jsx_runtime109.jsx)("div",{className:ResourceDiff_default.added,children:props.delta.revised.lines.join(`
|
|
73
|
+
`)}),"...",(0,import_jsx_runtime109.jsx)("br",{})]})}var import_core141=require("@mantine/core"),import_core142=require("@medplum/core");var import_react71=require("react");var import_jsx_runtime110=require("react/jsx-runtime");function ResourceForm(props){let{outcome}=props,medplum=s(),defaultValue2=j(props.defaultValue),[schemaLoaded,setSchemaLoaded]=(0,import_react71.useState)(),[value,setValue]=(0,import_react71.useState)();return(0,import_react71.useEffect)(()=>{if(defaultValue2)if(setValue((0,import_core142.deepClone)(defaultValue2)),props.profileUrl){let profileUrl=props.profileUrl;medplum.requestProfileSchema(props.profileUrl).then(()=>{let profile=(0,import_core142.tryGetProfile)(profileUrl);profile?setSchemaLoaded(profile.name):console.log(`Schema not found for ${profileUrl}`)}).catch(console.log)}else{let schemaName=props.schemaName??defaultValue2?.resourceType;medplum.requestSchema(schemaName).then(()=>setSchemaLoaded(schemaName)).catch(console.log)}},[medplum,defaultValue2,props.schemaName,props.profileUrl]),!schemaLoaded||!value?(0,import_jsx_runtime110.jsx)("div",{children:"Loading..."}):(0,import_jsx_runtime110.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:e=>{e.preventDefault(),props.onSubmit&&props.onSubmit(value)},children:[(0,import_jsx_runtime110.jsxs)(import_core141.Stack,{mb:"xl",children:[(0,import_jsx_runtime110.jsx)(FormSection,{title:"Resource Type",htmlFor:"resourceType",outcome,children:(0,import_jsx_runtime110.jsx)(import_core141.TextInput,{name:"resourceType",defaultValue:value.resourceType,disabled:!0})}),(0,import_jsx_runtime110.jsx)(FormSection,{title:"ID",htmlFor:"id",outcome,children:(0,import_jsx_runtime110.jsx)(import_core141.TextInput,{name:"id",defaultValue:value.id,disabled:!0})})]}),(0,import_jsx_runtime110.jsx)(BackboneElementInput,{typeName:schemaLoaded,defaultValue:value,outcome,onChange:setValue,profileUrl:props.profileUrl}),(0,import_jsx_runtime110.jsxs)(import_core141.Group,{justify:"flex-end",mt:"xl",children:[(0,import_jsx_runtime110.jsx)(import_core141.Button,{type:"submit",children:"OK"}),props.onDelete&&(0,import_jsx_runtime110.jsx)(import_core141.Button,{variant:"outline",color:"red",type:"button",onClick:()=>{props.onDelete(value)},children:"Delete"})]})]})}var import_core143=require("@mantine/core"),import_core144=require("@medplum/core");var import_react72=require("react");var import_jsx_runtime111=require("react/jsx-runtime");function ResourceHistoryTable(props){let medplum=s(),[value,setValue]=(0,import_react72.useState)(props.history);return(0,import_react72.useEffect)(()=>{!props.history&&props.resourceType&&props.id&&medplum.readHistory(props.resourceType,props.id).then(setValue).catch(console.log)},[medplum,props.history,props.resourceType,props.id]),value?(0,import_jsx_runtime111.jsxs)(import_core143.Table,{withTableBorder:!0,withRowBorders:!0,withColumnBorders:!0,children:[(0,import_jsx_runtime111.jsx)(import_core143.Table.Thead,{children:(0,import_jsx_runtime111.jsxs)(import_core143.Table.Tr,{children:[(0,import_jsx_runtime111.jsx)(import_core143.Table.Th,{children:"Author"}),(0,import_jsx_runtime111.jsx)(import_core143.Table.Th,{children:"Date"}),(0,import_jsx_runtime111.jsx)(import_core143.Table.Th,{children:"Version"})]})}),(0,import_jsx_runtime111.jsx)(import_core143.Table.Tbody,{children:value.entry?.map((entry,index)=>(0,import_jsx_runtime111.jsx)(HistoryRow,{entry},"entry-"+index))})]}):(0,import_jsx_runtime111.jsx)("div",{children:"Loading..."})}function HistoryRow(props){let{response,resource}=props.entry;return resource?(0,import_jsx_runtime111.jsxs)(import_core143.Table.Tr,{children:[(0,import_jsx_runtime111.jsx)(import_core143.Table.Td,{children:(0,import_jsx_runtime111.jsx)(ResourceBadge,{value:resource.meta?.author,link:!0})}),(0,import_jsx_runtime111.jsx)(import_core143.Table.Td,{children:(0,import_core144.formatDateTime)(resource.meta?.lastUpdated)}),(0,import_jsx_runtime111.jsx)(import_core143.Table.Td,{children:(0,import_jsx_runtime111.jsx)(MedplumLink,{to:getVersionUrl2(resource),children:resource.meta?.versionId})})]}):(0,import_jsx_runtime111.jsx)(import_core143.Table.Tr,{children:(0,import_jsx_runtime111.jsx)(import_core143.Table.Td,{colSpan:3,children:(0,import_core144.normalizeErrorString)(response?.outcome)})})}function getVersionUrl2(resource){return`/${resource.resourceType}/${resource.id}/_history/${resource.meta?.versionId}`}var import_core145=require("@mantine/core"),import_core146=require("@medplum/core");var import_react73=require("react");var Scheduler_default={container:"Scheduler_container",info:"Scheduler_info",selection:"Scheduler_selection"};var import_jsx_runtime112=require("react/jsx-runtime");function Scheduler(props){let schedule=j(props.schedule),questionnaire=j(props.questionnaire),[month,setMonth]=(0,import_react73.useState)(getStartMonth()),[date,setDate]=(0,import_react73.useState)(),[slot,setSlot]=(0,import_react73.useState)(),[response,setResponse]=(0,import_react73.useState)(),[slots]=ce("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",(0,import_core146.isReference)(props.schedule)?props.schedule.reference:(0,import_core146.getReferenceString)(props.schedule)],["start","gt"+getStart2(month)],["start","lt"+getEnd2(month)]]));if(!schedule||!slots||!questionnaire)return null;let actor=schedule.actor?.[0];return(0,import_jsx_runtime112.jsxs)("div",{className:Scheduler_default.container,"data-testid":"scheduler",children:[(0,import_jsx_runtime112.jsxs)("div",{className:Scheduler_default.info,children:[actor&&(0,import_jsx_runtime112.jsx)(ResourceAvatar,{value:actor,size:"xl"}),actor&&(0,import_jsx_runtime112.jsx)(import_core145.Text,{size:"xl",fw:500,children:(0,import_jsx_runtime112.jsx)(ResourceName,{value:actor})}),(0,import_jsx_runtime112.jsx)("p",{children:"1 hour"}),date&&(0,import_jsx_runtime112.jsx)("p",{children:date.toLocaleDateString()}),slot&&(0,import_jsx_runtime112.jsx)("p",{children:formatTime(new Date(slot.start))})]}),(0,import_jsx_runtime112.jsxs)("div",{className:Scheduler_default.selection,children:[!date&&(0,import_jsx_runtime112.jsxs)("div",{children:[(0,import_jsx_runtime112.jsx)("h3",{children:"Select date"}),(0,import_jsx_runtime112.jsx)(CalendarInput,{slots,onChangeMonth:setMonth,onClick:setDate})]}),date&&!slot&&(0,import_jsx_runtime112.jsxs)("div",{children:[(0,import_jsx_runtime112.jsx)("h3",{children:"Select time"}),(0,import_jsx_runtime112.jsx)(import_core145.Stack,{children:slots.map(s2=>{let slotStart=new Date(s2.start);return slotStart.getTime()>date.getTime()&&slotStart.getTime()<date.getTime()+24*3600*1e3&&(0,import_jsx_runtime112.jsx)("div",{children:(0,import_jsx_runtime112.jsx)(import_core145.Button,{variant:"outline",style:{width:150},onClick:()=>setSlot(s2),children:formatTime(slotStart)})},s2.id)})})]}),date&&slot&&!response&&(0,import_jsx_runtime112.jsx)(QuestionnaireForm,{questionnaire,submitButtonText:"Next",onSubmit:setResponse}),date&&slot&&response&&(0,import_jsx_runtime112.jsxs)("div",{children:[(0,import_jsx_runtime112.jsx)("h3",{children:"You're all set!"}),(0,import_jsx_runtime112.jsx)("p",{children:"Check your email for a calendar invite."})]})]})]})}function getStart2(month){return formatSlotInstant(month.getTime())}function getEnd2(month){return formatSlotInstant(month.getTime()+31*24*60*60*1e3)}function formatSlotInstant(time){let date=new Date(Math.max(Date.now(),time));return date.setHours(0,0,0,0),date.toISOString()}function formatTime(date){return date.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}var import_core147=require("@medplum/core");var import_jsx_runtime113=require("react/jsx-runtime");function ServiceRequestTimeline(props){return(0,import_jsx_runtime113.jsx)(ResourceTimeline,{value:props.serviceRequest,loadTimelineResources:async(medplum,resourceType,id)=>{let ref=`${resourceType}/${id}`,_count=100;return Promise.allSettled([medplum.readHistory("ServiceRequest",id),medplum.search("Communication",{"based-on":ref,_count}),medplum.search("DiagnosticReport",{"based-on":ref,_count}),medplum.search("Media",{"based-on":ref,_count}),medplum.search("DocumentReference",{related:ref,_count}),medplum.search("Task",{_filter:`based-on eq ${ref} or focus eq ${ref} or subject eq ${ref}`,_count})])},createCommunication:(resource,sender,text)=>({resourceType:"Communication",status:"completed",basedOn:[(0,import_core147.createReference)(resource)],subject:resource.subject,sender:(0,import_core147.createReference)(sender),sent:new Date().toISOString(),payload:[{contentString:text}]}),createMedia:(resource,operator,content)=>({resourceType:"Media",status:"completed",basedOn:[(0,import_core147.createReference)(resource)],subject:resource.subject,operator:(0,import_core147.createReference)(operator),issued:new Date().toISOString(),content})})}var import_core148=require("@mantine/core"),import_notifications6=require("@mantine/notifications"),import_core149=require("@medplum/core");var import_jsx_runtime114=require("react/jsx-runtime");function SmartAppLaunchLink(props){let medplum=s(),{client,patient,encounter,children,...rest}=props;function launchApp(){medplum.createResource({resourceType:"SmartAppLaunch",patient,encounter}).then(result=>{let url=new URL(client.launchUri);url.searchParams.set("iss",medplum.getBaseUrl()+"fhir/R4"),url.searchParams.set("launch",result.id),window.location.assign(url.toString())}).catch(err=>(0,import_notifications6.showNotification)({color:"red",message:(0,import_core149.normalizeErrorString)(err),autoClose:!1}))}return(0,import_jsx_runtime114.jsx)(import_core148.Anchor,{onClick:()=>launchApp(),...rest,children})}var import_core154=require("@medplum/core");var import_react77=require("react");var import_core150=require("@mantine/core"),import_core151=require("@medplum/core"),import_react74=require("react");var import_jsx_runtime115=require("react/jsx-runtime");function NewProjectForm(props){let medplum=s(),[outcome,setOutcome]=(0,import_react74.useState)();return(0,import_jsx_runtime115.jsxs)(Form,{style:{maxWidth:400},onSubmit:async formData=>{try{props.handleAuthResponse(await medplum.startNewProject({login:props.login,projectName:formData.projectName}))}catch(err){setOutcome((0,import_core151.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime115.jsxs)(import_core150.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime115.jsx)(Logo,{size:32}),(0,import_jsx_runtime115.jsx)(import_core150.Title,{children:"Create project"})]}),(0,import_jsx_runtime115.jsxs)(import_core150.Stack,{gap:"xl",children:[(0,import_jsx_runtime115.jsx)(import_core150.TextInput,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"firstName")}),(0,import_jsx_runtime115.jsxs)(import_core150.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime115.jsx)(import_core150.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime115.jsx)(import_core150.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]})]}),(0,import_jsx_runtime115.jsx)(import_core150.Group,{justify:"flex-end",mt:"xl",wrap:"nowrap",children:(0,import_jsx_runtime115.jsx)(import_core150.Button,{type:"submit",children:"Create project"})})]})}var import_core152=require("@mantine/core"),import_core153=require("@medplum/core");var import_react76=require("react");var import_react75=require("react");function createScriptTag(src,onload){let head=document.getElementsByTagName("head")[0],script=document.createElement("script");script.async=!0,script.src=src,script.onload=onload??null,head.appendChild(script)}var import_jsx_runtime116=require("react/jsx-runtime");function GoogleButton(props){let medplum=s(),{googleClientId,handleGoogleCredential}=props,parentRef=(0,import_react75.useRef)(null),[scriptLoaded,setScriptLoaded]=(0,import_react75.useState)(typeof google<"u"),[initialized,setInitialized]=(0,import_react75.useState)(!1),[buttonRendered,setButtonRendered]=(0,import_react75.useState)(!1);return(0,import_react75.useEffect)(()=>{if(typeof google>"u"){createScriptTag("https://accounts.google.com/gsi/client",()=>setScriptLoaded(!0));return}initialized||(google.accounts.id.initialize({client_id:googleClientId,callback:handleGoogleCredential}),setInitialized(!0)),parentRef.current&&!buttonRendered&&(google.accounts.id.renderButton(parentRef.current,{}),setButtonRendered(!0))},[medplum,googleClientId,initialized,scriptLoaded,parentRef,buttonRendered,handleGoogleCredential]),googleClientId?(0,import_jsx_runtime116.jsx)("div",{ref:parentRef}):null}function getGoogleClientId(clientId){if(clientId)return clientId;if(typeof window<"u"){let origin=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(origin))return"__GOOGLE_CLIENT_ID__"}}function initRecaptcha(siteKey){typeof grecaptcha>"u"&&createScriptTag("https://www.google.com/recaptcha/api.js?render="+siteKey)}function getRecaptcha(siteKey){return new Promise((resolve,reject)=>{grecaptcha.ready(async()=>{try{resolve(await grecaptcha.execute(siteKey,{action:"submit"}))}catch(err){reject(err)}})})}var import_jsx_runtime117=require("react/jsx-runtime");function NewUserForm(props){let googleClientId=getGoogleClientId(props.googleClientId),recaptchaSiteKey=props.recaptchaSiteKey,medplum=s(),[outcome,setOutcome]=(0,import_react76.useState)(),issues=getIssuesForExpression(outcome,void 0);return(0,import_react76.useEffect)(()=>{recaptchaSiteKey&&initRecaptcha(recaptchaSiteKey)},[recaptchaSiteKey]),(0,import_jsx_runtime117.jsxs)(Form,{style:{maxWidth:400},onSubmit:async formData=>{try{let recaptchaToken="";recaptchaSiteKey&&(recaptchaToken=await getRecaptcha(recaptchaSiteKey)),props.handleAuthResponse(await medplum.startNewUser({projectId:props.projectId,clientId:props.clientId,firstName:formData.firstName,lastName:formData.lastName,email:formData.email,password:formData.password,remember:formData.remember==="true",recaptchaSiteKey,recaptchaToken}))}catch(err){setOutcome((0,import_core153.normalizeOperationOutcome)(err))}},children:[(0,import_jsx_runtime117.jsx)(import_core152.Center,{style:{flexDirection:"column"},children:props.children}),(0,import_jsx_runtime117.jsx)(OperationOutcomeAlert,{issues}),googleClientId&&(0,import_jsx_runtime117.jsxs)(import_jsx_runtime117.Fragment,{children:[(0,import_jsx_runtime117.jsx)(import_core152.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime117.jsx)(GoogleButton,{googleClientId,handleGoogleCredential:async response=>{try{props.handleAuthResponse(await medplum.startGoogleLogin({googleClientId:response.clientId,googleCredential:response.credential,createUser:!0}))}catch(err){setOutcome((0,import_core153.normalizeOperationOutcome)(err))}}})}),(0,import_jsx_runtime117.jsx)(import_core152.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),(0,import_jsx_runtime117.jsxs)(import_core152.Stack,{gap:"xl",children:[(0,import_jsx_runtime117.jsx)(import_core152.TextInput,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"firstName")}),(0,import_jsx_runtime117.jsx)(import_core152.TextInput,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:getErrorsForInput(outcome,"lastName")}),(0,import_jsx_runtime117.jsx)(import_core152.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:getErrorsForInput(outcome,"email")}),(0,import_jsx_runtime117.jsx)(import_core152.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,error:getErrorsForInput(outcome,"password")}),(0,import_jsx_runtime117.jsxs)(import_core152.Text,{c:"dimmed",size:"xs",children:["By clicking submit you agree to the Medplum"," ",(0,import_jsx_runtime117.jsx)(import_core152.Anchor,{href:"https://www.medplum.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime117.jsx)(import_core152.Anchor,{href:"https://www.medplum.com/terms",children:"Terms\xA0of\xA0Service"}),"."]}),(0,import_jsx_runtime117.jsxs)(import_core152.Text,{c:"dimmed",size:"xs",children:["This site is protected by reCAPTCHA and the Google"," ",(0,import_jsx_runtime117.jsx)(import_core152.Anchor,{href:"https://policies.google.com/privacy",children:"Privacy\xA0Policy"})," and ",(0,import_jsx_runtime117.jsx)(import_core152.Anchor,{href:"https://policies.google.com/terms",children:"Terms\xA0of\xA0Service"})," apply."]})]}),(0,import_jsx_runtime117.jsxs)(import_core152.Group,{justify:"space-between",mt:"xl",wrap:"nowrap",children:[(0,import_jsx_runtime117.jsx)(import_core152.Checkbox,{name:"remember",label:"Remember me",size:"xs"}),(0,import_jsx_runtime117.jsx)(import_core152.Button,{type:"submit",children:"Create account"})]})]})}var import_jsx_runtime118=require("react/jsx-runtime");function RegisterForm(props){let{type,projectId,clientId,googleClientId,recaptchaSiteKey,onSuccess}=props,medplum=s(),[login,setLogin]=(0,import_react77.useState)(),[outcome,setOutcome]=(0,import_react77.useState)();(0,import_react77.useEffect)(()=>{type==="patient"&&login&&medplum.startNewPatient({login,projectId}).then(response=>medplum.processCode(response.code)).then(()=>onSuccess()).catch(err=>setOutcome((0,import_core154.normalizeOperationOutcome)(err)))},[medplum,type,projectId,login,onSuccess]);function handleAuthResponse(response){response.code?medplum.processCode(response.code).then(()=>onSuccess()).catch(console.log):response.login&&setLogin(response.login)}return(0,import_jsx_runtime118.jsxs)(Document,{width:450,children:[outcome&&(0,import_jsx_runtime118.jsx)("pre",{children:JSON.stringify(outcome,null,2)}),!login&&(0,import_jsx_runtime118.jsx)(NewUserForm,{projectId,clientId,googleClientId,recaptchaSiteKey,handleAuthResponse,children:props.children}),login&&type==="project"&&(0,import_jsx_runtime118.jsx)(NewProjectForm,{login,handleAuthResponse})]})}var import_notifications7=require("@mantine/notifications"),import_core162=require("@medplum/core");var import_react81=require("react");var import_core155=require("@mantine/core"),import_core156=require("@medplum/core");var import_react78=require("react");var import_jsx_runtime119=require("react/jsx-runtime");function AuthenticationForm(props){let[email,setEmail]=(0,import_react78.useState)();return email?(0,import_jsx_runtime119.jsx)(PasswordForm,{email,...props}):(0,import_jsx_runtime119.jsx)(EmailForm,{setEmail,...props})}function EmailForm(props){let{setEmail,onRegister,handleAuthResponse,children,disableEmailAuth,...baseLoginRequest}=props,medplum=s(),googleClientId=!props.disableGoogleAuth&&getGoogleClientId(props.googleClientId),isExternalAuth=(0,import_react78.useCallback)(async authMethod=>{if(!authMethod.authorizeUrl)return!1;let state=JSON.stringify({...await medplum.ensureCodeChallenge(baseLoginRequest),domain:authMethod.domain}),url=new URL(authMethod.authorizeUrl);return url.searchParams.set("state",state),window.location.assign(url.toString()),!0},[medplum,baseLoginRequest]),handleSubmit=(0,import_react78.useCallback)(async formData=>{let authMethod=await medplum.post("auth/method",{email:formData.email});await isExternalAuth(authMethod)||setEmail(formData.email)},[medplum,isExternalAuth,setEmail]),handleGoogleCredential=(0,import_react78.useCallback)(async response=>{let authResponse=await medplum.startGoogleLogin({...baseLoginRequest,googleCredential:response.credential});await isExternalAuth(authResponse)||handleAuthResponse(authResponse)},[medplum,baseLoginRequest,isExternalAuth,handleAuthResponse]);return(0,import_jsx_runtime119.jsxs)(Form,{style:{maxWidth:400},onSubmit:handleSubmit,children:[(0,import_jsx_runtime119.jsx)(import_core155.Center,{style:{flexDirection:"column"},children}),googleClientId&&(0,import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment,{children:[(0,import_jsx_runtime119.jsx)(import_core155.Group,{justify:"center",p:"xl",style:{height:70},children:(0,import_jsx_runtime119.jsx)(GoogleButton,{googleClientId,handleGoogleCredential})}),!disableEmailAuth&&(0,import_jsx_runtime119.jsx)(import_core155.Divider,{label:"or",labelPosition:"center",my:"lg"})]}),!disableEmailAuth&&(0,import_jsx_runtime119.jsx)(import_core155.TextInput,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),(0,import_jsx_runtime119.jsxs)(import_core155.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[(0,import_jsx_runtime119.jsx)("div",{children:onRegister&&(0,import_jsx_runtime119.jsx)(import_core155.Anchor,{component:"button",type:"button",color:"dimmed",onClick:onRegister,size:"xs",children:"Register"})}),!disableEmailAuth&&(0,import_jsx_runtime119.jsx)(import_core155.Button,{type:"submit",children:"Next"})]})]})}function PasswordForm(props){let{onForgotPassword,handleAuthResponse,children,...baseLoginRequest}=props,medplum=s(),[outcome,setOutcome]=(0,import_react78.useState)(),issues=getIssuesForExpression(outcome,void 0),handleSubmit=(0,import_react78.useCallback)(formData=>{medplum.startLogin({...baseLoginRequest,password:formData.password,remember:formData.remember==="on"}).then(handleAuthResponse).catch(err=>setOutcome((0,import_core156.normalizeOperationOutcome)(err)))},[medplum,baseLoginRequest,handleAuthResponse]);return(0,import_jsx_runtime119.jsxs)(Form,{style:{maxWidth:400},onSubmit:handleSubmit,children:[(0,import_jsx_runtime119.jsx)(import_core155.Center,{style:{flexDirection:"column"},children}),(0,import_jsx_runtime119.jsx)(OperationOutcomeAlert,{issues}),(0,import_jsx_runtime119.jsx)(import_core155.Stack,{gap:"xl",children:(0,import_jsx_runtime119.jsx)(import_core155.PasswordInput,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:getErrorsForInput(outcome,"password")})}),(0,import_jsx_runtime119.jsxs)(import_core155.Group,{justify:"space-between",mt:"xl",gap:0,wrap:"nowrap",children:[onForgotPassword&&(0,import_jsx_runtime119.jsx)(import_core155.Anchor,{component:"button",type:"button",c:"dimmed",onClick:onForgotPassword,size:"xs",children:"Forgot password"}),(0,import_jsx_runtime119.jsx)(import_core155.Checkbox,{id:"remember",name:"remember",label:"Remember me",size:"xs",style:{lineHeight:1}}),(0,import_jsx_runtime119.jsx)(import_core155.Button,{type:"submit",children:"Sign in"})]})]})}var import_core157=require("@mantine/core"),import_core158=require("@medplum/core"),import_react79=require("react");var import_jsx_runtime120=require("react/jsx-runtime");function ChooseProfileForm(props){let medplum=s(),[outcome,setOutcome]=(0,import_react79.useState)();return(0,import_jsx_runtime120.jsxs)(import_core157.Stack,{children:[(0,import_jsx_runtime120.jsxs)(import_core157.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime120.jsx)(Logo,{size:32}),(0,import_jsx_runtime120.jsx)(import_core157.Title,{order:3,children:"Choose profile"})]}),(0,import_jsx_runtime120.jsx)(OperationOutcomeAlert,{outcome}),props.memberships.map(membership=>(0,import_jsx_runtime120.jsx)(import_core157.UnstyledButton,{onClick:()=>{medplum.post("auth/profile",{login:props.login,profile:membership.id}).then(props.handleAuthResponse).catch(err=>setOutcome((0,import_core158.normalizeOperationOutcome)(err)))},children:(0,import_jsx_runtime120.jsxs)(import_core157.Group,{children:[(0,import_jsx_runtime120.jsx)(import_core157.Avatar,{radius:"xl"}),(0,import_jsx_runtime120.jsxs)("div",{style:{flex:1},children:[(0,import_jsx_runtime120.jsx)(import_core157.Text,{size:"sm",fw:500,children:membership.profile?.display}),(0,import_jsx_runtime120.jsx)(import_core157.Text,{c:"dimmed",size:"xs",children:membership.project?.display})]})]})},membership.id))]})}var import_core159=require("@mantine/core");var import_jsx_runtime121=require("react/jsx-runtime");function ChooseScopeForm(props){let medplum=s();return(0,import_jsx_runtime121.jsx)(Form,{style:{maxWidth:400},onSubmit:formData=>{medplum.post("auth/scope",{login:props.login,scope:Object.keys(formData).join(" ")}).then(props.handleAuthResponse).catch(console.log)},children:(0,import_jsx_runtime121.jsxs)(import_core159.Stack,{children:[(0,import_jsx_runtime121.jsxs)(import_core159.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime121.jsx)(Logo,{size:32}),(0,import_jsx_runtime121.jsx)(import_core159.Title,{children:"Choose scope"})]}),(0,import_jsx_runtime121.jsx)(import_core159.Stack,{children:(props.scope??"openid").split(" ").map(scopeName=>(0,import_jsx_runtime121.jsx)(import_core159.Checkbox,{id:scopeName,name:scopeName,label:scopeName,defaultChecked:!0},scopeName))}),(0,import_jsx_runtime121.jsx)(import_core159.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime121.jsx)(import_core159.Button,{type:"submit",children:"Set scope"})})]})})}var import_core160=require("@mantine/core"),import_core161=require("@medplum/core");var import_react80=require("react");var import_jsx_runtime122=require("react/jsx-runtime");function MfaForm(props){let medplum=s(),[errorMessage,setErrorMessage]=(0,import_react80.useState)();return(0,import_jsx_runtime122.jsx)(Form,{style:{maxWidth:400},onSubmit:formData=>{setErrorMessage(void 0),medplum.post("auth/mfa/verify",{login:props.login,token:formData.token}).then(props.handleAuthResponse).catch(err=>setErrorMessage((0,import_core161.normalizeErrorString)(err)))},children:(0,import_jsx_runtime122.jsxs)(import_core160.Stack,{children:[(0,import_jsx_runtime122.jsxs)(import_core160.Center,{style:{flexDirection:"column"},children:[(0,import_jsx_runtime122.jsx)(Logo,{size:32}),(0,import_jsx_runtime122.jsx)(import_core160.Title,{children:"Enter MFA code"})]}),errorMessage&&(0,import_jsx_runtime122.jsx)(import_core160.Alert,{icon:(0,import_jsx_runtime122.jsx)(IconAlertCircle,{size:16}),title:"Error",color:"red",children:errorMessage}),(0,import_jsx_runtime122.jsx)(import_core160.Stack,{children:(0,import_jsx_runtime122.jsx)(import_core160.TextInput,{name:"token",label:"MFA code",required:!0})}),(0,import_jsx_runtime122.jsx)(import_core160.Group,{justify:"flex-end",mt:"xl",children:(0,import_jsx_runtime122.jsx)(import_core160.Button,{type:"submit",children:"Submit code"})})]})})}var import_jsx_runtime123=require("react/jsx-runtime");function SignInForm(props){let{login:loginCode,chooseScopes,onSuccess,onForgotPassword,onRegister,onCode,...baseLoginRequest}=props,medplum=s(),[login,setLogin]=(0,import_react81.useState)(),[mfaRequired,setAuthenticatorRequired]=(0,import_react81.useState)(!1),[memberships,setMemberships]=(0,import_react81.useState)(),handleCode=(0,import_react81.useCallback)(code=>{onCode?onCode(code):medplum.processCode(code).then(()=>{onSuccess&&onSuccess()}).catch(err=>(0,import_notifications7.showNotification)({color:"red",message:(0,import_core162.normalizeErrorString)(err)}))},[medplum,onCode,onSuccess]),handleAuthResponse=(0,import_react81.useCallback)(response=>{setAuthenticatorRequired(!!response.mfaRequired),response.login&&setLogin(response.login),response.memberships&&setMemberships(response.memberships),response.code&&(chooseScopes?setMemberships(void 0):handleCode(response.code))},[chooseScopes,handleCode]),handleScopeResponse=(0,import_react81.useCallback)(response=>{handleCode(response.code)},[handleCode]);return(0,import_react81.useEffect)(()=>{loginCode&&!login&&medplum.get("auth/login/"+loginCode).then(handleAuthResponse).catch(err=>(0,import_notifications7.showNotification)({color:"red",message:(0,import_core162.normalizeErrorString)(err)}))},[medplum,loginCode,login,handleAuthResponse]),(0,import_jsx_runtime123.jsx)(Document,{width:450,children:login?mfaRequired?(0,import_jsx_runtime123.jsx)(MfaForm,{login,handleAuthResponse}):memberships?(0,import_jsx_runtime123.jsx)(ChooseProfileForm,{login,memberships,handleAuthResponse}):props.projectId==="new"?(0,import_jsx_runtime123.jsx)(NewProjectForm,{login,handleAuthResponse}):props.chooseScopes?(0,import_jsx_runtime123.jsx)(ChooseScopeForm,{login,scope:props.scope,handleAuthResponse:handleScopeResponse}):(0,import_jsx_runtime123.jsx)("div",{children:"Success"}):(0,import_jsx_runtime123.jsx)(AuthenticationForm,{onForgotPassword,onRegister,handleAuthResponse,disableGoogleAuth:props.disableGoogleAuth,disableEmailAuth:props.disableEmailAuth,...baseLoginRequest,children:props.children})})}
|
|
74
74
|
//# sourceMappingURL=index.cjs.map
|