@medplum/react 0.9.8 → 0.9.11
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.js +2 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +1 -1
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/esm/index.js +3 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/types/ResourceBlame.d.ts +2 -2
- package/package.json +5 -5
package/dist/esm/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{formatAddress as e,getDisplayString as t,getImageSrc as n,getPropertyDisplayName as a,formatHumanName as l,stringify as r,buildTypeName as o,PropertyType as i,capitalize as c,createReference as u,Operator as s,getReferenceString as m,isUUID as d,getSearchParameterDetails as p,evalFhirPath as v,SearchParameterType as h,parseSearchDefinition as f,DEFAULT_SEARCH_COUNT as E}from"@medplum/core";import g,{useState as y,useRef as b,createContext as C,useEffect as k,useContext as O,useCallback as T}from"react";import{useNavigate as j,useLocation as x}from"react-router-dom";function w(t){const n=t.value;return n?g.createElement(g.Fragment,null,e(n)):null}function S(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function N(e){const t=S(e.outcome,e.name),n=t&&t.length>0;return g.createElement("input",{id:e.name,name:e.name,type:V(e.type),size:e.size,step:e.step,className:"medplum-input",defaultValue:e.defaultValue||"",required:e.required,autoCapitalize:e.autoCapitalize,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function V(e){return e||"text"}function D(e){return g.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function A(e){const t=S(e.outcome,e.name),n=t&&t.length>0;return g.createElement("select",{id:e.name,name:e.name,className:"medplum-select",defaultValue:e.defaultValue||"",required:e.required,autoFocus:e.autoFocus,ref:e.inputRef,style:e.style,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"","data-testid":e.testid,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}},e.children)}function R(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function I(e,t,n){const a=e.line||[];for(;a.length<=t;)a.push("");return a[t]=n,Object.assign(Object.assign({},e),{line:a})}function P(e){const[t,n]=y(e.defaultValue||{}),a=b();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,g.createElement(D,null,g.createElement(A,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},g.createElement("option",null),g.createElement("option",null,"home"),g.createElement("option",null,"mobile"),g.createElement("option",null,"old"),g.createElement("option",null,"temp"),g.createElement("option",null,"work")),g.createElement(A,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},g.createElement("option",null),g.createElement("option",null,"postal"),g.createElement("option",null,"physical"),g.createElement("option",null,"both")),g.createElement(N,{placeholder:"Line 1",defaultValue:R(t,0),onChange:function(e){l(I(a.current||{},0,e))}}),g.createElement(N,{placeholder:"Line 2",defaultValue:R(t,1),onChange:function(e){l(I(a.current||{},1,e))}}),g.createElement(N,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),g.createElement(N,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),g.createElement(N,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function L(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?g.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&g.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&g.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},g.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&g.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},g.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),g.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},g.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function M(e){return g.createElement("div",null,e.values&&e.values.map(((t,n)=>g.createElement("div",{key:"attatchment-"+n},g.createElement(L,{value:t,maxWidth:e.maxWidth})))))}function $(e){const t="medplum-button"+(e.primary||"submit"===e.type?" medplum-button-primary":"")+(e.danger?" medplum-button-danger":"")+(e.borderless?" medplum-button-borderless":"")+(e.size?" medplum-button-"+e.size:"");return g.createElement("button",{type:e.type||"button",className:t,style:e.style,onClick:e.onClick,"aria-label":e.label,"data-testid":e.testid},e.children)}const F=C(void 0);function _(e){const t=e.medplum,[n,a]=y({profile:t.getProfile(),loading:!1});k((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return g.createElement(F.Provider,{value:l},e.children)}function U(){return O(F)}function q(){return U().medplum}function z(){return U().profile}function Q(e){e.preventDefault(),e.stopPropagation()}function H(e){if(B(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&B(t[0]))return!0}return!1}function B(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function W(e){const t=q(),n=b(null);function a(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return g.createElement(g.Fragment,null,g.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){Q(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),g.createElement($,{testid:"upload-button",onClick:e=>{var t;Q(e),null===(t=n.current)||void 0===t||t.click()}},"Upload..."))}function K(e){var t;const[n,a]=y(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=b();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,g.createElement("table",null,g.createElement("colgroup",null,g.createElement("col",{width:"90%"}),g.createElement("col",{width:"10%"})),g.createElement("tbody",null,n.map(((e,t)=>g.createElement("tr",{key:`${t}-${n.length}`},g.createElement("td",null,g.createElement(L,{value:e,maxWidth:200})),g.createElement("td",{className:"medplum-right"},g.createElement($,{onClick:e=>{Q(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),g.createElement("tr",null,g.createElement("td",null),g.createElement("td",{className:"medplum-right"},g.createElement(W,{onUpload:e=>{r([...l.current,e])}})))))}function G(e){const[t,n]=y(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?g.createElement(g.Fragment,null,g.createElement(L,{value:t,maxWidth:200}),g.createElement($,{onClick:e=>{Q(e),a(void 0)}},"Remove")):g.createElement(W,{onUpload:a})}function J(e){var t,n;const a=b(null),[l,r]=y(!1),[o,i]=y(""),[c,u]=y(),[s,m]=y(!1),[d,p]=y(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=y([]),[f,E]=y(-1),[C,O]=y(),[T,j]=y(),x=b();x.current=o;const w=b();w.current=c;const S=b();S.current=C;const N=b();function V(t){p(t),e.onChange&&e.onChange(t)}function D(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),E(-1),V(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function R(){r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){S.current&&(S.current.abort(),O(void 0)),void 0!==w.current&&window.clearTimeout(w.current);const t=window.setTimeout((()=>function(){var t,n;u(void 0);const l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===x.current)return;if(!l)return m(!1),i(""),h([]),void E(-1);i(l);const r=new AbortController;O(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),O(void 0),N.current&&(D(e[0]),j(!1)))})).catch(console.log)}()),100);u(t)}function P(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;w.current||S.current||!L()?j(!0):(Q(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":M(-1),Q(e);break;case"ArrowDown":M(1),Q(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(Q(e),V(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;L(),Q(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function L(){var t;let n;return f>=0&&f<v.length?n=v[f]:-1===f&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(D(n),!0)}function M(e){let t=f+e;t<0?t=0:t>=v.length&&(t=v.length-1),E(t)}N.current=T,k((()=>()=>{S.current&&S.current.abort()}),[]),k((()=>{var t;p(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const $=null!==(n=e.className)&&void 0!==n?n:"medplum-autocomplete-container";return g.createElement("div",{"data-testid":"autocomplete",className:$+(l?" focused":""),onClick:()=>A()},g.createElement("ul",{onClick:()=>A()},d.map((t=>g.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),g.createElement("li",{className:"medplum-autocomplete-item"},g.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>{r(!0)},onBlur:()=>R(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&g.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>g.createElement("div",{key:e.getId(t),className:n===f?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){E(t)}(0,n),onClick:e=>function(e,t){Q(e),D(t)}(e,t)},e.getIcon&&g.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),g.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&g.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&g.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},g.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function Y(e){const t=j();let n="#";return e.to&&("string"==typeof e.to?n=e.to:"resourceType"in e.to?n=`/${e.to.resourceType}/${e.to.id}`:"reference"in e.to&&(n=`/${e.to.reference}`)),g.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{Q(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}const X={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function Z(e){const t=q(),[n,a]=y(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?X:e.getCachedReference(t);return}(t,e));return k((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function ee(e){var a,l;const r=Z(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?g.createElement("img",{src:u,alt:i}):c;return g.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?g.createElement(Y,{to:r},s):s)}const te=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function ne(e){const t=S(e.outcome,e.htmlFor),n=t&&t.length>0;return g.createElement("fieldset",null,e.title&&g.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&g.createElement("small",null,e.description),e.children,n&&g.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return g.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}function ae(e){return g.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function le(e){return g.createElement(g.Fragment,null,g.createElement("dt",null,e.term),g.createElement("dd",null,e.children))}function re(e){const t=e.value;if(!t)return null;const n=e.typeName,l=e.schema.types[n];return l?"object"==typeof t&&"name"in t&&1===Object.keys(t).length?g.createElement("div",null,t.name):g.createElement(ae,{compact:e.compact},Object.entries(l.properties).map((n=>{const l=n[0];if(te.indexOf(l)>=0)return null;const r=n[1],[o,i]=ye(t,r);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:g.createElement(le,{key:l,term:a(r)},g.createElement(ge,{schema:e.schema,property:r,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):g.createElement("div",null,n," not implemented")}function oe(e){var t,n;return g.createElement(g.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function ie(e){const t=e.value;return t?t.text?g.createElement(g.Fragment,null,t.text):t.coding&&t.coding.length>0?g.createElement(oe,{value:t.coding[0]}):null:null}function ce(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),g.createElement(g.Fragment,null,n.join("").trim())}function ue(e){return e.value?g.createElement(g.Fragment,null,new Date(e.value).toLocaleString()):null}function se(e){const t=e.value;return t?g.createElement(g.Fragment,null,l(t,e.options)):null}function me(e){var t,n;return g.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function de(e){const t=e.value;return t&&(t.start||t.end)?g.createElement("span",null,g.createElement(ue,{value:t.start}),"-",g.createElement(ue,{value:t.end})):null}function pe(e){const t=e.value;return t?g.createElement(g.Fragment,null,function(e){const t=[];e.comparator&&(t.push(e.comparator),t.push(" "));void 0!==e.value&&t.push(e.value);e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit));return t.join("")}(t)):null}function ve(e){const t=e.value;return t&&(t.low||t.high)?t.low&&!t.high?g.createElement("span",null,">= ",g.createElement(pe,{value:t.low})):!t.low&&t.high?g.createElement("span",null,"<= ",g.createElement(pe,{value:t.high})):g.createElement("span",null,g.createElement(pe,{value:t.low})," - ",g.createElement(pe,{value:t.high})):null}function he(e){const t=e.value;return t?g.createElement(g.Fragment,null,g.createElement(pe,{value:t.numerator})," / ",g.createElement(pe,{value:t.denominator})):null}function fe(e){if(!e.value)return null;const t=e.value.display||e.value.reference||r(e.value);return!1!==e.link&&e.value.reference?g.createElement(Y,{to:e.value},t):g.createElement(g.Fragment,null,t)}function Ee(e){var t,n,a;const l=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return g.createElement(g.Fragment,null,r.map(((t,n)=>g.createElement("div",{key:`${n}-${r.length}`},g.createElement(ge,{arrayElement:!0,schema:e.schema,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function ge(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement){if("Attachment"===a)return g.createElement(M,{values:l,maxWidth:e.maxWidth});if(!e.schema)throw Error(`Displaying property of type ${e.propertyType} requires schema to be passed`);return g.createElement(Ee,{schema:e.schema,property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link})}switch(a){case i.boolean:return g.createElement("div",null,void 0===l?"":Boolean(l).toString());case i.SystemString:case i.canonical:case i.code:case i.date:case i.integer:case i.positiveInt:case i.string:case i.unsignedInt:case i.uri:case i.url:return g.createElement("div",null,l);case i.dateTime:case i.instant:return g.createElement(ue,{value:l});case i.markdown:return g.createElement("pre",null,l);case i.Address:return g.createElement(w,{value:l});case i.Annotation:return g.createElement("div",null,null==l?void 0:l.text);case i.Attachment:return g.createElement(L,{value:l,maxWidth:e.maxWidth});case i.CodeableConcept:return g.createElement(ie,{value:l});case i.Coding:return g.createElement(oe,{value:l});case i.ContactPoint:return g.createElement(ce,{value:l});case i.HumanName:return g.createElement(se,{value:l});case i.Identifier:return g.createElement(me,{value:l});case i.Period:return g.createElement(de,{value:l});case i.Quantity:return g.createElement(pe,{value:l});case i.Range:return g.createElement(ve,{value:l});case i.Ratio:return g.createElement(he,{value:l});case i.Reference:return g.createElement(fe,{value:l,link:e.link});default:if(!e.schema)throw Error(`Displaying property of type ${e.propertyType} requires schema to be passed`);return g.createElement(re,{schema:e.schema,typeName:o(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l,compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function ye(e,t){var n,a;if(!e)return[void 0,i.string];const l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop();if(!l)return[void 0,i.string];const r=t.type;if(!r||0===r.length)return[void 0,i.string];if(1===r.length)return[e[l],r[0].code];for(const t of r){const n=l.replace("[x]",c(t.code));if(n in e)return[e[n],t.code]}return[void 0,r[0].code]}function be(e){const t=z(),[n,a]=y(e.defaultValue||{});return b().current=n,g.createElement(N,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&u(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function Ce(e){const t=q();let n;return e.defaultValue&&(n=[e.defaultValue]),g.createElement(J,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(ke)))},buildUnstructured:Oe,getId:Te,getDisplay:je,name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function ke(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Oe(e){return{text:e}}function Te(e){return e.coding&&e.coding.length>0?e.coding[0].code:r(e)}function je(e){var t,n,a,l,r,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return g.createElement(g.Fragment,null,i)}const xe={};function we(e){const t=q();let n;return e.defaultValue&&(n=[e.defaultValue]),g.createElement(J,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>xe[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>g.createElement(g.Fragment,null,xe[e]||e),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Se(e){const t=q();let n;return e.defaultValue&&(n=[e.defaultValue]),g.createElement(J,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map((e=>({system:e.system,code:e.code,display:e.display})))))},buildUnstructured:e=>({code:e}),getId:e=>e.code,getDisplay:e=>g.createElement(oe,{value:e}),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ne(e){const[t,n]=y(e.defaultValue),a=b();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,g.createElement(D,null,g.createElement(A,{defaultValue:null==t?void 0:t.system,onChange:function(e){l(Object.assign(Object.assign({},a.current),{system:e||void 0}))},testid:"system"},g.createElement("option",null),g.createElement("option",null,"email"),g.createElement("option",null,"fax"),g.createElement("option",null,"pager"),g.createElement("option",null,"phone"),g.createElement("option",null,"other"),g.createElement("option",null,"sms")),g.createElement(A,{defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e||void 0}))},testid:"use"},g.createElement("option",null),g.createElement("option",null,"home"),g.createElement("option",null,"mobile"),g.createElement("option",null,"old"),g.createElement("option",null,"temp"),g.createElement("option",null,"work")),g.createElement(N,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){l(Object.assign(Object.assign({},a.current),{value:e||void 0}))}}))}function Ve(e){return g.createElement(N,Object.assign({},e,{type:"datetime-local",defaultValue:De(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(Ae(t))}}))}function De(e){if(!e)return"";const t=new Date(e);return Re(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function Ae(e){if(!e)return"";const t=new Date(e);return Re(t)?t.toISOString():""}function Re(e){return e instanceof Date&&!isNaN(e.getTime())}function Ie(e){const t=S(e.outcome,e.name),n=t&&t.length>0;return g.createElement("textarea",{id:e.name,name:e.name,className:"medplum-textarea",defaultValue:e.defaultValue||"",required:e.required,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Pe(e){return g.createElement(Ie,{testid:"extension-input",name:e.name,defaultValue:r(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Le(e){var t,n,a;const[l,r]=y(e.defaultValue),o=b();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,g.createElement(D,null,g.createElement(A,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},g.createElement("option",null),g.createElement("option",null,"usual"),g.createElement("option",null,"official"),g.createElement("option",null,"temp"),g.createElement("option",null,"nickname"),g.createElement("option",null,"anonymous"),g.createElement("option",null,"old"),g.createElement("option",null,"maiden")),g.createElement(N,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),g.createElement(N,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),g.createElement(N,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),g.createElement(N,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function Me(e){const[t,n]=y(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return g.createElement(D,null,g.createElement(N,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),g.createElement(N,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function $e(e){const[t,n]=y(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return g.createElement(D,null,g.createElement(N,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),g.createElement(N,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function Fe(e){var t;const[n,a]=y(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return g.createElement(D,null,g.createElement(A,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},g.createElement("option",null),g.createElement("option",null,"<"),g.createElement("option",null,"<="),g.createElement("option",null,">="),g.createElement("option",null,">")),g.createElement(N,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>l(Object.assign(Object.assign({},n),{value:_e(e)}))}),g.createElement(N,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function _e(e){if(e)return parseFloat(e)}function Ue(e){const[t,n]=y(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return g.createElement(D,null,g.createElement(Fe,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),g.createElement(Fe,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function qe(e){const[t,n]=y(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return g.createElement(D,null,g.createElement(Fe,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),g.createElement(Fe,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function ze(e){const n=Z(e.value);if(!n)return null;const a=t(n);return e.link?g.createElement(Y,{to:n},a):g.createElement("span",null,a)}function Qe(e){const t=q(),n=Z(e.defaultValue),[a,l]=y(),r=b(e.resourceType);return r.current=e.resourceType,k((()=>{l(n)}),[n]),g.createElement(J,{loadOptions:e=>t.search({resourceType:r.current,filters:[{code:"name",operator:s.EQUALS,value:e}]}).then((e=>e.entry.map((e=>e.resource)))),getId:e=>e.id,getIcon:e=>g.createElement(ee,{value:e}),getDisplay:e=>g.createElement(ze,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function He(e){const t=e.targetTypes,n=function(e,t){var n;const a=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(a)return a;if(t&&t.length>0)return t[0];return}(e.defaultValue,t),[a,l]=y(e.defaultValue),[r,o]=y(n);b().current=a;return b().current=r,g.createElement(D,null,t?g.createElement(A,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>g.createElement("option",{key:e,value:e},e)))):g.createElement(N,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),g.createElement(Qe,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?u(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function Be(e){var t;const[n,a]=y(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=b();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,g.createElement("div",null,g.createElement("table",{style:{width:"100%"}},g.createElement("colgroup",null,g.createElement("col",{width:"90%"}),g.createElement("col",{width:"10%"})),g.createElement("tbody",null,n.map(((t,a)=>g.createElement("tr",{key:`${a}-${n.length}`},g.createElement("td",null,g.createElement(We,{arrayElement:!0,schema:e.schema,property:e.property,name:e.name+"."+a,defaultValue:t,onChange:e=>{const t=[...l.current];t[a]=e,r(t)}})),g.createElement("td",{style:{textAlign:"right"}},g.createElement($,{onClick:e=>{Q(e);const t=[...l.current];t.splice(a,1),r(t)}},"Remove"))))),g.createElement("tr",null,g.createElement("td",null),g.createElement("td",{style:{textAlign:"right"}},g.createElement($,{onClick:e=>{Q(e);const t=[...l.current];t.push(void 0),r(t)}},"Add"))))))}function We(e){var t,n,a;const l=e.property,r=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===r?g.createElement(K,{name:o,defaultValue:i,onChange:e.onChange}):g.createElement(Be,{schema:e.schema,property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?g.createElement(Ke,Object.assign({elementDefinitionTypes:c},e)):g.createElement(Ge,Object.assign({elementDefinitionType:c[0]},e))}function Ke(e){const t=e.elementDefinitionTypes;let n;n=e.defaultPropertyType?t.find((t=>t.code===e.defaultPropertyType)):t[0];const[a,l]=y(n);return g.createElement(D,null,g.createElement(A,{style:{width:"200px"},defaultValue:a.code,onChange:e=>{l(t.find((t=>t.code===e)))}},t.map((e=>g.createElement("option",{key:e.code,value:e.code},e.code)))),g.createElement(Ge,Object.assign({},e,{elementDefinitionType:a,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",c(a.code)))}})))}function Ge(e){const t=e.property,n=e.elementDefinitionType.code,a=e.name,l=e.defaultValue;switch(n){case i.SystemString:case i.canonical:case i.string:case i.time:case i.uri:case i.url:return g.createElement(N,{type:"text",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.date:return g.createElement(N,{type:"date",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.dateTime:case i.instant:return g.createElement(Ve,{type:"datetime-local",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.decimal:case i.integer:case i.positiveInt:case i.unsignedInt:return g.createElement(N,{type:"number",step:n===i.decimal?"any":1,name:a,testid:a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case i.code:return g.createElement(we,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.boolean:return g.createElement("input",{type:"checkbox",name:a,"data-testid":a,defaultChecked:!!l,value:"true",onChange:t=>e.onChange&&e.onChange("true"===t.target.value)});case i.markdown:return g.createElement(Ie,{name:a,testid:a,defaultValue:l,onChange:e.onChange});case i.Address:return g.createElement(P,{name:a,defaultValue:l,onChange:e.onChange});case i.Annotation:return g.createElement(be,{name:a,defaultValue:l,onChange:e.onChange});case i.Attachment:return g.createElement(G,{name:a,defaultValue:l,onChange:e.onChange});case i.CodeableConcept:return g.createElement(Ce,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.Coding:return g.createElement(Se,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.ContactPoint:return g.createElement(Ne,{name:a,defaultValue:l,onChange:e.onChange});case i.Extension:return g.createElement(Pe,{name:a,defaultValue:l,onChange:e.onChange});case i.HumanName:return g.createElement(Le,{name:a,defaultValue:l,onChange:e.onChange});case i.Identifier:return g.createElement(Me,{name:a,defaultValue:l,onChange:e.onChange});case i.Period:return g.createElement($e,{name:a,defaultValue:l,onChange:e.onChange});case i.Quantity:return g.createElement(Fe,{name:a,defaultValue:l,onChange:e.onChange});case i.Range:return g.createElement(Ue,{name:a,defaultValue:l,onChange:e.onChange});case i.Ratio:return g.createElement(qe,{name:a,defaultValue:l,onChange:e.onChange});case i.Reference:return g.createElement(He,{name:a,defaultValue:l,targetTypes:Je(t),onChange:e.onChange});default:return g.createElement(Ze,{schema:e.schema,property:t,name:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome})}}function Je(e){var t,n,a;return null===(a=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===a?void 0:a.map((e=>e.split("/").pop()))}function Ye(e){const t=q(),n=Z(e.defaultValue),[l,r]=y(),[o,i]=y();if(k((()=>{n&&(i(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(r))}),[t,n]),!l||!o)return g.createElement("div",null,"Loading...");const c=l.types[o.resourceType];return g.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(o)}},g.createElement(ne,{title:"Resource Type"},g.createElement(N,{name:"resourceType",defaultValue:o.resourceType,disabled:!0})),g.createElement(ne,{title:"ID"},g.createElement(N,{name:"id",defaultValue:o.id,disabled:!0})),Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||te.indexOf(n)>=0)return null;const r=t[1],[c,u]=ye(o,r);return g.createElement(ne,{key:n,title:a(r),description:r.definition,htmlFor:n,outcome:e.outcome},g.createElement(We,{schema:l,property:r,name:n,defaultValue:c,defaultPropertyType:u,outcome:e.outcome,onChange:(e,a)=>{i(Xe(o,n,null!=a?a:n,t[1],e))}}))})),g.createElement($,{type:"submit",size:"large"},"OK"),e.onDelete&&g.createElement($,{type:"button",size:"large",onClick:()=>{e.onDelete(o)}},"Delete"))}function Xe(e,t,n,a,l){const r=a.type;if(r.length>1)for(const n of r){const a=t.replace("[x]",c(n.code));a in e&&delete e[a]}return e[n]=l,e}function Ze(e){var t,n;const[l,r]=y(null!==(t=e.defaultValue)&&void 0!==t?t:{});const i=o(null===(n=e.property.path)||void 0===n?void 0:n.split(".")),c=e.schema.types[i];return c?g.createElement(g.Fragment,null,Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||te.indexOf(n)>=0)return null;const o=t[1];if(!o.type)return null;const[i,c]=ye(l,o);return g.createElement(ne,{key:n,title:a(o),description:o.definition,htmlFor:n,outcome:e.outcome},g.createElement(We,{schema:e.schema,property:o,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(a,o)=>{!function(t){r(t),e.onChange&&e.onChange(t)}(Xe(l,n,null!=o?o:n,t[1],a))}}))}))):g.createElement("div",null,i," not implemented")}function et(e){var t;return g.createElement("div",{className:"medplum-resource-badge"},g.createElement(ee,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),g.createElement(ze,{value:e.value,link:e.link}))}function tt(e){var t;const n=Z(e.value);if(!n)return null;let a;if(n.presentedForm&&n.presentedForm.length>0){const e=n.presentedForm[0];(null===(t=e.contentType)||void 0===t?void 0:t.startsWith("text/plain"))&&e.data&&(a=window.atob(e.data))}return g.createElement("div",{className:"medplum-diagnostic-report"},g.createElement("h1",null,"Diagnostic Report"),g.createElement("div",{className:"medplum-diagnostic-report-header"},n.subject&&g.createElement("dl",null,g.createElement("dt",null,"Subject"),g.createElement("dd",null,g.createElement(et,{value:n.subject,link:!0}))),n.resultsInterpreter&&n.resultsInterpreter.map((e=>g.createElement("dl",{key:e.reference},g.createElement("dt",null,"Interpreter"),g.createElement("dd",null,g.createElement(et,{value:e,link:!0}))))),n.issued&&g.createElement("dl",null,g.createElement("dt",null,"Issued"),g.createElement("dd",null,g.createElement(ue,{value:n.issued}))),n.status&&g.createElement("dl",null,g.createElement("dt",null,"Status"),g.createElement("dd",null,c(n.status)))),a&&g.createElement("pre",null,a),n.result&&g.createElement(nt,{value:n.result}))}function nt(e){var t;return g.createElement("table",{className:"medplum-table"},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Test"),g.createElement("th",null,"Value"),g.createElement("th",null,"Reference Range"),g.createElement("th",null,"Interpretation"))),g.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>g.createElement(at,{key:"obs-"+t,value:e})))))}function at(e){const t=Z(e.value);return t?g.createElement("tr",null,g.createElement("td",null,g.createElement(Y,{to:t},g.createElement(ie,{value:t.code}))),g.createElement("td",null,g.createElement(lt,{value:t})),g.createElement("td",null,g.createElement(rt,{value:t.referenceRange})),g.createElement("td",null,t.interpretation&&t.interpretation.length>0&&g.createElement(ie,{value:t.interpretation[0]}))):null}function lt(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?g.createElement(pe,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?g.createElement(g.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?g.createElement(g.Fragment,null,n.component.map(((e,t)=>g.createElement(lt,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function rt(e){const t=e.value&&e.value.length>0&&e.value[0];return t?g.createElement(ve,{value:t}):null}function ot(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?it(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&ct(t,n);return t}function it(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function ct(e,t){e[t.name]=t.value}function ut(e){return g.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=ot(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function st(){return g.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},g.createElement("div",{className:"medplum-loading-container"},g.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},g.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function mt(e){return g.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function dt(e){const t=q(),[n,l]=y();if(k((()=>{t.requestSchema(e.original.resourceType).then(l)}),[t,e.original.resourceType]),!n)return null;const o=n.types[e.original.resourceType];return o?g.createElement("table",{className:"medplum-diff-table"},g.createElement("colgroup",null,g.createElement("col",{style:{width:"30%"}}),g.createElement("col",{style:{width:"35%"}}),g.createElement("col",{style:{width:"35%"}})),g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Property"),g.createElement("th",null,"Before"),g.createElement("th",null,"After"))),g.createElement("tbody",null,Object.entries(o.properties).map((t=>{const l=t[0];if("id"===l||"meta"===l)return null;const o=t[1],[i,c]=ye(e.original,o),[u,s]=ye(e.revised,o);return pt(i)&&pt(u)||r(i)===r(u)?null:g.createElement("tr",{key:l},g.createElement("td",null,a(o)),g.createElement("td",{className:"medplum-diff-removed"},g.createElement(ge,{schema:n,property:o,propertyType:c,value:i,ignoreMissingValues:!0})),g.createElement("td",{className:"medplum-diff-added"},g.createElement(ge,{schema:n,property:o,propertyType:s,value:u,ignoreMissingValues:!0})))})))):null}function pt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function vt(e){const t=q(),n=Z(e.value),[a,l]=y();return k((()=>{n&&t.requestSchema(n.resourceType).then(l)}),[t,n]),a&&n?g.createElement(re,{schema:a,typeName:n.resourceType,value:n,ignoreMissingValues:e.ignoreMissingValues}):null}function ht(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return g.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},g.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class ft extends g.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?g.createElement("h1",null,"Something went wrong."):this.props.children}}function Et(e){const t=b(null),n=x(),a=b();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=b();l.current=e,k((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),k((()=>{e.visible&&n!==a.current&&e.onClose()}),[n,e]);const r={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?r.left=e.anchor.right+"px":r.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?r.top=e.anchor.top+"px":r.bottom=document.body.clientHeight-e.anchor.top+"px"),g.createElement(g.Fragment,null,e.modal&&g.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),g.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function gt(e){return g.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function yt(e){var t,n,a;const[l,r]=y(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return g.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},g.createElement("div",{className:"medplum-timeline-item-header"},g.createElement("div",{className:"medplum-timeline-item-avatar"},g.createElement(ee,{value:o,link:!0,size:"medium"})),g.createElement("div",{className:"medplum-timeline-item-title"},g.createElement(ze,{value:o,link:!0}),g.createElement("div",{className:"medplum-timeline-item-subtitle"},g.createElement(Y,{to:e.resource},g.createElement(ue,{value:null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated})),g.createElement("span",null,"·"),g.createElement(Y,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&g.createElement("div",{className:"medplum-timeline-item-actions"},g.createElement("a",{href:"#","aria-label":`Actions for ${m(e.resource)}`,onClick:e=>{Q(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},g.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},g.createElement("g",{transform:"translate(-446 -350)"},g.createElement("path",{d:"M458 360a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-12 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"})))))),g.createElement(ft,null,e.padding&&g.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&g.createElement(g.Fragment,null,e.children)),e.socialEnabled&&g.createElement("div",{className:"medplum-timeline-item-footer"},g.createElement($,{borderless:!0},"Like"),g.createElement($,{borderless:!0},"Comment")),e.popupMenuItems&&g.createElement(Et,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function bt(e){e.sort(Ct)}function Ct(e,t){const n=kt(e),a=kt(t);return n>a?1:n<a?-1:Ot(e)-Ot(t)}function kt(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Ot(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}function Tt(e){const t=j(),n=q(),a=n.getProfile(),l=b(null),r=Z(e.value),[o,i]=y(),[c,u]=y([]),s=e.buildSearchRequests,m=b(c);m.current=c;const d=T((()=>{if(!r)return u([]),void i({});const e=s(r);n.post("fhir/R4",e).then(p)}),[n,r,s]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)t.push(n.resource)}bt(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];bt(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function f(e){h(e,"stat").then(d)}function E(e){h(e,"routine").then(d)}function C(e){t(`/${e.resourceType}/${e.id}`)}function O(e){t(`/${e.resourceType}/${e.id}/edit`)}function x(e){t(`/${e.resourceType}/${e.id}/delete`)}function w(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return k((()=>{d()}),[d]),r&&o?g.createElement(gt,null,e.createCommunication&&g.createElement("article",{className:"medplum-timeline-item"},g.createElement("div",{className:"medplum-timeline-item-header"},g.createElement(ut,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])}));const i=l.current;i&&(i.value="",i.focus())}},g.createElement(N,{name:"text",testid:"timeline-input",inputRef:l}),g.createElement($,{type:"submit"},"Comment"),g.createElement(W,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])}))}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return g.createElement(xt,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:w});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return g.createElement(Nt,{key:n,resource:e,onDetails:C});case"Communication":return g.createElement(wt,{key:n,resource:e,onPin:"stat"!==e.priority?f:void 0,onUnpin:"stat"===e.priority?E:void 0,onDetails:C,onEdit:O,onDelete:x});case"DiagnosticReport":return g.createElement(Vt,{key:n,resource:e,onDetails:C,onEdit:O,onDelete:x});case"Media":return g.createElement(St,{key:n,resource:e,onDetails:C,onEdit:O,onDelete:x});default:return g.createElement(yt,{key:n,resource:e,padding:!0},g.createElement(vt,{value:e,ignoreMissingValues:!0}))}}))):g.createElement(st,null)}function jt(e){return g.createElement(g.Fragment,null,e.onPin&&g.createElement(mt,{onClick:()=>e.onPin(e.resource),label:`Pin ${m(e.resource)}`},"Pin"),e.onUnpin&&g.createElement(mt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${m(e.resource)}`},"Unpin"),e.onDetails&&g.createElement(mt,{onClick:()=>e.onDetails(e.resource),label:`Details ${m(e.resource)}`},"Details"),e.onEdit&&g.createElement(mt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${m(e.resource)}`},"Edit"),e.onDelete&&g.createElement(mt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${m(e.resource)}`},"Delete"))}function xt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?g.createElement(yt,{resource:e.resource,padding:!0,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement(dt,{original:t,revised:e.resource})):g.createElement(yt,{resource:e.resource,padding:!0,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement("h3",null,"Created"),g.createElement(vt,{value:e.resource,ignoreMissingValues:!0}))}function wt(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return g.createElement(yt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function St(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,a=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return g.createElement(yt,{resource:e.resource,padding:!!a,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement(L,{value:e.resource.content}))}function Nt(e){return g.createElement(yt,{resource:e.resource,padding:!0,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement(ht,null,g.createElement("pre",null,e.resource.outcomeDesc)))}function Vt(e){return g.createElement(yt,{resource:e.resource,padding:!0,popupMenuItems:g.createElement(jt,Object.assign({},e))},g.createElement(tt,{value:e.resource}))}function Dt(e){return g.createElement(Tt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${m(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${m(e)}&_sort=-_lastUpdated`}}]})})}function At(e){return g.createElement("main",{className:"medplum-document"},g.createElement("article",{style:{maxWidth:e.width}},e.children))}function Rt(e){return g.createElement(Tt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${m(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${m(e)}`}},{request:{method:"GET",url:`Media?encounter=${m(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:u(e),subject:e.subject,sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:u(e),subject:e.subject,operator:u(t),issued:(new Date).toISOString(),content:n})})}function It(e){return g.createElement("div",{className:"medplum-footer"},e.children)}function Pt(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((a=a.apply(e,t||[])).next())}))}function Lt(e){const t=q();return g.createElement(J,{loadOptions:(e,n)=>Pt(this,void 0,void 0,(function*(){return function(e,t){const n=[];e.data.Patients1&&n.push(...e.data.Patients1);e.data.Patients2&&n.push(...e.data.Patients2);e.data.ServiceRequestList&&n.push(...e.data.ServiceRequestList);return function(e,t){return e.sort(((e,n)=>Mt(n,t)-Mt(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield t.graphql(function(e){const t=JSON.stringify(e);if(d(e))return`{\n Patients1: PatientList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ");return`{\n Patients1: PatientList(name: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n Patients2: PatientList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ")}(e),{signal:n}),e)})),getId:e=>e.id,getIcon:e=>g.createElement(ee,{value:e}),getDisplay:e=>g.createElement(ze,{value:e}),getHelpText:e=>{var t;return"Patient"===e.resourceType&&e.birthDate?"DoB: "+e.birthDate:null===(t=e.subject)||void 0===t?void 0:t.display},name:e.name,className:e.className,placeholder:e.placeholder,onChange:t=>e.onChange(t[0])})}function Mt(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,$t(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,$t(l(a),t));return n}function $t(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function Ft(e){var t,n,a,l,r,o;const i=j(),c=x(),u=U(),s=u.medplum,d=s.getLogins(),[p,v]=y(!1),[h,f]=y(!1);return g.createElement(g.Fragment,null,g.createElement("header",{role:"banner","data-testid":"header"},g.createElement("div",null,g.createElement(Y,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>f(!h)},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},g.createElement("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"}))),g.createElement(Y,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},"Medplum"),u.profile&&g.createElement(Lt,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&g.createElement("div",{className:"medplum-nav-menu-container"},g.createElement(Y,{testid:"header-profile-menu-button",onClick:()=>v(!0)},g.createElement(ee,{size:"small",color:"#f68d42",value:u.profile})),g.createElement(Et,{visible:p,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>v(!1)},g.createElement("div",{className:"medplum-nav-menu"},g.createElement("div",{style:{margin:"auto",padding:"8px"}},g.createElement(ee,{size:"large",value:u.profile})),g.createElement("div",{style:{margin:"auto",padding:"8px"}},g.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},g.createElement(se,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),g.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=s.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),g.createElement($,{testid:"header-profile-link",onClick:()=>{v(!1),e.onProfile&&e.onProfile()}},"Manage your account")),d.length>1&&g.createElement("div",null,g.createElement("hr",null),d.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==m(u.profile)&&g.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{s.setActiveLogin(e),v(!1),window.location.reload()}},g.createElement("div",{className:"medplum-nav-menu-profile-icon"},g.createElement(ee,null)),g.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,g.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),g.createElement("hr",null),g.createElement("div",{style:{margin:"auto",padding:"8px"}},g.createElement($,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),g.createElement("hr",null),g.createElement("div",{style:{margin:"auto",padding:"8px"}},g.createElement($,{testid:"header-signout-button",onClick:()=>{v(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),g.createElement("hr",null),g.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},g.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),g.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),g.createElement(Et,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>f(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return g.createElement(g.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},g.createElement("h5",null,t.title),g.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>g.createElement("li",{key:e.target},g.createElement(Y,{to:e.target},e.name))))))})),g.createElement("h5",null,"Settings"),g.createElement("ul",null,g.createElement("li",null,g.createElement(Y,{to:u.profile},"Profile")),g.createElement("li",null,g.createElement(Y,{to:"/changepassword"},"Change password")))))}function _t(e){return g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},g.createElement("title",null,"Medplum Logo"),g.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),g.createElement("path",{fill:e.fill||"#654b87",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"}),g.createElement("path",{fill:e.fill||"#463068",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),g.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),g.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}const Ut=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function qt(e){return g.createElement(Tt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:Ut.map((t=>({request:{method:"GET",url:t.replaceAll("$",m(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:u(e),sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:u(e),operator:u(t),issued:(new Date).toISOString(),content:n})})}var zt;function Qt(e,t){return Object.assign(Object.assign({},e),{item:Ht(e.item,t)})}function Ht(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:Ht(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case i.boolean:r={valueBoolean:"true"===l};break;case i.code:case i.Coding:r={valueCoding:{code:l}};break;case i.date:r={valueDate:l};break;case i.dateTime:case i.instant:r={valueDateTime:l};break;case i.decimal:r={valueDecimal:parseFloat(l)};break;case i.integer:case i.positiveInt:case i.unsignedInt:r={valueInteger:parseInt(l)};break;case i.SystemString:case i.string:case i.markdown:r={valueString:l};break;case i.time:r={valueTime:l};break;case i.uri:case i.url:r={valueUri:l};break;case i.canonical:case i.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function Bt(e){return"choice"===e.type||"open-choice"===e.type}function Wt(e){const t=q(),n=t.getProfile(),[a,l]=y(),r=Z(e.questionnaire),[o,i]=y();return k((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),k((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:m(e),item:Jt(e.item)}}(r):void 0)}),[r]),a&&r?g.createElement(ut,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:m(r),subject:e.subject,source:u(n),authored:(new Date).toISOString()}))}},r.title&&g.createElement("h1",null,r.title),r.item&&g.createElement(Kt,{schema:a,items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),g.createElement($,{type:"submit",size:"large"},"OK")):null}function Kt(e){const[t,n]=y(Jt(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return g.createElement(g.Fragment,null,e.items.map(((t,n)=>t.type===zt.group?g.createElement(Gt,{key:t.linkId,schema:e.schema,item:t,onChange:e=>a(n,e)}):g.createElement(ne,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},g.createElement(Gt,{schema:e.schema,item:t,onChange:e=>a(n,e)})))))}function Gt(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function o(n){e.onChange({linkId:t.linkId,answer:[n]})}switch(n){case zt.group:return g.createElement("div",null,g.createElement("h3",null,t.text),t.item&&g.createElement(Kt,{schema:e.schema,items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,item:n})}}));case zt.boolean:return g.createElement("input",{type:"checkbox",id:a,name:a,value:"true",defaultChecked:null==l?void 0:l.valueBoolean,onChange:e=>o({valueBoolean:e.currentTarget.checked})});case zt.decimal:return g.createElement(N,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>o({valueDecimal:parseFloat(e)})});case zt.integer:return g.createElement(N,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>o({valueInteger:parseInt(e)})});case zt.date:return g.createElement(N,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>o({valueDate:e})});case zt.dateTime:return g.createElement(Ve,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>o({valueDateTime:e})});case zt.time:return g.createElement(N,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>o({valueTime:e})});case zt.string:return g.createElement(N,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>o({valueString:e})});case zt.text:return g.createElement(Ie,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>o({valueString:e})});case zt.url:return g.createElement(N,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>o({valueUri:e})});case zt.choice:case zt.openChoice:return g.createElement("div",null,t.answerOption&&t.answerOption.map(((t,n)=>{const i=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],[s,m]=ye(t,i),[d,p]=ye(l,u),v="value"+c(m),h=`${a}-option-${n}`;return g.createElement("div",{key:h,className:"medplum-questionnaire-option-row"},g.createElement("div",{className:"medplum-questionnaire-option-checkbox"},g.createElement("input",{type:"radio",id:h,name:a,value:s,defaultChecked:m===p&&r(s)===r(d),onChange:()=>o({[v]:s})})),g.createElement("div",null,g.createElement("label",{htmlFor:h},g.createElement(ge,{schema:e.schema,property:i,propertyType:m,value:s}))))})));case zt.attachment:return g.createElement(G,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>o({valueAttachment:e})});case zt.reference:return g.createElement(He,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>o({valueReference:e})});case zt.quantity:return g.createElement(Fe,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>o({valueQuantity:e})})}return null}function Jt(e){var t;return null!==(t=null==e?void 0:e.map(Yt))&&void 0!==t?t:[]}function Yt(e){var t,n;return{linkId:e.linkId,item:Jt(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Xt))&&void 0!==n?n:[]}}function Xt(e){return Object.assign({},e)}function Zt(e){const t=q(),n=Z(e.questionnaire),[a,l]=y(),[r,o]=y(),[i,c]=y(),[u,s]=y();function m(){s(void 0)}function d(){c(void 0)}return k((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),k((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||rn(),item:on(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?g.createElement("div",{className:"medplum-questionnaire-builder"},g.createElement(ut,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},g.createElement(en,{schema:a,item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),g.createElement($,{type:"submit",size:"large"},"Save"))):null}function en(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===zt.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=b();function s(t){var n;const a=u.current;e.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(a=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],t]}))}function d(t,n){e.onChange(Object.assign(Object.assign({},u.current),{[t]:n}))}u.current=e.item;const p=i?"section editing":c?"section hovering":"section";return g.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){Q(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){Q(t),e.setHoverKey(e.item.id)}},i?g.createElement(g.Fragment,null,l&&g.createElement("div",null,g.createElement(N,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&g.createElement("div",null,g.createElement(A,{defaultValue:a.type,onChange:e=>d("type",e)},g.createElement("option",{value:"display"},"Display"),g.createElement("optgroup",{label:"Question"},g.createElement("option",{value:"boolean"},"Boolean"),g.createElement("option",{value:"decimal"},"Decimal"),g.createElement("option",{value:"integer"},"Integer"),g.createElement("option",{value:"date"},"Date"),g.createElement("option",{value:"dateTime"},"Date/Time"),g.createElement("option",{value:"time"},"Time"),g.createElement("option",{value:"string"},"String"),g.createElement("option",{value:"text"},"Text"),g.createElement("option",{value:"url"},"URL"),g.createElement("option",{value:"choice"},"Choice"),g.createElement("option",{value:"open-choice"},"Open Choice"),g.createElement("option",{value:"attachment"},"Attachment"),g.createElement("option",{value:"reference"},"Reference"),g.createElement("option",{value:"quantity"},"Quantity")))),!l&&g.createElement(Ie,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),Bt(a)&&g.createElement(tn,{schema:e.schema,options:a.answerOption,onChange:e=>d("answerOption",e)})):g.createElement(g.Fragment,null,n.title&&g.createElement("h1",null,n.title),a.text&&g.createElement("p",null,a.text),!r&&g.createElement(Gt,{schema:e.schema,item:a,onChange:()=>{}})),a.item&&a.item.map((t=>g.createElement("div",{key:t.id},g.createElement(en,{schema:e.schema,item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(a=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((e=>e!==t))}))}(t)})))),!r&&g.createElement("div",{className:"top-actions"},i?g.createElement(N,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):g.createElement("div",null,o)),g.createElement("div",{className:"bottom-actions"},r&&g.createElement(g.Fragment,null,g.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rn(),linkId:ln("q"),type:"string",text:"Question"})}},"Add item"),g.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:rn(),linkId:ln("g"),type:"group",text:"Group"})}},"Add group")),!l&&g.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function tn(e){var t;const n=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return g.createElement("div",null,a.map((t=>{const[l,r]=ye(t,n);return g.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},g.createElement("div",null,g.createElement(We,{key:t.id,schema:e.schema,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),g.createElement("div",null,g.createElement("a",{href:"#",onClick:n=>{Q(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),g.createElement("a",{href:"#",onClick:t=>{Q(t),e.onChange([...a,{id:rn()}])}},"Add choice"))}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(zt||(zt={}));let nn=1,an=1;function ln(e){return e+nn++}function rn(){return"id-"+an++}function on(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rn(),item:on(e.item),answerOption:cn(e.answerOption)})))}function cn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||rn()})))}function un(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const o=l.i,i=l.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,r)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",a.push({original:c,revised:u,type:s}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,o=r/2|0,i=new Array(r);i[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<l;r++){for(let l=-r;l<=r;l+=2){const c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:sn(d),snake:!1};for(;p<n&&v<a&&e[p]===t[v];)p++,v++;if(p>h.i&&(h={i:p,j:v,prev:h,snake:!0}),i[c]=h,p>=n&&v>=a)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function sn(e){return e&&!e.snake&&e.prev?e.prev:e}function mn(e){const t=e.entry.map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:r(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=un(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[r],span:1})}}}(n,t),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(n),n}function dn(e){var t,n;const a=q(),[l,r]=y(e.history);if(k((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then((e=>r(e)))}),[a,e.history,e.resourceType,e.id]),!l)return g.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=mn(l);return g.createElement("div",{className:"medplum-blame-container"},g.createElement("table",{className:"medplum-blame"},g.createElement("tbody",null,i.map(((e,t)=>g.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&g.createElement("td",{className:"details",rowSpan:e.span},g.createElement(D,{justifyContent:"space-between"},g.createElement(et,{value:e.meta.author,size:"xsmall",link:!0}),g.createElement(Y,{to:pn(o,e.meta.versionId)},vn(e.meta.lastUpdated)))),g.createElement("td",{className:"line-number"},t+1),g.createElement("td",{className:"line"},g.createElement("pre",{className:"line-pre"},e.value))))))))}function pn(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function vn(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return hn(n,"year");const a=Math.floor(t/2592e3);if(a>0)return hn(a,"month");const l=Math.floor(t/86400);if(l>0)return hn(l,"day");const r=Math.floor(t/3600);if(r>0)return hn(r,"hour");const o=Math.floor(t/60);return o>0?hn(o,"minute"):hn(t,"second")}function hn(e,t){return`${e} ${1===e?t:t+"s"} ago`}function fn(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const a=un(r(t,!0).match(/[^\r\n]+/g),r(n,!0).match(/[^\r\n]+/g));return g.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>g.createElement(En,{key:"delta"+t,delta:e}))))}function En(e){return g.createElement(g.Fragment,null,"...",g.createElement("br",null),e.delta.original.lines.length>0&&g.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&g.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",g.createElement("br",null))}function gn(e){var t;const n=q(),[a,l]=y(e.history);return k((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then((e=>l(e)))}),[n,e.history,e.resourceType,e.id]),a?g.createElement("table",{className:"medplum-table"},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",null,"Author"),g.createElement("th",null,"Date"),g.createElement("th",null,"Version"))),g.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map((e=>{var t,n;return g.createElement(yn,{key:null===(n=null===(t=e.resource)||void 0===t?void 0:t.meta)||void 0===n?void 0:n.versionId,version:e.resource})})))):g.createElement("div",null,"Loading...")}function yn(e){var t,n,a;return g.createElement("tr",null,g.createElement("td",null,g.createElement(et,{value:null===(t=e.version.meta)||void 0===t?void 0:t.author,link:!0})),g.createElement("td",null,g.createElement(ue,{value:null===(n=e.version.meta)||void 0===n?void 0:n.lastUpdated})),g.createElement("td",null,g.createElement(Y,{to:bn(e.version)},null===(a=e.version.meta)||void 0===a?void 0:a.versionId)))}function bn(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function Cn(e,t,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParam:{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}};if("meta.versionId"===n)return{name:"meta.versionId",searchParam:{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}};const l=e.types[t];let r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n];if(r&&!o&&l.searchParams){const e=`${t}.${n}`;o=Object.values(l.searchParams).find((t=>{var n;return null===(n=t.expression)||void 0===n?void 0:n.includes(e)}))}if(!r&&(null==o?void 0:o.expression)){r=p(e,t,o).elementDefinition}return{name:n,elementDefinition:r,searchParam:o}}function kn(e){const[t,n]=y(100),[a,l]=y(100);if(!e.visible)return null;return g.createElement(g.Fragment,null,g.createElement("div",{className:"modal-dialog-bg"}),g.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},g.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){Q(e);const r=e.clientX-t,o=e.clientY-a;function i(e){Q(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){Q(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},g.createElement("span",{className:"modal-dialog-title-text"},e.title),g.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},g.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),g.createElement("div",{className:"modal-dialog-content"},e.children),g.createElement("div",{className:"modal-dialog-buttons"},g.createElement($,{testid:"dialog-ok",onClick:e.onOk},"OK"),g.createElement($,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const On={string:[s.EQUALS,s.NOT_EQUALS,s.CONTAINS,s.EXACT],fulltext:[s.EQUALS,s.NOT_EQUALS,s.CONTAINS,s.EXACT],token:[s.EQUALS,s.NOT_EQUALS],reference:[s.EQUALS,s.NOT_EQUALS],numeric:[s.EQUALS,s.NOT_EQUALS,s.GREATER_THAN,s.LESS_THAN,s.GREATER_THAN_OR_EQUALS,s.LESS_THAN_OR_EQUALS],date:[s.EQUALS,s.NOT_EQUALS,s.GREATER_THAN,s.LESS_THAN,s.GREATER_THAN_OR_EQUALS,s.LESS_THAN_OR_EQUALS,s.STARTS_AFTER,s.ENDS_BEFORE,s.APPROXIMATELY],datetime:[s.EQUALS,s.NOT_EQUALS,s.GREATER_THAN,s.LESS_THAN,s.GREATER_THAN_OR_EQUALS,s.LESS_THAN_OR_EQUALS,s.STARTS_AFTER,s.ENDS_BEFORE,s.APPROXIMATELY]},Tn={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",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type"};function jn(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function xn(e){return jn(e,[])}function wn(e,t){return jn(e,(e.filters||[]).filter((e=>e.code!==t)))}function Sn(e,t,n,a,l){l&&(e=wn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),jn(e,r)}function Nn(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})}function Vn(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function Dn(e,t){return In(e,t,-1)}function An(e,t){return In(e,t,0)}function Rn(e,t){return In(e,t,1)}function In(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),qn(e,t,a,l)}function Pn(e,t){return $n(e,t,-1)}function Ln(e,t){return $n(e,t,0)}function Mn(e,t){return $n(e,t,1)}function $n(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),qn(e,t,a,l)}function Fn(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return qn(e,t,n,new Date)}function _n(e,t,n){return qn(e,t,n,n)}function Un(e,t,n,a){return zn(e=wn(e,t),t,n,a)}function qn(e,t,n,a){return e=zn(e=wn(e,t),t,s.GREATER_THAN_OR_EQUALS,n),e=zn(e,t,s.LESS_THAN_OR_EQUALS,a)}function zn(e,t,n,a){return Sn(e,t,n,a.toISOString())}function Qn(e,t,n,a){return Sn(e=wn(e,t),t,n,a)}function Hn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function Bn(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Wn(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return Bn(e,Math.max(r,0))}function Kn(e,t,n){return t===Jn(e)&&void 0!==n&&n===Yn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Gn(e,t){let n=!1;return Jn(e)===t&&(n=!Yn(e)),Kn(e,t,n)}function Jn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Yn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Xn(e){return On[e.type]}function Zn(e){var t;return null!==(t=Tn[e])&&void 0!==t?t:""}function ea(e){let t=e;return t.includes(".")&&(t=t.split(".").pop()),"id"===t?"ID":"versionId"===t?"Version ID":(t=t.replace("[x]",""),t=t.replace(/([A-Z])/g," $1"),t=t.replace(/[-_]/g," "),t=t.replace(/\s+/g," "),t=t.trim(),t.split(/\s/).map(c).join(" "))}function ta(e,t,n){var a,l;const r=n.name;return"id"===r?t.id:"meta.versionId"===r?null===(a=t.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===r?g.createElement(ue,{value:null===(l=t.meta)||void 0===l?void 0:l.lastUpdated}):n.elementDefinition&&`${t.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t,n){const[a,l]=ye(t,n);if(!a)return null;return g.createElement(ge,{schema:e,property:n,propertyType:l,value:a,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t,n.elementDefinition):n.searchParam&&n.name===n.searchParam.code?function(e,t,n,a){var l,r;const o=v(n.expression,t);if(!o||0===o.length)return null;if(a)return g.createElement(ge,{schema:e,property:a,propertyType:null===(r=null===(l=a.type)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code,value:o,maxWidth:200,ignoreMissingValues:!0});return g.createElement(g.Fragment,null,o.map(((e,t)=>g.createElement("span",{key:`${t}-${o.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t,n.searchParam,n.elementDefinition):null}function na(e){var t;const[n,a]=y({search:JSON.parse(r(e.search))}),l=b(null),o=b(null);function i(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l];e.splice(e.indexOf(r),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(k((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=function(e){let t=Object.keys(e.properties);e.searchParams&&(t=[...new Set([...t,...Object.keys(e.searchParams)])]);const n=[],a=[];for(const e of t){const t=ea(e);a.includes(t)||(n.push(e),a.push(t))}return n}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return g.createElement(kn,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},g.createElement("div",null,g.createElement("table",{style:{margin:"auto"}},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",{colSpan:2,align:"center"},"Available"),g.createElement("th",{colSpan:2,align:"center"},"Selected"))),g.createElement("tbody",null,g.createElement("tr",null,g.createElement("td",{colSpan:2,align:"center"},g.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&i()}(e),onDoubleClick:()=>{i()},"data-testid":"available"},p.map((e=>g.createElement("option",{key:e,value:e},ea(e)))))),g.createElement("td",{colSpan:2,align:"center"},g.createElement("select",{ref:o,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>g.createElement("option",{key:e,value:e},ea(e)))))))),g.createElement("tfoot",null,g.createElement("tr",null,g.createElement("td",{align:"center"},g.createElement($,{size:"small",onClick:i},"Add")),g.createElement("td",{align:"center"},g.createElement($,{size:"small",onClick:c},"Remove")),g.createElement("td",{align:"center"},g.createElement($,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),g.createElement("td",{align:"center"},g.createElement($,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function aa(e){var t,n;const a=null===(n=null===(t=q().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?g.createElement(ze,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?g.createElement(ue,{value:l.value}):g.createElement(g.Fragment,null,l.value)}function la(e){var t;const n="filter-value";switch(p(e.schema,e.resourceType,e.searchParam).type){case h.REFERENCE:return g.createElement(He,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case h.BOOLEAN:return g.createElement("input",{type:"checkbox",name:n,"data-testid":n,defaultChecked:"true"===e.defaultValue,value:"true",onChange:t=>e.onChange(t.target.checked?"true":"false")});case h.DATE:return g.createElement(N,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case h.DATETIME:return g.createElement(Ve,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case h.NUMBER:return g.createElement(N,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case h.QUANTITY:return g.createElement(Fe,{name:n,defaultValue:{},onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return g.createElement(N,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function ra(e){const[t,n]=y(JSON.parse(r(e.search))),[a,l]=y(-1),o=b(t);if(o.current=t,k((()=>{n(JSON.parse(r(e.search)))}),[e.search]),!e.visible)return null;const i=e.schema,c=e.search.resourceType,u=i.types[c].searchParams,s=t.filters||[];return g.createElement(kn,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(o.current),onCancel:e.onCancel},g.createElement("div",{className:"medplum-filter-editor"},g.createElement("table",{className:"medplum-filter-editor-table"},g.createElement("thead",null,g.createElement("tr",null,g.createElement("th",{style:{width:"30%"}},"Field"),g.createElement("th",{style:{width:"30%"}},"Operation"),g.createElement("th",{style:{width:"30%"}},"Value"),g.createElement("th",{style:{width:"10%"}},"Actions"))),g.createElement("tbody",null,s.map(((e,t)=>t===a?g.createElement(ia,{key:`filter-${t}-${s.length}-input`,schema:i,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(jn(o.current,a)),l(-1)},onCancel:()=>l(-1)}):g.createElement(oa,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(Vn(o.current,t))}))),g.createElement(ia,{schema:i,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(Sn(o.current,e.code,e.operator,e.value))}})))))}function oa(e){const{filter:t}=e;return g.createElement("tr",null,g.createElement("td",null,ea(t.code)),g.createElement("td",null,Zn(t.operator)),g.createElement("td",null,g.createElement(aa,{resourceType:e.resourceType,filter:t})),g.createElement("td",null,g.createElement($,{size:"small",onClick:e.onEdit},"Edit"),g.createElement($,{size:"small",onClick:e.onDelete},"Delete")))}function ia(e){var t;const[n,a]=y(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=b(n);l.current=n;const r=e.searchParams[n.code],o=r&&Xn(r);return g.createElement("tr",null,g.createElement("td",null,g.createElement(A,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},g.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>g.createElement("option",{key:e,value:e},ea(e)))))),g.createElement("td",null,o&&g.createElement(A,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},g.createElement("option",{value:""}),o.map((e=>g.createElement("option",{key:e,value:e},Zn(e)))))),g.createElement("td",null,r&&n.operator&&g.createElement(la,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),g.createElement("td",null,n.code&&n.operator&&n.value&&g.createElement($,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&g.createElement($,{size:"small",onClick:e.onCancel},"Cancel")))}function ca(e){var t;const[n,a]=y(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return g.createElement(kn,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},g.createElement("div",{style:{width:500}},g.createElement(ut,{onSubmit:l},g.createElement(la,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function ua(){return g.createElement("div",{className:"medplum-menu-separator"})}function sa(e){const[t,n]=y(!1),[a,l]=y(!1),[r,o]=y(void 0),i=b(null),c=b(!1);c.current=t;const u=b(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,k((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),g.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,g.createElement("span",{className:"medplum-submenu-arrow"},"►"),g.createElement(Et,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function ma(e){if(!e.searchParam)return null;const t=e.searchParam.code,n=e.searchParam.type;function a(n){r(Kn(e.search,t,n))}function l(n){e.onPrompt({code:t,operator:n,value:""})}function r(t){e.onChange&&e.onChange(t)}return g.createElement(Et,{visible:e.visible,anchor:{left:e.x,right:e.x,top:e.y,bottom:e.y},autoClose:!0,onClose:e.onClose},g.createElement(mt,{onClick:()=>a(!1)},function(){switch(n){case"date":return"Sort Oldest to Newest";case"number":case"quantity":return"Sort Smallest to Largest";default:return"Sort A to Z"}}()),g.createElement(mt,{onClick:()=>a(!0)},function(){switch(n){case"date":return"Sort Newest to Oldest";case"number":case"quantity":return"Sort Largest to Smallest";default:return"Sort Z to A"}}()),g.createElement(ua,null),g.createElement(mt,{onClick:()=>{r(wn(e.search,t))}},"Clear filters"),"date"===n?g.createElement(sa,{title:"Date filters"},g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Equals..."),g.createElement(mt,{onClick:()=>l(s.NOT_EQUALS)},"Does not equal..."),g.createElement(ua,null),g.createElement(mt,{onClick:()=>l(s.ENDS_BEFORE)},"Before..."),g.createElement(mt,{onClick:()=>l(s.STARTS_AFTER)},"After..."),g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Between..."),g.createElement(ua,null),g.createElement(mt,{onClick:()=>r(Rn(e.search,t))},"Tomorrow"),g.createElement(mt,{onClick:()=>r(An(e.search,t))},"Today"),g.createElement(mt,{onClick:()=>r(Dn(e.search,t))},"Yesterday"),g.createElement(ua,null),g.createElement(mt,{onClick:()=>r(Mn(e.search,t))},"Next Month"),g.createElement(mt,{onClick:()=>r(Ln(e.search,t))},"This Month"),g.createElement(mt,{onClick:()=>r(Pn(e.search,t))},"Last Month"),g.createElement(ua,null),g.createElement(mt,{onClick:()=>r(Fn(e.search,t))},"Year to date"),g.createElement(ua,null),g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Is set"),g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Is not set")):g.createElement(sa,{title:"Text filters"},g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Equals..."),g.createElement(mt,{onClick:()=>l(s.NOT_EQUALS)},"Does not equal..."),g.createElement(ua,null),g.createElement(mt,{onClick:()=>l(s.CONTAINS)},"Contains..."),g.createElement(mt,{onClick:()=>l(s.EQUALS)},"Does not contain...")),g.createElement(ua,null),g.createElement(mt,{onClick:()=>{var t;return l("reference"===(null===(t=e.searchParam)||void 0===t?void 0:t.type)?s.EQUALS:s.CONTAINS)}},"Search"))}function da(e){return g.createElement("div",{className:"medplum-title-bar"},e.children)}class pa extends Event{constructor(e){super("change"),this.definition=e}}class va extends Event{constructor(e){super("load"),this.response=e}}class ha extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function fa(e){var t,n,a,l;const r=q(),[o,i]=y(),[c,u]=y(),{search:s,onLoad:m}=e,[d,p]=y({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParam:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=b(d);function h(t){e.onChange&&e.onChange(new pa(t))}function C(t,n){H(t.target)||(Q(t),1!==t.button&&e.onClick&&e.onClick(new ha(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new ha(n,t)))}v.current=d,k((()=>{u(void 0),r.search(Object.assign(Object.assign({},s),{total:"accurate"})).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new va(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),k((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))}))}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return g.createElement(st,null);const O=e.checkboxesEnabled,T=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(Cn(e,n,l));return a}(o,s),j=s.resourceType,x=d.searchResponse,w=null==x?void 0:x.entry,S=null==w?void 0:w.map((e=>e.resource)),N=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(j)}));return g.createElement("div",{className:"medplum-search-control",onContextMenu:e=>Q(e),"data-testid":"search-control"},g.createElement(da,null,g.createElement("div",null,g.createElement("h1",null,g.createElement("a",{href:`https://www.hl7.org/fhir/${j.toLowerCase()}.html`,target:"_blank",rel:"noopener"},j)),N&&g.createElement(A,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(f(e))}},g.createElement("option",null),N.map(((e,t)=>g.createElement("option",{key:`${t}-${N.length}`,value:e.criteria},e.name)))),g.createElement($,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),g.createElement($,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&g.createElement($,{size:"small",onClick:e.onNew},"New..."),e.onExport&&g.createElement($,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&g.createElement($,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&g.createElement($,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),x&&g.createElement("div",null,g.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(s,x.total),"-",function(e,t){var n,a;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(a=e.count)&&void 0!==a?a:E))}(s,x.total)," of"," ",null===(l=x.total)||void 0===l?void 0:l.toLocaleString()),g.createElement($,{testid:"prev-page-button",size:"small",onClick:()=>h(Wn(s,-1))},"<<"),g.createElement($,{testid:"next-page-button",size:"small",onClick:()=>h(Wn(s,1))},">>"))),g.createElement("table",null,g.createElement("thead",null,g.createElement("tr",null,O&&g.createElement("th",{className:"medplum-search-icon-cell"},g.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=v.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,a={},l=null===(t=v.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(a[e.resource.id]=!0)})),p(Object.assign(Object.assign({},v.current),{selected:a}))}(e)})),T.map((e=>g.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParam:t}))}(t,e.searchParam)},ea(e.name),e.searchParam&&g.createElement(ya,null))))),g.createElement("tr",null,O&&g.createElement("th",{className:"filters medplum-search-icon-cell"}),T.map((t=>g.createElement("th",{key:t.name,className:"filters"},t.searchParam&&g.createElement(ga,{resourceType:j,searchParam:t.searchParam,filters:e.search.filters})))))),g.createElement("tbody",null,null==S?void 0:S.map((e=>e&&g.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>C(t,e),onAuxClick:t=>C(t,e)},O&&g.createElement("td",{className:"medplum-search-icon-cell"},g.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},v.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},v.current),{selected:a}))}(t,e.id)})),T.map((t=>g.createElement("td",{key:t.name},ta(o,e,t))))))))),0===(null==S?void 0:S.length)&&g.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&g.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},g.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),g.createElement(ma,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParam:d.popupSearchParam,onPrompt:e=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogFilter:e}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParam:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParam:void 0}))}}),g.createElement(na,{schema:o,search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),g.createElement(ra,{schema:o,search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),g.createElement(ca,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:j,searchParam:d.popupSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(Sn(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const Ea=g.memo(fa);function ga(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>t.code===e.searchParam.code));return 0===n.length?g.createElement("span",null,"no filters"):g.createElement(g.Fragment,null,n.map(((t,a)=>g.createElement("div",{key:`filter-${a}-${n.length}`},Zn(t.operator)," ",g.createElement(aa,{resourceType:e.resourceType,filter:t})))))}function ya(){return g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"rgba(0, 0, 0, 0.3)",strokeWidth:2},g.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function ba(e){return g.createElement(Tt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${m(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${m(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${m(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${m(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[u(e)],subject:e.subject,sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[u(e)],subject:e.subject,operator:u(t),issued:(new Date).toISOString(),content:n})})}function Ca(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function ka(e){const t=q(),{handleAuthResponse:n}=e,a=function(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;if((null!==(n=null===(t="http://localhost:3000,http://localhost:6006,https://app.medplum.com,https://docs.medplum.com")||void 0===t?void 0:t.split(","))&&void 0!==n?n:[]).includes(a))return"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com";return}(e.googleClientId),l=b(null),[r,o]=y("undefined"!=typeof google),[i,c]=y(!1),[u,s]=y(!1);return k((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:a,callback:e=>t.startGoogleLogin(e).then(n)}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):Ca("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,a,i,r,l,u,n]),a?g.createElement("div",{ref:l}):null}function Oa(e){const t=q(),[n,a]=y(void 0),[l,r]=y(void 0);function o(n){n.login&&a(n.login),n.memberships&&r(n.memberships),n.code&&t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log)}return g.createElement(At,{width:450},n?l?g.createElement(ja,{login:n,memberships:l,handleAuthResponse:o}):g.createElement("div",null,"Success"):g.createElement(Ta,{googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function Ta(e){const t=q(),[n,a]=y(),l=S(n,void 0);return g.createElement(ut,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(a)}},g.createElement("div",{className:"medplum-center"},e.children),l&&g.createElement("div",{className:"medplum-input-error"},l.map((e=>{var t,n;return g.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),g.createElement(ne,{title:"Email",htmlFor:"email",outcome:n},g.createElement(N,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:n})),g.createElement(ne,{title:"Password",htmlFor:"password",outcome:n},g.createElement(N,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:n})),g.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&g.createElement("div",null,e.onForgotPassword&&g.createElement(Y,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&g.createElement(Y,{testid:"register",onClick:e.onRegister},"Register")),g.createElement("div",null,g.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),g.createElement("label",{htmlFor:"remember"},"Remember me")),g.createElement("div",null,g.createElement($,{type:"submit",testid:"submit"},"Sign in"))),g.createElement("div",{className:"medplum-signin-google-container"},g.createElement(ka,{googleClientId:e.googleClientId,handleAuthResponse:e.handleAuthResponse})))}function ja(e){const t=q();return g.createElement("div",null,g.createElement("div",{className:"medplum-center"},g.createElement(_t,{size:32}),g.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return g.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse)}},g.createElement("div",{className:"medplum-nav-menu-profile-icon"},g.createElement(ee,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),g.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,g.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function xa(e){const t=v(e.path,e.resource);if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return g.createElement(ge,{value:t[0]||"",propertyType:e.propertyType})}function wa(e){var t,n,a,l,r;const o=q(),[i,c]=y(),[u,s]=y(),{query:m,fields:d}=e,[p,v]=y(),[h,f]=y({}),E=b();E.current=p;const C=b({});function O(t,n){H(t.target)||(Q(t),1!==t.button&&e.onClick&&e.onClick(new ha(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new ha(n,t)))}C.current=h,k((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),k((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))}))}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return g.createElement(st,null);const T=e.checkboxesEnabled;return g.createElement("div",{className:"medplum-search-control",onContextMenu:e=>Q(e),"data-testid":"search-control"},g.createElement("table",null,g.createElement("thead",null,g.createElement("tr",null,T&&g.createElement("th",{className:"medplum-search-icon-cell"},g.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=E.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!C.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=E.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),f(l)}(e)})),d.map((e=>g.createElement("th",{key:e.name},e.name))))),g.createElement("tbody",null,null===(a=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===a?void 0:a.map((e=>e&&g.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>O(t,e),onAuxClick:t=>O(t,e)},T&&g.createElement("td",{className:"medplum-search-icon-cell"},g.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},C.current);n?a[t]=!0:delete a[t],f(a)}(t,e.id)})),d.map((t=>g.createElement("td",{key:t.name},g.createElement(xa,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&g.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&g.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},g.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&g.createElement($,{size:"small",onClick:()=>e.onBulk(Object.keys(C.current))},"Bulk..."))}const Sa=g.memo(wa);function Na(e){let t="medplum-tab";function n(t){Q(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),g.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Va(e){return g.createElement(ht,{className:"medplum-surface",height:50},g.createElement("div",{role:"tablist",className:"medplum-tablist"},g.createElement("div",{className:"medplum-tablist-foreground"},g.Children.map(e.children,((t,n)=>g.isValidElement(t)&&t.type===Na?g.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Da(e){return g.createElement("div",{role:"tabpanel"},e.children)}function Aa(e){return g.createElement(g.Fragment,null,g.Children.map(e.children,(t=>g.isValidElement(t)&&t.type===Da&&t.props.name===e.value?t:null)))}export{w as AddressDisplay,P as AddressInput,M as AttachmentArrayDisplay,K as AttachmentArrayInput,G as AttachmentInput,J as Autocomplete,ee as Avatar,Ze as BackboneElementInput,$ as Button,we as CodeInput,Ce as CodeableConceptInput,ce as ContactPointDisplay,Ne as ContactPointInput,ue as DateTimeDisplay,Ve as DateTimeInput,Dt as DefaultResourceTimeline,tt as DiagnosticReportDisplay,At as Document,Ke as ElementDefinitionInputSelector,Ge as ElementDefinitionTypeInput,Rt as EncounterTimeline,ft as ErrorBoundary,wa as FhirPathTable,It as FooterLinks,ut as Form,ne as FormSection,Ft as Header,se as HumanNameDisplay,Le as HumanNameInput,Me as IdentifierInput,N as Input,st as Loading,_t as Logo,Y as MedplumLink,_ as MedplumProvider,Sa as MemoizedFhirPathTable,Ea as MemoizedSearchControl,mt as MenuItem,nt as ObservationTable,qt as PatientTimeline,Et as Popup,Zt as QuestionnaireBuilder,Wt as QuestionnaireForm,Gt as QuestionnaireFormItem,zt as QuestionnaireItemType,He as ReferenceInput,Ee as ResourceArrayDisplay,Be as ResourceArrayInput,et as ResourceBadge,dn as ResourceBlame,fn as ResourceDiff,Ye as ResourceForm,gn as ResourceHistoryTable,Qe as ResourceInput,ze as ResourceName,ge as ResourcePropertyDisplay,We as ResourcePropertyInput,vt as ResourceTable,Tt as ResourceTimeline,ht as Scrollable,pa as SearchChangeEvent,ha as SearchClickEvent,fa as SearchControl,na as SearchFieldEditor,ra as SearchFilterEditor,va as SearchLoadEvent,A as Select,ba as ServiceRequestTimeline,Oa as SignInForm,Na as Tab,Va as TabList,Da as TabPanel,Aa as TabSwitch,Ie as TextArea,gt as Timeline,yt as TimelineItem,da as TitleBar,_n as addDateEqualsFilter,Un as addDateFilter,qn as addDateFilterBetween,Nn as addField,Sn as addFilter,Pn as addLastMonthFilter,Mn as addNextMonthFilter,Qt as addQuestionnaireInitialValues,Ln as addThisMonthFilter,An as addTodayFilter,Rn as addTomorrowFilter,Qn as addUserFilter,Fn as addYearToDateFilter,Dn as addYesterdayFilter,ea as buildFieldNameString,xn as clearFilters,wn as clearFiltersOnField,De as convertIsoToLocal,Ae as convertLocalToIso,Ca as createScriptTag,Vn as deleteFilter,Zn as getOpString,Xn as getSearchOperators,Jn as getSortField,vn as getTimeString,ye as getValueAndType,Hn as hasFilterOnField,Bt as isChoiceQuestion,Yn as isSortDescending,Wn as movePage,ot as parseForm,ta as renderValue,jn as setFilters,Bn as setOffset,Xe as setPropertyValue,Kn as setSort,bt as sortByDateAndPriority,Gn as toggleSort,q as useMedplum,U as useMedplumContext,z as useMedplumProfile,Z as useResource};
|
|
1
|
+
import{formatAddress as e,getDisplayString as t,getImageSrc as n,getPropertyDisplayName as a,formatHumanName as l,stringify as r,buildTypeName as o,PropertyType as i,capitalize as c,createReference as u,getReferenceString as s,isUUID as m,getSearchParameterDetails as d,Operator as p,evalFhirPath as v,SearchParameterType as h,formatSearchQuery as f,parseSearchDefinition as E,DEFAULT_SEARCH_COUNT as g}from"@medplum/core";import y,{useState as b,useRef as C,createContext as k,useEffect as O,useContext as T,useCallback as j}from"react";import{useNavigate as x,useLocation as w}from"react-router-dom";function S(t){const n=t.value;return n?y.createElement(y.Fragment,null,e(n)):null}function N(e,t){var n;return null===(n=null==e?void 0:e.issue)||void 0===n?void 0:n.filter((e=>{var n;return(null===(n=e.expression)||void 0===n?void 0:n[0])===t}))}function V(e){const t=N(e.outcome,e.name),n=t&&t.length>0;return y.createElement("input",{id:e.name,name:e.name,type:D(e.type),size:e.size,step:e.step,className:"medplum-input",defaultValue:e.defaultValue||"",required:e.required,autoCapitalize:e.autoCapitalize,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,disabled:e.disabled,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function D(e){return e||"text"}function A(e){return y.createElement("div",{className:"medplum-input-row",style:{justifyContent:e.justifyContent}},e.children)}function R(e){const t=N(e.outcome,e.name),n=t&&t.length>0;return y.createElement("select",{id:e.name,name:e.name,className:"medplum-select",defaultValue:e.defaultValue||"",required:e.required,autoFocus:e.autoFocus,ref:e.inputRef,style:e.style,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"","data-testid":e.testid,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}},e.children)}function I(e,t){return e&&e.line&&e.line.length>t?e.line[t]:""}function P(e,t,n){const a=e.line||[];for(;a.length<=t;)a.push("");return a[t]=n,Object.assign(Object.assign({},e),{line:a})}function L(e){const[t,n]=b(e.defaultValue||{}),a=C();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,y.createElement(A,null,y.createElement(R,{testid:"address-use",defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e}))}},y.createElement("option",null),y.createElement("option",null,"home"),y.createElement("option",null,"mobile"),y.createElement("option",null,"old"),y.createElement("option",null,"temp"),y.createElement("option",null,"work")),y.createElement(R,{testid:"address-type",defaultValue:null==t?void 0:t.type,onChange:function(e){l(Object.assign(Object.assign({},a.current),{type:e}))}},y.createElement("option",null),y.createElement("option",null,"postal"),y.createElement("option",null,"physical"),y.createElement("option",null,"both")),y.createElement(V,{placeholder:"Line 1",defaultValue:I(t,0),onChange:function(e){l(P(a.current||{},0,e))}}),y.createElement(V,{placeholder:"Line 2",defaultValue:I(t,1),onChange:function(e){l(P(a.current||{},1,e))}}),y.createElement(V,{placeholder:"City",defaultValue:t.city,onChange:function(e){l(Object.assign(Object.assign({},a.current),{city:e}))}}),y.createElement(V,{placeholder:"State",defaultValue:t.state,onChange:function(e){l(Object.assign(Object.assign({},a.current),{state:e}))}}),y.createElement(V,{placeholder:"Postal Code",defaultValue:t.postalCode,onChange:function(e){l(Object.assign(Object.assign({},a.current),{postalCode:e}))}}))}function M(e){const t=e.value,{contentType:n,url:a,title:l}=null!=t?t:{};return a?y.createElement("div",{"data-testid":"attachment-display"},(null==n?void 0:n.startsWith("image/"))&&y.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:a,alt:null==t?void 0:t.title}),(null==n?void 0:n.startsWith("video/"))&&y.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},y.createElement("source",{type:n,src:a})),"application/pdf"===n&&!(null==l?void 0:l.endsWith(".pdf"))&&y.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},y.createElement("iframe",{width:"100%",height:"400",src:a+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),y.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},y.createElement("a",{href:null==t?void 0:t.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},(null==t?void 0:t.title)||"Download"))):null}function $(e){return y.createElement("div",null,e.values&&e.values.map(((t,n)=>y.createElement("div",{key:"attatchment-"+n},y.createElement(M,{value:t,maxWidth:e.maxWidth})))))}function F(e){const t="medplum-button"+(e.primary||"submit"===e.type?" medplum-button-primary":"")+(e.danger?" medplum-button-danger":"")+(e.borderless?" medplum-button-borderless":"")+(e.size?" medplum-button-"+e.size:"");return y.createElement("button",{type:e.type||"button",className:t,style:e.style,onClick:e.onClick,"aria-label":e.label,"data-testid":e.testid},e.children)}const _=k(void 0);function U(e){const t=e.medplum,[n,a]=b({profile:t.getProfile(),loading:!1});O((()=>{function e(){a(Object.assign(Object.assign({},n),{profile:t.getProfile()}))}return t.addEventListener("change",e),()=>t.removeEventListeneer("change",e)}),[t,n]);const l=Object.assign(Object.assign({},n),{medplum:t});return y.createElement(_.Provider,{value:l},e.children)}function q(){return T(_)}function z(){return q().medplum}function Q(){return q().profile}function H(e){e.preventDefault(),e.stopPropagation()}function B(e){if(W(e))return!0;if(e instanceof HTMLTableCellElement){const t=e.children;if(1===t.length&&W(t[0]))return!0}return!1}function W(e){return e instanceof HTMLInputElement&&"checkbox"===e.type}function K(e){const t=z(),n=C(null);function a(n){if(!n)return;if(!n.name)return;const a=n.name,l=n.type||"application/octet-stream";t.createBinary(n,a,l).then((t=>{e.onUpload({contentType:t.contentType,url:t.url,title:a})})).catch((e=>{var t,n,a;alert(null===(a=null===(n=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0])||void 0===n?void 0:n.details)||void 0===a?void 0:a.text)}))}return y.createElement(y.Fragment,null,y.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:n,onChange:e=>function(e){H(e);const t=e.target.files;t&&Array.from(t).forEach(a)}(e)}),y.createElement(F,{testid:"upload-button",onClick:e=>{var t;H(e),null===(t=n.current)||void 0===t||t.click()}},"Upload..."))}function G(e){var t;const[n,a]=b(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=C();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,y.createElement("table",null,y.createElement("colgroup",null,y.createElement("col",{width:"90%"}),y.createElement("col",{width:"10%"})),y.createElement("tbody",null,n.map(((e,t)=>y.createElement("tr",{key:`${t}-${n.length}`},y.createElement("td",null,y.createElement(M,{value:e,maxWidth:200})),y.createElement("td",{className:"medplum-right"},y.createElement(F,{onClick:e=>{H(e);const a=n.slice();a.splice(t,1),r(a)}},"Remove"))))),y.createElement("tr",null,y.createElement("td",null),y.createElement("td",{className:"medplum-right"},y.createElement(K,{onUpload:e=>{r([...l.current,e])}})))))}function J(e){const[t,n]=b(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return t?y.createElement(y.Fragment,null,y.createElement(M,{value:t,maxWidth:200}),y.createElement(F,{onClick:e=>{H(e),a(void 0)}},"Remove")):y.createElement(K,{onUpload:a})}function Y(e){var t,n;const a=C(null),[l,r]=b(!1),[o,i]=b(""),[c,u]=b(),[s,m]=b(!1),[d,p]=b(null!==(t=e.defaultValue)&&void 0!==t?t:[]),[v,h]=b([]),[f,E]=b(-1),[g,k]=b(),[T,j]=b(),x=C();x.current=o;const w=C();w.current=c;const S=C();S.current=g;const N=C();function V(t){p(t),e.onChange&&e.onChange(t)}function D(t){a.current.value="";const n=e.multiple?[...d,t]:[t];r(!0),m(!1),i(""),h([]),E(-1),V(n)}function A(){var e;null===(e=a.current)||void 0===e||e.focus()}function R(){r(!1),window.setTimeout((()=>{m(!1)}),200)}function I(){S.current&&(S.current.abort(),k(void 0)),void 0!==w.current&&window.clearTimeout(w.current);const t=window.setTimeout((()=>function(){var t,n;u(void 0);const l=(null===(n=null===(t=a.current)||void 0===t?void 0:t.value)||void 0===n?void 0:n.trim())||"";if(l===x.current)return;if(!l)return m(!1),i(""),h([]),void E(-1);i(l);const r=new AbortController;k(r),e.loadOptions(l,r.signal).then((e=>{r.signal.aborted||(m(e.length>0),h(e),k(void 0),N.current&&(D(e[0]),j(!1)))})).catch(console.log)}()),100);u(t)}function P(e){switch(e.key){case"Enter":case"Tab":!function(e){var t;w.current||S.current||!L()?j(!0):(H(e),null===(t=a.current)||void 0===t||t.focus())}(e);break;case"ArrowUp":M(-1),H(e);break;case"ArrowDown":M(1),H(e);break;case"Backspace":!function(e){var t;if(null===(t=a.current)||void 0===t?void 0:t.value)return;d.length>0&&(H(e),V(d.slice(0,d.length-1)))}(e);break;case",":case";":!function(e){var t;L(),H(e),null===(t=a.current)||void 0===t||t.focus()}(e)}}function L(){var t;let n;return f>=0&&f<v.length?n=v[f]:-1===f&&v.length>0?n=v[0]:e.buildUnstructured&&(null===(t=a.current)||void 0===t?void 0:t.value)&&(n=e.buildUnstructured(a.current.value)),!!n&&(D(n),!0)}function M(e){let t=f+e;t<0?t=0:t>=v.length&&(t=v.length-1),E(t)}N.current=T,O((()=>()=>{S.current&&S.current.abort()}),[]),O((()=>{var t;p(null!==(t=e.defaultValue)&&void 0!==t?t:[])}),[e.defaultValue]);const $=null!==(n=e.className)&&void 0!==n?n:"medplum-autocomplete-container";return y.createElement("div",{"data-testid":"autocomplete",className:$+(l?" focused":""),onClick:()=>A()},y.createElement("ul",{onClick:()=>A()},d.map((t=>y.createElement("li",{key:e.getId(t),"data-testid":"selected",className:"medplum-autocomplete-item choice"},e.getDisplay(t)))),y.createElement("li",{className:"medplum-autocomplete-item"},y.createElement("input",{type:"text",autoFocus:e.autofocus,placeholder:0===d.length?e.placeholder:void 0,autoComplete:"off",autoCapitalize:"off",spellCheck:"true",onFocus:()=>{r(!0)},onBlur:()=>R(),onChange:()=>I(),onInput:()=>I(),onKeyDown:e=>P(e),ref:a,"data-testid":"input-element"}))),s&&y.createElement("div",{className:"medplum-autocomplete","data-testid":"dropdown"},v.map(((t,n)=>y.createElement("div",{key:e.getId(t),className:n===f?"medplum-autocomplete-row medplum-autocomplete-active":"medplum-autocomplete-row",onMouseOver:e=>function(e,t){E(t)}(0,n),onClick:e=>function(e,t){H(e),D(t)}(e,t)},e.getIcon&&y.createElement("div",{className:"medplum-autocomplete-icon"},e.getIcon(t)),y.createElement("div",{className:"medplum-autocomplete-label"},e.getDisplay(t),e.getHelpText&&y.createElement("div",{className:"medplum-autocomplete-help-text"},e.getHelpText(t)))))),e.onCreateNew&&y.createElement("div",{className:"medplum-autocomplete-row",onClick:e.onCreateNew},y.createElement("div",{className:"medplum-autocomplete-label"},"Create new..."))))}function X(e){const t=x();let n="#";return e.to&&("string"==typeof e.to?n=e.to:"resourceType"in e.to?n=`/${e.to.resourceType}/${e.to.id}`:"reference"in e.to&&(n=`/${e.to.reference}`)),y.createElement("a",{href:n,id:e.id,"aria-label":e.label,"data-testid":e.testid||"link",className:e.className,onClick:a=>{H(a),e.onClick?e.onClick():e.to&&t(n)}},e.children)}const Z={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};function ee(e){const t=z(),[n,a]=b(function(e,t){if(!t)return;if("resourceType"in t)return t;if("reference"in t)return"system"===t.reference?Z:e.getCachedReference(t);return}(t,e));return O((()=>{let l=!0;return!n&&e&&"reference"in e&&e.reference&&t.readReference(e).then((e=>{l&&a(e)})).catch((()=>a(void 0))),()=>l=!1}),[t,n,e]),n}function te(e){var a,l;const r=ee(e.value),o=e.size?"medplum-avatar "+e.size:"medplum-avatar",i=r?t(r):null!==(a=e.alt)&&void 0!==a?a:"",c=i&&function(e){return e.split(" ").map((e=>e[0])).join("")}(i),u=null!==(l=r&&n(r))&&void 0!==l?l:e.src,s=u?y.createElement("img",{src:u,alt:i}):c;return y.createElement("div",{className:o,style:{backgroundColor:e.color},"data-testid":"avatar"},e.link&&r?y.createElement(X,{to:r},s):s)}const ne=["meta","implicitRules","language","text","contained","extension","modifierExtension"];function ae(e){const t=N(e.outcome,e.htmlFor),n=t&&t.length>0;return y.createElement("fieldset",null,e.title&&y.createElement("label",{htmlFor:e.htmlFor},e.title),e.description&&y.createElement("small",null,e.description),e.children,n&&y.createElement("div",{id:e.htmlFor+"-errors",className:"medplum-input-error"},null==t?void 0:t.map((e=>{var t,n;return y.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))))}function le(e){return y.createElement("dl",{className:"medplum-description-list"+(e.compact?" compact":"")},e.children)}function re(e){return y.createElement(y.Fragment,null,y.createElement("dt",null,e.term),y.createElement("dd",null,e.children))}function oe(e){const t=e.value;if(!t)return null;const n=e.typeName,l=e.schema.types[n];return l?"object"==typeof t&&"name"in t&&1===Object.keys(t).length?y.createElement("div",null,t.name):y.createElement(le,{compact:e.compact},Object.entries(l.properties).map((n=>{const l=n[0];if(ne.indexOf(l)>=0)return null;const r=n[1],[o,i]=be(t,r);return e.ignoreMissingValues&&(!o||Array.isArray(o)&&0===o.length)?null:y.createElement(re,{key:l,term:a(r)},y.createElement(ye,{schema:e.schema,property:r,propertyType:i,value:o,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))}))):y.createElement("div",null,n," not implemented")}function ie(e){var t,n;return y.createElement(y.Fragment,null,(null===(t=e.value)||void 0===t?void 0:t.display)||(null===(n=e.value)||void 0===n?void 0:n.code))}function ce(e){const t=e.value;return t?t.text?y.createElement(y.Fragment,null,t.text):t.coding&&t.coding.length>0?y.createElement(ie,{value:t.coding[0]}):null:null}function ue(e){const t=e.value;if(!t)return null;const n=[];return t.value&&n.push(t.value),(t.use||t.system)&&(n.push(" ["),t.use&&n.push(t.use),t.use&&t.system&&n.push(" "),t.system&&n.push(t.system),n.push("]")),y.createElement(y.Fragment,null,n.join("").trim())}function se(e){return e.value?y.createElement(y.Fragment,null,new Date(e.value).toLocaleString()):null}function me(e){const t=e.value;return t?y.createElement(y.Fragment,null,l(t,e.options)):null}function de(e){var t,n;return y.createElement("div",null,null===(t=e.value)||void 0===t?void 0:t.system,": ",null===(n=e.value)||void 0===n?void 0:n.value)}function pe(e){const t=e.value;return t&&(t.start||t.end)?y.createElement("span",null,y.createElement(se,{value:t.start}),"-",y.createElement(se,{value:t.end})):null}function ve(e){const t=e.value;return t?y.createElement(y.Fragment,null,function(e){const t=[];e.comparator&&(t.push(e.comparator),t.push(" "));void 0!==e.value&&t.push(e.value);e.unit&&("%"!==e.unit&&t.push(" "),t.push(e.unit));return t.join("")}(t)):null}function he(e){const t=e.value;return t&&(t.low||t.high)?t.low&&!t.high?y.createElement("span",null,">= ",y.createElement(ve,{value:t.low})):!t.low&&t.high?y.createElement("span",null,"<= ",y.createElement(ve,{value:t.high})):y.createElement("span",null,y.createElement(ve,{value:t.low})," - ",y.createElement(ve,{value:t.high})):null}function fe(e){const t=e.value;return t?y.createElement(y.Fragment,null,y.createElement(ve,{value:t.numerator})," / ",y.createElement(ve,{value:t.denominator})):null}function Ee(e){if(!e.value)return null;const t=e.value.display||e.value.reference||r(e.value);return!1!==e.link&&e.value.reference?y.createElement(X,{to:e.value},t):y.createElement(y.Fragment,null,t)}function ge(e){var t,n,a;const l=e.property,r=null!==(t=e.values)&&void 0!==t?t:[],o=null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code;return y.createElement(y.Fragment,null,r.map(((t,n)=>y.createElement("div",{key:`${n}-${r.length}`},y.createElement(ye,{arrayElement:!0,schema:e.schema,property:l,propertyType:o,value:t,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))))}function ye(e){var t;const{property:n,propertyType:a,value:l}=e;if("*"===(null==n?void 0:n.max)&&!e.arrayElement){if("Attachment"===a)return y.createElement($,{values:l,maxWidth:e.maxWidth});if(!e.schema)throw Error(`Displaying property of type ${e.propertyType} requires schema to be passed`);return y.createElement(ge,{schema:e.schema,property:n,values:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link})}switch(a){case i.boolean:return y.createElement("div",null,void 0===l?"":Boolean(l).toString());case i.SystemString:case i.canonical:case i.code:case i.date:case i.integer:case i.positiveInt:case i.string:case i.unsignedInt:case i.uri:case i.url:return y.createElement("div",null,l);case i.dateTime:case i.instant:return y.createElement(se,{value:l});case i.markdown:return y.createElement("pre",null,l);case i.Address:return y.createElement(S,{value:l});case i.Annotation:return y.createElement("div",null,null==l?void 0:l.text);case i.Attachment:return y.createElement(M,{value:l,maxWidth:e.maxWidth});case i.CodeableConcept:return y.createElement(ce,{value:l});case i.Coding:return y.createElement(ie,{value:l});case i.ContactPoint:return y.createElement(ue,{value:l});case i.HumanName:return y.createElement(me,{value:l});case i.Identifier:return y.createElement(de,{value:l});case i.Period:return y.createElement(pe,{value:l});case i.Quantity:return y.createElement(ve,{value:l});case i.Range:return y.createElement(he,{value:l});case i.Ratio:return y.createElement(fe,{value:l});case i.Reference:return y.createElement(Ee,{value:l,link:e.link});default:if(!e.schema)throw Error(`Displaying property of type ${e.propertyType} requires schema to be passed`);return y.createElement(oe,{schema:e.schema,typeName:o(null===(t=null==n?void 0:n.path)||void 0===t?void 0:t.split(".")),value:l,compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function be(e,t){var n,a;if(!e)return[void 0,i.string];const l=null===(a=null===(n=t.path)||void 0===n?void 0:n.split("."))||void 0===a?void 0:a.pop();if(!l)return[void 0,i.string];const r=t.type;if(!r||0===r.length)return[void 0,i.string];if(1===r.length)return[e[l],r[0].code];for(const t of r){const n=l.replace("[x]",c(t.code));if(n in e)return[e[n],t.code]}return[void 0,r[0].code]}function Ce(e){const t=Q(),[n,a]=b(e.defaultValue||{});return C().current=n,y.createElement(V,{name:e.name,type:"text",placeholder:"Annotation text",defaultValue:n.text,onChange:function(n){const l=n?{text:n,authorReference:t&&u(t),time:(new Date).toISOString()}:{};a(l),e.onChange&&e.onChange(l)}})}function ke(e){const t=z();let n;return e.defaultValue&&(n=[e.defaultValue]),y.createElement(Y,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map(Oe)))},buildUnstructured:Te,getId:je,getDisplay:xe,name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Oe(e){return{text:e.display,coding:[{system:e.system,code:e.code,display:e.display}]}}function Te(e){return{text:e}}function je(e){return e.coding&&e.coding.length>0?e.coding[0].code:r(e)}function xe(e){var t,n,a,l,r,o;const i=null!==(o=null!==(a=null===(n=null===(t=e.coding)||void 0===t?void 0:t[0])||void 0===n?void 0:n.display)&&void 0!==a?a:null===(r=null===(l=e.coding)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code)&&void 0!==o?o:e.text;return y.createElement(y.Fragment,null,i)}const we={};function Se(e){const t=z();let n;return e.defaultValue&&(n=[e.defaultValue]),y.createElement(Y,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>{const t=e.expansion.contains;return t.forEach((e=>we[e.code]=e.display)),t.map((e=>e.code))}))},buildUnstructured:e=>e,getId:e=>e,getDisplay:e=>y.createElement(y.Fragment,null,we[e]||e),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ne(e){const t=z();let n;return e.defaultValue&&(n=[e.defaultValue]),y.createElement(Y,{loadOptions:n=>{var a;const l=null===(a=e.property.binding)||void 0===a?void 0:a.valueSet;return t.searchValueSet(l,n).then((e=>e.expansion.contains.map((e=>({system:e.system,code:e.code,display:e.display})))))},buildUnstructured:e=>({code:e}),getId:e=>e.code,getDisplay:e=>y.createElement(ie,{value:e}),name:e.name,defaultValue:n,onChange:t=>{e.onChange&&e.onChange(t[0])}})}function Ve(e){const[t,n]=b(e.defaultValue),a=C();function l(t){n(t),e.onChange&&e.onChange(t)}return a.current=t,y.createElement(A,null,y.createElement(R,{defaultValue:null==t?void 0:t.system,onChange:function(e){l(Object.assign(Object.assign({},a.current),{system:e||void 0}))},testid:"system"},y.createElement("option",null),y.createElement("option",null,"email"),y.createElement("option",null,"fax"),y.createElement("option",null,"pager"),y.createElement("option",null,"phone"),y.createElement("option",null,"other"),y.createElement("option",null,"sms")),y.createElement(R,{defaultValue:null==t?void 0:t.use,onChange:function(e){l(Object.assign(Object.assign({},a.current),{use:e||void 0}))},testid:"use"},y.createElement("option",null),y.createElement("option",null,"home"),y.createElement("option",null,"mobile"),y.createElement("option",null,"old"),y.createElement("option",null,"temp"),y.createElement("option",null,"work")),y.createElement(V,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:function(e){l(Object.assign(Object.assign({},a.current),{value:e||void 0}))}}))}function De(e){return y.createElement(V,Object.assign({},e,{type:"datetime-local",defaultValue:Ae(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(Re(t))}}))}function Ae(e){if(!e)return"";const t=new Date(e);return Ie(t)?t.toLocaleDateString("sv")+"T"+t.toLocaleTimeString("sv"):""}function Re(e){if(!e)return"";const t=new Date(e);return Ie(t)?t.toISOString():""}function Ie(e){return e instanceof Date&&!isNaN(e.getTime())}function Pe(e){const t=N(e.outcome,e.name),n=t&&t.length>0;return y.createElement("textarea",{id:e.name,name:e.name,className:"medplum-textarea",defaultValue:e.defaultValue||"",required:e.required,autoComplete:e.autoComplete,autoFocus:e.autoFocus,ref:e.inputRef,"aria-invalid":n,"aria-describedby":n?e.name+"-errors":"",placeholder:e.placeholder,"data-testid":e.testid,style:e.style,onChange:t=>{e.onChange&&e.onChange(t.currentTarget.value)}})}function Le(e){return y.createElement(Pe,{testid:"extension-input",name:e.name,defaultValue:r(e.defaultValue),onChange:t=>{e.onChange&&e.onChange(JSON.parse(t))}})}function Me(e){var t,n,a;const[l,r]=b(e.defaultValue),o=C();function i(t){r(t),e.onChange&&e.onChange(t)}return o.current=l,y.createElement(A,null,y.createElement(R,{defaultValue:null==l?void 0:l.use,onChange:function(e){i(Object.assign(Object.assign({},o.current),{use:e||void 0}))},testid:"use"},y.createElement("option",null),y.createElement("option",null,"usual"),y.createElement("option",null,"official"),y.createElement("option",null,"temp"),y.createElement("option",null,"nickname"),y.createElement("option",null,"anonymous"),y.createElement("option",null,"old"),y.createElement("option",null,"maiden")),y.createElement(V,{placeholder:"Prefix",defaultValue:null===(t=null==l?void 0:l.prefix)||void 0===t?void 0:t.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{prefix:e?e.split(" "):void 0}))}}),y.createElement(V,{placeholder:"Given",defaultValue:null===(n=null==l?void 0:l.given)||void 0===n?void 0:n.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{given:e?e.split(" "):void 0}))}}),y.createElement(V,{placeholder:"Family",defaultValue:null==l?void 0:l.family,onChange:function(e){i(Object.assign(Object.assign({},o.current),{family:e||void 0}))}}),y.createElement(V,{placeholder:"Suffix",defaultValue:null===(a=null==l?void 0:l.suffix)||void 0===a?void 0:a.join(" "),onChange:function(e){i(Object.assign(Object.assign({},o.current),{suffix:e?e.split(" "):void 0}))}}))}function $e(e){const[t,n]=b(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return y.createElement(A,null,y.createElement(V,{placeholder:"System",defaultValue:null==t?void 0:t.system,onChange:e=>a(Object.assign(Object.assign({},t),{system:e}))}),y.createElement(V,{placeholder:"Value",defaultValue:null==t?void 0:t.value,onChange:e=>a(Object.assign(Object.assign({},t),{value:e}))}))}function Fe(e){const[t,n]=b(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return y.createElement(A,null,y.createElement(V,{type:"datetime-local",placeholder:"Start",defaultValue:null==t?void 0:t.start,onChange:e=>a(Object.assign(Object.assign({},t),{start:e}))}),y.createElement(V,{type:"datetime-local",placeholder:"End",defaultValue:null==t?void 0:t.end,onChange:e=>a(Object.assign(Object.assign({},t),{end:e}))}))}function _e(e){var t;const[n,a]=b(e.defaultValue);function l(t){a(t),e.onChange&&e.onChange(t)}return y.createElement(A,null,y.createElement(R,{style:{width:80},testid:e.name+"-comparator",defaultValue:null==n?void 0:n.comparator,onChange:e=>l(Object.assign(Object.assign({},n),{comparator:e}))},y.createElement("option",null),y.createElement("option",null,"<"),y.createElement("option",null,"<="),y.createElement("option",null,">="),y.createElement("option",null,">")),y.createElement(V,{name:e.name,type:"number",step:"any",placeholder:"Value",defaultValue:null===(t=null==n?void 0:n.value)||void 0===t?void 0:t.toString(),onChange:e=>l(Object.assign(Object.assign({},n),{value:Ue(e)}))}),y.createElement(V,{placeholder:"Unit",defaultValue:null==n?void 0:n.unit,onChange:e=>l(Object.assign(Object.assign({},n),{unit:e}))}))}function Ue(e){if(e)return parseFloat(e)}function qe(e){const[t,n]=b(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return y.createElement(A,null,y.createElement(_e,{name:e.name+"-low",defaultValue:null==t?void 0:t.low,onChange:e=>a(Object.assign(Object.assign({},t),{low:e}))}),y.createElement(_e,{name:e.name+"-high",defaultValue:null==t?void 0:t.high,onChange:e=>a(Object.assign(Object.assign({},t),{high:e}))}))}function ze(e){const[t,n]=b(e.defaultValue);function a(t){n(t),e.onChange&&e.onChange(t)}return y.createElement(A,null,y.createElement(_e,{name:e.name+"-numerator",defaultValue:null==t?void 0:t.numerator,onChange:e=>a(Object.assign(Object.assign({},t),{numerator:e}))}),y.createElement(_e,{name:e.name+"-denominator",defaultValue:null==t?void 0:t.denominator,onChange:e=>a(Object.assign(Object.assign({},t),{denominator:e}))}))}function Qe(e){const n=ee(e.value);if(!n)return null;const a=t(n);return e.link?y.createElement(X,{to:n},a):y.createElement("span",null,a)}function He(e){const t=z(),n=ee(e.defaultValue),[a,l]=b(),r=C(e.resourceType);return r.current=e.resourceType,O((()=>{l(n)}),[n]),y.createElement(Y,{loadOptions:e=>t.search(r.current,"name="+encodeURIComponent(e)).then((e=>e.entry.map((e=>e.resource)))),getId:e=>e.id,getIcon:e=>y.createElement(te,{value:e}),getDisplay:e=>y.createElement(Qe,{value:e}),getHelpText:e=>{if("Patient"===e.resourceType&&e.birthDate)return"DoB: "+e.birthDate},name:e.name,defaultValue:a?[a]:void 0,className:e.className,placeholder:e.placeholder,onChange:t=>{var n;n=t.length>0?t[0]:void 0,l(n),e.onChange&&e.onChange(n)}})}function Be(e){const t=e.targetTypes,n=function(e,t){var n;const a=null===(n=null==e?void 0:e.reference)||void 0===n?void 0:n.split("/")[0];if(a)return a;if(t&&t.length>0)return t[0];return}(e.defaultValue,t),[a,l]=b(e.defaultValue),[r,o]=b(n);C().current=a;return C().current=r,y.createElement(A,null,t?y.createElement(R,{testid:"reference-input-resource-type-select",defaultValue:r,onChange:o},t.map((e=>y.createElement("option",{key:e,value:e},e)))):y.createElement(V,{testid:"reference-input-resource-type-input",defaultValue:r,onChange:o}),y.createElement(He,{resourceType:r,name:e.name+"-id",defaultValue:a,onChange:t=>{var n;n=t?u(t):void 0,l(n),e.onChange&&e.onChange(n)}}))}function We(e){var t;const[n,a]=b(null!==(t=e.defaultValue)&&void 0!==t?t:[]),l=C();function r(t){a(t),e.onChange&&e.onChange(t)}return l.current=n,y.createElement("div",null,y.createElement("table",{style:{width:"100%"}},y.createElement("colgroup",null,y.createElement("col",{width:"90%"}),y.createElement("col",{width:"10%"})),y.createElement("tbody",null,n.map(((t,a)=>y.createElement("tr",{key:`${a}-${n.length}`},y.createElement("td",null,y.createElement(Ke,{arrayElement:!0,schema:e.schema,property:e.property,name:e.name+"."+a,defaultValue:t,onChange:e=>{const t=[...l.current];t[a]=e,r(t)}})),y.createElement("td",{style:{textAlign:"right"}},y.createElement(F,{onClick:e=>{H(e);const t=[...l.current];t.splice(a,1),r(t)}},"Remove"))))),y.createElement("tr",null,y.createElement("td",null),y.createElement("td",{style:{textAlign:"right"}},y.createElement(F,{onClick:e=>{H(e);const t=[...l.current];t.push(void 0),r(t)}},"Add"))))))}function Ke(e){var t,n,a;const l=e.property,r=null!==(t=e.defaultPropertyType)&&void 0!==t?t:null===(a=null===(n=l.type)||void 0===n?void 0:n[0])||void 0===a?void 0:a.code,o=e.name,i=e.defaultValue;if("*"===l.max&&!e.arrayElement)return"Attachment"===r?y.createElement(G,{name:o,defaultValue:i,onChange:e.onChange}):y.createElement(We,{schema:e.schema,property:l,name:o,defaultValue:i,onChange:e.onChange});const c=l.type;return c.length>1?y.createElement(Ge,Object.assign({elementDefinitionTypes:c},e)):y.createElement(Je,Object.assign({elementDefinitionType:c[0]},e))}function Ge(e){const t=e.elementDefinitionTypes;let n;n=e.defaultPropertyType?t.find((t=>t.code===e.defaultPropertyType)):t[0];const[a,l]=b(n);return y.createElement(A,null,y.createElement(R,{style:{width:"200px"},defaultValue:a.code,onChange:e=>{l(t.find((t=>t.code===e)))}},t.map((e=>y.createElement("option",{key:e.code,value:e.code},e.code)))),y.createElement(Je,Object.assign({},e,{elementDefinitionType:a,onChange:t=>{e.onChange&&e.onChange(t,e.name.replace("[x]",c(a.code)))}})))}function Je(e){const t=e.property,n=e.elementDefinitionType.code,a=e.name,l=e.defaultValue;switch(n){case i.SystemString:case i.canonical:case i.string:case i.time:case i.uri:case i.url:return y.createElement(V,{type:"text",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.date:return y.createElement(V,{type:"date",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.dateTime:case i.instant:return y.createElement(De,{type:"datetime-local",name:a,testid:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome});case i.decimal:case i.integer:case i.positiveInt:case i.unsignedInt:return y.createElement(V,{type:"number",step:n===i.decimal?"any":1,name:a,testid:a,defaultValue:l,onChange:t=>{e.onChange&&e.onChange(parseFloat(t))},outcome:e.outcome});case i.code:return y.createElement(Se,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.boolean:return y.createElement("input",{type:"checkbox",name:a,"data-testid":a,defaultChecked:!!l,value:"true",onChange:t=>e.onChange&&e.onChange("true"===t.target.value)});case i.markdown:return y.createElement(Pe,{name:a,testid:a,defaultValue:l,onChange:e.onChange});case i.Address:return y.createElement(L,{name:a,defaultValue:l,onChange:e.onChange});case i.Annotation:return y.createElement(Ce,{name:a,defaultValue:l,onChange:e.onChange});case i.Attachment:return y.createElement(J,{name:a,defaultValue:l,onChange:e.onChange});case i.CodeableConcept:return y.createElement(ke,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.Coding:return y.createElement(Ne,{property:t,name:a,defaultValue:l,onChange:e.onChange});case i.ContactPoint:return y.createElement(Ve,{name:a,defaultValue:l,onChange:e.onChange});case i.Extension:return y.createElement(Le,{name:a,defaultValue:l,onChange:e.onChange});case i.HumanName:return y.createElement(Me,{name:a,defaultValue:l,onChange:e.onChange});case i.Identifier:return y.createElement($e,{name:a,defaultValue:l,onChange:e.onChange});case i.Period:return y.createElement(Fe,{name:a,defaultValue:l,onChange:e.onChange});case i.Quantity:return y.createElement(_e,{name:a,defaultValue:l,onChange:e.onChange});case i.Range:return y.createElement(qe,{name:a,defaultValue:l,onChange:e.onChange});case i.Ratio:return y.createElement(ze,{name:a,defaultValue:l,onChange:e.onChange});case i.Reference:return y.createElement(Be,{name:a,defaultValue:l,targetTypes:Ye(t),onChange:e.onChange});default:return y.createElement(et,{schema:e.schema,property:t,name:a,defaultValue:l,onChange:e.onChange,outcome:e.outcome})}}function Ye(e){var t,n,a;return null===(a=null===(n=null===(t=null==e?void 0:e.type)||void 0===t?void 0:t[0])||void 0===n?void 0:n.targetProfile)||void 0===a?void 0:a.map((e=>e.split("/").pop()))}function Xe(e){const t=z(),n=ee(e.defaultValue),[l,r]=b(),[o,i]=b();if(O((()=>{n&&(i(JSON.parse(JSON.stringify(n))),t.requestSchema(n.resourceType).then(r))}),[t,n]),!l||!o)return y.createElement("div",null,"Loading...");const c=l.types[o.resourceType];return y.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:t=>{t.preventDefault(),e.onSubmit&&e.onSubmit(o)}},y.createElement(ae,{title:"Resource Type"},y.createElement(V,{name:"resourceType",defaultValue:o.resourceType,disabled:!0})),y.createElement(ae,{title:"ID"},y.createElement(V,{name:"id",defaultValue:o.id,disabled:!0})),Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||ne.indexOf(n)>=0)return null;const r=t[1],[c,u]=be(o,r);return y.createElement(ae,{key:n,title:a(r),description:r.definition,htmlFor:n,outcome:e.outcome},y.createElement(Ke,{schema:l,property:r,name:n,defaultValue:c,defaultPropertyType:u,outcome:e.outcome,onChange:(e,a)=>{i(Ze(o,n,null!=a?a:n,t[1],e))}}))})),y.createElement(F,{type:"submit",size:"large"},"OK"),e.onDelete&&y.createElement(F,{type:"button",size:"large",onClick:()=>{e.onDelete(o)}},"Delete"))}function Ze(e,t,n,a,l){const r=a.type;if(r.length>1)for(const n of r){const a=t.replace("[x]",c(n.code));a in e&&delete e[a]}return e[n]=l,e}function et(e){var t,n;const[l,r]=b(null!==(t=e.defaultValue)&&void 0!==t?t:{});const i=o(null===(n=e.property.path)||void 0===n?void 0:n.split(".")),c=e.schema.types[i];return c?y.createElement(y.Fragment,null,Object.entries(c.properties).map((t=>{const n=t[0];if("id"===n||ne.indexOf(n)>=0)return null;const o=t[1];if(!o.type)return null;const[i,c]=be(l,o);return y.createElement(ae,{key:n,title:a(o),description:o.definition,htmlFor:n,outcome:e.outcome},y.createElement(Ke,{schema:e.schema,property:o,name:n,defaultValue:i,defaultPropertyType:c,outcome:e.outcome,onChange:(a,o)=>{!function(t){r(t),e.onChange&&e.onChange(t)}(Ze(l,n,null!=o?o:n,t[1],a))}}))}))):y.createElement("div",null,i," not implemented")}function tt(e){var t;return y.createElement("div",{className:"medplum-resource-badge"},y.createElement(te,{size:null!==(t=e.size)&&void 0!==t?t:"small",value:e.value,link:e.link}),y.createElement(Qe,{value:e.value,link:e.link}))}function nt(e){var t;const n=ee(e.value);if(!n)return null;let a;if(n.presentedForm&&n.presentedForm.length>0){const e=n.presentedForm[0];(null===(t=e.contentType)||void 0===t?void 0:t.startsWith("text/plain"))&&e.data&&(a=window.atob(e.data))}return y.createElement("div",{className:"medplum-diagnostic-report"},y.createElement("h1",null,"Diagnostic Report"),y.createElement("div",{className:"medplum-diagnostic-report-header"},n.subject&&y.createElement("dl",null,y.createElement("dt",null,"Subject"),y.createElement("dd",null,y.createElement(tt,{value:n.subject,link:!0}))),n.resultsInterpreter&&n.resultsInterpreter.map((e=>y.createElement("dl",{key:e.reference},y.createElement("dt",null,"Interpreter"),y.createElement("dd",null,y.createElement(tt,{value:e,link:!0}))))),n.issued&&y.createElement("dl",null,y.createElement("dt",null,"Issued"),y.createElement("dd",null,y.createElement(se,{value:n.issued}))),n.status&&y.createElement("dl",null,y.createElement("dt",null,"Status"),y.createElement("dd",null,c(n.status)))),a&&y.createElement("pre",null,a),n.result&&y.createElement(at,{value:n.result}))}function at(e){var t;return y.createElement("table",{className:"medplum-table"},y.createElement("thead",null,y.createElement("tr",null,y.createElement("th",null,"Test"),y.createElement("th",null,"Value"),y.createElement("th",null,"Reference Range"),y.createElement("th",null,"Interpretation"))),y.createElement("tbody",null,null===(t=e.value)||void 0===t?void 0:t.map(((e,t)=>y.createElement(lt,{key:"obs-"+t,value:e})))))}function lt(e){const t=ee(e.value);return t?y.createElement("tr",null,y.createElement("td",null,y.createElement(X,{to:t},y.createElement(ce,{value:t.code}))),y.createElement("td",null,y.createElement(rt,{value:t})),y.createElement("td",null,y.createElement(ot,{value:t.referenceRange})),y.createElement("td",null,t.interpretation&&t.interpretation.length>0&&y.createElement(ce,{value:t.interpretation[0]}))):null}function rt(e){var t;const n=e.value;return(null==n?void 0:n.valueQuantity)?y.createElement(ve,{value:null===(t=e.value)||void 0===t?void 0:t.valueQuantity}):(null==n?void 0:n.valueString)?y.createElement(y.Fragment,null,n.valueString):n&&"component"in n&&(null==n?void 0:n.component)?y.createElement(y.Fragment,null,n.component.map(((e,t)=>y.createElement(rt,{key:`obs-${t}`,value:e}))).reduce(((e,t)=>[e," / ",t]))):null}function ot(e){const t=e.value&&e.value.length>0&&e.value[0];return t?y.createElement(he,{value:t}):null}function it(e){const t={};for(const n of Array.from(e.elements))n instanceof HTMLInputElement?ct(t,n):n instanceof HTMLTextAreaElement?t[n.name]=n.value:n instanceof HTMLSelectElement&&ut(t,n);return t}function ct(e,t){t.disabled||("checkbox"!==t.type&&"radio"!==t.type||t.checked)&&(e[t.name]=t.value)}function ut(e,t){e[t.name]=t.value}function st(e){return y.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:t=>{t.preventDefault();const n=it(t.target);e.onSubmit&&e.onSubmit(n)}},e.children)}function mt(){return y.createElement("div",{role:"progressbar","aria-busy":"true",className:"medplum-loading"},y.createElement("div",{className:"medplum-loading-container"},y.createElement("svg",{className:"medplum-loading-spinner",viewBox:"0 0 100 100"},y.createElement("circle",{cx:"50",cy:"50",r:"40"}))))}function dt(e){return y.createElement("div",{className:"medplum-menu-item",onClick:()=>e.onClick(),"aria-label":e.label},e.children)}function pt(e){const t=z(),[n,l]=b();if(O((()=>{t.requestSchema(e.original.resourceType).then(l)}),[t,e.original.resourceType]),!n)return null;const o=n.types[e.original.resourceType];return o?y.createElement("table",{className:"medplum-diff-table"},y.createElement("colgroup",null,y.createElement("col",{style:{width:"30%"}}),y.createElement("col",{style:{width:"35%"}}),y.createElement("col",{style:{width:"35%"}})),y.createElement("thead",null,y.createElement("tr",null,y.createElement("th",null,"Property"),y.createElement("th",null,"Before"),y.createElement("th",null,"After"))),y.createElement("tbody",null,Object.entries(o.properties).map((t=>{const l=t[0];if("id"===l||"meta"===l)return null;const o=t[1],[i,c]=be(e.original,o),[u,s]=be(e.revised,o);return vt(i)&&vt(u)||r(i)===r(u)?null:y.createElement("tr",{key:l},y.createElement("td",null,a(o)),y.createElement("td",{className:"medplum-diff-removed"},y.createElement(ye,{schema:n,property:o,propertyType:c,value:i,ignoreMissingValues:!0})),y.createElement("td",{className:"medplum-diff-added"},y.createElement(ye,{schema:n,property:o,propertyType:s,value:u,ignoreMissingValues:!0})))})))):null}function vt(e){return!e||Array.isArray(e)&&0===e.length||"object"==typeof e&&0===Object.keys(e).length}function ht(e){const t=z(),n=ee(e.value),[a,l]=b();return O((()=>{n&&t.requestSchema(n.resourceType).then(l)}),[t,n]),a&&n?y.createElement(oe,{schema:a,typeName:n.resourceType,value:n,ignoreMissingValues:e.ignoreMissingValues}):null}function ft(e){const t=e.height||"100%",n=e.height?e.height+25:"100%",a="medplum-scrollable-content"+(e.className?` ${e.className}`:"");return y.createElement("div",{className:"medplum-scrollable-container",style:{height:t}},y.createElement("div",{className:a,role:e.role,style:{height:n}},e.children))}class Et extends y.Component{constructor(e){super(e),this.state={}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("Uncaught error:",e,t)}render(){return this.state.error?y.createElement("h1",null,"Something went wrong."):this.props.children}}function gt(e){const t=C(null),n=w(),a=C();e.visible?void 0===a.current&&(a.current=n):a.current=void 0;const l=C();l.current=e,O((()=>{function n(n){var a,r;(null===(a=l.current)||void 0===a?void 0:a.visible)&&(null===(r=l.current)||void 0===r?void 0:r.autoClose)&&(null==t?void 0:t.current)&&!t.current.contains(n.target)&&e.onClose()}return document.addEventListener("click",n,!0),()=>document.removeEventListener("click",n,!0)}),[e]),O((()=>{e.visible&&n!==a.current&&e.onClose()}),[n,e]);const r={display:e.visible?"block":"none"};return e.anchor&&(e.anchor.right+250<document.body.clientWidth?r.left=e.anchor.right+"px":r.right=document.body.clientWidth-e.anchor.left+"px",e.anchor.top+300<document.body.clientHeight?r.top=e.anchor.top+"px":r.bottom=document.body.clientHeight-e.anchor.top+"px"),y.createElement(y.Fragment,null,e.modal&&y.createElement("div",{className:e.visible?"medplum-backdrop active":"medplum-backdrop",onClick:e.onClose}),y.createElement("div",{ref:t,className:"medplum-popup "+(e.visible?e.activeClassName:e.inactiveClassName),style:r,"data-testid":"popup"},e.children))}function yt(e){return y.createElement("main",{className:"medplum-document medplum-timeline"},e.children)}function bt(e){var t,n,a;const[l,r]=b(),o=null!==(t=e.profile)&&void 0!==t?t:null===(n=e.resource.meta)||void 0===n?void 0:n.author;return y.createElement("article",{className:e.className||"medplum-timeline-item","data-testid":"timeline-item"},y.createElement("div",{className:"medplum-timeline-item-header"},y.createElement("div",{className:"medplum-timeline-item-avatar"},y.createElement(te,{value:o,link:!0,size:"medium"})),y.createElement("div",{className:"medplum-timeline-item-title"},y.createElement(Qe,{value:o,link:!0}),y.createElement("div",{className:"medplum-timeline-item-subtitle"},y.createElement(X,{to:e.resource},y.createElement(se,{value:null===(a=e.resource.meta)||void 0===a?void 0:a.lastUpdated})),y.createElement("span",null,"·"),y.createElement(X,{to:e.resource},e.resource.resourceType))),e.popupMenuItems&&y.createElement("div",{className:"medplum-timeline-item-actions"},y.createElement("a",{href:"#","aria-label":`Actions for ${s(e.resource)}`,onClick:e=>{H(e);const t=e.currentTarget.getBoundingClientRect();r(t)}},y.createElement("svg",{fill:"currentColor",viewBox:"0 0 20 20"},y.createElement("g",{transform:"translate(-446 -350)"},y.createElement("path",{d:"M458 360a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0m-12 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0"})))))),y.createElement(Et,null,e.padding&&y.createElement("div",{style:{padding:"2px 16px 16px 16px"}},e.children),!e.padding&&y.createElement(y.Fragment,null,e.children)),e.socialEnabled&&y.createElement("div",{className:"medplum-timeline-item-footer"},y.createElement(F,{borderless:!0},"Like"),y.createElement(F,{borderless:!0},"Comment")),e.popupMenuItems&&y.createElement(gt,{visible:!!l,anchor:l,autoClose:!0,onClose:()=>r(void 0)},e.popupMenuItems))}function Ct(e){e.sort(kt)}function kt(e,t){const n=Ot(e),a=Ot(t);return n>a?1:n<a?-1:Tt(e)-Tt(t)}function Ot(e){const t=e.priority;return"string"==typeof t&&{stat:4,asap:3,urgent:2}[t]||0}function Tt(e){var t;if("Communication"===e.resourceType&&e.sent)return new Date(e.sent).getTime();if(("DiagnosticReport"===e.resourceType||"Media"===e.resourceType||"Observation"===e.resourceType)&&e.issued)return new Date(e.issued).getTime();if("DocumentReference"===e.resourceType&&e.date)return new Date(e.date).getTime();const n=null===(t=e.meta)||void 0===t?void 0:t.lastUpdated;return n?new Date(n).getTime():0}function jt(e){const t=x(),n=z(),a=n.getProfile(),l=C(null),r=ee(e.value),[o,i]=b(),[c,u]=b([]),s=e.buildSearchRequests,m=C(c);m.current=c;const d=j((()=>{if(!r)return u([]),void i({});const e=s(r);n.post("fhir/R4",e).then(p)}),[n,r,s]);function p(e){const t=[];if(e.entry){for(const n of e.entry){const e=n.resource;if(e&&("history"===e.type&&i(e),e.entry))for(const n of e.entry)t.push(n.resource)}Ct(t),t.reverse()}u(t)}function v(e){const t=[...m.current,...e];Ct(t),t.reverse(),u(t)}function h(e,t){return n.updateResource(Object.assign(Object.assign({},e),{priority:t}))}function f(e){h(e,"stat").then(d)}function E(e){h(e,"routine").then(d)}function g(e){t(`/${e.resourceType}/${e.id}`)}function k(e){t(`/${e.resourceType}/${e.id}/edit`)}function T(e){t(`/${e.resourceType}/${e.id}/delete`)}function w(e){var n;t(`/${e.resourceType}/${e.id}/_history/${null===(n=e.meta)||void 0===n?void 0:n.versionId}`)}return O((()=>{d()}),[d]),r&&o?y.createElement(yt,null,e.createCommunication&&y.createElement("article",{className:"medplum-timeline-item"},y.createElement("div",{className:"medplum-timeline-item-header"},y.createElement(st,{testid:"timeline-form",onSubmit:t=>{var o;o=t.text,r&&e.createCommunication&&n.createResource(e.createCommunication(r,a,o)).then((e=>{v([e])}));const i=l.current;i&&(i.value="",i.focus())}},y.createElement(V,{name:"text",testid:"timeline-input",inputRef:l}),y.createElement(F,{type:"submit"},"Comment"),y.createElement(K,{onUpload:function(t){r&&e.createMedia&&n.createResource(e.createMedia(r,a,t)).then((e=>{v([e])}))}})))),c.map((e=>{var t;if(e.resourceType===r.resourceType&&e.id===r.id)return y.createElement(wt,{key:null===(t=e.meta)||void 0===t?void 0:t.versionId,history:o,resource:e,onDetails:w});const n=`${e.resourceType}/${e.id}`;switch(e.resourceType){case"AuditEvent":return y.createElement(Vt,{key:n,resource:e,onDetails:g});case"Communication":return y.createElement(St,{key:n,resource:e,onPin:"stat"!==e.priority?f:void 0,onUnpin:"stat"===e.priority?E:void 0,onDetails:g,onEdit:k,onDelete:T});case"DiagnosticReport":return y.createElement(Dt,{key:n,resource:e,onDetails:g,onEdit:k,onDelete:T});case"Media":return y.createElement(Nt,{key:n,resource:e,onDetails:g,onEdit:k,onDelete:T});default:return y.createElement(bt,{key:n,resource:e,padding:!0},y.createElement(ht,{value:e,ignoreMissingValues:!0}))}}))):y.createElement(mt,null)}function xt(e){return y.createElement(y.Fragment,null,e.onPin&&y.createElement(dt,{onClick:()=>e.onPin(e.resource),label:`Pin ${s(e.resource)}`},"Pin"),e.onUnpin&&y.createElement(dt,{onClick:()=>e.onUnpin(e.resource),label:`Unpin ${s(e.resource)}`},"Unpin"),e.onDetails&&y.createElement(dt,{onClick:()=>e.onDetails(e.resource),label:`Details ${s(e.resource)}`},"Details"),e.onEdit&&y.createElement(dt,{onClick:()=>e.onEdit(e.resource),label:`Edit ${s(e.resource)}`},"Edit"),e.onDelete&&y.createElement(dt,{onClick:()=>e.onDelete(e.resource),label:`Delete ${s(e.resource)}`},"Delete"))}function wt(e){const t=function(e,t){const n=e.entry,a=n.findIndex((e=>{var n,a,l;return(null===(a=null===(n=e.resource)||void 0===n?void 0:n.meta)||void 0===a?void 0:a.versionId)===(null===(l=t.meta)||void 0===l?void 0:l.versionId)}));if(a>=n.length-1)return;return n[a+1].resource}(e.history,e.resource);return t?y.createElement(bt,{resource:e.resource,padding:!0,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement(pt,{original:t,revised:e.resource})):y.createElement(bt,{resource:e.resource,padding:!0,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement("h3",null,"Created"),y.createElement(ht,{value:e.resource,ignoreMissingValues:!0}))}function St(e){var t,n;const a=!e.resource.priority||"routine"===e.resource.priority?"medplum-timeline-item":"medplum-timeline-item medplum-timeline-item-pinned";return y.createElement(bt,{resource:e.resource,profile:e.resource.sender,padding:!0,className:a,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement("p",null,null===(n=null===(t=e.resource.payload)||void 0===t?void 0:t[0])||void 0===n?void 0:n.contentString))}function Nt(e){var t;const n=null===(t=e.resource.content)||void 0===t?void 0:t.contentType,a=n&&!n.startsWith("image/")&&!n.startsWith("video/")&&"application/pdf"!==n;return y.createElement(bt,{resource:e.resource,padding:!!a,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement(M,{value:e.resource.content}))}function Vt(e){return y.createElement(bt,{resource:e.resource,padding:!0,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement(ft,null,y.createElement("pre",null,e.resource.outcomeDesc)))}function Dt(e){return y.createElement(bt,{resource:e.resource,padding:!0,popupMenuItems:y.createElement(xt,Object.assign({},e))},y.createElement(nt,{value:e.resource}))}function At(e){return y.createElement(jt,{value:e.resource,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${s(e)}/_history`}},{request:{method:"GET",url:`AuditEvent?entity=${s(e)}&_sort=-_lastUpdated`}}]})})}function Rt(e){return y.createElement("main",{className:"medplum-document"},y.createElement("article",{style:{maxWidth:e.width}},e.children))}function It(e){return y.createElement(jt,{value:e.encounter,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${s(e)}/_history`}},{request:{method:"GET",url:`Communication?encounter=${s(e)}`}},{request:{method:"GET",url:`Media?encounter=${s(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",encounter:u(e),subject:e.subject,sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",encounter:u(e),subject:e.subject,operator:u(t),issued:(new Date).toISOString(),content:n})})}function Pt(e){return y.createElement("div",{className:"medplum-footer"},e.children)}function Lt(e,t,n,a){return new(n||(n=Promise))((function(l,r){function o(e){try{c(a.next(e))}catch(e){r(e)}}function i(e){try{c(a.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?l(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,i)}c((a=a.apply(e,t||[])).next())}))}function Mt(e){const t=z();return y.createElement(Y,{loadOptions:(e,n)=>Lt(this,void 0,void 0,(function*(){return function(e,t){const n=[];e.data.Patients1&&n.push(...e.data.Patients1);e.data.Patients2&&n.push(...e.data.Patients2);e.data.ServiceRequestList&&n.push(...e.data.ServiceRequestList);return function(e,t){return e.sort(((e,n)=>$t(n,t)-$t(e,t)))}(function(e){const t=new Set,n=[];for(const a of e)t.has(a.id)||(t.add(a.id),n.push(a));return n}(n),t).slice(0,5)}(yield t.graphql(function(e){const t=JSON.stringify(e);if(m(e))return`{\n Patients1: PatientList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(_id: ${t}, _count: 1) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ");return`{\n Patients1: PatientList(name: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n Patients2: PatientList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n name {\n given\n family\n }\n birthDate\n }\n ServiceRequestList(identifier: ${t}, _count: 5) {\n resourceType\n id\n identifier {\n system\n value\n }\n subject {\n display\n }\n }\n }`.replace(/\s+/g," ")}(e),{signal:n}),e)})),getId:e=>e.id,getIcon:e=>y.createElement(te,{value:e}),getDisplay:e=>y.createElement(Qe,{value:e}),getHelpText:e=>{var t;return"Patient"===e.resourceType&&e.birthDate?"DoB: "+e.birthDate:null===(t=e.subject)||void 0===t?void 0:t.display},name:e.name,className:e.className,placeholder:e.placeholder,onChange:t=>e.onChange(t[0])})}function $t(e,t){let n=0;if(e.identifier)for(const a of e.identifier)n=Math.max(n,Ft(a.value,t));if("Patient"===e.resourceType&&e.name)for(const a of e.name)n=Math.max(n,Ft(l(a),t));return n}function Ft(e,t){if(!e)return 0;const n=e.toLowerCase().indexOf(t.toLowerCase());return n<0?0:100-n}function _t(e){var t,n,a,l,r,o;const i=x(),c=w(),u=q(),m=u.medplum,d=m.getLogins(),[p,v]=b(!1),[h,f]=b(!1);return y.createElement(y.Fragment,null,y.createElement("header",{role:"banner","data-testid":"header"},y.createElement("div",null,y.createElement(X,{label:"Toggle sidebar",testid:"header-menu-button",onClick:()=>f(!h)},y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",style:{width:20,height:20,verticalAlign:"text-top"},viewBox:"0 0 20 20",fill:"currentColor"},y.createElement("path",{fillRule:"evenodd",d:"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"}))),y.createElement(X,{id:"medplum-header-logo",testid:"header-logo",onClick:e.onLogo},"Medplum"),u.profile&&y.createElement(Mt,{key:`header-input-${c.pathname}`,name:"search",className:"medplum-nav-search-container",placeholder:"Search",onChange:e=>i(`/${e.resourceType}/${e.id}`)})),u.profile&&y.createElement("div",{className:"medplum-nav-menu-container"},y.createElement(X,{testid:"header-profile-menu-button",onClick:()=>v(!0)},y.createElement(te,{size:"small",color:"#f68d42",value:u.profile})),y.createElement(gt,{visible:p,autoClose:!0,activeClassName:"medplum-nav-menu-popover",onClose:()=>v(!1)},y.createElement("div",{className:"medplum-nav-menu"},y.createElement("div",{style:{margin:"auto",padding:"8px"}},y.createElement(te,{size:"large",value:u.profile})),y.createElement("div",{style:{margin:"auto",padding:"8px"}},y.createElement("div",{style:{margin:"4px auto 4px auto",fontWeight:"bold"}},y.createElement(me,{value:null===(n=null===(t=u.profile)||void 0===t?void 0:t.name)||void 0===n?void 0:n[0]})),y.createElement("div",{style:{margin:"4px auto 4px auto"}},null===(l=null===(a=m.getActiveLogin())||void 0===a?void 0:a.project)||void 0===l?void 0:l.display),y.createElement(F,{testid:"header-profile-link",onClick:()=>{v(!1),e.onProfile&&e.onProfile()}},"Manage your account")),d.length>1&&y.createElement("div",null,y.createElement("hr",null),d.map((e=>{var t,n,a,l;return(null===(t=e.profile)||void 0===t?void 0:t.reference)!==s(u.profile)&&y.createElement("div",{className:"medplum-nav-menu-profile",key:null===(n=e.profile)||void 0===n?void 0:n.reference,onClick:()=>{m.setActiveLogin(e),v(!1),window.location.reload()}},y.createElement("div",{className:"medplum-nav-menu-profile-icon"},y.createElement(te,null)),y.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(a=e.profile)||void 0===a?void 0:a.display,y.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(l=e.project)||void 0===l?void 0:l.display)))}))),y.createElement("hr",null),y.createElement("div",{style:{margin:"auto",padding:"8px"}},y.createElement(F,{testid:"header-add-account-button",onClick:()=>{i("/signin")}},"Add another account")),y.createElement("hr",null),y.createElement("div",{style:{margin:"auto",padding:"8px"}},y.createElement(F,{testid:"header-signout-button",onClick:()=>{v(!1),e.onSignOut&&e.onSignOut()}},"Sign out of all accounts")),y.createElement("hr",null),y.createElement("div",{style:{margin:"auto",padding:"8px",fontSize:"12px"}},y.createElement("a",{href:"https://www.medplum.com/terms"},"Terms"),y.createElement("a",{href:"https://www.medplum.com/privacy"},"Privacy")))))),y.createElement(gt,{modal:!0,autoClose:!0,visible:h,activeClassName:"medplum-sidebar active",inactiveClassName:"medplum-sidebar",onClose:()=>f(!1)},null===(o=null===(r=e.config)||void 0===r?void 0:r.menu)||void 0===o?void 0:o.map(((t,n)=>{var a,l,r;return y.createElement(y.Fragment,{key:`menu-${n}-${null===(l=null===(a=e.config)||void 0===a?void 0:a.menu)||void 0===l?void 0:l.length}`},y.createElement("h5",null,t.title),y.createElement("ul",null,null===(r=t.link)||void 0===r?void 0:r.map((e=>y.createElement("li",{key:e.target},y.createElement(X,{to:e.target},e.name))))))})),y.createElement("h5",null,"Settings"),y.createElement("ul",null,y.createElement("li",null,y.createElement(X,{to:u.profile},"Profile")),y.createElement("li",null,y.createElement(X,{to:"/changepassword"},"Change password")))))}function Ut(e){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},y.createElement("title",null,"Medplum Logo"),y.createElement("path",{fill:e.fill||"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),y.createElement("path",{fill:e.fill||"#654b87",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"}),y.createElement("path",{fill:e.fill||"#463068",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),y.createElement("path",{fill:e.fill||"#70d65b",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),y.createElement("path",{fill:e.fill||"#58b741",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}const qt=["$/_history","Communication?subject=$","Device?patient=$","DeviceRequest?patient=$","DiagnosticReport?subject=$","Media?subject=$","ServiceRequest?subject=$"];function zt(e){return y.createElement(jt,{value:e.patient,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:qt.map((t=>({request:{method:"GET",url:t.replaceAll("$",s(e))}})))}),createCommunication:(e,t,n)=>({resourceType:"Communication",subject:u(e),sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",subject:u(e),operator:u(t),issued:(new Date).toISOString(),content:n})})}var Qt;function Ht(e,t){return Object.assign(Object.assign({},e),{item:Bt(e.item,t)})}function Bt(e,t){if(e)return e.map((e=>function(e,t){const{linkId:n,type:a}=e;if(!n||!a)return e;if("group"===a)return Object.assign(Object.assign({},e),{item:Bt(e.item,t)});const l=t[n];if(!l)return e;let r;switch(a){case i.boolean:r={valueBoolean:"true"===l};break;case i.code:case i.Coding:r={valueCoding:{code:l}};break;case i.date:r={valueDate:l};break;case i.dateTime:case i.instant:r={valueDateTime:l};break;case i.decimal:r={valueDecimal:parseFloat(l)};break;case i.integer:case i.positiveInt:case i.unsignedInt:r={valueInteger:parseInt(l)};break;case i.SystemString:case i.string:case i.markdown:r={valueString:l};break;case i.time:r={valueTime:l};break;case i.uri:case i.url:r={valueUri:l};break;case i.canonical:case i.Reference:r={valueReference:{reference:l}}}if(!r)return e;return Object.assign(Object.assign({},e),{initial:[r]})}(e,t)))}function Wt(e){return"choice"===e.type||"open-choice"===e.type}function Kt(e){const t=z(),n=t.getProfile(),[a,l]=b(),r=ee(e.questionnaire),[o,i]=b();return O((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),O((()=>{i(r?function(e){return{resourceType:"QuestionnaireResponse",questionnaire:s(e),item:Yt(e.item)}}(r):void 0)}),[r]),a&&r?y.createElement(st,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&o&&e.onSubmit(Object.assign(Object.assign({},o),{questionnaire:s(r),subject:e.subject,source:u(n),authored:(new Date).toISOString()}))}},r.title&&y.createElement("h1",null,r.title),r.item&&y.createElement(Gt,{schema:a,items:r.item,onChange:function(e){i({resourceType:"QuestionnaireResponse",item:e})}}),y.createElement(F,{type:"submit",size:"large"},"OK")):null}function Gt(e){const[t,n]=b(Yt(e.items));function a(a,l){const r=t.slice();r[a]=l,n(r),e.onChange(r)}return y.createElement(y.Fragment,null,e.items.map(((t,n)=>t.type===Qt.group?y.createElement(Jt,{key:t.linkId,schema:e.schema,item:t,onChange:e=>a(n,e)}):y.createElement(ae,{key:t.linkId,htmlFor:t.linkId,title:t.text||""},y.createElement(Jt,{schema:e.schema,item:t,onChange:e=>a(n,e)})))))}function Jt(e){const t=e.item,n=t.type;if(!n)return null;const a=t.linkId;if(!a)return null;const l=t.initial&&t.initial.length>0?t.initial[0]:void 0;function o(n){e.onChange({linkId:t.linkId,answer:[n]})}switch(n){case Qt.group:return y.createElement("div",null,y.createElement("h3",null,t.text),t.item&&y.createElement(Gt,{schema:e.schema,items:t.item,onChange:function(n){e.onChange({linkId:t.linkId,item:n})}}));case Qt.boolean:return y.createElement("input",{type:"checkbox",id:a,name:a,value:"true",defaultChecked:null==l?void 0:l.valueBoolean,onChange:e=>o({valueBoolean:e.currentTarget.checked})});case Qt.decimal:return y.createElement(V,{type:"number",step:"any",name:a,defaultValue:null==l?void 0:l.valueDecimal,onChange:e=>o({valueDecimal:parseFloat(e)})});case Qt.integer:return y.createElement(V,{type:"number",step:1,name:a,defaultValue:null==l?void 0:l.valueInteger,onChange:e=>o({valueInteger:parseInt(e)})});case Qt.date:return y.createElement(V,{type:"date",name:a,defaultValue:null==l?void 0:l.valueDate,onChange:e=>o({valueDate:e})});case Qt.dateTime:return y.createElement(De,{type:"datetime-local",name:a,defaultValue:null==l?void 0:l.valueDateTime,onChange:e=>o({valueDateTime:e})});case Qt.time:return y.createElement(V,{type:"time",name:a,defaultValue:null==l?void 0:l.valueTime,onChange:e=>o({valueTime:e})});case Qt.string:return y.createElement(V,{type:"text",name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>o({valueString:e})});case Qt.text:return y.createElement(Pe,{name:a,defaultValue:null==l?void 0:l.valueString,onChange:e=>o({valueString:e})});case Qt.url:return y.createElement(V,{type:"url",name:a,defaultValue:null==l?void 0:l.valueUri,onChange:e=>o({valueUri:e})});case Qt.choice:case Qt.openChoice:return y.createElement("div",null,t.answerOption&&t.answerOption.map(((t,n)=>{const i=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],u=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],[s,m]=be(t,i),[d,p]=be(l,u),v="value"+c(m),h=`${a}-option-${n}`;return y.createElement("div",{key:h,className:"medplum-questionnaire-option-row"},y.createElement("div",{className:"medplum-questionnaire-option-checkbox"},y.createElement("input",{type:"radio",id:h,name:a,value:s,defaultChecked:m===p&&r(s)===r(d),onChange:()=>o({[v]:s})})),y.createElement("div",null,y.createElement("label",{htmlFor:h},y.createElement(ye,{schema:e.schema,property:i,propertyType:m,value:s}))))})));case Qt.attachment:return y.createElement(J,{name:a,defaultValue:null==l?void 0:l.valueAttachment,onChange:e=>o({valueAttachment:e})});case Qt.reference:return y.createElement(Be,{name:a,defaultValue:null==l?void 0:l.valueReference,onChange:e=>o({valueReference:e})});case Qt.quantity:return y.createElement(_e,{name:a,defaultValue:null==l?void 0:l.valueQuantity,onChange:e=>o({valueQuantity:e})})}return null}function Yt(e){var t;return null!==(t=null==e?void 0:e.map(Xt))&&void 0!==t?t:[]}function Xt(e){var t,n;return{linkId:e.linkId,item:Yt(e.item),answer:null!==(n=null===(t=e.initial)||void 0===t?void 0:t.map(Zt))&&void 0!==n?n:[]}}function Zt(e){return Object.assign({},e)}function en(e){const t=z(),n=ee(e.questionnaire),[a,l]=b(),[r,o]=b(),[i,c]=b(),[u,s]=b();function m(){s(void 0)}function d(){c(void 0)}return O((()=>{t.requestSchema("Questionnaire").then(l)}),[t]),O((()=>{var e;return o((e=null!=n?n:{resourceType:"Questionnaire"},Object.assign(Object.assign({},e),{id:e.id||on(),item:cn(e.item)}))),document.addEventListener("mouseover",m),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",m),document.removeEventListener("click",d)}}),[n]),a&&r?y.createElement("div",{className:"medplum-questionnaire-builder"},y.createElement(st,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(r)},y.createElement(tn,{schema:a,item:r,selectedKey:i,setSelectedKey:c,hoverKey:u,setHoverKey:s,onChange:o}),y.createElement(F,{type:"submit",size:"large"},"Save"))):null}function tn(e){var t;const n=e.item,a=e.item,l="resourceType"in e.item,r=l||a.type===Qt.group,o=null!==(t=a.linkId)&&void 0!==t?t:"[untitled]",i=e.selectedKey===e.item.id,c=e.hoverKey===e.item.id,u=C();function s(t){var n;const a=u.current;e.onChange(Object.assign(Object.assign({},a),{item:null===(n=a.item)||void 0===n?void 0:n.map((e=>e.id===t.id?t:e))}))}function m(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:[...null!==(a=null===(n=e.item)||void 0===n?void 0:n.item)&&void 0!==a?a:[],t]}))}function d(t,n){e.onChange(Object.assign(Object.assign({},u.current),{[t]:n}))}u.current=e.item;const p=i?"section editing":c?"section hovering":"section";return y.createElement("div",{"data-testid":a.linkId,className:p,onClick:function(t){H(t),e.setSelectedKey(e.item.id)},onMouseOver:function(t){H(t),e.setHoverKey(e.item.id)}},i?y.createElement(y.Fragment,null,l&&y.createElement("div",null,y.createElement(V,{defaultValue:n.title,onChange:e=>d("title",e)})),!r&&y.createElement("div",null,y.createElement(R,{defaultValue:a.type,onChange:e=>d("type",e)},y.createElement("option",{value:"display"},"Display"),y.createElement("optgroup",{label:"Question"},y.createElement("option",{value:"boolean"},"Boolean"),y.createElement("option",{value:"decimal"},"Decimal"),y.createElement("option",{value:"integer"},"Integer"),y.createElement("option",{value:"date"},"Date"),y.createElement("option",{value:"dateTime"},"Date/Time"),y.createElement("option",{value:"time"},"Time"),y.createElement("option",{value:"string"},"String"),y.createElement("option",{value:"text"},"Text"),y.createElement("option",{value:"url"},"URL"),y.createElement("option",{value:"choice"},"Choice"),y.createElement("option",{value:"open-choice"},"Open Choice"),y.createElement("option",{value:"attachment"},"Attachment"),y.createElement("option",{value:"reference"},"Reference"),y.createElement("option",{value:"quantity"},"Quantity")))),!l&&y.createElement(Pe,{style:{width:"95%",height:"100px",minHeight:"100px",margin:"8px 4px 4px 4px"},defaultValue:a.text,onChange:e=>d("text",e)}),Wt(a)&&y.createElement(nn,{schema:e.schema,options:a.answerOption,onChange:e=>d("answerOption",e)})):y.createElement(y.Fragment,null,n.title&&y.createElement("h1",null,n.title),a.text&&y.createElement("p",null,a.text),!r&&y.createElement(Jt,{schema:e.schema,item:a,onChange:()=>{}})),a.item&&a.item.map((t=>y.createElement("div",{key:t.id},y.createElement(tn,{schema:e.schema,item:t,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:s,onRemove:()=>function(t){var n,a;e.onChange(Object.assign(Object.assign({},e.item),{item:null===(a=null===(n=e.item)||void 0===n?void 0:n.item)||void 0===a?void 0:a.filter((e=>e!==t))}))}(t)})))),!r&&y.createElement("div",{className:"top-actions"},i?y.createElement(V,{defaultValue:a.linkId,onChange:e=>d("linkId",e),size:4}):y.createElement("div",null,o)),y.createElement("div",{className:"bottom-actions"},r&&y.createElement(y.Fragment,null,y.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:on(),linkId:rn("q"),type:"string",text:"Question"})}},"Add item"),y.createElement("a",{href:"#",onClick:e=>{e.preventDefault(),m({id:on(),linkId:rn("g"),type:"group",text:"Group"})}},"Add group")),!l&&y.createElement("a",{href:"#",onClick:t=>{t.preventDefault(),e.onRemove&&e.onRemove()}},"Remove")))}function nn(e){var t;const n=e.schema.types.QuestionnaireItemAnswerOption.properties["value[x]"],a=null!==(t=e.options)&&void 0!==t?t:[];return y.createElement("div",null,a.map((t=>{const[l,r]=be(t,n);return y.createElement("div",{key:t.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},y.createElement("div",null,y.createElement(Ke,{key:t.id,schema:e.schema,name:"value[x]",property:n,defaultPropertyType:r,defaultValue:l,onChange:(n,l)=>{const r=[...a],o=r.findIndex((e=>e.id===t.id));r[o]={id:t.id,[l]:n},e.onChange(r)}})),y.createElement("div",null,y.createElement("a",{href:"#",onClick:n=>{H(n),e.onChange(a.filter((e=>e.id!==t.id)))}},"Remove")))})),y.createElement("a",{href:"#",onClick:t=>{H(t),e.onChange([...a,{id:on()}])}},"Add choice"))}!function(e){e.group="group",e.display="display",e.question="question",e.boolean="boolean",e.decimal="decimal",e.integer="integer",e.date="date",e.dateTime="dateTime",e.time="time",e.string="string",e.text="text",e.url="url",e.choice="choice",e.openChoice="open-choice",e.attachment="attachment",e.reference="reference",e.quantity="quantity"}(Qt||(Qt={}));let an=1,ln=1;function rn(e){return e+an++}function on(){return"id-"+ln++}function cn(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||on(),item:cn(e.item),answerOption:un(e.answerOption)})))}function un(e){if(e)return e.map((e=>Object.assign(Object.assign({},e),{id:e.id||on()})))}function sn(e,t){return function(e,t,n){const a=[];let l=e;l.snake&&(l=l.prev);for(;l&&l.prev&&l.prev.j>=0;){const e=l.i,r=l.j;l=l.prev;const o=l.i,i=l.j,c={position:o,lines:t.slice(o,e)},u={position:i,lines:n.slice(i,r)};let s;s=0===c.lines.length&&u.lines.length>0?"insert":c.lines.length>0&&0===u.lines.length?"delete":"change",a.push({original:c,revised:u,type:s}),l.snake&&(l=l.prev)}return a}(function(e,t){const n=e.length,a=t.length,l=n+a+1,r=1+2*l,o=r/2|0,i=new Array(r);i[o+1]={i:0,j:-1,prev:void 0,snake:!0};for(let r=0;r<l;r++){for(let l=-r;l<=r;l+=2){const c=o+l,u=c-1,s=i[c+1],m=i[u];let d,p=0;l===-r||l!==r&&m.i<s.i?(p=s.i,d=s):(p=m.i+1,d=m),i[u]=void 0;let v=p-l,h={i:p,j:v,prev:mn(d),snake:!1};for(;p<n&&v<a&&e[p]===t[v];)p++,v++;if(p>h.i&&(h={i:p,j:v,prev:h,snake:!0}),i[c]=h,p>=n&&v>=a)return i[c]}i[o+r-1]=void 0}return}(e,t),e,t)}function mn(e){return e&&!e.snake&&e.prev?e.prev:e}function dn(e){const t=e.entry.map((e=>{var t;return{meta:null===(t=e.resource)||void 0===t?void 0:t.meta,lines:r(e.resource,!0).match(/[^\r\n]+/g)}})).sort(((e,t)=>e.meta.lastUpdated.localeCompare(t.meta.lastUpdated))),n=t[0].lines.map((e=>({id:t[0].meta.versionId,meta:t[0].meta,value:e,span:1})));return function(e,t){for(let n=1;n<t.length;n++){const a=sn(t[n-1].lines,t[n].lines);for(const l of a){const a=l.original.position,r=l.original.lines,o=l.revised.lines;if("delete"!==l.type&&"change"!==l.type||e.splice(a,r.length),"insert"===l.type||"change"===l.type)for(let r=0;r<l.revised.lines.length;r++)e.splice(a+r,0,{id:t[n].meta.versionId,meta:t[n].meta,value:o[r],span:1})}}}(n,t),function(e){let t=0;for(;t<e.length;){let n=t;for(;n<e.length&&e[n].id===e[t].id;)e[n].span=-1,n++;e[t].span=n-t,t=n}}(n),n}function pn(e){var t,n;const a=z(),[l,r]=b(e.history);if(O((()=>{!e.history&&e.resourceType&&e.id&&a.readHistory(e.resourceType,e.id).then((e=>r(e)))}),[a,e.history,e.resourceType,e.id]),!l)return y.createElement("div",null,"Loading...");const o=null===(n=null===(t=l.entry)||void 0===t?void 0:t[0])||void 0===n?void 0:n.resource,i=dn(l);return y.createElement("div",{className:"medplum-blame-container"},y.createElement("table",{className:"medplum-blame"},y.createElement("tbody",null,i.map(((e,t)=>y.createElement("tr",{key:"row-"+t,className:e.span>0?"start-row":"normal-row"},e.span>0&&y.createElement("td",{className:"details",rowSpan:e.span},y.createElement(A,{justifyContent:"space-between"},y.createElement(tt,{value:e.meta.author,size:"xsmall",link:!0}),y.createElement(X,{to:vn(o,e.meta.versionId)},hn(e.meta.lastUpdated)))),y.createElement("td",{className:"line-number"},t+1),y.createElement("td",{className:"line"},y.createElement("pre",{className:"line-pre"},e.value))))))))}function vn(e,t){return`/${e.resourceType}/${e.id}/_history/${t}`}function hn(e){const t=Math.floor((Date.now()-Date.parse(e))/1e3),n=Math.floor(t/31536e3);if(n>0)return fn(n,"year");const a=Math.floor(t/2592e3);if(a>0)return fn(a,"month");const l=Math.floor(t/86400);if(l>0)return fn(l,"day");const r=Math.floor(t/3600);if(r>0)return fn(r,"hour");const o=Math.floor(t/60);return o>0?fn(o,"minute"):fn(t,"second")}function fn(e,t){return`${e} ${1===e?t:t+"s"} ago`}function En(e){let t=e.original,n=e.revised;e.ignoreMeta&&(t=Object.assign(Object.assign({},t),{meta:void 0}),n=Object.assign(Object.assign({},n),{meta:void 0}));const a=sn(r(t,!0).match(/[^\r\n]+/g),r(n,!0).match(/[^\r\n]+/g));return y.createElement("pre",{style:{color:"gray"}},a.map(((e,t)=>y.createElement(gn,{key:"delta"+t,delta:e}))))}function gn(e){return y.createElement(y.Fragment,null,"...",y.createElement("br",null),e.delta.original.lines.length>0&&y.createElement("div",{className:"medplum-diff-removed"},e.delta.original.lines.join("\n")),e.delta.revised.lines.length>0&&y.createElement("div",{className:"medplum-diff-added"},e.delta.revised.lines.join("\n")),"...",y.createElement("br",null))}function yn(e){var t;const n=z(),[a,l]=b(e.history);return O((()=>{!e.history&&e.resourceType&&e.id&&n.readHistory(e.resourceType,e.id).then((e=>l(e)))}),[n,e.history,e.resourceType,e.id]),a?y.createElement("table",{className:"medplum-table"},y.createElement("thead",null,y.createElement("tr",null,y.createElement("th",null,"Author"),y.createElement("th",null,"Date"),y.createElement("th",null,"Version"))),y.createElement("tbody",null,null===(t=a.entry)||void 0===t?void 0:t.map((e=>{var t,n;return y.createElement(bn,{key:null===(n=null===(t=e.resource)||void 0===t?void 0:t.meta)||void 0===n?void 0:n.versionId,version:e.resource})})))):y.createElement("div",null,"Loading...")}function bn(e){var t,n,a;return y.createElement("tr",null,y.createElement("td",null,y.createElement(tt,{value:null===(t=e.version.meta)||void 0===t?void 0:t.author,link:!0})),y.createElement("td",null,y.createElement(se,{value:null===(n=e.version.meta)||void 0===n?void 0:n.lastUpdated})),y.createElement("td",null,y.createElement(X,{to:Cn(e.version)},null===(a=e.version.meta)||void 0===a?void 0:a.versionId)))}function Cn(e){var t;return`/${e.resourceType}/${e.id}/_history/${null===(t=e.meta)||void 0===t?void 0:t.versionId}`}function kn(e,t,n){var a;if("_lastUpdated"===n)return{name:"_lastUpdated",searchParam:{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}};if("meta.versionId"===n)return{name:"meta.versionId",searchParam:{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}};const l=e.types[t];let r=l.properties[n],o=null===(a=l.searchParams)||void 0===a?void 0:a[n];if(r&&!o&&l.searchParams){const e=`${t}.${n}`;o=Object.values(l.searchParams).find((t=>{var n;return null===(n=t.expression)||void 0===n?void 0:n.includes(e)}))}if(!r&&(null==o?void 0:o.expression)){r=d(e,t,o).elementDefinition}return{name:n,elementDefinition:r,searchParam:o}}function On(e){const[t,n]=b(100),[a,l]=b(100);if(!e.visible)return null;return y.createElement(y.Fragment,null,y.createElement("div",{className:"modal-dialog-bg"}),y.createElement("div",{className:"modal-dialog","data-testid":"dialog",tabIndex:0,style:{left:t+"px",top:a+"px"}},y.createElement("div",{className:"modal-dialog-title",onMouseDown:e=>function(e){H(e);const r=e.clientX-t,o=e.clientY-a;function i(e){H(e),n(e.clientX-r),l(e.clientY-o)}document.addEventListener("mouseup",(function e(t){H(t),document.removeEventListener("mouseup",e,!0),document.removeEventListener("mousemove",i,!0)}),!0),document.addEventListener("mousemove",i,!0)}(e)},y.createElement("span",{className:"modal-dialog-title-text"},e.title),y.createElement("span",{className:"modal-dialog-title-close",tabIndex:0,onClick:e.onCancel},y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},y.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),y.createElement("div",{className:"modal-dialog-content"},e.children),y.createElement("div",{className:"modal-dialog-buttons"},y.createElement(F,{testid:"dialog-ok",onClick:e.onOk},"OK"),y.createElement(F,{testid:"dialog-cancel",onClick:e.onCancel},"Cancel"))))}const Tn={string:[p.EQUALS,p.NOT_EQUALS,p.CONTAINS,p.EXACT],fulltext:[p.EQUALS,p.NOT_EQUALS,p.CONTAINS,p.EXACT],token:[p.EQUALS,p.NOT_EQUALS],reference:[p.EQUALS,p.NOT_EQUALS],numeric:[p.EQUALS,p.NOT_EQUALS,p.GREATER_THAN,p.LESS_THAN,p.GREATER_THAN_OR_EQUALS,p.LESS_THAN_OR_EQUALS],date:[p.EQUALS,p.NOT_EQUALS,p.GREATER_THAN,p.LESS_THAN,p.GREATER_THAN_OR_EQUALS,p.LESS_THAN_OR_EQUALS,p.STARTS_AFTER,p.ENDS_BEFORE,p.APPROXIMATELY],datetime:[p.EQUALS,p.NOT_EQUALS,p.GREATER_THAN,p.LESS_THAN,p.GREATER_THAN_OR_EQUALS,p.LESS_THAN_OR_EQUALS,p.STARTS_AFTER,p.ENDS_BEFORE,p.APPROXIMATELY]},jn={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",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type"};function xn(e,t){return Object.assign(Object.assign({},e),{filters:t,offset:0,name:void 0})}function wn(e){return xn(e,[])}function Sn(e,t){return xn(e,(e.filters||[]).filter((e=>e.code!==t)))}function Nn(e,t,n,a,l){l&&(e=Sn(e,t));const r=[];return e.filters&&r.push(...e.filters),r.push({code:t,operator:n,value:a||""}),xn(e,r)}function Vn(e,t){if(e.fields&&e.fields.includes(t))return e;const n=[];return e.fields&&n.push(...e.fields),n.push(t),Object.assign(Object.assign({},e),{fields:n,name:void 0})}function Dn(e,t){if(!e.filters)return e;const n=[...e.filters];return n.splice(t,1),Object.assign(Object.assign({},e),{filters:n,name:void 0})}function An(e,t){return Pn(e,t,-1)}function Rn(e,t){return Pn(e,t,0)}function In(e,t){return Pn(e,t,1)}function Pn(e,t,n){const a=new Date;a.setDate(a.getDate()+n),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setDate(l.getDate()+1),l.setTime(l.getTime()-1),zn(e,t,a,l)}function Ln(e,t){return Fn(e,t,-1)}function Mn(e,t){return Fn(e,t,0)}function $n(e,t){return Fn(e,t,1)}function Fn(e,t,n){const a=new Date;a.setMonth(a.getMonth()+n),a.setDate(1),a.setHours(0,0,0,0);const l=new Date(a.getTime());return l.setMonth(l.getMonth()+1),l.setDate(1),l.setHours(0,0,0,0),l.setTime(l.getTime()-1),zn(e,t,a,l)}function _n(e,t){const n=new Date;n.setMonth(0),n.setDate(1),n.setHours(0,0,0,0);return zn(e,t,n,new Date)}function Un(e,t,n){return zn(e,t,n,n)}function qn(e,t,n,a){return Qn(e=Sn(e,t),t,n,a)}function zn(e,t,n,a){return e=Qn(e=Sn(e,t),t,p.GREATER_THAN_OR_EQUALS,n),e=Qn(e,t,p.LESS_THAN_OR_EQUALS,a)}function Qn(e,t,n,a){return Nn(e,t,n,a.toISOString())}function Hn(e,t,n,a){return Nn(e=Sn(e,t),t,n,a)}function Bn(e,t){return!!e.filters&&void 0!==e.filters.find((e=>e.code===t))}function Wn(e,t){return e.offset===t?e:Object.assign(Object.assign({},e),{offset:t,name:void 0})}function Kn(e,t){var n,a;const l=null!==(n=e.count)&&void 0!==n?n:20,r=(null!==(a=e.offset)&&void 0!==a?a:0)+t*l;return Wn(e,Math.max(r,0))}function Gn(e,t,n){return t===Yn(e)&&void 0!==n&&n===Xn(e)?e:Object.assign(Object.assign({},e),{sortRules:[{code:t,descending:!!n}],name:void 0})}function Jn(e,t){let n=!1;return Yn(e)===t&&(n=!Xn(e)),Gn(e,t,n)}function Yn(e){const t=e.sortRules;if(!t||0===t.length)return;const n=t[0].code;return n.startsWith("-")?n.substr(1):n}function Xn(e){const t=e.sortRules;return!(!t||0===t.length)&&!!t[0].descending}function Zn(e){return Tn[e.type]}function ea(e){var t;return null!==(t=jn[e])&&void 0!==t?t:""}function ta(e){let t=e;return t.includes(".")&&(t=t.split(".").pop()),"id"===t?"ID":"versionId"===t?"Version ID":(t=t.replace("[x]",""),t=t.replace(/([A-Z])/g," $1"),t=t.replace(/[-_]/g," "),t=t.replace(/\s+/g," "),t=t.trim(),t.split(/\s/).map(c).join(" "))}function na(e,t,n){var a,l;const r=n.name;return"id"===r?t.id:"meta.versionId"===r?null===(a=t.meta)||void 0===a?void 0:a.versionId:"_lastUpdated"===r?y.createElement(se,{value:null===(l=t.meta)||void 0===l?void 0:l.lastUpdated}):n.elementDefinition&&`${t.resourceType}.${n.name}`===n.elementDefinition.path?function(e,t,n){const[a,l]=be(t,n);if(!a)return null;return y.createElement(ye,{schema:e,property:n,propertyType:l,value:a,maxWidth:200,ignoreMissingValues:!0,link:!1})}(e,t,n.elementDefinition):n.searchParam&&n.name===n.searchParam.code?function(e,t,n,a){var l,r;const o=v(n.expression,t);if(!o||0===o.length)return null;if(a)return y.createElement(ye,{schema:e,property:a,propertyType:null===(r=null===(l=a.type)||void 0===l?void 0:l[0])||void 0===r?void 0:r.code,value:o,maxWidth:200,ignoreMissingValues:!0});return y.createElement(y.Fragment,null,o.map(((e,t)=>y.createElement("span",{key:`${t}-${o.length}`},"object"==typeof e?JSON.stringify(e):e))))}(e,t,n.searchParam,n.elementDefinition):null}function aa(e){var t;const[n,a]=b({search:JSON.parse(r(e.search))}),l=C(null),o=C(null);function i(){var e,t;const r=null!==(e=n.search.fields)&&void 0!==e?e:[],o=null===(t=l.current)||void 0===t?void 0:t.value;if(o){const e=[...r,o];a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function c(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l];e.splice(e.indexOf(r),1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}function u(e,t,n){const a=e[t];e[t]=e[n],e[n]=a}if(O((()=>{a({search:e.search})}),[e.search]),!e.visible)return null;const s=e.search.resourceType,m=e.schema.types[s],d=null!==(t=n.search.fields)&&void 0!==t?t:[],p=function(e){let t=Object.keys(e.properties);e.searchParams&&(t=[...new Set([...t,...Object.keys(e.searchParams)])]);const n=[],a=[];for(const e of t){const t=ta(e);a.includes(t)||(n.push(e),a.push(t))}return n}(m).filter((e=>!(null==d?void 0:d.includes(e)))).sort();return y.createElement(On,{title:"Fields",visible:e.visible,onOk:()=>e.onOk(n.search),onCancel:e.onCancel},y.createElement("div",null,y.createElement("table",{style:{margin:"auto"}},y.createElement("thead",null,y.createElement("tr",null,y.createElement("th",{colSpan:2,align:"center"},"Available"),y.createElement("th",{colSpan:2,align:"center"},"Selected"))),y.createElement("tbody",null,y.createElement("tr",null,y.createElement("td",{colSpan:2,align:"center"},y.createElement("select",{ref:l,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&i()}(e),onDoubleClick:()=>{i()},"data-testid":"available"},p.map((e=>y.createElement("option",{key:e,value:e},ta(e)))))),y.createElement("td",{colSpan:2,align:"center"},y.createElement("select",{ref:o,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:e=>function(e){"Enter"===e.key&&c()}(e),onDoubleClick:()=>{c()},"data-testid":"selected"},d.map((e=>y.createElement("option",{key:e,value:e},ta(e)))))))),y.createElement("tfoot",null,y.createElement("tr",null,y.createElement("td",{align:"center"},y.createElement(F,{size:"small",onClick:i},"Add")),y.createElement("td",{align:"center"},y.createElement(F,{size:"small",onClick:c},"Remove")),y.createElement("td",{align:"center"},y.createElement(F,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);u(e,t,t-1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Up")),y.createElement("td",{align:"center"},y.createElement(F,{size:"small",onClick:function(){var e,t;const l=null!==(e=n.search.fields)&&void 0!==e?e:[],r=null===(t=o.current)||void 0===t?void 0:t.value;if(r){const e=[...l],t=e.indexOf(r);u(e,t,t+1),a({search:Object.assign(Object.assign({},n.search),{fields:e})})}}},"Down")))))))}function la(e){var t,n;const a=null===(n=null===(t=z().getSchema().types[e.resourceType])||void 0===t?void 0:t.searchParams)||void 0===n?void 0:n[e.filter.code],l=e.filter;return"reference"===(null==a?void 0:a.type)?y.createElement(Qe,{value:{reference:l.value}}):"_lastUpdated"===e.filter.code||"datetime"===(null==a?void 0:a.type)?y.createElement(se,{value:l.value}):y.createElement(y.Fragment,null,l.value)}function ra(e){var t;const n="filter-value";switch(d(e.schema,e.resourceType,e.searchParam).type){case h.REFERENCE:return y.createElement(Be,{name:n,defaultValue:{reference:e.defaultValue},targetTypes:null===(t=e.searchParam)||void 0===t?void 0:t.target,onChange:t=>{t?e.onChange(t.reference):e.onChange("")}});case h.BOOLEAN:return y.createElement("input",{type:"checkbox",name:n,"data-testid":n,defaultChecked:"true"===e.defaultValue,value:"true",onChange:t=>e.onChange(t.target.checked?"true":"false")});case h.DATE:return y.createElement(V,{type:"date",testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case h.DATETIME:return y.createElement(De,{testid:n,defaultValue:e.defaultValue,onChange:e.onChange});case h.NUMBER:return y.createElement(V,{type:"number",defaultValue:e.defaultValue,onChange:e.onChange});case h.QUANTITY:return y.createElement(_e,{name:n,defaultValue:{},onChange:t=>{t?e.onChange(`${t.value}`):e.onChange("")}});default:return y.createElement(V,{testid:n,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange})}}function oa(e){const[t,n]=b(JSON.parse(r(e.search))),[a,l]=b(-1),o=C(t);if(o.current=t,O((()=>{n(JSON.parse(r(e.search)))}),[e.search]),!e.visible)return null;const i=e.schema,c=e.search.resourceType,u=i.types[c].searchParams,s=t.filters||[];return y.createElement(On,{title:"Filters",visible:e.visible,onOk:()=>e.onOk(o.current),onCancel:e.onCancel},y.createElement("div",{className:"medplum-filter-editor"},y.createElement("table",{className:"medplum-filter-editor-table"},y.createElement("thead",null,y.createElement("tr",null,y.createElement("th",{style:{width:"30%"}},"Field"),y.createElement("th",{style:{width:"30%"}},"Operation"),y.createElement("th",{style:{width:"30%"}},"Value"),y.createElement("th",{style:{width:"10%"}},"Actions"))),y.createElement("tbody",null,s.map(((e,t)=>t===a?y.createElement(ca,{key:`filter-${t}-${s.length}-input`,schema:i,resourceType:c,searchParams:u,defaultValue:e,okText:"Save",onOk:e=>{const a=[...s];a[t]=e,n(xn(o.current,a)),l(-1)},onCancel:()=>l(-1)}):y.createElement(ia,{key:`filter-${t}-${s.length}-display`,resourceType:c,searchParams:u,filter:e,onEdit:()=>l(t),onDelete:()=>n(Dn(o.current,t))}))),y.createElement(ca,{schema:i,resourceType:c,searchParams:u,okText:"Add",onOk:function(e){n(Nn(o.current,e.code,e.operator,e.value))}})))))}function ia(e){const{filter:t}=e;return y.createElement("tr",null,y.createElement("td",null,ta(t.code)),y.createElement("td",null,ea(t.operator)),y.createElement("td",null,y.createElement(la,{resourceType:e.resourceType,filter:t})),y.createElement("td",null,y.createElement(F,{size:"small",onClick:e.onEdit},"Edit"),y.createElement(F,{size:"small",onClick:e.onDelete},"Delete")))}function ca(e){var t;const[n,a]=b(null!==(t=e.defaultValue)&&void 0!==t?t:{}),l=C(n);l.current=n;const r=e.searchParams[n.code],o=r&&Zn(r);return y.createElement("tr",null,y.createElement("td",null,y.createElement(R,{testid:"filter-field",defaultValue:l.current.code,onChange:function(e){a(Object.assign(Object.assign({},l.current),{code:e}))}},y.createElement("option",{value:""}),Object.keys(e.searchParams).map((e=>y.createElement("option",{key:e,value:e},ta(e)))))),y.createElement("td",null,o&&y.createElement(R,{testid:"filter-operation",defaultValue:n.operator,onChange:function(e){a(Object.assign(Object.assign({},l.current),{operator:e}))}},y.createElement("option",{value:""}),o.map((e=>y.createElement("option",{key:e,value:e},ea(e)))))),y.createElement("td",null,r&&n.operator&&y.createElement(ra,{schema:e.schema,resourceType:e.resourceType,searchParam:r,defaultValue:n.value,onChange:function(e){a(Object.assign(Object.assign({},l.current),{value:e}))}})),y.createElement("td",null,n.code&&n.operator&&n.value&&y.createElement(F,{size:"small",onClick:()=>{e.onOk(l.current),a({})}},e.okText),e.onCancel&&y.createElement(F,{size:"small",onClick:e.onCancel},"Cancel")))}function ua(e){var t;const[n,a]=b(null!==(t=e.defaultValue)&&void 0!==t?t:"");if(!e.visible||!e.searchParam||!e.filter)return null;function l(){e.onOk(Object.assign(Object.assign({},e.filter),{value:n}))}return y.createElement(On,{title:e.title,visible:e.visible,onOk:l,onCancel:e.onCancel},y.createElement("div",{style:{width:500}},y.createElement(st,{onSubmit:l},y.createElement(ra,{schema:e.schema,resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:n,autoFocus:!0,onChange:a}))))}function sa(){return y.createElement("div",{className:"medplum-menu-separator"})}function ma(e){const[t,n]=b(!1),[a,l]=b(!1),[r,o]=b(void 0),i=C(null),c=C(!1);c.current=t;const u=C(!1);function s(){const e=i.current;e&&(o(e.getBoundingClientRect()),l(!0))}return u.current=a,O((()=>{const e=window.setInterval((()=>{!u.current&&c.current?s():u.current&&!c.current&&l(!1)}),150);return()=>window.clearInterval(e)}),[]),y.createElement("div",{ref:i,className:"medplum-menu-item medplum-submenu-item",onClick:()=>s(),onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1)},e.title,y.createElement("span",{className:"medplum-submenu-arrow"},"►"),y.createElement(gt,{visible:a,anchor:r,autoClose:!0,onClose:()=>l(!1)},e.children))}function da(e){if(!e.searchParam)return null;const t=e.searchParam.code,n=e.searchParam.type;function a(n){r(Gn(e.search,t,n))}function l(n){e.onPrompt({code:t,operator:n,value:""})}function r(t){e.onChange&&e.onChange(t)}return y.createElement(gt,{visible:e.visible,anchor:{left:e.x,right:e.x,top:e.y,bottom:e.y},autoClose:!0,onClose:e.onClose},y.createElement(dt,{onClick:()=>a(!1)},function(){switch(n){case"date":return"Sort Oldest to Newest";case"number":case"quantity":return"Sort Smallest to Largest";default:return"Sort A to Z"}}()),y.createElement(dt,{onClick:()=>a(!0)},function(){switch(n){case"date":return"Sort Newest to Oldest";case"number":case"quantity":return"Sort Largest to Smallest";default:return"Sort Z to A"}}()),y.createElement(sa,null),y.createElement(dt,{onClick:()=>{r(Sn(e.search,t))}},"Clear filters"),"date"===n?y.createElement(ma,{title:"Date filters"},y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Equals..."),y.createElement(dt,{onClick:()=>l(p.NOT_EQUALS)},"Does not equal..."),y.createElement(sa,null),y.createElement(dt,{onClick:()=>l(p.ENDS_BEFORE)},"Before..."),y.createElement(dt,{onClick:()=>l(p.STARTS_AFTER)},"After..."),y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Between..."),y.createElement(sa,null),y.createElement(dt,{onClick:()=>r(In(e.search,t))},"Tomorrow"),y.createElement(dt,{onClick:()=>r(Rn(e.search,t))},"Today"),y.createElement(dt,{onClick:()=>r(An(e.search,t))},"Yesterday"),y.createElement(sa,null),y.createElement(dt,{onClick:()=>r($n(e.search,t))},"Next Month"),y.createElement(dt,{onClick:()=>r(Mn(e.search,t))},"This Month"),y.createElement(dt,{onClick:()=>r(Ln(e.search,t))},"Last Month"),y.createElement(sa,null),y.createElement(dt,{onClick:()=>r(_n(e.search,t))},"Year to date"),y.createElement(sa,null),y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Is set"),y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Is not set")):y.createElement(ma,{title:"Text filters"},y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Equals..."),y.createElement(dt,{onClick:()=>l(p.NOT_EQUALS)},"Does not equal..."),y.createElement(sa,null),y.createElement(dt,{onClick:()=>l(p.CONTAINS)},"Contains..."),y.createElement(dt,{onClick:()=>l(p.EQUALS)},"Does not contain...")),y.createElement(sa,null),y.createElement(dt,{onClick:()=>{var t;return l("reference"===(null===(t=e.searchParam)||void 0===t?void 0:t.type)?p.EQUALS:p.CONTAINS)}},"Search"))}function pa(e){return y.createElement("div",{className:"medplum-title-bar"},e.children)}class va extends Event{constructor(e){super("change"),this.definition=e}}class ha extends Event{constructor(e){super("load"),this.response=e}}class fa extends Event{constructor(e,t){super("click"),this.resource=e,this.browserEvent=t}}function Ea(e){var t,n,a,l;const r=z(),[o,i]=b(),[c,u]=b(),{search:s,onLoad:m}=e,[d,p]=b({selected:{},popupVisible:!1,popupX:0,popupY:0,popupSearchParam:void 0,fieldEditorVisible:!1,filterEditorVisible:!1,filterDialogVisible:!1}),v=C(d);function h(t){e.onChange&&e.onChange(new va(t))}function k(t,n){B(t.target)||(H(t),1!==t.button&&e.onClick&&e.onClick(new fa(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new fa(n,t)))}v.current=d,O((()=>{u(void 0),r.search(s.resourceType,f(Object.assign(Object.assign({},s),{total:"accurate"}))).then((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:e})),m&&m(new ha(e))})).catch((e=>{p(Object.assign(Object.assign({},v.current),{searchResponse:void 0})),u(e)}))}),[r,s,m]),O((()=>{r.requestSchema(e.search.resourceType).then((e=>{i(Object.assign({},e))}))}),[r,e.search.resourceType]);if(!(null===(t=null==o?void 0:o.types)||void 0===t?void 0:t[e.search.resourceType]))return y.createElement(mt,null);const T=e.checkboxesEnabled,j=function(e,t){const n=t.resourceType,a=[];for(const l of t.fields||["id","_lastUpdated"])a.push(kn(e,n,l));return a}(o,s),x=s.resourceType,w=d.searchResponse,S=null==w?void 0:w.entry,N=null==S?void 0:S.map((e=>e.resource)),V=null===(a=null===(n=e.userConfig)||void 0===n?void 0:n.search)||void 0===a?void 0:a.filter((e=>{var t;return null===(t=e.criteria)||void 0===t?void 0:t.startsWith(x)}));return y.createElement("div",{className:"medplum-search-control",onContextMenu:e=>H(e),"data-testid":"search-control"},y.createElement(pa,null,y.createElement("div",null,y.createElement("h1",null,y.createElement("a",{href:`https://www.hl7.org/fhir/${x.toLowerCase()}.html`,target:"_blank",rel:"noopener"},x)),V&&y.createElement(R,{testid:"saved-search-select",style:{width:80},onChange:e=>{h(E(e))}},y.createElement("option",null),V.map(((e,t)=>y.createElement("option",{key:`${t}-${V.length}`,value:e.criteria},e.name)))),y.createElement(F,{testid:"fields-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!0}))},"Fields"),y.createElement(F,{testid:"filters-button",size:"small",onClick:()=>p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!0}))},"Filters"),e.onNew&&y.createElement(F,{size:"small",onClick:e.onNew},"New..."),e.onExport&&y.createElement(F,{size:"small",onClick:e.onExport},"Export..."),e.onDelete&&y.createElement(F,{size:"small",onClick:()=>e.onDelete(Object.keys(d.selected))},"Delete..."),e.onBulk&&y.createElement(F,{size:"small",onClick:()=>e.onBulk(Object.keys(d.selected))},"Bulk...")),w&&y.createElement("div",null,y.createElement("span",{className:"medplum-search-summary"},function(e,t){var n;return Math.min(t,(null!==(n=e.offset)&&void 0!==n?n:0)+1)}(s,w.total),"-",function(e,t){var n,a;return Math.min(t,((null!==(n=e.offset)&&void 0!==n?n:0)+1)*(null!==(a=e.count)&&void 0!==a?a:g))}(s,w.total)," of"," ",null===(l=w.total)||void 0===l?void 0:l.toLocaleString()),y.createElement(F,{testid:"prev-page-button",size:"small",onClick:()=>h(Kn(s,-1))},"<<"),y.createElement(F,{testid:"next-page-button",size:"small",onClick:()=>h(Kn(s,1))},">>"))),y.createElement("table",null,y.createElement("thead",null,y.createElement("tr",null,T&&y.createElement("th",{className:"medplum-search-icon-cell"},y.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=v.current;if(!(null===(e=n.searchResponse)||void 0===e?void 0:e.entry)||0===n.searchResponse.entry.length)return!1;for(const e of n.searchResponse.entry)if((null===(t=e.resource)||void 0===t?void 0:t.id)&&!n.selected[e.resource.id])return!1;return!0}(),onChange:e=>function(e){var t;e.stopPropagation();const n=e.target.checked,a={},l=null===(t=v.current)||void 0===t?void 0:t.searchResponse;n&&(null==l?void 0:l.entry)&&l.entry.forEach((e=>{var t;(null===(t=e.resource)||void 0===t?void 0:t.id)&&(a[e.resource.id]=!0)})),p(Object.assign(Object.assign({},v.current),{selected:a}))}(e)})),j.map((e=>y.createElement("th",{key:e.name,onClick:t=>function(e,t){p(Object.assign(Object.assign({},v.current),{popupVisible:!0,popupX:e.clientX,popupY:e.clientY,popupSearchParam:t}))}(t,e.searchParam)},ta(e.name),e.searchParam&&y.createElement(ba,null))))),y.createElement("tr",null,T&&y.createElement("th",{className:"filters medplum-search-icon-cell"}),j.map((t=>y.createElement("th",{key:t.name,className:"filters"},t.searchParam&&y.createElement(ya,{resourceType:x,searchParam:t.searchParam,filters:e.search.filters})))))),y.createElement("tbody",null,null==N?void 0:N.map((e=>e&&y.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},T&&y.createElement("td",{className:"medplum-search-icon-cell"},y.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!d.selected[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},v.current.selected);n?a[t]=!0:delete a[t],p(Object.assign(Object.assign({},v.current),{selected:a}))}(t,e.id)})),j.map((t=>y.createElement("td",{key:t.name},na(o,e,t))))))))),0===(null==N?void 0:N.length)&&y.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),c&&y.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},y.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(c,void 0,2))),y.createElement(da,{schema:o,search:e.search,visible:d.popupVisible,x:d.popupX,y:d.popupY,searchParam:d.popupSearchParam,onPrompt:e=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,filterDialogVisible:!0,filterDialogFilter:e}))},onChange:e=>{h(e),p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParam:void 0}))},onClose:()=>{p(Object.assign(Object.assign({},v.current),{popupVisible:!1,popupSearchParam:void 0}))}}),y.createElement(aa,{schema:o,search:e.search,visible:v.current.fieldEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{fieldEditorVisible:!1}))}}),y.createElement(oa,{schema:o,search:e.search,visible:v.current.filterEditorVisible,onOk:e=>{h(e),p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterEditorVisible:!1}))}}),y.createElement(ua,{visible:v.current.filterDialogVisible,title:"Input",schema:o,resourceType:x,searchParam:d.popupSearchParam,filter:d.filterDialogFilter,defaultValue:"",onOk:t=>{h(Nn(e.search,t.code,t.operator,t.value)),p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))},onCancel:()=>{p(Object.assign(Object.assign({},v.current),{filterDialogVisible:!1}))}}))}const ga=y.memo(Ea);function ya(e){var t;const n=(null!==(t=e.filters)&&void 0!==t?t:[]).filter((t=>t.code===e.searchParam.code));return 0===n.length?y.createElement("span",null,"no filters"):y.createElement(y.Fragment,null,n.map(((t,a)=>y.createElement("div",{key:`filter-${a}-${n.length}`},ea(t.operator)," ",y.createElement(la,{resourceType:e.resourceType,filter:t})))))}function ba(){return y.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",stroke:"rgba(0, 0, 0, 0.3)",strokeWidth:2},y.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"}))}function Ca(e){return y.createElement(jt,{value:e.serviceRequest,buildSearchRequests:e=>({resourceType:"Bundle",type:"batch",entry:[{request:{method:"GET",url:`${s(e)}/_history`}},{request:{method:"GET",url:`Communication?based-on=${s(e)}`}},{request:{method:"GET",url:`Media?_count=100&based-on=${s(e)}`}},{request:{method:"GET",url:`DiagnosticReport?based-on=${s(e)}`}}]}),createCommunication:(e,t,n)=>({resourceType:"Communication",basedOn:[u(e)],subject:e.subject,sender:u(t),sent:(new Date).toISOString(),payload:[{contentString:n}]}),createMedia:(e,t,n)=>({resourceType:"Media",basedOn:[u(e)],subject:e.subject,operator:u(t),issued:(new Date).toISOString(),content:n})})}function ka(e,t){const n=document.getElementsByTagName("head")[0],a=document.createElement("script");a.async=!0,a.src=e,a.onload=t||null,n.appendChild(a)}function Oa(e){const t=z(),{handleAuthResponse:n}=e,a=function(e){var t,n;if(e)return e;const a=window.location.protocol+"//"+window.location.host;if((null!==(n=null===(t="http://localhost:3000,http://localhost:6006,https://app.medplum.com,https://docs.medplum.com")||void 0===t?void 0:t.split(","))&&void 0!==n?n:[]).includes(a))return"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com";return}(e.googleClientId),l=C(null),[r,o]=b("undefined"!=typeof google),[i,c]=b(!1),[u,s]=b(!1);return O((()=>{"undefined"!=typeof google?(i||(google.accounts.id.initialize({client_id:a,callback:e=>t.startGoogleLogin(e).then(n)}),c(!0)),l.current&&!u&&(google.accounts.id.renderButton(l.current,{}),s(!0))):ka("https://accounts.google.com/gsi/client",(()=>o(!0)))}),[t,a,i,r,l,u,n]),a?y.createElement("div",{ref:l}):null}function Ta(e){const t=z(),[n,a]=b(void 0),[l,r]=b(void 0);function o(n){n.login&&a(n.login),n.memberships&&r(n.memberships),n.code&&t.processCode(n.code).then((()=>{e.onSuccess&&e.onSuccess()})).catch(console.log)}return y.createElement(Rt,{width:450},n?l?y.createElement(xa,{login:n,memberships:l,handleAuthResponse:o}):y.createElement("div",null,"Success"):y.createElement(ja,{googleClientId:e.googleClientId,onForgotPassword:e.onForgotPassword,onRegister:e.onRegister,handleAuthResponse:o},e.children))}function ja(e){const t=z(),[n,a]=b(),l=N(n,void 0);return y.createElement(st,{style:{maxWidth:400},onSubmit:n=>{t.startLogin({email:n.email,password:n.password,remember:"true"===n.remember}).then(e.handleAuthResponse).catch(a)}},y.createElement("div",{className:"medplum-center"},e.children),l&&y.createElement("div",{className:"medplum-input-error"},l.map((e=>{var t,n;return y.createElement("div",{"data-testid":"text-field-error",key:null===(t=e.details)||void 0===t?void 0:t.text},null===(n=e.details)||void 0===n?void 0:n.text)}))),y.createElement(ae,{title:"Email",htmlFor:"email",outcome:n},y.createElement(V,{name:"email",type:"email",testid:"email",required:!0,autoFocus:!0,outcome:n})),y.createElement(ae,{title:"Password",htmlFor:"password",outcome:n},y.createElement(V,{name:"password",type:"password",testid:"password",autoComplete:"off",required:!0,outcome:n})),y.createElement("div",{className:"medplum-signin-buttons"},(e.onForgotPassword||e.onRegister)&&y.createElement("div",null,e.onForgotPassword&&y.createElement(X,{testid:"forgotpassword",onClick:e.onForgotPassword},"Forgot password"),e.onRegister&&y.createElement(X,{testid:"register",onClick:e.onRegister},"Register")),y.createElement("div",null,y.createElement("input",{type:"checkbox",id:"remember",name:"remember",value:"true"}),y.createElement("label",{htmlFor:"remember"},"Remember me")),y.createElement("div",null,y.createElement(F,{type:"submit",testid:"submit"},"Sign in"))),y.createElement("div",{className:"medplum-signin-google-container"},y.createElement(Oa,{googleClientId:e.googleClientId,handleAuthResponse:e.handleAuthResponse})))}function xa(e){const t=z();return y.createElement("div",null,y.createElement("div",{className:"medplum-center"},y.createElement(Ut,{size:32}),y.createElement("h1",null,"Choose profile")),e.memberships.map((n=>{var a,l,r;return y.createElement("div",{className:"medplum-nav-menu-profile",key:n.id,onClick:()=>{t.post("auth/profile",{login:e.login,profile:n.id}).then(e.handleAuthResponse)}},y.createElement("div",{className:"medplum-nav-menu-profile-icon"},y.createElement(te,{alt:null===(a=n.profile)||void 0===a?void 0:a.display})),y.createElement("div",{className:"medplum-nav-menu-profile-label"},null===(l=n.profile)||void 0===l?void 0:l.display,y.createElement("div",{className:"medplum-nav-menu-profile-help-text"},null===(r=n.project)||void 0===r?void 0:r.display)))})))}function wa(e){const t=v(e.path,e.resource);if(t.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${t.length} elements [${JSON.stringify(t,null,2)}]`);return y.createElement(ye,{value:t[0]||"",propertyType:e.propertyType})}function Sa(e){var t,n,a,l,r;const o=z(),[i,c]=b(),[u,s]=b(),{query:m,fields:d}=e,[p,v]=b(),[h,f]=b({}),E=C();E.current=p;const g=C({});function k(t,n){B(t.target)||(H(t),1!==t.button&&e.onClick&&e.onClick(new fa(n,t)),1===t.button&&e.onAuxClick&&e.onAuxClick(new fa(n,t)))}g.current=h,O((()=>{s(void 0),o.graphql(m).then(v).catch(s)}),[o,m]),O((()=>{o.requestSchema(e.resourceType).then((e=>{c(Object.assign({},e))}))}),[o,e.resourceType]);if(!(null===(t=null==i?void 0:i.types)||void 0===t?void 0:t[e.resourceType]))return y.createElement(mt,null);const T=e.checkboxesEnabled;return y.createElement("div",{className:"medplum-search-control",onContextMenu:e=>H(e),"data-testid":"search-control"},y.createElement("table",null,y.createElement("thead",null,y.createElement("tr",null,T&&y.createElement("th",{className:"medplum-search-icon-cell"},y.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:function(){var e,t;const n=null===(t=null===(e=E.current)||void 0===e?void 0:e.data)||void 0===t?void 0:t.ResourceList;if(!n||0===n.length)return!1;for(const e of n)if((null==e?void 0:e.id)&&!g.current[e.id])return!1;return!0}(),onChange:e=>function(e){var t,n;e.stopPropagation();const a=e.target.checked,l={},r=null===(n=null===(t=E.current)||void 0===t?void 0:t.data)||void 0===n?void 0:n.ResourceList;a&&r&&r.forEach((e=>{(null==e?void 0:e.id)&&(l[e.id]=!0)})),f(l)}(e)})),d.map((e=>y.createElement("th",{key:e.name},e.name))))),y.createElement("tbody",null,null===(a=null===(n=null==p?void 0:p.data)||void 0===n?void 0:n.ResourceList)||void 0===a?void 0:a.map((e=>e&&y.createElement("tr",{key:e.id,"data-testid":"search-control-row",onClick:t=>k(t,e),onAuxClick:t=>k(t,e)},T&&y.createElement("td",{className:"medplum-search-icon-cell"},y.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${e.id}`,checked:!!h[e.id],onChange:t=>function(e,t){e.stopPropagation();const n=e.target.checked,a=Object.assign({},g.current);n?a[t]=!0:delete a[t],f(a)}(t,e.id)})),d.map((t=>y.createElement("td",{key:t.name},y.createElement(wa,{propertyType:t.propertyType,path:t.fhirPath,resource:e}))))))))),0===(null===(r=null===(l=null==p?void 0:p.data)||void 0===l?void 0:l.ResourceList)||void 0===r?void 0:r.length)&&y.createElement("div",{"data-testid":"empty-search",className:"medplum-empty-search"},"No results"),u&&y.createElement("div",{"data-testid":"search-error",className:"medplum-empty-search"},y.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(u,void 0,2))),e.onBulk&&y.createElement(F,{size:"small",onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}const Na=y.memo(Sa);function Va(e){let t="medplum-tab";function n(t){H(t),e.onClick(e.name,t.button)}return e.selected&&(t+=" selected"),y.createElement("a",{href:`#${e.name}`,role:"tab","aria-selected":e.selected,className:t,onClick:n,onAuxClick:n},e.label)}function Da(e){return y.createElement(ft,{className:"medplum-surface",height:50},y.createElement("div",{role:"tablist",className:"medplum-tablist"},y.createElement("div",{className:"medplum-tablist-foreground"},y.Children.map(e.children,((t,n)=>y.isValidElement(t)&&t.type===Va?y.cloneElement(t,{selected:t.props.name===e.value,onClick:e.onChange,tabIndex:n}):null)))))}function Aa(e){return y.createElement("div",{role:"tabpanel"},e.children)}function Ra(e){return y.createElement(y.Fragment,null,y.Children.map(e.children,(t=>y.isValidElement(t)&&t.type===Aa&&t.props.name===e.value?t:null)))}export{S as AddressDisplay,L as AddressInput,$ as AttachmentArrayDisplay,G as AttachmentArrayInput,J as AttachmentInput,Y as Autocomplete,te as Avatar,et as BackboneElementInput,F as Button,Se as CodeInput,ke as CodeableConceptInput,ue as ContactPointDisplay,Ve as ContactPointInput,se as DateTimeDisplay,De as DateTimeInput,At as DefaultResourceTimeline,nt as DiagnosticReportDisplay,Rt as Document,Ge as ElementDefinitionInputSelector,Je as ElementDefinitionTypeInput,It as EncounterTimeline,Et as ErrorBoundary,Sa as FhirPathTable,Pt as FooterLinks,st as Form,ae as FormSection,_t as Header,me as HumanNameDisplay,Me as HumanNameInput,$e as IdentifierInput,V as Input,mt as Loading,Ut as Logo,X as MedplumLink,U as MedplumProvider,Na as MemoizedFhirPathTable,ga as MemoizedSearchControl,dt as MenuItem,at as ObservationTable,zt as PatientTimeline,gt as Popup,en as QuestionnaireBuilder,Kt as QuestionnaireForm,Jt as QuestionnaireFormItem,Qt as QuestionnaireItemType,Be as ReferenceInput,ge as ResourceArrayDisplay,We as ResourceArrayInput,tt as ResourceBadge,pn as ResourceBlame,En as ResourceDiff,Xe as ResourceForm,yn as ResourceHistoryTable,He as ResourceInput,Qe as ResourceName,ye as ResourcePropertyDisplay,Ke as ResourcePropertyInput,ht as ResourceTable,jt as ResourceTimeline,ft as Scrollable,va as SearchChangeEvent,fa as SearchClickEvent,Ea as SearchControl,aa as SearchFieldEditor,oa as SearchFilterEditor,ha as SearchLoadEvent,R as Select,Ca as ServiceRequestTimeline,Ta as SignInForm,Va as Tab,Da as TabList,Aa as TabPanel,Ra as TabSwitch,Pe as TextArea,yt as Timeline,bt as TimelineItem,pa as TitleBar,Un as addDateEqualsFilter,qn as addDateFilter,zn as addDateFilterBetween,Vn as addField,Nn as addFilter,Ln as addLastMonthFilter,$n as addNextMonthFilter,Ht as addQuestionnaireInitialValues,Mn as addThisMonthFilter,Rn as addTodayFilter,In as addTomorrowFilter,Hn as addUserFilter,_n as addYearToDateFilter,An as addYesterdayFilter,ta as buildFieldNameString,wn as clearFilters,Sn as clearFiltersOnField,Ae as convertIsoToLocal,Re as convertLocalToIso,ka as createScriptTag,Dn as deleteFilter,ea as getOpString,Zn as getSearchOperators,Yn as getSortField,hn as getTimeString,be as getValueAndType,Bn as hasFilterOnField,Wt as isChoiceQuestion,Xn as isSortDescending,Kn as movePage,it as parseForm,na as renderValue,xn as setFilters,Wn as setOffset,Ze as setPropertyValue,Gn as setSort,Ct as sortByDateAndPriority,Jn as toggleSort,z as useMedplum,q as useMedplumContext,Q as useMedplumProfile,ee as useResource};
|
|
2
2
|
//# sourceMappingURL=index.min.js.map
|