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