@medplum/react-hooks 5.1.5 → 5.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +5 -5
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.d.ts +87 -0
- package/dist/esm/index.d.ts +87 -0
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +9 -9
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var X=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var be=Object.getOwnPropertyNames;var ve=Object.prototype.hasOwnProperty;var Te=(e,n)=>{for(var t in n)X(e,t,{get:n[t],enumerable:!0})},Ce=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of be(n))!ve.call(e,r)&&r!==t&&X(e,r,{get:()=>n[r],enumerable:!(o=Ee(n,r))||o.enumerable});return e};var Pe=e=>Ce(X({},"__esModule",{value:!0}),e);var cn={};Te(cn,{MedplumProvider:()=>Ae,QUESTIONNAIRE_CALCULATED_EXPRESSION_URL:()=>pe,QUESTIONNAIRE_ENABLED_WHEN_EXPRESSION_URL:()=>de,QUESTIONNAIRE_HIDDEN_URL:()=>fe,QUESTIONNAIRE_ITEM_CONTROL_URL:()=>ee,QUESTIONNAIRE_REFERENCE_FILTER_URL:()=>ae,QUESTIONNAIRE_REFERENCE_RESOURCE_URL:()=>$,QUESTIONNAIRE_SIGNATURE_REQUIRED_URL:()=>Ve,QUESTIONNAIRE_SIGNATURE_RESPONSE_URL:()=>V,QUESTIONNAIRE_VALIDATION_ERROR_URL:()=>ce,QuestionnaireItemType:()=>g,buildInitialResponse:()=>B,buildInitialResponseItem:()=>z,evaluateCalculatedExpressionsInQuestionnaire:()=>K,getItemAnswerOptionValue:()=>Z,getItemEnableWhenValueAnswer:()=>Ie,getItemInitialValue:()=>Ye,getNewMultiSelectValues:()=>Be,getQuestionnaireItemReferenceFilter:()=>Xe,getQuestionnaireItemReferenceTargetTypes:()=>je,getResponseItemAnswerValue:()=>he,isChoiceQuestion:()=>Fe,isQuestionEnabled:()=>ke,reactContext:()=>k,setQuestionnaireItemReferenceTargetTypes:()=>He,typedValueToResponseItem:()=>le,useCachedBinaryUrl:()=>Ne,useMedplum:()=>E,useMedplumContext:()=>q,useMedplumNavigate:()=>Oe,useMedplumProfile:()=>we,useNotificationCount:()=>Le,usePrevious:()=>_e,useQuestionnaireForm:()=>Ze,useResource:()=>D,useSearch:()=>on,useSearchOne:()=>sn,useSearchResources:()=>un,useSubscription:()=>Y,useThreadInbox:()=>an});module.exports=Pe(cn);var M=require("react");var F=require("react"),k=(0,F.createContext)(void 0);function q(){return(0,F.useContext)(k)}function E(){return q().medplum}function Oe(){return q().navigate}function we(){return q().profile}var oe=require("react/jsx-runtime"),re=["change","storageInitialized","storageInitFailed","profileRefreshing","profileRefreshed"];function Ae(e){let n=e.medplum,t=e.navigate??Me,[o,r]=(0,M.useState)({profile:n.getProfile(),loading:n.isLoading()});(0,M.useEffect)(()=>{function u(){r(c=>({...c,profile:n.getProfile(),loading:n.isLoading()}))}for(let c of re)n.addEventListener(c,u);return()=>{for(let c of re)n.removeEventListener(c,u)}},[n]);let s=(0,M.useMemo)(()=>({...o,medplum:n,navigate:t}),[o,n,t]);return(0,oe.jsx)(k.Provider,{value:s,children:e.children})}function Me(e){window.location.assign(e)}var se=require("react"),ie=new Map,Ne=e=>(0,se.useMemo)(()=>{if(!e)return;let n=e.split("?")[0];if(!n)return e;let t;try{t=new URLSearchParams(new URL(e).search)}catch{return e}if(!t.has("Key-Pair-Id")||!t.has("Signature"))return e;let o=t.get("Expires");if(!o||o.length>13)return e;let r=ie.get(n);if(r){let u=new URLSearchParams(new URL(r).search).get("Expires");if(u&&Number.parseInt(u,10)*1e3-5e3>Date.now())return r}return ie.set(n,e),e},[e]);var N=require("react");var J=require("@medplum/core"),l=require("react");var Ue=3e3;function Y(e,n,t){let o=E(),[r,s]=(0,l.useState)(),[u,c]=(0,l.useState)(t?.subscriptionProps),d=(0,l.useRef)(!1),I=(0,l.useRef)(void 0),y=(0,l.useRef)(void 0),C=(0,l.useRef)(void 0),O=(0,l.useRef)(n);O.current=n;let h=(0,l.useRef)(t?.onWebSocketOpen);h.current=t?.onWebSocketOpen;let f=(0,l.useRef)(t?.onWebSocketClose);f.current=t?.onWebSocketClose;let p=(0,l.useRef)(t?.onSubscriptionConnect);p.current=t?.onSubscriptionConnect;let a=(0,l.useRef)(t?.onSubscriptionDisconnect);a.current=t?.onSubscriptionDisconnect;let R=(0,l.useRef)(t?.onError);R.current=t?.onError,(0,l.useEffect)(()=>{(0,J.deepEquals)(t?.subscriptionProps,u)||c(t?.subscriptionProps)},[u,t]),(0,l.useEffect)(()=>{I.current&&(clearTimeout(I.current),I.current=void 0);let Q=!1;return(y.current!==e||!(0,J.deepEquals)(C.current,u))&&(Q=!0),Q&&y.current&&o.unsubscribeFromCriteria(y.current,C.current),y.current=e,C.current=u,Q&&e?s(o.subscribeToCriteria(e,u)):e||s(void 0),()=>{I.current=setTimeout(()=>{s(void 0),e&&o.unsubscribeFromCriteria(e,u)},Ue)}},[o,e,u]);let m=(0,l.useCallback)(Q=>{O.current?.(Q.payload)},[]),S=(0,l.useCallback)(()=>{h.current?.()},[]),T=(0,l.useCallback)(()=>{f.current?.()},[]),w=(0,l.useCallback)(Q=>{p.current?.(Q.payload.subscriptionId)},[]),L=(0,l.useCallback)(Q=>{a.current?.(Q.payload.subscriptionId)},[]),x=(0,l.useCallback)(Q=>{R.current?.(Q.payload)},[]);(0,l.useEffect)(()=>r?(d.current||(r.addEventListener("message",m),r.addEventListener("open",S),r.addEventListener("close",T),r.addEventListener("connect",w),r.addEventListener("disconnect",L),r.addEventListener("error",x),d.current=!0),()=>{d.current=!1,r.removeEventListener("message",m),r.removeEventListener("open",S),r.removeEventListener("close",T),r.removeEventListener("connect",w),r.removeEventListener("disconnect",L),r.removeEventListener("error",x)}):()=>{},[r,m,S,T,w,L,x])}function Le(e){let n=E(),{resourceType:t,countCriteria:o,subscriptionCriteria:r}=e,[s,u]=(0,N.useState)(0),c=(0,N.useCallback)(d=>{n.search(t,o,{cache:d}).then(I=>u(I.total)).catch(console.error)},[n,t,o]);return(0,N.useEffect)(()=>{c("default")},[c]),Y(r,()=>{c("reload")}),s}var W=require("react");function _e(e){let n=(0,W.useRef)(void 0);return(0,W.useEffect)(()=>{n.current=e}),n.current}var ye=require("@medplum/core"),G=require("react");var P=require("@medplum/core"),U=require("react");function D(e,n){let t=E(),[o,r]=(0,U.useState)(()=>ue(t,e)),s=(0,U.useCallback)(u=>{(0,P.deepEquals)(u,o)||r(u)},[o]);return(0,U.useEffect)(()=>{let u=!0,c=ue(t,e);return!c&&(0,P.isReference)(e)?t.readReference(e).then(d=>{u&&s(d)}).catch(d=>{u&&(s(void 0),n&&n((0,P.normalizeOperationOutcome)(d)))}):s(c),(()=>u=!1)},[t,e,s,n]),o}function ue(e,n){if(n){if((0,P.isResource)(n))return n;if((0,P.isReference)(n))return e.getCachedReference(n)}}var i=require("@medplum/core"),g={group:"group",display:"display",question:"question",boolean:"boolean",decimal:"decimal",integer:"integer",date:"date",dateTime:"dateTime",time:"time",string:"string",text:"text",url:"url",choice:"choice",openChoice:"open-choice",attachment:"attachment",reference:"reference",quantity:"quantity"},ee=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-itemControl`,ae=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-referenceFilter`,$=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-referenceResource`,ce=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-validationError`,de=`${i.HTTP_HL7_ORG}/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression`,pe=`${i.HTTP_HL7_ORG}/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression`,Ve=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-signatureRequired`,V=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaireresponse-signature`,fe=`${i.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-hidden`;function Fe(e){return e.type==="choice"||e.type==="open-choice"}function ke(e,n){if((0,i.getExtension)(e,fe)?.valueBoolean===!0)return!1;let o=qe(e,n);return o!==void 0?o:We(e,n)}function qe(e,n){let t=(0,i.getExtension)(e,de);if(n&&t){let o=t.valueExpression?.expression;if(o){let r=(0,i.toTypedValue)(n),s=(0,i.evalFhirPathTyped)(o,[r],{"%resource":r});return(0,i.toJsBoolean)(s)}}}function We(e,n){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let o of e.enableWhen){let r=me(n?.item,o.question);if(o.operator==="exists"&&!o.answerBoolean&&!r?.length){if(t==="any")return!0;continue}let{anyMatch:s,allMatch:u}=Ge(o,r,t);if(t==="any"&&s)return!0;if(t==="all"&&!u)return!1}return t!=="any"}function K(e,n,t=n.item){for(let o of e){let r=t?.find(s=>s.linkId===o.linkId);r&&(De(n,o,r),o.item&&r.item&&K(o.item,n,r.item))}}function De(e,n,t){try{let o=Ke(n,e);if(!o)return;let r=le(n,o);if(!r)return;t.answer=[r]}catch(o){t.extension=[{url:ce,valueString:`Expression evaluation failed: ${(0,i.normalizeErrorString)(o)}`}]}}var $e={[g.boolean]:[i.PropertyType.boolean],[g.date]:[i.PropertyType.date],[g.dateTime]:[i.PropertyType.dateTime],[g.time]:[i.PropertyType.time],[g.url]:[i.PropertyType.string,i.PropertyType.uri,i.PropertyType.url],[g.attachment]:[i.PropertyType.Attachment],[g.reference]:[i.PropertyType.Reference],[g.quantity]:[i.PropertyType.Quantity],[g.decimal]:[i.PropertyType.decimal,i.PropertyType.integer],[g.integer]:[i.PropertyType.decimal,i.PropertyType.integer]};function le(e,n){if(!e.type)return;if(e.type===g.choice||e.type===g.openChoice)return{[`value${(0,i.capitalize)(n.type)}`]:n.value};if(e.type===g.string||e.type===g.text)return typeof n.value=="string"?{valueString:n.value}:void 0;if($e[e.type]?.includes(n.type))return{[`value${(0,i.capitalize)(e.type)}`]:n.value}}function Ke(e,n){if(!n)return;let t=(0,i.getExtension)(e,pe);if(t){let o=t.valueExpression?.expression;if(o){let r=(0,i.toTypedValue)(n),s=(0,i.evalFhirPathTyped)(o,[r],{"%resource":r});return s.length!==0?s[0]:void 0}}}function Be(e,n,t){let o=[];for(let r of e){let s=t.answerOption?.find(u=>(0,i.typedValueToString)(Z(u))===r);if(s){let u=Z(s);u&&o.push({[n]:u.value})}}return o}function me(e,n){for(let t of e??i.EMPTY){if(t.linkId===n)return t.answer;if(t.item){let o=me(t.item,n);if(o)return o}}}function ze(e,n,t){if(t==="exists")return!!e===n.value;if(e){let o=t==="="||t==="!="?t?.replace("=","~"):t,[{value:r}]=(0,i.evalFhirPathTyped)(`%actualAnswer ${o} %expectedAnswer`,[e],{"%actualAnswer":e,"%expectedAnswer":n});return r}else return!1}function Ge(e,n,t){let o=n||[],r=Ie(e),s=!1,u=!0;for(let c of o){let d=he(c),{operator:I}=e;if(ze(d,r,I)?s=!0:u=!1,t==="any"&&s)break}return{anyMatch:s,allMatch:u}}function je(e){let n=(0,i.getExtension)(e,$);if(n){if(n.valueCode!==void 0)return[n.valueCode];if(n.valueCodeableConcept)return n.valueCodeableConcept?.coding?.map(t=>t.code)}}function He(e,n){let t=(0,i.deepClone)(e),o=(0,i.getExtension)(t,$);return!n||n.length===0?(o&&(t.extension=t.extension?.filter(r=>r!==o)),t):(o||(t.extension??=[],o={url:$},t.extension.push(o)),n.length===1?(o.valueCode=n[0],delete o.valueCodeableConcept):(o.valueCodeableConcept={coding:n.map(r=>({code:r}))},delete o.valueCode),t)}function Xe(e,n,t){let o=(0,i.getExtension)(e,ae);if(!o?.valueString)return;let r=o.valueString;n?.reference&&(r=r.replaceAll("$subj",n.reference)),t?.reference&&(r=r.replaceAll("$encounter",t.reference));let s={},u=r.split("&");for(let c of u){let[d,I]=(0,i.splitN)(c,"=",2);s[d]=I}return s}function B(e,n){return{resourceType:"QuestionnaireResponse",questionnaire:e.url??(0,i.getReferenceString)(e),item:ne(e.item,n?.item),status:"in-progress"}}function ne(e,n){let t;for(let o of e??i.EMPTY){if(o.type===g.display)continue;let r=n?.filter(s=>s.linkId===o.linkId);if(r?.length)for(let s of r)s.id=s.id??Re(),s.text=s.text??o.text,s.item=ne(o.item,s.item),s.answer=ge(o,s),t=(0,i.append)(t,s);else t=(0,i.append)(t,z(o))}return t}function z(e){return{id:Re(),linkId:e.linkId,text:e.text,item:ne(e.item,void 0),answer:ge(e)}}var Je=1;function Re(){return"id-"+Je++}function ge(e,n){if(!(e.type===g.display||e.type===g.group)){if(n?.answer&&n.answer.length>0)return n.answer;if(e.initial&&e.initial.length>0)return e.initial.map(t=>({...t}));if(e.answerOption)return e.answerOption.filter(t=>t.initialSelected).map(t=>({...t,initialSelected:void 0}))}}function Ye(e){return(0,i.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemInitial",value:e},"value")}function Z(e){return(0,i.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemAnswerOption",value:e},"value")}function Ie(e){return(0,i.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemEnableWhen",value:e},"answer")}function he(e){return(0,i.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireResponseItemAnswer",value:e},"value")}function Ze(e){let n=D(e.questionnaire),t=D(e.defaultValue),[,o]=(0,G.useReducer)(f=>f+1,0),r=(0,G.useRef)({activePage:0});if(!r.current.questionnaire&&n&&(r.current.questionnaire=n,r.current.pages=e.disablePagination?void 0:en(n)),n&&e.defaultValue&&t&&!r.current.questionnaireResponse&&(r.current.questionnaireResponse=B(n,t),h()),n&&!e.defaultValue&&!r.current.questionnaireResponse&&(r.current.questionnaireResponse=B(n),h()),!r.current.questionnaire||!r.current.questionnaireResponse)return{loading:!0};function s(f,p){let a=r.current.questionnaireResponse;for(let R of f)a=a?.item?.find(m=>R.id?m.id===R.id:m.linkId===R.linkId);return p&&(a=a?.item?.find(R=>R.linkId===p.linkId)),a}function u(){r.current.activePage=(r.current.activePage??0)+1,o()}function c(){r.current.activePage=(r.current.activePage??0)-1,o()}function d(f,p){let a=s(f);a&&(a.item??=[],a.item.push(z(p)),h())}function I(f,p){let a=s(f,p);a&&(a.answer??=[],a.answer.push({}),h())}function y(f,p,a){let R=s(f,p);R&&(R.answer=a,h())}function C(f){let p=r.current.questionnaireResponse;p&&(f?(p.extension=p.extension??[],p.extension=p.extension.filter(a=>a.url!==V),p.extension.push({url:V,valueSignature:f})):p.extension=p.extension?.filter(a=>a.url!==V),h())}function O(){let f=r.current.questionnaire;if(f?.item){let p=r.current.questionnaireResponse;K(f.item,p)}}function h(){let f=r.current.questionnaireResponse;f&&(O(),o(),e.onChange?.(f))}return{loading:!1,pagination:!!r.current.pages,questionnaire:r.current.questionnaire,questionnaireResponse:r.current.questionnaireResponse,subject:e.subject,encounter:e.encounter,activePage:r.current.activePage,pages:r.current.pages,items:nn(r.current.questionnaire,r.current.pages,r.current.activePage),responseItems:tn(r.current.questionnaireResponse,r.current.pages,r.current.activePage),onNextPage:u,onPrevPage:c,onAddGroup:d,onAddAnswer:I,onChangeAnswer:y,onChangeSignature:C}}function en(e){if(!(!e?.item||(0,ye.getExtension)(e?.item?.[0],ee)?.valueCodeableConcept?.coding?.[0]?.code!=="page"))return e.item.map((t,o)=>({linkId:t.linkId,title:t.text??`Page ${o+1}`,group:t}))}function nn(e,n,t=0){return n&&e?.item?.[t]?[e.item[t]]:e.item??[]}function tn(e,n,t=0){return n&&e?.item?.[t]?[e.item[t]]:e.item??[]}var j=require("@medplum/core"),A=require("react");var b=require("react");function xe(e,n,t={leading:!1}){let[o,r]=(0,b.useState)(e),s=(0,b.useRef)(!1),u=(0,b.useRef)(void 0),c=(0,b.useRef)(!1),d=(0,b.useCallback)(()=>window.clearTimeout(u.current),[]);return(0,b.useEffect)(()=>{s.current&&(!c.current&&t.leading?(c.current=!0,r(e)):(d(),u.current=setTimeout(()=>{c.current=!1,r(e)},n)))},[e,t.leading,n,d]),(0,b.useEffect)(()=>(s.current=!0,d),[d]),[o,d]}var rn=250;function on(e,n,t){return te("search",e,n,t)}function sn(e,n,t){return te("searchOne",e,n,t)}function un(e,n,t){return te("searchResources",e,n,t)}function te(e,n,t,o){let r=E(),[s,u]=(0,A.useState)(!0),[c,d]=(0,A.useState)(),[I,y]=(0,A.useState)(),C=r.fhirSearchUrl(n,t).toString(),O=(0,A.useMemo)(()=>({resourceType:n,query:t}),[C]),h=o?.debounceMs??rn,[f]=xe(O,h,{leading:!0});return(0,A.useEffect)(()=>{let p=!0;return r[e](f.resourceType,f.query).then(a=>{p&&(u(!1),d(a),y(j.allOk))}).catch(a=>{p&&(u(!1),d(void 0),y((0,j.normalizeOperationOutcome)(a)))}),()=>{p=!1}},[r,e,f]),[c,s,I]}var Qe=require("@medplum/core"),v=require("react");function an({query:e,threadId:n}){let t=E(),[o,r]=(0,v.useState)(!0),[s,u]=(0,v.useState)([]),[c,d]=(0,v.useState)(void 0),[I,y]=(0,v.useState)(null),[C,O]=(0,v.useState)(void 0),h=(0,v.useCallback)(async()=>{let a=new URLSearchParams(e);a.append("identifier:not","http://medplum.com/ai-message|"),a.append("part-of:missing","true"),a.append("_has:Communication:part-of:_id:not","null");let R=await t.search("Communication",a.toString(),{cache:"no-cache"}),m=R.entry?.map(x=>x.resource).filter(x=>x!==void 0)||[];if(R.total!==void 0&&O(R.total),m.length===0){u([]);return}let T=`
|
|
1
|
+
"use strict";var Z=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var Ae=Object.prototype.hasOwnProperty;var Me=(e,t)=>{for(var n in t)Z(e,n,{get:t[n],enumerable:!0})},Ne=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of we(t))!Ae.call(e,r)&&r!==n&&Z(e,r,{get:()=>t[r],enumerable:!(o=Oe(t,r))||o.enumerable});return e};var Ue=e=>Ne(Z({},"__esModule",{value:!0}),e);var In={};Me(In,{MedplumProvider:()=>Fe,QUESTIONNAIRE_CALCULATED_EXPRESSION_URL:()=>he,QUESTIONNAIRE_ENABLED_WHEN_EXPRESSION_URL:()=>Re,QUESTIONNAIRE_HIDDEN_URL:()=>ge,QUESTIONNAIRE_ITEM_CONTROL_URL:()=>oe,QUESTIONNAIRE_REFERENCE_FILTER_URL:()=>me,QUESTIONNAIRE_REFERENCE_RESOURCE_URL:()=>z,QUESTIONNAIRE_SIGNATURE_REQUIRED_URL:()=>ze,QUESTIONNAIRE_SIGNATURE_RESPONSE_URL:()=>V,QUESTIONNAIRE_VALIDATION_ERROR_URL:()=>ye,QuestionnaireItemType:()=>b,buildInitialResponse:()=>J,buildInitialResponseItem:()=>H,evaluateCalculatedExpressionsInQuestionnaire:()=>G,getItemAnswerOptionValue:()=>re,getItemEnableWhenValueAnswer:()=>Qe,getItemInitialValue:()=>cn,getNewMultiSelectValues:()=>nn,getQuestionnaireItemReferenceFilter:()=>an,getQuestionnaireItemReferenceTargetTypes:()=>on,getResponseItemAnswerValue:()=>be,isChoiceQuestion:()=>Ge,isQuestionEnabled:()=>Je,reactContext:()=>W,setQuestionnaireItemReferenceTargetTypes:()=>sn,typedValueToResponseItem:()=>Ie,useCachedBinaryUrl:()=>ke,useEPrescribingIFrame:()=>Ve,useMedplum:()=>v,useMedplumContext:()=>$,useMedplumNavigate:()=>Le,useMedplumProfile:()=>_e,useNotificationCount:()=>We,usePatientSummaryData:()=>Ke,usePharmacySearch:()=>Be,usePrevious:()=>je,useQuestionnaireForm:()=>dn,useResource:()=>j,useSearch:()=>yn,useSearchOne:()=>Rn,useSearchResources:()=>hn,useSubscription:()=>ne,useThreadInbox:()=>gn});module.exports=Ue(In);var _=require("react");var D=require("react"),W=(0,D.createContext)(void 0);function $(){return(0,D.useContext)(W)}function v(){return $().medplum}function Le(){return $().navigate}function _e(){return $().profile}var ue=require("react/jsx-runtime"),ae=["change","storageInitialized","storageInitFailed","profileRefreshing","profileRefreshed"];function Fe(e){let t=e.medplum,n=e.navigate??qe,[o,r]=(0,_.useState)({profile:t.getProfile(),loading:t.isLoading()});(0,_.useEffect)(()=>{function s(){r(d=>({...d,profile:t.getProfile(),loading:t.isLoading()}))}for(let d of ae)t.addEventListener(d,s);return()=>{for(let d of ae)t.removeEventListener(d,s)}},[t]);let i=(0,_.useMemo)(()=>({...o,medplum:t,navigate:n}),[o,t,n]);return(0,ue.jsx)(W.Provider,{value:i,children:e.children})}function qe(e){window.location.assign(e)}var de=require("react"),ce=new Map,ke=e=>(0,de.useMemo)(()=>{if(!e)return;let t=e.split("?")[0];if(!t)return e;let n;try{n=new URLSearchParams(new URL(e).search)}catch{return e}if(!n.has("Key-Pair-Id")||!n.has("Signature"))return e;let o=n.get("Expires");if(!o||o.length>13)return e;let r=ce.get(t);if(r){let s=new URLSearchParams(new URL(r).search).get("Expires");if(s&&Number.parseInt(s,10)*1e3-5e3>Date.now())return r}return ce.set(t,e),e},[e]);var A=require("react");function Ve(e,t,n){let o=v(),{patientId:r,onPatientSyncSuccess:i,onIframeSuccess:s,onError:d}=n,[p,E]=(0,A.useState)(void 0),I=(0,A.useRef)(i),T=(0,A.useRef)(s),P=(0,A.useRef)(d);return(0,A.useEffect)(()=>{I.current=i,T.current=s,P.current=d},[i,s,d]),(0,A.useEffect)(()=>{let h=!1;return(async()=>{try{if(r){if(await o.executeBot(e,{patientId:r}),h)return;I.current?.()}let c=await o.executeBot(t,{patientId:r});if(h)return;c.url&&(E(c.url),T.current?.(c.url))}catch(c){h||P.current?.(c)}})().catch(()=>{}),()=>{h=!0}},[o,e,t,r]),p}var F=require("react");var ee=require("@medplum/core"),g=require("react");var De=3e3;function ne(e,t,n){let o=v(),[r,i]=(0,g.useState)(),[s,d]=(0,g.useState)(n?.subscriptionProps),p=(0,g.useRef)(!1),E=(0,g.useRef)(void 0),I=(0,g.useRef)(void 0),T=(0,g.useRef)(void 0),P=(0,g.useRef)(t);P.current=t;let h=(0,g.useRef)(n?.onWebSocketOpen);h.current=n?.onWebSocketOpen;let y=(0,g.useRef)(n?.onWebSocketClose);y.current=n?.onWebSocketClose;let c=(0,g.useRef)(n?.onSubscriptionConnect);c.current=n?.onSubscriptionConnect;let u=(0,g.useRef)(n?.onSubscriptionDisconnect);u.current=n?.onSubscriptionDisconnect;let m=(0,g.useRef)(n?.onError);m.current=n?.onError,(0,g.useEffect)(()=>{(0,ee.deepEquals)(n?.subscriptionProps,s)||d(n?.subscriptionProps)},[s,n]),(0,g.useEffect)(()=>{E.current&&(clearTimeout(E.current),E.current=void 0);let C=!1;return(I.current!==e||!(0,ee.deepEquals)(T.current,s))&&(C=!0),C&&I.current&&o.unsubscribeFromCriteria(I.current,T.current),I.current=e,T.current=s,C&&e?i(o.subscribeToCriteria(e,s)):e||i(void 0),()=>{E.current=setTimeout(()=>{i(void 0),e&&o.unsubscribeFromCriteria(e,s)},De)}},[o,e,s]);let R=(0,g.useCallback)(C=>{P.current?.(C.payload)},[]),f=(0,g.useCallback)(()=>{h.current?.()},[]),Q=(0,g.useCallback)(()=>{y.current?.()},[]),x=(0,g.useCallback)(C=>{c.current?.(C.payload.subscriptionId)},[]),S=(0,g.useCallback)(C=>{u.current?.(C.payload.subscriptionId)},[]),l=(0,g.useCallback)(C=>{m.current?.(C.payload)},[]);(0,g.useEffect)(()=>r?(p.current||(r.addEventListener("message",R),r.addEventListener("open",f),r.addEventListener("close",Q),r.addEventListener("connect",x),r.addEventListener("disconnect",S),r.addEventListener("error",l),p.current=!0),()=>{p.current=!1,r.removeEventListener("message",R),r.removeEventListener("open",f),r.removeEventListener("close",Q),r.removeEventListener("connect",x),r.removeEventListener("disconnect",S),r.removeEventListener("error",l)}):()=>{},[r,R,f,Q,x,S,l])}function We(e){let t=v(),{resourceType:n,countCriteria:o,subscriptionCriteria:r}=e,[i,s]=(0,F.useState)(0),d=(0,F.useCallback)(p=>{t.search(n,o,{cache:p}).then(E=>s(E.total)).catch(console.error)},[t,n,o]);return(0,F.useEffect)(()=>{d("default")},[d]),ne(r,()=>{d("reload")}),i}var pe=require("@medplum/core"),M=require("react");function fe(e){let t=e.patientParam??"subject",n=e.query,o="";if(n!=null)if(typeof n=="string")o=n;else if(n instanceof URLSearchParams){let r=Array.from(n.entries()).sort((i,s)=>i[0].localeCompare(s[0])||i[1].localeCompare(s[1]));o=JSON.stringify(r)}else if(Array.isArray(n)){let r=[...n].sort((i,s)=>i[0].localeCompare(s[0])||i[1].localeCompare(s[1]));o=JSON.stringify(r)}else{let r=Object.entries(n).filter(([,i])=>i!==void 0).sort(([i],[s])=>i.localeCompare(s));o=JSON.stringify(r)}return`${e.resourceType}:${t}:${o}`}function $e(e){return e.map(t=>{let n=t.searches?t.searches.map(fe).join(","):"";return`${t.key}:[${n}]`}).join("|")}function Ke(e,t){let n=v(),[o,r]=(0,M.useState)([]),[i,s]=(0,M.useState)(!0),[d,p]=(0,M.useState)(),E=$e(t),I=(0,M.useMemo)(()=>t,[E]),T=(0,M.useMemo)(()=>(0,pe.resolveId)(e),[e]);return(0,M.useEffect)(()=>{if(!T)return;let P=!1,h=`Patient/${T}`,y={_count:100,_sort:"-_lastUpdated"},c=[],u=new Map,m=[];for(let f of I){let Q=[];if(f.searches)for(let x of f.searches){let S=fe(x),l=u.get(S);l===void 0&&(l=c.length,u.set(S,l),c.push(x)),Q.push({searchIdx:l,resultKey:x.key})}m.push(Q)}if(c.length===0){r(I.map(()=>({}))),s(!1);return}let R=c.map(f=>{let Q=f.patientParam??"subject",x={[Q]:h};if(f.query){if(typeof f.query=="string")return n.searchResources(f.resourceType,`${Q}=${h}&${f.query}&_count=100&_sort=-_lastUpdated`);if(f.query instanceof URLSearchParams)f.query.forEach((S,l)=>{x[l]=S});else if(Array.isArray(f.query))for(let[S,l]of f.query)x[S]=l;else for(let[S,l]of Object.entries(f.query))l!==void 0&&(x[S]=l)}return n.searchResources(f.resourceType,{...y,...x})});return s(!0),p(void 0),Promise.allSettled(R).then(f=>{if(P)return;let Q=m.map(S=>{let l={};for(let{searchIdx:C,resultKey:k}of S){let U=f[C];l[k]=U.status==="fulfilled"?U.value:[]}return l});r(Q),s(!1);let x=f.filter(S=>S.status==="rejected");if(x.length>0){console.error("Some patient summary searches failed:",x.map(l=>l.reason));let S=x[0].reason;p(S instanceof Error?S:new Error(String(S)))}}).catch(f=>{P||(p(f instanceof Error?f:new Error(String(f))),s(!1))}),()=>{P=!0}},[n,T,I]),{sectionData:o,loading:i,error:d}}var K=require("@medplum/core"),te=require("react");function Be(e,t){let n=v(),o=(0,te.useCallback)(async i=>{let s=await n.executeBot(e,i);if(!(0,K.isOrganizationArray)(s))throw new Error("Invalid response from pharmacy search");return s},[n,e]),r=(0,te.useCallback)(async i=>{let s=await n.executeBot(t,{patientId:i.patientId,pharmacy:i.pharmacy,setAsPrimary:i.setAsPrimary});if(!(0,K.isAddPharmacyResponse)(s))throw new Error("Invalid response from add pharmacy bot");return s},[n,t]);return{searchPharmacies:o,addToFavorites:r}}var B=require("react");function je(e){let t=(0,B.useRef)(void 0);return(0,B.useEffect)(()=>{t.current=e}),t.current}var ve=require("@medplum/core"),X=require("react");var N=require("@medplum/core"),q=require("react");function j(e,t){let n=v(),[o,r]=(0,q.useState)(()=>le(n,e)),i=(0,q.useCallback)(s=>{(0,N.deepEquals)(s,o)||r(s)},[o]);return(0,q.useEffect)(()=>{let s=!0,d=le(n,e);return!d&&(0,N.isReference)(e)?n.readReference(e).then(p=>{s&&i(p)}).catch(p=>{s&&(i(void 0),t&&t((0,N.normalizeOperationOutcome)(p)))}):i(d),(()=>s=!1)},[n,e,i,t]),o}function le(e,t){if(t){if((0,N.isResource)(t))return t;if((0,N.isReference)(t))return e.getCachedReference(t)}}var a=require("@medplum/core"),b={group:"group",display:"display",question:"question",boolean:"boolean",decimal:"decimal",integer:"integer",date:"date",dateTime:"dateTime",time:"time",string:"string",text:"text",url:"url",choice:"choice",openChoice:"open-choice",attachment:"attachment",reference:"reference",quantity:"quantity"},oe=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-itemControl`,me=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-referenceFilter`,z=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-referenceResource`,ye=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-validationError`,Re=`${a.HTTP_HL7_ORG}/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression`,he=`${a.HTTP_HL7_ORG}/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression`,ze=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-signatureRequired`,V=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaireresponse-signature`,ge=`${a.HTTP_HL7_ORG}/fhir/StructureDefinition/questionnaire-hidden`;function Ge(e){return e.type==="choice"||e.type==="open-choice"}function Je(e,t){if((0,a.getExtension)(e,ge)?.valueBoolean===!0)return!1;let o=He(e,t);return o!==void 0?o:Xe(e,t)}function He(e,t){let n=(0,a.getExtension)(e,Re);if(t&&n){let o=n.valueExpression?.expression;if(o){let r=(0,a.toTypedValue)(t),i=(0,a.evalFhirPathTyped)(o,[r],{"%resource":r});return(0,a.toJsBoolean)(i)}}}function Xe(e,t){if(!e.enableWhen)return!0;let n=e.enableBehavior??"any";for(let o of e.enableWhen){let r=Se(t?.item,o.question);if(o.operator==="exists"&&!o.answerBoolean&&!r?.length){if(n==="any")return!0;continue}let{anyMatch:i,allMatch:s}=rn(o,r,n);if(n==="any"&&i)return!0;if(n==="all"&&!s)return!1}return n!=="any"}function G(e,t,n=t.item){for(let o of e){let r=n?.find(i=>i.linkId===o.linkId);r&&(Ye(t,o,r),o.item&&r.item&&G(o.item,t,r.item))}}function Ye(e,t,n){try{let o=en(t,e);if(!o)return;let r=Ie(t,o);if(!r)return;n.answer=[r]}catch(o){n.extension=[{url:ye,valueString:`Expression evaluation failed: ${(0,a.normalizeErrorString)(o)}`}]}}var Ze={[b.boolean]:[a.PropertyType.boolean],[b.date]:[a.PropertyType.date],[b.dateTime]:[a.PropertyType.dateTime],[b.time]:[a.PropertyType.time],[b.url]:[a.PropertyType.string,a.PropertyType.uri,a.PropertyType.url],[b.attachment]:[a.PropertyType.Attachment],[b.reference]:[a.PropertyType.Reference],[b.quantity]:[a.PropertyType.Quantity],[b.decimal]:[a.PropertyType.decimal,a.PropertyType.integer],[b.integer]:[a.PropertyType.decimal,a.PropertyType.integer]};function Ie(e,t){if(!e.type)return;if(e.type===b.choice||e.type===b.openChoice)return{[`value${(0,a.capitalize)(t.type)}`]:t.value};if(e.type===b.string||e.type===b.text)return typeof t.value=="string"?{valueString:t.value}:void 0;if(Ze[e.type]?.includes(t.type))return{[`value${(0,a.capitalize)(e.type)}`]:t.value}}function en(e,t){if(!t)return;let n=(0,a.getExtension)(e,he);if(n){let o=n.valueExpression?.expression;if(o){let r=(0,a.toTypedValue)(t),i=(0,a.evalFhirPathTyped)(o,[r],{"%resource":r});return i.length!==0?i[0]:void 0}}}function nn(e,t,n){let o=[];for(let r of e){let i=n.answerOption?.find(s=>(0,a.typedValueToString)(re(s))===r);if(i){let s=re(i);s&&o.push({[t]:s.value})}}return o}function Se(e,t){for(let n of e??a.EMPTY){if(n.linkId===t)return n.answer;if(n.item){let o=Se(n.item,t);if(o)return o}}}function tn(e,t,n){if(n==="exists")return!!e===t.value;if(e){let o=n==="="||n==="!="?n?.replace("=","~"):n,[{value:r}]=(0,a.evalFhirPathTyped)(`%actualAnswer ${o} %expectedAnswer`,[e],{"%actualAnswer":e,"%expectedAnswer":t});return r}else return!1}function rn(e,t,n){let o=t||[],r=Qe(e),i=!1,s=!0;for(let d of o){let p=be(d),{operator:E}=e;if(tn(p,r,E)?i=!0:s=!1,n==="any"&&i)break}return{anyMatch:i,allMatch:s}}function on(e){let t=(0,a.getExtension)(e,z);if(t){if(t.valueCode!==void 0)return[t.valueCode];if(t.valueCodeableConcept)return t.valueCodeableConcept?.coding?.map(n=>n.code)}}function sn(e,t){let n=(0,a.deepClone)(e),o=(0,a.getExtension)(n,z);return!t||t.length===0?(o&&(n.extension=n.extension?.filter(r=>r!==o)),n):(o||(n.extension??=[],o={url:z},n.extension.push(o)),t.length===1?(o.valueCode=t[0],delete o.valueCodeableConcept):(o.valueCodeableConcept={coding:t.map(r=>({code:r}))},delete o.valueCode),n)}function an(e,t,n){let o=(0,a.getExtension)(e,me);if(!o?.valueString)return;let r=o.valueString;t?.reference&&(r=r.replaceAll("$subj",t.reference)),n?.reference&&(r=r.replaceAll("$encounter",n.reference));let i={},s=r.split("&");for(let d of s){let[p,E]=(0,a.splitN)(d,"=",2);i[p]=E}return i}function J(e,t){return{resourceType:"QuestionnaireResponse",questionnaire:e.url??(0,a.getReferenceString)(e),item:ie(e.item,t?.item),status:"in-progress"}}function ie(e,t){let n;for(let o of e??a.EMPTY){if(o.type===b.display)continue;let r=t?.filter(i=>i.linkId===o.linkId);if(r?.length)for(let i of r)i.id=i.id??xe(),i.text=i.text??o.text,i.item=ie(o.item,i.item),i.answer=Ee(o,i),n=(0,a.append)(n,i);else n=(0,a.append)(n,H(o))}return n}function H(e){return{id:xe(),linkId:e.linkId,text:e.text,item:ie(e.item,void 0),answer:Ee(e)}}var un=1;function xe(){return"id-"+un++}function Ee(e,t){if(!(e.type===b.display||e.type===b.group)){if(t?.answer&&t.answer.length>0)return t.answer;if(e.initial&&e.initial.length>0)return e.initial.map(n=>({...n}));if(e.answerOption)return e.answerOption.filter(n=>n.initialSelected).map(n=>({...n,initialSelected:void 0}))}}function cn(e){return(0,a.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemInitial",value:e},"value")}function re(e){return(0,a.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemAnswerOption",value:e},"value")}function Qe(e){return(0,a.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireItemEnableWhen",value:e},"answer")}function be(e){return(0,a.getTypedPropertyValueWithoutSchema)({type:"QuestionnaireResponseItemAnswer",value:e},"value")}function dn(e){let t=j(e.questionnaire),n=j(e.defaultValue),[,o]=(0,X.useReducer)(y=>y+1,0),r=(0,X.useRef)({activePage:0});if(!r.current.questionnaire&&t&&(r.current.questionnaire=t,r.current.pages=e.disablePagination?void 0:pn(t)),t&&e.defaultValue&&n&&!r.current.questionnaireResponse&&(r.current.questionnaireResponse=J(t,n),h()),t&&!e.defaultValue&&!r.current.questionnaireResponse&&(r.current.questionnaireResponse=J(t),h()),!r.current.questionnaire||!r.current.questionnaireResponse)return{loading:!0};function i(y,c){let u=r.current.questionnaireResponse;for(let m of y)u=u?.item?.find(R=>m.id?R.id===m.id:R.linkId===m.linkId);return c&&(u=u?.item?.find(m=>m.linkId===c.linkId)),u}function s(){r.current.activePage=(r.current.activePage??0)+1,o()}function d(){r.current.activePage=(r.current.activePage??0)-1,o()}function p(y,c){let u=i(y);u&&(u.item??=[],u.item.push(H(c)),h())}function E(y,c){let u=i(y,c);u&&(u.answer??=[],u.answer.push({}),h())}function I(y,c,u){let m=i(y,c);m&&(m.answer=u,h())}function T(y){let c=r.current.questionnaireResponse;c&&(y?(c.extension=c.extension??[],c.extension=c.extension.filter(u=>u.url!==V),c.extension.push({url:V,valueSignature:y})):c.extension=c.extension?.filter(u=>u.url!==V),h())}function P(){let y=r.current.questionnaire;if(y?.item){let c=r.current.questionnaireResponse;G(y.item,c)}}function h(){let y=r.current.questionnaireResponse;y&&(P(),o(),e.onChange?.(y))}return{loading:!1,pagination:!!r.current.pages,questionnaire:r.current.questionnaire,questionnaireResponse:r.current.questionnaireResponse,subject:e.subject,encounter:e.encounter,activePage:r.current.activePage,pages:r.current.pages,items:fn(r.current.questionnaire,r.current.pages,r.current.activePage),responseItems:ln(r.current.questionnaireResponse,r.current.pages,r.current.activePage),onNextPage:s,onPrevPage:d,onAddGroup:p,onAddAnswer:E,onChangeAnswer:I,onChangeSignature:T}}function pn(e){if(!(!e?.item||(0,ve.getExtension)(e?.item?.[0],oe)?.valueCodeableConcept?.coding?.[0]?.code!=="page"))return e.item.map((n,o)=>({linkId:n.linkId,title:n.text??`Page ${o+1}`,group:n}))}function fn(e,t,n=0){return t&&e?.item?.[n]?[e.item[n]]:e.item??[]}function ln(e,t,n=0){return t&&e?.item?.[n]?[e.item[n]]:e.item??[]}var Y=require("@medplum/core"),L=require("react");var O=require("react");function Te(e,t,n={leading:!1}){let[o,r]=(0,O.useState)(e),i=(0,O.useRef)(!1),s=(0,O.useRef)(void 0),d=(0,O.useRef)(!1),p=(0,O.useCallback)(()=>window.clearTimeout(s.current),[]);return(0,O.useEffect)(()=>{i.current&&(!d.current&&n.leading?(d.current=!0,r(e),s.current=setTimeout(()=>{d.current=!1},t)):(p(),s.current=setTimeout(()=>{d.current=!1,r(e)},t)))},[e,n.leading,t,p]),(0,O.useEffect)(()=>(i.current=!0,p),[p]),[o,p]}var mn=250;function yn(e,t,n){return se("search",e,t,n)}function Rn(e,t,n){return se("searchOne",e,t,n)}function hn(e,t,n){return se("searchResources",e,t,n)}function se(e,t,n,o){let r=v(),[i,s]=(0,L.useState)(!1),[d,p]=(0,L.useState)(),[E,I]=(0,L.useState)(),T=r.fhirSearchUrl(t,n).toString(),P=(0,L.useMemo)(()=>({resourceType:t,query:n}),[T]),h=o?.enabled??!0,y=o?.debounceMs??mn,[c]=Te(P,y,{leading:!0});return(0,L.useEffect)(()=>{if(!h)return()=>{};s(!0);let u=!0;return r[e](c.resourceType,c.query).then(m=>{u&&(s(!1),p(m),I(Y.allOk))}).catch(m=>{u&&(s(!1),p(void 0),I((0,Y.normalizeOperationOutcome)(m)))}),()=>{u=!1}},[r,e,c,h]),[d,i,E]}var Pe=require("@medplum/core"),w=require("react");function gn({query:e,threadId:t}){let n=v(),[o,r]=(0,w.useState)(!0),[i,s]=(0,w.useState)([]),[d,p]=(0,w.useState)(void 0),[E,I]=(0,w.useState)(null),[T,P]=(0,w.useState)(void 0),h=(0,w.useCallback)(async()=>{let u=new URLSearchParams(e);u.append("identifier:not","http://medplum.com/ai-message|"),u.append("part-of:missing","true"),u.append("_has:Communication:part-of:_id:not","null");let m=await n.search("Communication",u.toString(),{cache:"no-cache"}),R=m.entry?.map(l=>l.resource).filter(l=>l!==void 0)||[];if(m.total!==void 0&&P(m.total),R.length===0){s([]);return}let Q=`
|
|
2
2
|
query {
|
|
3
|
-
${
|
|
4
|
-
${
|
|
5
|
-
part_of: "${
|
|
3
|
+
${R.map(l=>{let k=`thread_${l.id?.replaceAll("-","")||""}`,U=(0,Pe.getReferenceString)(l);return`
|
|
4
|
+
${k}: CommunicationList(
|
|
5
|
+
part_of: "${U}"
|
|
6
6
|
_sort: "-sent"
|
|
7
7
|
_count: 1
|
|
8
8
|
) {
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
`}).join(`
|
|
27
27
|
`)}
|
|
28
28
|
}
|
|
29
|
-
`,
|
|
29
|
+
`,x=await n.graphql(Q),S=R.map(l=>{let k=`thread_${l.id?.replaceAll("-","")||""}`,U=x.data[k],Ce=U&&U.length>0?U[0]:void 0;return[l,Ce]}).filter(l=>l[1]!==void 0);s(S)},[n,e]);return(0,w.useEffect)(()=>{r(!0),h().catch(u=>{I(u)}).finally(()=>{r(!1)})},[h]),(0,w.useEffect)(()=>{(async()=>{if(!t){p(void 0);return}let m=i.find(f=>f[0].id===t);if(m){p(m[0]);return}let R=await n.readResource("Communication",t);if(R.partOf===void 0)p(R);else{let f=R.partOf[0].reference;if(f){let Q=await n.readReference({reference:f});p(Q)}}})().catch(m=>{I(m)})},[t,i,n]),{loading:o,error:E,threadMessages:i,selectedThread:d,total:T,addThreadMessage:u=>{(async()=>{await h(),s(R=>[[u,void 0],...R])})().catch(R=>I(R))},handleThreadStatusChange:u=>{if(!d)return;(async()=>{let R=await n.updateResource({...d,status:u});p(R),s(f=>f.map(([Q,x])=>Q.id===R.id?[R,x]:[Q,x]))})().catch(R=>I(R))},refreshThreadMessages:h}}
|
|
30
30
|
//# sourceMappingURL=index.cjs.map
|