@sergeymosyakov/questionnaire-widget 1.0.12 → 1.0.13

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.
@@ -1,39 +1,39 @@
1
- var Ne=class{constructor(t){this._target=t||(typeof document<"u"?document:new EventTarget)}dispatch(t,e){this._target.dispatchEvent(new CustomEvent(t,{detail:e}))}on(t,e,i){return this._target.addEventListener(t,e,i),()=>this._target.removeEventListener(t,e,i)}off(t,e,i){this._target.removeEventListener(t,e,i)}get target(){return this._target}},X=new Ne;function Vn(n,t){let e=new Map;for(let i of t)n.on(i,s=>e.set(i,s?.detail??{}));return{get(i){return e.get(i)},_set(i,s){e.set(i,s)}}}var ls="e3a8c2f1-6b4d-4e9a-87c5",Be=ls+":group-or";function tt(n){n.forEach(t=>t.destroy?.()),n.splice(0)}function Ce(n,t){for(let e of t.children)if(e.id===n||e.children?.length&&Ce(n,e))return!0;return!1}function cs(n){let t=n.indexOf("=");return t===-1?{code:n,display:n}:{code:n.slice(0,t).trim(),display:n.slice(t+1).trim()}}function nt(n){return(n||"").split(",").map(t=>t.trim()).filter(Boolean).map(cs)}function Mn(n){return(n||[]).map(t=>{if(t.valueCoding){let e=t.valueCoding.code||t.valueCoding.display||"",i=t.valueCoding.display||t.valueCoding.code||"";return{code:e,display:i}}if(t.valueString!==void 0)return{code:t.valueString,display:t.valueString};if(t.valueInteger!==void 0)return{code:String(t.valueInteger),display:String(t.valueInteger)};if(t.valueDate!==void 0)return{code:t.valueDate,display:t.valueDate};if(t.valueTime!==void 0)return{code:t.valueTime,display:t.valueTime};if(t.valueReference){let e=typeof t.valueReference=="string"?t.valueReference:t.valueReference.reference||"",i=typeof t.valueReference=="object"&&t.valueReference.display||e;return{code:e,display:i}}return null}).filter(Boolean)}function Ee(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/("(?:\\u[0-9a-fA-F]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(?:true|false|null)\b|-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?)/g,e=>{let i;return/^"/.test(e)?i=/:$/.test(e)?"jv-k":"jv-s":e==="true"||e==="false"?i="jv-b":e==="null"?i="jv-null":i="jv-n",'<span class="'+i+'">'+e+"</span>"})}function Pn(n,t){if(!t)return{html:Ee(n),count:0};let e=t.toLowerCase(),i=n.toLowerCase(),s=[],a=0;for(;(a=i.indexOf(e,a))!==-1;)s.push(a),a+=e.length;if(s.length===0)return{html:Ee(n),count:0};let o="",l=0;for(let c of s)o+=n.slice(l,c)+""+n.slice(c,c+e.length)+"",l=c+e.length;o+=n.slice(l);let r=Ee(o);return r=r.split("").join('<mark class="search-match">'),r=r.split("").join("</mark>"),{html:r,count:s.length}}var w=Object.freeze({QUESTIONNAIRE_LOADED:"questionnaire-loaded",QUESTIONNAIRE_CLEARED:"questionnaire-cleared",QUESTIONNAIRE_NEW:"questionnaire-new",QUESTIONNAIRE_CLEAR_REQUESTED:"questionnaire-clear-requested",QUESTIONNAIRE_RESET:"questionnaire-reset",QUESTIONNAIRE_META_CHANGED:"questionnaire-meta-changed",QUESTIONNAIRE_LOAD_CONFIRM_REQUESTED:"questionnaire-load-confirm-requested",QUESTIONNAIRE_LOAD_REQUESTED:"questionnaire-load-requested",APP_CONTEXT_READY:"app:context-ready",BUILDER_RERENDER:"builder:rerender",BUILDER_NAVIGATE:"builder:navigate",BUILDER_NAVIGATE_TO:"builder:navigate-to",BUILDER_EXPAND_ALL:"builder:expand-all",BUILDER_COLLAPSE_ALL:"builder:collapse-all",BUILDER_VIEW_MODE_CHANGE:"builder:view-mode-change",BUILDER_META_ROW_CHANGE:"builder:meta-row-change",PREVIEW_NAVIGATE_TO:"preview:navigate-to",REINIT_FORM:"reinit-form",SHOW_JSON:"show-json",VIEW_PREF_CHANGE:"view-pref-change",PREVIEW_MODE_CHANGE:"preview-mode-change",RESPONSE_CHANGED:"preview:response-changed",PREVIEW_RENDER_DONE:"preview:render-done",SDC_POPULATE_REQUESTED:"sdc:populate-requested",DEF_EXTRACT_REQUESTED:"sdc:def-extract-requested",BUILDER_RENDER_DONE:"builder:render-done",PATIENT_CTX_APPLIED:"patient-ctx-applied",QR_LOADED:"qr-loaded",CLOUD_SAVE_REQUESTED:"cloud-save-requested",CLOUD_LOAD_REQUESTED:"cloud-load-requested",CLOSE_DROPDOWNS:"close-dropdowns",LANGUAGE_CHANGED:"language-changed",TRANSLATE_REQUESTED:"translate-requested",FHIRPATH_TESTER_REQUESTED:"fhirpath-tester-requested",CALC_RECALC_REQUESTED:"calc-recalc-requested",REFRESH_EXPR_ICONS:"refresh-expr-icons",REFRESH_CALC_BADGES:"refresh-calc-badges",COLLAPSE_ALL_PREVIEW:"collapse-all-preview",EXPAND_ALL_PREVIEW:"expand-all-preview",RENUMBER_FORMAT_CHANGED:"renumber-format-changed",RENUMBER_PROGRESS:"renumber-progress",RENUMBER_DONE:"renumber-done",VALIDATOR_TOGGLE:"validator-toggle",TIPS_INIT_DONE:"tips-init-done",TIPS_TOGGLED:"tips-toggled",AUTOSAVE_INIT_DONE:"autosave-init-done",AUTOSAVE_TOGGLED:"autosave-toggled",AUTOSAVE_SAVED:"autosave-saved",VALIDATE_REQUESTED:"validate-requested",NODE_DELETE_REQUESTED:"node:delete-requested",NODE_COPY_REQUESTED:"node:copy-requested",NODE_PASTE_AFTER_REQUESTED:"node:paste-after-requested",NODE_PASTE_BEFORE_REQUESTED:"node:paste-before-requested",CLIPBOARD_CHANGED:"node:clipboard-changed",COPY_TO_NODES:"copy-to-nodes",ANSWER_SET:"answer:set",ANSWER_DELETE:"answer:delete",ANSWERS_CLEAR:"answer:clear",FHIRPATH_CTX_UPDATED:"fhirpath:ctx-updated",VARIABLES_APPLY:"variables:apply",QR_ANSWERS_REQUESTED:"qr:answers-requested",FILE_NAME_CHANGED:"file-name:changed",CLEAR_CONFIRM_REQUESTED:"reset:clear-confirm-requested",EXPORT_PROMPT_REQUESTED:"reset:export-prompt-requested",VALIDATE_EXPORT_REQUESTED:"reset:validate-export-requested",AUTOSAVE_CLEAR_DRAFT:"reset:autosave-clear-draft",FHIR_VERSION_CHANGED:"fhir-version-changed",METADATA_EDIT_REQUESTED:"metadata-edit-requested"}),ds=new Set([w.APP_CONTEXT_READY,w.QUESTIONNAIRE_LOADED,w.QUESTIONNAIRE_CLEARED,w.QUESTIONNAIRE_NEW,w.FHIR_VERSION_CHANGED,w.PREVIEW_MODE_CHANGE,w.BUILDER_VIEW_MODE_CHANGE,w.BUILDER_META_ROW_CHANGE,w.LANGUAGE_CHANGED]),pe=Vn(X,ds);var qe=class{tree=[];rawFhir=null;contained=[];variables=[];meta={id:"",url:"",version:"",title:"",status:"draft",publisher:"",description:"",name:"",date:"",subjectType:[],purpose:"",copyright:"",approvalDate:"",lastReviewDate:"",effectivePeriodStart:"",effectivePeriodEnd:"",experimental:null,language:"",derivedFrom:[],replaces:[],copyrightLabel:"",_versionAlgorithmString:"",_versionAlgorithmCoding:null,_rawIdentifier:[],_rawText:null,_rawContact:null,_rawUseContext:null,_rawJurisdiction:null,_rawCode:null,_metaVersionId:"",_metaSource:"",_metaLastUpdated:"",_rawMetaProfile:[],_rawMetaTag:[],_rawMetaSecurity:[],_rawQuestExtensions:[],preferredTermServer:"",_signatureRequired:[],_implicitRules:"",fhirTarget:"R4"};translations={};get fhirTarget(){return this.meta.fhirTarget}get containedValueSets(){return this.contained.filter(t=>t.resourceType==="ValueSet")}constructor(t=X){t.on(w.VARIABLES_APPLY,e=>this.applyVariables(e.detail.variables))}applyVariables(t){for(let{name:e,expression:i}of t){let s=this.variables.findIndex(a=>a.name===e);s>=0?this.variables[s].expression=i:this.variables.push({name:e,expression:i})}}reset(){tt(this.tree),this.rawFhir=null,this.contained.splice(0),this.variables.splice(0),Object.assign(this.meta,{id:"",url:"",version:"",title:"",status:"draft",publisher:"",description:"",name:"",date:"",subjectType:[],purpose:"",copyright:"",approvalDate:"",lastReviewDate:"",effectivePeriodStart:"",effectivePeriodEnd:"",experimental:null,language:"",derivedFrom:[],replaces:[],copyrightLabel:"",_versionAlgorithmString:"",_versionAlgorithmCoding:null,_rawIdentifier:[],_rawText:null,_rawContact:null,_rawUseContext:null,_rawJurisdiction:null,_rawCode:null,_metaVersionId:"",_metaSource:"",_metaLastUpdated:"",_rawMetaProfile:[],_rawMetaTag:[],_rawMetaSecurity:[],_rawQuestExtensions:[],preferredTermServer:"",_signatureRequired:[],_implicitRules:"",fhirTarget:"R4"})}},Bn=new qe;var Fe=class n{data={};static _parse(t){let e=/^(.+)\$\$(\d+|n)$/.exec(t);return e?e[2]==="n"?{base:e[1],kind:"count"}:{base:e[1],kind:"row",index:Number(e[2])}:{base:t,kind:"row",index:0}}_scope(t){let e=this.data;for(let i of t||[]){let s=e[i.id],a=Array.isArray(s)?s[i.idx]:void 0;if(!a||typeof a!="object")return null;e=a}return e}_scopeOrCreate(t){let e=this.data;for(let i of t||[]){let s=e[i.id];Array.isArray(s)||(s=e[i.id]=[]),(!s[i.idx]||typeof s[i.idx]!="object")&&(s[i.idx]={}),e=s[i.idx]}return e}get(t,e){let i=this._scope(e);if(!i)return;let s=n._parse(t),a=i[s.base];return s.kind==="count"?Array.isArray(a)?Math.max(0,a.length-1):0:Array.isArray(a)?a[s.index]:void 0}getAll(t,e){let i=this._scope(e),s=i&&i[t];return Array.isArray(s)?s.filter(a=>a!==void 0):[]}set(t,e,i){let s=this._scopeOrCreate(i),a=n._parse(t),o=s[a.base]||(s[a.base]=[]);if(a.kind==="count"){let l=e+1;if(o.length>l)o.length=l;else for(;o.length<l;)o.push(void 0);return}o[a.index]=e}remove(t,e){let i=this._scope(e);if(!i)return;let s=n._parse(t);if(s.kind==="count"){let o=i[s.base];o&&(o.length=1);return}if(t===s.base){delete i[s.base];return}let a=i[s.base];a&&delete a[s.index]}instanceCount(t,e){let i=this._scope(e),s=i&&i[t];return Array.isArray(s)?s.length:0}addInstance(t,e){let i=this._scopeOrCreate(e),s=i[t]||(i[t]=[]);return s.push({}),s.length}removeInstance(t,e,i){let s=this._scope(i),a=s&&s[t];Array.isArray(a)&&a.splice(e,1)}clear(){let t=this.data;Object.keys(t).forEach(e=>delete t[e])}toValueMap(){let t={};for(let e of Object.keys(this.data))t[e]=this.data[e].slice();return t}merge(t){for(let e of Object.keys(t))this.data[e]=Array.isArray(t[e])?t[e].slice():[t[e]]}replaceAll(t){this.clear(),this.merge(t)}constructor(t=X){t.on(w.ANSWER_SET,e=>this.set(e.detail.id,e.detail.value,e.detail.path)),t.on(w.ANSWER_DELETE,e=>this.remove(e.detail.id,e.detail.path)),t.on(w.ANSWERS_CLEAR,()=>this.clear())}},it=new Fe;var st=class{constructor({questDoc:t,answerStore:e,bus:i,config:s={}}){this.questDoc=t,this.answerStore=e,this.bus=i,this.config=s}};function qn(n={}){let t=new Ne(new EventTarget);return new st({questDoc:new qe(t),answerStore:new Fe(t),bus:t,config:n})}var Fn=new st({questDoc:Bn,answerStore:it,bus:X,config:{}});var Un={add_another:"+ Add another",add_row:"+ Add another entry",more_info:"More info \u2197",or_separator:"OR",and_separator:"AND",select_placeholder:"select"};function Wt(){return{bus:X,ctx:null,resultMap:null,cEnv:{},visible:[],groupIconMap:null,previewMode:"preview",viewPrefs:null,lastCtx:null,buildControl:null,updateGroupIcons:null,isMandatory:null,calcFormOk:null,evalConstraints:null,getValue:null,getAll:null,set:null,remove:null,CHECKABLE_TYPES:null,instancePath:[],instanceCount:null,addInstance:null,removeInstance:null,evalChildren:null,activeLanguage:"",translations:null,showNavBtn:!0,showExplain:!0}}var Wn=Wt();function Ae(n,t){let e=Un[n]??n;return t?.activeLanguage?t.translations?.[t.activeLanguage]?.ui?.[n]??e:e}var Hn={error:{title:"Error",icon:"!"},warn:{title:"Warning",icon:"!"},info:{title:"Info",icon:"i"}};function Ht(n,t){document.removeEventListener("keydown",t,!0),n.style.opacity="0",n.addEventListener("transitionend",()=>n.remove(),{once:!0}),setTimeout(()=>{n.isConnected&&n.remove()},300)}function $n(n,t="error"){let e=Hn[t]||Hn.error,i=document.createElement("div");i.className="modal-backdrop notif-backdrop",i.style.opacity="0";let s=document.createElement("div");s.className=`modal-box notif-box notif--${t}`,s.setAttribute("role","alertdialog"),s.setAttribute("aria-modal","true");let a=document.createElement("div");a.className="modal-header";let o=document.createElement("div");o.className="notif-header-title";let l=document.createElement("span");l.className="notif-title-icon",l.textContent=e.icon;let r=document.createElement("span");r.className="modal-title-label",r.textContent=e.title,o.append(l,r),a.appendChild(o);let c=document.createElement("div");c.className="modal-body",c.textContent=n;let d=document.createElement("div");d.className="modal-footer";let u=document.createElement("button");u.type="button",u.className="modal-btn modal-btn--apply",u.textContent="OK",d.appendChild(u),s.append(a,c,d),i.appendChild(s),document.body.appendChild(i),i.getBoundingClientRect(),i.style.opacity="1",u.focus();let f=h=>{(h.key==="Escape"||h.key==="Enter")&&Ht(i,f)};document.addEventListener("keydown",f,!0),u.onclick=()=>Ht(i,f),i.addEventListener("click",h=>{h.target===i&&Ht(i,f)})}var _e=n=>$n(n,"error");var jn=n=>$n(n,"info");var $t=class{_map=new Map;register(t){this._map.set(t.id,t)}get(t){return this._map.get(t)}getAll(){return[...this._map.values()]}getBuilderVersions(){return this.getAll().filter(t=>t.isBuilderVersion)}detectVersion(t){let e=(t?.extension||[]).find(i=>i?.url===we);if(e?.valueCode){for(let i of this._map.values())if(i.metaVersion&&i.metaVersion===e.valueCode)return i.id}return this._map.has("R5")&&(jt(t?.item,"disabledDisplay")||jt(t?.item,"answerConstraint"))?"R5":"R4"}},we="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/builder-target-version",Le="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/item-answerConstraint",Oe="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/item-disabledDisplay";function De(n,t){n.extension=(n.extension||[]).filter(e=>e?.url!==we),n.extension.push({url:we,valueCode:t}),n.extension.length===0&&delete n.extension}function jt(n,t){if(!Array.isArray(n))return!1;for(let e of n)if(e?.[t]!==void 0||jt(e?.item,t))return!0;return!1}var fe=new $t;function Gn(n){return typeof n=="string"&&(n.startsWith("3.")||n.startsWith("1."))}function Qn(n){if(!n)return!1;if(n.type==="coding"||Array.isArray(n.option)&&n.option.length||n.options)return!0;for(let t of n.enableWhen||[])if(t.hasAnswer!==void 0||!("operator"in t)&&us(t))return!0;if(fs(n))return!0;for(let t of n.item||[])if(Qn(t))return!0;return!1}function us(n){return Object.keys(n).some(t=>t.startsWith("answer"))}var ps=["initialBoolean","initialDecimal","initialInteger","initialDate","initialDateTime","initialTime","initialString","initialUri","initialAttachment","initialCoding","initialQuantity","initialReference"];function fs(n){return ps.some(t=>n[t]!==void 0)}function hs(n){if(!n||n.resourceType!=="Questionnaire"||(n.extension||[]).some(t=>t?.url===we))return!1;if(Gn(n.fhirVersion)||Gn(n.meta?.fhirVersion))return!0;for(let t of n.item||[])if(Qn(t))return!0;return!1}function ms(n){Array.isArray(n.option)&&!Array.isArray(n.answerOption)&&(n.answerOption=n.option,delete n.option)}function gs(n){n.options&&typeof n.options=="object"&&n.options.reference&&(n.answerValueSet=n.options.reference,delete n.options)}function _s(n){return Array.isArray(n)?n.map(t=>{let e={...t};return e.hasAnswer!==void 0?(e.operator="exists",e.answerBoolean=e.hasAnswer,delete e.hasAnswer,e):(e.operator||Object.keys(e).find(s=>s.startsWith("answer"))&&(e.operator="="),e)}):n}var vs={initialBoolean:"valueBoolean",initialDecimal:"valueDecimal",initialInteger:"valueInteger",initialDate:"valueDate",initialDateTime:"valueDateTime",initialTime:"valueTime",initialString:"valueString",initialUri:"valueUri",initialAttachment:"valueAttachment",initialCoding:"valueCoding",initialQuantity:"valueQuantity",initialReference:"valueReference"};function ys(n){if(!Array.isArray(n.initial)){for(let[t,e]of Object.entries(vs))if(n[t]!==void 0){n.initial=[{[e]:n[t]}],delete n[t];return}}}function xs(n){n.type==="coding"&&(n.type="choice")}function Yn(n){xs(n),ms(n),gs(n),n.enableWhen&&(n.enableWhen=_s(n.enableWhen)),ys(n);for(let t of n.item||[])Yn(t)}function Jn(n){if(!hs(n))return n;let t=JSON.parse(JSON.stringify(n));for(let e of t.item||[])Yn(e);return t}var zn=1,Xn=()=>"n"+zn++,Kn=()=>{zn=1},bs=1,rt=(n="uid")=>n+"-"+bs++;var ve="http://hl7.org/fhir",Es="http://terminology.hl7.org",B=ve+"/StructureDefinition",J=ve+"/uv/sdc/StructureDefinition",Cs=ve+"/uv/sdc/CodeSystem",p={sd:B,vs:ve+"/ValueSet",itemControl:B+"/questionnaire-itemControl",constraint:B+"/questionnaire-constraint",unit:B+"/questionnaire-unit",unitValueSet:B+"/questionnaire-unitValueSet",unitOption:B+"/questionnaire-unitOption",minOccurs:B+"/questionnaire-minOccurs",maxOccurs:B+"/questionnaire-maxOccurs",sliderStepValue:B+"/questionnaire-sliderStepValue",supportLink:B+"/questionnaire-supportLink",optionPrefix:B+"/questionnaire-optionPrefix",optionExclusive:B+"/questionnaire-optionExclusive",hidden:B+"/questionnaire-hidden",usageMode:B+"/questionnaire-usageMode",choiceOrientation:B+"/questionnaire-choiceOrientation",displayCategory:B+"/questionnaire-displayCategory",baseType:B+"/questionnaire-baseType",fhirType:B+"/questionnaire-fhirType",referenceResource:B+"/questionnaire-referenceResource",referenceProfile:B+"/questionnaire-referenceProfile",referenceFilter:B+"/questionnaire-referenceFilter",signatureRequired:B+"/questionnaire-signatureRequired",minValue:B+"/minValue",maxValue:B+"/maxValue",minLength:B+"/minLength",maxSize:B+"/maxSize",mimeType:B+"/mimeType",regex:B+"/regex",entryFormat:B+"/entryFormat",ordinalValue:B+"/ordinalValue",itemWeight:B+"/itemWeight",designNote:B+"/designNote",translation:B+"/translation",maxDecimalPlaces:B+"/maxDecimalPlaces",renderingXhtml:B+"/rendering-xhtml",renderingStyle:B+"/rendering-style",renderingMarkdown:B+"/rendering-markdown",artifactVersionAlgorithm:B+"/artifact-versionAlgorithm",artifactCopyrightLabel:B+"/artifact-copyrightLabel",replaces:B+"/replaces",calculatedExpression:J+"/sdc-questionnaire-calculatedExpression",initialExpression:J+"/sdc-questionnaire-initialExpression",enableWhenExpression:J+"/sdc-questionnaire-enableWhenExpression",answerExpression:J+"/sdc-questionnaire-answerExpression",candidateExpression:J+"/sdc-questionnaire-candidateExpression",variable:J+"/sdc-questionnaire-variable",launchContext:J+"/sdc-questionnaire-launchContext",itemMedia:J+"/sdc-questionnaire-itemMedia",answerMedia:J+"/sdc-questionnaire-answerMedia",isSubject:J+"/sdc-questionnaire-isSubject",entryFormatSdc:J+"/sdc-questionnaire-entryFormat",columnCount:J+"/sdc-questionnaire-columnCount",choiceColumn:J+"/sdc-questionnaire-choiceColumn",collapsible:J+"/sdc-questionnaire-collapsible",hiddenSdc:J+"/sdc-questionnaire-hidden",openLabel:J+"/sdc-questionnaire-openLabel",observationExtract:J+"/sdc-questionnaire-observationExtract",preferredTerminologyServer:J+"/sdc-questionnaire-preferredTerminologyServer",shortText:J+"/sdc-questionnaire-shortText",itemContext:J+"/sdc-questionnaire-itemContext",definitionExtract:J+"/sdc-questionnaire-definitionExtract",definitionExtractContext:J+"/sdc-questionnaire-definitionExtractContext",sdcQuestionnaire:J+"/sdc-questionnaire",sdcObservation:J+"/sdc-observation",launchContextCS:Cs+"/launchContext",itemControlCS:ve+"/questionnaire-item-control",displayCategoryCS:ve+"/questionnaire-display-category",versionAlgorithm:ve+"/version-algorithm",icd10cm:ve+"/sid/icd-10-cm",v3Confidentiality:Es+"/CodeSystem/v3-Confidentiality"};var at="http://fhir-qb.app",te={redcapNs:at+"/redcap/",uiTranslations:at+"/StructureDefinition/ui-translations",xhtmlTranslations:at+"/StructureDefinition/xhtml-translations",markdownTranslations:at+"/StructureDefinition/markdown-translations"};var ws=new Set([p.enableWhenExpression,p.constraint,p.itemControl,p.referenceResource,p.unit,p.unitValueSet,p.calculatedExpression,p.initialExpression,p.minLength,p.entryFormatSdc,p.entryFormat,p.choiceOrientation,p.displayCategory,p.minValue,p.maxValue,p.minOccurs,p.maxOccurs,p.sliderStepValue,p.supportLink,p.hiddenSdc,p.hidden,p.observationExtract,p.collapsible,p.openLabel,p.isSubject,p.columnCount,Oe,Le,p.maxSize,p.mimeType,p.designNote,p.answerExpression,p.candidateExpression,p.preferredTerminologyServer,p.choiceColumn,p.unitOption,p.regex,p.usageMode,p.referenceFilter,p.referenceProfile,p.signatureRequired,p.itemMedia,p.itemWeight,p.baseType,p.fhirType]),ot=[{url:p.answerExpression,prop:"_answerExpression"},{url:p.candidateExpression,prop:"_candidateExpression"}];function Gt(n){let t=(n.extension||[]).filter(e=>!ws.has(e.url));return t.length?t.map(e=>JSON.parse(JSON.stringify(e))):null}function Qt(n){return n==="boolean"?"checkbox":n==="integer"?"integer":n==="decimal"?"decimal":n==="quantity"?"quantity":n==="choice"||n==="coding"?"select":n==="open-choice"?"open-choice":n==="display"?"display":n==="date"?"date":n==="dateTime"?"dateTime":n==="time"?"time":n==="url"?"url":n==="attachment"?"attachment":n==="reference"?"reference":"text"}function Yt(n){return(n||[]).map(t=>{if(t.valueCoding){let e=t.valueCoding.code||"",i=t.valueCoding.display||"";return e&&i&&e!==i?e+"="+i:i||e}return t.valueString!==void 0?t.valueString:t.valueInteger!==void 0?String(t.valueInteger):t.valueDate!==void 0?t.valueDate:t.valueTime!==void 0?t.valueTime:t.valueReference?typeof t.valueReference=="string"?t.valueReference:t.valueReference.reference||"":""}).filter(Boolean).join(", ")}function Jt(n){return(n||[]).some(t=>!t.valueCoding)}function Zn(n){return(n||[]).some(t=>t.valueCoding&&[t.valueCoding.code,t.valueCoding.display].some(e=>typeof e=="string"&&e.includes(",")))}function zt(n,t={}){for(let e of n||[])t[e.linkId]=e.text||e.linkId||"",zt(e.item,t);return t}function ei(n,t,e){if(!n||!n.length)return"";let i=t==="any"?" OR ":" AND ";return n.map(a=>{let o=e&&e[a.question]||a.question;if(a.operator==="exists")return"\xAB"+o+"\xBB has answer";let l;a.answerBoolean!==void 0?l=a.answerBoolean?"Yes":"No":a.answerString!==void 0?l="\xAB"+a.answerString+"\xBB":a.answerInteger!==void 0?l=a.answerInteger:a.answerDecimal!==void 0?l=a.answerDecimal:a.answerQuantity!==void 0?l=(a.answerQuantity.value??"?")+(a.answerQuantity.unit||a.answerQuantity.code?" "+(a.answerQuantity.unit||a.answerQuantity.code):""):a.answerCoding?l=a.answerCoding.display||a.answerCoding.code||"?":l="?";let r={"=":"=","!=":"\u2260",">":">","<":"<",">=":"\u2265","<=":"\u2264"}[a.operator]||a.operator;return"\xAB"+o+"\xBB "+r+" "+l}).join(i)}function lt(n,t,e){t.enableWhen&&t.enableWhen.length&&(n.enableWhen=t.enableWhen.map(s=>({...s})),n.enableBehavior=t.enableBehavior==="any"?"any":"all",n._enableWhenText=ei(t.enableWhen,t.enableBehavior,e));let i=(t.extension||[]).find(s=>s.url===p.enableWhenExpression);i&&i.valueExpression&&(n.enableWhenExpression=i.valueExpression.expression||"")}function Xt(n,t){let e=(t.extension||[]).filter(s=>s.url===p.constraint);if(!e.length)return!1;let i=!1;return n.constraint=e.map(s=>({key:s.extension?.find(a=>a.url==="key")?.valueId||"",expression:s.extension?.find(a=>a.url==="expression")?.valueString||"",human:s.extension?.find(a=>a.url==="human")?.valueString||"",severity:s.extension?.find(a=>a.url==="severity")?.valueCode||"error"})).filter(s=>s.key===Be?(i=!0,!1):s.expression),i}function Kt(n,t){if(!t||!t.startsWith("#"))return"";let e=t.slice(1),i=(n||[]).find(a=>a.resourceType==="ValueSet"&&a.id===e);if(!i)return"";let s=[];for(let a of i.compose?.include||[])for(let o of a.concept||[])o.code&&s.push(o.code+(o.display?"="+o.display:""));return s.join(",")}var W=new Map;var ti=new Map;typeof document<"u"&&document.addEventListener("keydown",n=>{if(n.key!=="Escape")return;let t=null,e=-1;for(let[i,s]of ti){if(i.style.display==="none")continue;let a=parseInt(getComputedStyle(i).zIndex,10)||0;a>e&&(e=a,t=s)}t&&t()});function oe(n,t){let e=document.createElement(n);return t&&(e.className=t),e}var Ss='a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',Rs=0,ct=class{getName(){return null}constructor({cancelLabel:t="Cancel",applyLabel:e="Apply",maxWidth:i=null,bodyClass:s=null}={}){this.backdrop=oe("div","modal-backdrop"),this.backdrop.style.display="none";let a=oe("div","modal-box");i&&(a.style.maxWidth=i),this.box=a,a.setAttribute("role","dialog"),a.setAttribute("aria-modal","true"),a.tabIndex=-1;let o=oe("div","modal-header");this.title=oe("span"),this.title.id="modal-title-"+ ++Rs,a.setAttribute("aria-labelledby",this.title.id),this.closeBtn=oe("button","modal-close"),this.closeBtn.type="button",this.closeBtn.dataset.tipTitle="Close",this.closeBtn.textContent="\u2715",o.append(this.title,this.closeBtn),this.body=oe("div",s?`modal-body ${s}`:"modal-body"),this.footer=oe("div","modal-footer"),this.cancelBtn=null,this.applyBtn=null,t!==null&&(this.cancelBtn=oe("button","modal-btn modal-btn--cancel"),this.cancelBtn.type="button",this.cancelBtn.textContent=t,this.footer.appendChild(this.cancelBtn)),e!==null&&(this.applyBtn=oe("button","modal-btn modal-btn--apply"),this.applyBtn.type="button",this.applyBtn.textContent=e,this.footer.appendChild(this.applyBtn)),a.append(o,this.body,this.footer),this.backdrop.appendChild(a);let l=this.getName();l&&(this.backdrop.dataset.testid=l,this.title.dataset.testid=l+"Title",this.closeBtn.dataset.testid=l+"Close",this.body.dataset.testid=l+"Body",this.cancelBtn&&(this.cancelBtn.dataset.testid=l+"Cancel"),this.applyBtn&&(this.applyBtn.dataset.testid=l+"Apply")),this.closeBtn.addEventListener("click",()=>this._cancel()),this.cancelBtn&&this.cancelBtn.addEventListener("click",()=>this._cancel()),this.applyBtn&&this.applyBtn.addEventListener("click",()=>this._apply()),this.backdrop.addEventListener("click",r=>{r.target===this.backdrop&&this._cancel()}),ti.set(this.backdrop,()=>this._cancel()),document.body.appendChild(this.backdrop)}open(){this._prevFocus=typeof document<"u"&&document.activeElement||null,this.backdrop.style.display="flex",this._trapHandler||(this._trapHandler=t=>this._onTrapKeydown(t),this.backdrop.addEventListener("keydown",this._trapHandler));try{this.box.focus({preventScroll:!0})}catch{}}close(){this.backdrop.style.display="none",this._trapHandler&&(this.backdrop.removeEventListener("keydown",this._trapHandler),this._trapHandler=null);let t=this._prevFocus;if(this._prevFocus=null,t&&typeof t.focus=="function"&&t.isConnected)try{t.focus({preventScroll:!0})}catch{}}_onTrapKeydown(t){if(t.key!=="Tab")return;let e=[...this.box.querySelectorAll(Ss)].filter(o=>o.offsetParent!==null||o===document.activeElement);if(e.length===0){t.preventDefault(),this.box.focus();return}let i=e[0],s=e[e.length-1],a=document.activeElement;t.shiftKey&&(a===i||a===this.box)?(t.preventDefault(),s.focus()):!t.shiftKey&&a===s&&(t.preventDefault(),i.focus())}setTitle(t,e){this.title.innerHTML="";let i=oe("span","modal-title-label");if(i.textContent=t,this.title.appendChild(i),e){let s=oe("span","modal-title-subject");s.textContent=" \u2014 "+e,this.title.appendChild(s)}}_apply(){this.close()}_cancel(){this.close()}};var re=()=>typeof window<"u"?window.fhirpath_r4_model:void 0;function ni(n,t){let e=[],i=0,s=null,a=0,o=" "+t+" ",l=o.length,r=n.length;for(let c=0;c<r;c++){let d=n[c];if(s){d===s&&(s=null);continue}if(d==="'"||d==='"'){s=d;continue}if(d==="("||d==="["||d==="{"){i++;continue}if(d===")"||d==="]"||d==="}"){i--;continue}i===0&&n.slice(c,c+l).toLowerCase()===o&&(e.push(n.slice(a,c).trim()),a=c+l,c+=l-1)}return e.length>0?(e.push(n.slice(a).trim()),e):[]}function Ts(n){if(n=n.trim(),!n.startsWith("("))return n;let t=0;for(let e=0;e<n.length;e++)if(n[e]==="(")t++;else if(n[e]===")"&&(t--,t===0))return e===n.length-1?n.slice(1,-1).trim():n;return n}function Ue(n){let t=Ts(n.trim()),e=/^not\s*\(([\s\S]+)\)$/i.exec(t);if(e)return{type:"NOT",child:Ue(e[1])};let i=ni(t,"or");if(i.length>=2)return{type:"OR",children:i.map(a=>Ue(a))};let s=ni(t,"and");return s.length>=2?{type:"AND",children:s.map(a=>Ue(a))}:{type:"LEAF",expr:t}}function We(n,t,e,i){switch(n.type){case"LEAF":{try{let s=t.evaluate(e||{},n.expr,i||{},re()),a=Array.isArray(s)?s[0]:s;n.result=a===!0||a==="true"||typeof a=="number"&&a!==0?!0:a===!1||a==="false"||a===0?!1:s.length>0}catch(s){n.result=null,n.error=s.message}break}case"NOT":{We(n.child,t,e,i),n.result=n.child.result===null?null:!n.child.result;break}case"AND":{for(let s of n.children)We(s,t,e,i);n.result=n.children.every(s=>s.result===!0);break}case"OR":{for(let s of n.children)We(s,t,e,i);n.result=n.children.some(s=>s.result===!0);break}}return n}var Zt=class extends ct{getName(){return"explainModal"}constructor(){super({cancelLabel:"Close",applyLabel:null}),this.setTitle("Expression Explain")}show(t,e,i,s){this.setTitle("Expression Explain"),this.body.innerHTML="";try{let r=Ue(t);We(r,e,i,s),this.body.appendChild(en(r,0))}catch(r){let c=document.createElement("div");c.className="explain-parse-error",c.textContent="Could not parse expression: "+r.message,this.body.appendChild(c)}let a=document.createElement("div");a.className="explain-fhirpath";let o=document.createElement("span");o.className="explain-fhirpath-label",o.textContent="FHIRPath:";let l=document.createElement("code");l.className="explain-full-expr",l.textContent=t,a.append(o,l),this.body.appendChild(a),super.open()}showAudit(t,e){this.setTitle(t),this.body.innerHTML="";let i=document.createElement("div");i.className="explain-audit-head",i.textContent=`Shown only when ${e.logic} of these conditions are met:`,this.body.appendChild(i);for(let s of e.rows){let a=document.createElement("div");a.className="explain-row",a.style.setProperty("--explain-depth",0),a.appendChild(ii(s.ok));let o=document.createElement("span");o.className="explain-expr",o.textContent=s.text,a.appendChild(o),this.body.appendChild(a)}super.open()}_cancel(){this.close()}};function ii(n){let t=document.createElement("span");return t.className="explain-icon"+(n===!0?" explain-icon--true":n===!1?" explain-icon--false":" explain-icon--err"),t.textContent=n===!0?"\u2713":n===!1?"\u2717":"?",t}function en(n,t){let e=document.createDocumentFragment(),i=document.createElement("div");if(i.className="explain-row",i.style.setProperty("--explain-depth",t),i.appendChild(ii(n.result)),n.type==="LEAF"){let s=document.createElement("code");if(s.className="explain-expr",s.textContent=n.expr,i.appendChild(s),n.error){let a=document.createElement("span");a.className="explain-error",a.textContent=n.error,i.appendChild(a)}}else{let s=document.createElement("span");s.className="explain-op explain-op--"+n.type.toLowerCase(),s.textContent=n.type,i.appendChild(s)}if(e.appendChild(i),n.type==="AND"||n.type==="OR")for(let s of n.children)e.appendChild(en(s,t+1));else n.type==="NOT"&&e.appendChild(en(n.child,t+1));return e}var Ns=null,si=()=>Ns??=new Zt,Se=(n,t,e,i)=>si().show(n,t,e,i),ri=(n,t)=>si().showAudit(n,t);function oi(n,t){for(let e of n)t.push({node:e,visible:!0,ok:!0,disabled:!0}),e.children?.length&&oi(e.children,t)}function He(n,t){if(t.operator==="exists"){let a=n!=null&&n!=="";return t.answerBoolean!==!1?a:!a}if(t.answerQuantity!==void 0){let a=t.answerQuantity||{},o=Number(n&&typeof n=="object"?n.value:n),l=Number(a.value),r=n&&typeof n=="object"&&n.unit||"",c=a.code||a.unit||"",d=!c||String(r)===String(c);switch(t.operator){case"=":return o===l&&d;case"!=":return!(o===l&&d);case">":return o>l;case"<":return o<l;case">=":return o>=l;case"<=":return o<=l}return!1}let e;if(t.answerBoolean!==void 0)e=t.answerBoolean;else if(t.answerString!==void 0)e=t.answerString;else if(t.answerInteger!==void 0)e=t.answerInteger;else if(t.answerDecimal!==void 0)e=t.answerDecimal;else if(t.answerCoding)e=t.answerCoding.code||t.answerCoding.display||"";else return!1;let i=String(e),s=n!=null?String(n):"";switch(t.operator){case"=":return s===i;case"!=":return s!==i;case">":return Number(s)>Number(i);case"<":return Number(s)<Number(i);case">=":return Number(s)>=Number(i);case"<=":return Number(s)<=Number(i)}return!1}function As(n,t,e){let i=e.getAll(n.question,t);return i.length===0&&t&&t.length&&(i=e.getAll(n.question)),i.length===0?He(void 0,n):i.some(s=>He(s,n))}function Ls(n,t,e){let i=t?.answerStore||it;if(n.enableWhen&&n.enableWhen.length){let s=n.enableWhen.map(a=>As(a,e,i));return n.enableBehavior==="any"?s.some(Boolean):s.every(Boolean)}if(n.enableWhenExpression&&t&&t.fp&&t.qr)try{let s={resource:t.qr,...t.envVars||{}};return t.fp.evaluate(t.qr,n.enableWhenExpression,s,re())[0]===!0}catch{return!1}return!0}function ke(n,t,e,i=!1,s=[]){if(n._hidden||i){let c=!!n._hidden&&!i,d={node:n,visible:!0,ok:!0,hidden:!0,hiddenRoot:c};if(e.push(d),n.children?.length)for(let u of n.children)ke(u,t,e,!0,s);return{ok:!0,visible:!0,hidden:!0}}if(!Ls(n,t,s)){let c=!!(n.enableWhen&&n.enableWhen.length)||!!n.enableWhenExpression;return e.push({node:n,visible:!1,ok:n.mandatory===!1,showDimmed:c}),c&&n.children?.length&&oi(n.children,e),{ok:n.mandatory===!1,visible:!1,showDimmed:c}}if(n.type==="item"){if(e.push({node:n,visible:!0,ok:!0}),n.children?.length)for(let c of n.children)ke(c,t,e,!1,s);return{ok:!0,visible:!0}}if(n.repeats)return e.push({node:n,visible:!0,ok:!0,repeating:!0}),{ok:!0,visible:!0};let o={node:n,visible:!0,ok:!0};e.push(o);let l=[];for(let c of n.children){let d=ke(c,t,e,!1,s);d.visible&&l.push(d)}let r;if(l.length===0)r=n.mandatory===!1;else{r=l[0].ok;for(let c=1;c<l.length;c++)r=n.logicWithParent==="AND"?r&&l[c].ok:r||l[c].ok}return o.ok=r,{ok:r,visible:!0}}var Os=["font-weight","font-style","color","font-size","text-decoration"];function li(n){let t={};if(!n)return t;let e=new Set(Os);return n.split(";").forEach(i=>{let s=i.indexOf(":");if(s<1)return;let a=i.slice(0,s).trim().toLowerCase(),o=i.slice(s+1).trim();e.has(a)&&o&&(t[a]=o)}),t}function ci(n,t,e){if(!e)return null;let i=t==="any"?"ANY":"ALL",s=n.map(a=>{let o=e(a.question),l=o.length===0?"(no answer)":o.map(d=>JSON.stringify(d)).join(", "),r=a.operator==="exists"?a.answerBoolean!==!1?"exists":"not exists":JSON.stringify(a.answerBoolean!==void 0?a.answerBoolean:a.answerString!==void 0?a.answerString:a.answerInteger!==void 0?a.answerInteger:a.answerDecimal!==void 0?a.answerDecimal:a.answerCoding!==void 0?a.answerCoding.code||a.answerCoding.display:"?");return{ok:o.length===0?He(void 0,a):o.some(d=>He(d,a)),text:`[${a.question}] ${a.operator} ${r} \u2192 actual: ${l}`}});return{logic:i,rows:s}}function Ds(n,t,e){let i=ci(n,t,e);if(!i)return null;let s=i.rows.map(a=>`${a.ok?"\u2713":"\u2717"} ${a.text}`);return`Enable when (${i.logic}):
2
- `+s.join(`
3
- `)}function Y(){let n=document.createElement("span");return n.className="ctrl-wrap",n}function dt(n,t){return t.isMandatory(n)&&t.CHECKABLE_TYPES.has(n.itemType)||n._calculatedExpr&&n._readOnly&&n.itemType==="checkbox"||n.constraint?.length>0||n._minValue!==void 0||n._maxValue!==void 0}function $e(n,t){let e=li(t);for(let i of Object.keys(e))n.style.setProperty(i,e[i])}var I=class n{static _collapseMap=new Map;constructor(t={}){this.id=t.id??Xn(),this.title=t.title??"",this.enableWhen=t.enableWhen??[],this.enableBehavior=t.enableBehavior??"all",this.enableWhenExpression=t.enableWhenExpression??"",this.mandatory=t.mandatory??!1,this._previewCollapsed=!1,typeof document<"u"&&(this._ac=new AbortController,document.addEventListener(w.COPY_TO_NODES,e=>{let{ids:i,patch:s,nodeType:a}=e.detail;i.includes(this.id)&&(a&&this.type!==a||this.applyPatch(s))},{signal:this._ac.signal}))}_ensureBusListeners(t){if(this._busWired||!this._ac)return;this._busWired=!0;let e=t?.bus||X;this._bus=e,e.on(w.REFRESH_CALC_BADGES,()=>this._refreshCalcBadge?.(),{signal:this._ac.signal}),e.on(w.BUILDER_NAVIGATE,i=>{this._previewCollapsed&&Ce(i.detail.id,this)&&(this._previewCollapsed=!1)},{signal:this._ac.signal}),e.on(w.COLLAPSE_ALL_PREVIEW,()=>{this._previewCollapsed=!0},{signal:this._ac.signal}),e.on(w.EXPAND_ALL_PREVIEW,()=>{this._previewCollapsed=!1},{signal:this._ac.signal}),this._initPreviewNavListener(e)}destroy(){this._ac?.abort(),this._navAbort?.abort()}applyPatch(t){for(let[e,i]of Object.entries(t))i===null?delete this[e]:this[e]=i}static _hasClipboard=!1;static{typeof document<"u"&&document.addEventListener(w.CLIPBOARD_CHANGED,t=>{n._hasClipboard=t.detail.hasClip})}static notifyChanged(t){(t||X).dispatch(w.RESPONSE_CHANGED)}static dispatch(t,e,i){t&&t.node.renderPreview(t,e,i)}renderPreview(t,e,i){if(this._ensureBusListeners(i),!t.visible&&!t.showDimmed)return;let s=i.previewMode==="patient";if(t.hidden&&(s||!i.viewPrefs.showHiddenItems))return;if(i.cellMode&&this.type==="item"){if(!t.visible)return;let l=this._makePreviewRow("lform-item gtable-cell-item");t._iconEl=null,this._buildRowContent(l,t,i),e.appendChild(l);return}if(this._usageMode){let l=this._usageMode,r=l==="display"||l==="display-non-empty";if(s&&r)return;!s&&r&&(t._usageModeHidden=!0)}if(!t.visible&&t.showDimmed){s||this._renderDimmed(t,e,i);return}if(t.disabled){this._renderDisabled(t,e,i);return}let a=this._createBaseRow(t,i);this._buildRowContent(a,t,i);let o=this._appendRow(a,t,e);this._renderChildren(t,o,i)}_renderDimmed(t,e,i){let s=this._makePreviewRow("lform-item lform-waiting"+(i.showNavBtn?" preview-row--pointer":""));i.showNavBtn&&(s.dataset.tipTitle="Click to navigate to builder node",s.addEventListener("click",()=>i.bus.dispatch(w.BUILDER_NAVIGATE_TO,{nodeId:this.id})));let a=document.createElement("span");a.className="preview-icon-ph",s.appendChild(a);let o=document.createElement("span");o.className="preview-label--dim",o.textContent=(this.type==="group"?"Group: ":"Item: ")+this.title,s.appendChild(o);let l=document.createElement("span");l.className="preview-condition-hint preview-condition-waiting",l.dataset.testid="preview-condition-hint";let r=this._enableWhenText||this.enableWhenExpression||"condition not met";if(l.textContent="\u{1F512} "+r,this.enableWhenExpression){if(l.dataset.tipTitle="Visibility condition",l.dataset.tipBody="Not met. FHIRPath: "+this.enableWhenExpression+(i.showExplain?`
1
+ var Oe=class{constructor(e){this._target=e||(typeof document<"u"?document:new EventTarget)}dispatch(e,t){this._target.dispatchEvent(new CustomEvent(e,{detail:t}))}on(e,t,i){return this._target.addEventListener(e,t,i),()=>this._target.removeEventListener(e,t,i)}off(e,t,i){this._target.removeEventListener(e,t,i)}get target(){return this._target}},X=new Oe;function si(n,e){let t=new Map;for(let i of e)n.on(i,r=>t.set(i,r?.detail??{}));return{get(i){return t.get(i)},_set(i,r){t.set(i,r)}}}var fs="e3a8c2f1-6b4d-4e9a-87c5",He=fs+":group-or";function dt(n){n.forEach(e=>e.destroy?.()),n.splice(0)}function we(n,e){for(let t of e.children)if(t.id===n||t.children?.length&&we(n,t))return!0;return!1}function ms(n){let e=n.indexOf("=");return e===-1?{code:n,display:n}:{code:n.slice(0,e).trim(),display:n.slice(e+1).trim()}}function pt(n){return(n||"").split(",").map(e=>e.trim()).filter(Boolean).map(ms)}function ai(n){return(n||[]).map(e=>{if(e.valueCoding){let t=e.valueCoding.code||e.valueCoding.display||"",i=e.valueCoding.display||e.valueCoding.code||"";return{code:t,display:i}}if(e.valueString!==void 0)return{code:e.valueString,display:e.valueString};if(e.valueInteger!==void 0)return{code:String(e.valueInteger),display:String(e.valueInteger)};if(e.valueDate!==void 0)return{code:e.valueDate,display:e.valueDate};if(e.valueTime!==void 0)return{code:e.valueTime,display:e.valueTime};if(e.valueReference){let t=typeof e.valueReference=="string"?e.valueReference:e.valueReference.reference||"",i=typeof e.valueReference=="object"&&e.valueReference.display||t;return{code:t,display:i}}return null}).filter(Boolean)}function Ce(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/("(?:\\u[0-9a-fA-F]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(?:true|false|null)\b|-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?)/g,t=>{let i;return/^"/.test(t)?i=/:$/.test(t)?"jv-k":"jv-s":t==="true"||t==="false"?i="jv-b":t==="null"?i="jv-null":i="jv-n",'<span class="'+i+'">'+t+"</span>"})}function oi(n,e){if(!e)return{html:Ce(n),count:0};let t=e.toLowerCase(),i=n.toLowerCase(),r=[],s=0;for(;(s=i.indexOf(t,s))!==-1;)r.push(s),s+=t.length;if(r.length===0)return{html:Ce(n),count:0};let o="",l=0;for(let c of r)o+=n.slice(l,c)+""+n.slice(c,c+t.length)+"",l=c+t.length;o+=n.slice(l);let a=Ce(o);return a=a.split("").join('<mark class="search-match">'),a=a.split("").join("</mark>"),{html:a,count:r.length}}var E=Object.freeze({QUESTIONNAIRE_LOADED:"questionnaire-loaded",QUESTIONNAIRE_CLEARED:"questionnaire-cleared",QUESTIONNAIRE_NEW:"questionnaire-new",QUESTIONNAIRE_CLEAR_REQUESTED:"questionnaire-clear-requested",QUESTIONNAIRE_RESET:"questionnaire-reset",QUESTIONNAIRE_META_CHANGED:"questionnaire-meta-changed",QUESTIONNAIRE_LOAD_CONFIRM_REQUESTED:"questionnaire-load-confirm-requested",QUESTIONNAIRE_LOAD_REQUESTED:"questionnaire-load-requested",APP_CONTEXT_READY:"app:context-ready",BUILDER_RERENDER:"builder:rerender",BUILDER_NAVIGATE:"builder:navigate",BUILDER_NAVIGATE_TO:"builder:navigate-to",BUILDER_EXPAND_ALL:"builder:expand-all",BUILDER_COLLAPSE_ALL:"builder:collapse-all",BUILDER_VIEW_MODE_CHANGE:"builder:view-mode-change",BUILDER_META_ROW_CHANGE:"builder:meta-row-change",PREVIEW_NAVIGATE_TO:"preview:navigate-to",REINIT_FORM:"reinit-form",SHOW_JSON:"show-json",VIEW_PREF_CHANGE:"view-pref-change",PREVIEW_MODE_CHANGE:"preview-mode-change",RESPONSE_CHANGED:"preview:response-changed",PREVIEW_RENDER_DONE:"preview:render-done",SDC_POPULATE_REQUESTED:"sdc:populate-requested",DEF_EXTRACT_REQUESTED:"sdc:def-extract-requested",STRUCTUREMAP_EXTRACT_REQUESTED:"sdc:structuremap-extract-requested",STRUCTUREMAP_POPULATE_REQUESTED:"sdc:structuremap-populate-requested",BUILDER_RENDER_DONE:"builder:render-done",OAUTH_LOGIN_REQUIRED:"oauth:login-required",PATIENT_CTX_APPLIED:"patient-ctx-applied",QR_LOADED:"qr-loaded",CLOUD_SAVE_REQUESTED:"cloud-save-requested",CLOUD_LOAD_REQUESTED:"cloud-load-requested",CLOSE_DROPDOWNS:"close-dropdowns",LANGUAGE_CHANGED:"language-changed",TRANSLATE_REQUESTED:"translate-requested",FHIRPATH_TESTER_REQUESTED:"fhirpath-tester-requested",CALC_RECALC_REQUESTED:"calc-recalc-requested",REFRESH_EXPR_ICONS:"refresh-expr-icons",REFRESH_CALC_BADGES:"refresh-calc-badges",COLLAPSE_ALL_PREVIEW:"collapse-all-preview",EXPAND_ALL_PREVIEW:"expand-all-preview",RENUMBER_FORMAT_CHANGED:"renumber-format-changed",RENUMBER_PROGRESS:"renumber-progress",RENUMBER_DONE:"renumber-done",VALIDATOR_TOGGLE:"validator-toggle",TIPS_INIT_DONE:"tips-init-done",TIPS_TOGGLED:"tips-toggled",AUTOSAVE_INIT_DONE:"autosave-init-done",AUTOSAVE_TOGGLED:"autosave-toggled",AUTOSAVE_SAVED:"autosave-saved",VALIDATE_REQUESTED:"validate-requested",NODE_DELETE_REQUESTED:"node:delete-requested",NODE_COPY_REQUESTED:"node:copy-requested",NODE_PASTE_AFTER_REQUESTED:"node:paste-after-requested",NODE_PASTE_BEFORE_REQUESTED:"node:paste-before-requested",CLIPBOARD_CHANGED:"node:clipboard-changed",COPY_TO_NODES:"copy-to-nodes",ANSWER_SET:"answer:set",ANSWER_DELETE:"answer:delete",ANSWERS_CLEAR:"answer:clear",FHIRPATH_CTX_UPDATED:"fhirpath:ctx-updated",VARIABLES_APPLY:"variables:apply",QR_ANSWERS_REQUESTED:"qr:answers-requested",FILE_NAME_CHANGED:"file-name:changed",CLEAR_CONFIRM_REQUESTED:"reset:clear-confirm-requested",EXPORT_PROMPT_REQUESTED:"reset:export-prompt-requested",VALIDATE_EXPORT_REQUESTED:"reset:validate-export-requested",AUTOSAVE_CLEAR_DRAFT:"reset:autosave-clear-draft",FHIR_VERSION_CHANGED:"fhir-version-changed",METADATA_EDIT_REQUESTED:"metadata-edit-requested"}),gs=new Set([E.APP_CONTEXT_READY,E.QUESTIONNAIRE_LOADED,E.QUESTIONNAIRE_CLEARED,E.QUESTIONNAIRE_NEW,E.FHIR_VERSION_CHANGED,E.PREVIEW_MODE_CHANGE,E.BUILDER_VIEW_MODE_CHANGE,E.BUILDER_META_ROW_CHANGE,E.LANGUAGE_CHANGED]),fe=si(X,gs);var We=class{tree=[];rawFhir=null;contained=[];variables=[];meta={id:"",url:"",version:"",title:"",status:"draft",publisher:"",description:"",name:"",date:"",subjectType:[],purpose:"",copyright:"",approvalDate:"",lastReviewDate:"",effectivePeriodStart:"",effectivePeriodEnd:"",experimental:null,language:"",derivedFrom:[],replaces:[],copyrightLabel:"",_versionAlgorithmString:"",_versionAlgorithmCoding:null,_rawIdentifier:[],_rawText:null,_rawContact:null,_rawUseContext:null,_rawJurisdiction:null,_rawCode:null,_metaVersionId:"",_metaSource:"",_metaLastUpdated:"",_rawMetaProfile:[],_rawMetaTag:[],_rawMetaSecurity:[],_rawQuestExtensions:[],preferredTermServer:"",targetStructureMap:"",sourceStructureMap:"",_signatureRequired:[],_implicitRules:"",fhirTarget:"R4"};translations={};get fhirTarget(){return this.meta.fhirTarget}get containedValueSets(){return this.contained.filter(e=>e.resourceType==="ValueSet")}constructor(e=X){e.on(E.VARIABLES_APPLY,t=>this.applyVariables(t.detail.variables))}applyVariables(e){for(let{name:t,expression:i}of e){let r=this.variables.findIndex(s=>s.name===t);r>=0?this.variables[r].expression=i:this.variables.push({name:t,expression:i})}}reset(){dt(this.tree),this.rawFhir=null,this.contained.splice(0),this.variables.splice(0),Object.assign(this.meta,{id:"",url:"",version:"",title:"",status:"draft",publisher:"",description:"",name:"",date:"",subjectType:[],purpose:"",copyright:"",approvalDate:"",lastReviewDate:"",effectivePeriodStart:"",effectivePeriodEnd:"",experimental:null,language:"",derivedFrom:[],replaces:[],copyrightLabel:"",_versionAlgorithmString:"",_versionAlgorithmCoding:null,_rawIdentifier:[],_rawText:null,_rawContact:null,_rawUseContext:null,_rawJurisdiction:null,_rawCode:null,_metaVersionId:"",_metaSource:"",_metaLastUpdated:"",_rawMetaProfile:[],_rawMetaTag:[],_rawMetaSecurity:[],_rawQuestExtensions:[],preferredTermServer:"",targetStructureMap:"",sourceStructureMap:"",_signatureRequired:[],_implicitRules:"",fhirTarget:"R4"})}},li=new We;var je=class n{data={};static _parse(e){let t=/^(.+)\$\$(\d+|n)$/.exec(e);return t?t[2]==="n"?{base:t[1],kind:"count"}:{base:t[1],kind:"row",index:Number(t[2])}:{base:e,kind:"row",index:0}}_scope(e){let t=this.data;for(let i of e||[]){let r=t[i.id],s=Array.isArray(r)?r[i.idx]:void 0;if(!s||typeof s!="object")return null;t=s}return t}_scopeOrCreate(e){let t=this.data;for(let i of e||[]){let r=t[i.id];Array.isArray(r)||(r=t[i.id]=[]),(!r[i.idx]||typeof r[i.idx]!="object")&&(r[i.idx]={}),t=r[i.idx]}return t}get(e,t){let i=this._scope(t);if(!i)return;let r=n._parse(e),s=i[r.base];return r.kind==="count"?Array.isArray(s)?Math.max(0,s.length-1):0:Array.isArray(s)?s[r.index]:void 0}getAll(e,t){let i=this._scope(t),r=i&&i[e];return Array.isArray(r)?r.filter(s=>s!==void 0):[]}set(e,t,i){let r=this._scopeOrCreate(i),s=n._parse(e),o=r[s.base]||(r[s.base]=[]);if(s.kind==="count"){let l=t+1;if(o.length>l)o.length=l;else for(;o.length<l;)o.push(void 0);return}o[s.index]=t}remove(e,t){let i=this._scope(t);if(!i)return;let r=n._parse(e);if(r.kind==="count"){let o=i[r.base];o&&(o.length=1);return}if(e===r.base){delete i[r.base];return}let s=i[r.base];s&&delete s[r.index]}instanceCount(e,t){let i=this._scope(t),r=i&&i[e];return Array.isArray(r)?r.length:0}addInstance(e,t){let i=this._scopeOrCreate(t),r=i[e]||(i[e]=[]);return r.push({}),r.length}removeInstance(e,t,i){let r=this._scope(i),s=r&&r[e];Array.isArray(s)&&s.splice(t,1)}clear(){let e=this.data;Object.keys(e).forEach(t=>delete e[t])}toValueMap(){let e={};for(let t of Object.keys(this.data))e[t]=this.data[t].slice();return e}merge(e){for(let t of Object.keys(e))this.data[t]=Array.isArray(e[t])?e[t].slice():[e[t]]}replaceAll(e){this.clear(),this.merge(e)}constructor(e=X){e.on(E.ANSWER_SET,t=>this.set(t.detail.id,t.detail.value,t.detail.path)),e.on(E.ANSWER_DELETE,t=>this.remove(t.detail.id,t.detail.path)),e.on(E.ANSWERS_CLEAR,()=>this.clear())}},ht=new je;var ft=class{constructor({questDoc:e,answerStore:t,bus:i,config:r={}}){this.questDoc=e,this.answerStore=t,this.bus=i,this.config=r}};function ci(n={}){let e=new Oe(new EventTarget);return new ft({questDoc:new We(e),answerStore:new je(e),bus:e,config:n})}var Le=new ft({questDoc:li,answerStore:ht,bus:X,config:{}});var ui={add_another:"+ Add another",add_row:"+ Add another entry",more_info:"More info \u2197",or_separator:"OR",and_separator:"AND",select_placeholder:"select"};function Zt(){return{bus:X,ctx:null,resultMap:null,cEnv:{},visible:[],groupIconMap:null,previewMode:"preview",viewPrefs:null,lastCtx:null,buildControl:null,updateGroupIcons:null,isMandatory:null,calcFormOk:null,evalConstraints:null,getValue:null,getAll:null,set:null,remove:null,CHECKABLE_TYPES:null,instancePath:[],instanceCount:null,addInstance:null,removeInstance:null,evalChildren:null,activeLanguage:"",translations:null,showNavBtn:!0,showExplain:!0}}var di=Zt();function Ie(n,e){let t=ui[n]??n;return e?.activeLanguage?e.translations?.[e.activeLanguage]?.ui?.[n]??t:t}var pi={error:{title:"Error",icon:"!"},warn:{title:"Warning",icon:"!"},info:{title:"Info",icon:"i"}};function en(n,e){document.removeEventListener("keydown",e,!0),n.style.opacity="0",n.addEventListener("transitionend",()=>n.remove(),{once:!0}),setTimeout(()=>{n.isConnected&&n.remove()},300)}function _s(n,e="error"){let t=pi[e]||pi.error,i=document.createElement("div");i.className="modal-backdrop notif-backdrop",i.style.opacity="0";let r=document.createElement("div");r.className=`modal-box notif-box notif--${e}`,r.setAttribute("role","alertdialog"),r.setAttribute("aria-modal","true");let s=document.createElement("div");s.className="modal-header";let o=document.createElement("div");o.className="notif-header-title";let l=document.createElement("span");l.className="notif-title-icon",l.textContent=t.icon;let a=document.createElement("span");a.className="modal-title-label",a.textContent=t.title,o.append(l,a),s.appendChild(o);let c=document.createElement("div");c.className="modal-body",c.textContent=n;let u=document.createElement("div");u.className="modal-footer";let d=document.createElement("button");d.type="button",d.className="modal-btn modal-btn--apply",d.textContent="OK",u.appendChild(d),r.append(s,c,u),i.appendChild(r),document.body.appendChild(i),i.getBoundingClientRect(),i.style.opacity="1",d.focus();let p=f=>{(f.key==="Escape"||f.key==="Enter")&&en(i,p)};document.addEventListener("keydown",p,!0),d.onclick=()=>en(i,p),i.addEventListener("click",f=>{f.target===i&&en(i,p)})}var Ge=n=>_s(n,"error");var tn=class{_map=new Map;register(e){this._map.set(e.id,e)}get(e){return this._map.get(e)}getAll(){return[...this._map.values()]}getBuilderVersions(){return this.getAll().filter(e=>e.isBuilderVersion)}detectVersion(e){let t=(e?.extension||[]).find(i=>i?.url===Se);if(t?.valueCode){for(let i of this._map.values())if(i.metaVersion&&i.metaVersion===t.valueCode)return i.id}return this._map.has("R5")&&(nn(e?.item,"disabledDisplay")||nn(e?.item,"answerConstraint"))?"R5":"R4"}},Se="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/builder-target-version",De="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/item-answerConstraint",ke="https://sergeymosyakov.github.io/fhir-questionnaire-builder/StructureDefinition/item-disabledDisplay";function Me(n,e){n.extension=(n.extension||[]).filter(t=>t?.url!==Se),n.extension.push({url:Se,valueCode:e}),n.extension.length===0&&delete n.extension}function nn(n,e){if(!Array.isArray(n))return!1;for(let t of n)if(t?.[e]!==void 0||nn(t?.item,e))return!0;return!1}var me=new tn;function hi(n){return typeof n=="string"&&(n.startsWith("3.")||n.startsWith("1."))}function fi(n){if(!n)return!1;if(n.type==="coding"||Array.isArray(n.option)&&n.option.length||n.options)return!0;for(let e of n.enableWhen||[])if(e.hasAnswer!==void 0||!("operator"in e)&&vs(e))return!0;if(xs(n))return!0;for(let e of n.item||[])if(fi(e))return!0;return!1}function vs(n){return Object.keys(n).some(e=>e.startsWith("answer"))}var ys=["initialBoolean","initialDecimal","initialInteger","initialDate","initialDateTime","initialTime","initialString","initialUri","initialAttachment","initialCoding","initialQuantity","initialReference"];function xs(n){return ys.some(e=>n[e]!==void 0)}function Es(n){if(!n||n.resourceType!=="Questionnaire"||(n.extension||[]).some(e=>e?.url===Se))return!1;if(hi(n.fhirVersion)||hi(n.meta?.fhirVersion))return!0;for(let e of n.item||[])if(fi(e))return!0;return!1}function bs(n){Array.isArray(n.option)&&!Array.isArray(n.answerOption)&&(n.answerOption=n.option,delete n.option)}function Cs(n){n.options&&typeof n.options=="object"&&n.options.reference&&(n.answerValueSet=n.options.reference,delete n.options)}function ws(n){return Array.isArray(n)?n.map(e=>{let t={...e};return t.hasAnswer!==void 0?(t.operator="exists",t.answerBoolean=t.hasAnswer,delete t.hasAnswer,t):(t.operator||Object.keys(t).find(r=>r.startsWith("answer"))&&(t.operator="="),t)}):n}var Ss={initialBoolean:"valueBoolean",initialDecimal:"valueDecimal",initialInteger:"valueInteger",initialDate:"valueDate",initialDateTime:"valueDateTime",initialTime:"valueTime",initialString:"valueString",initialUri:"valueUri",initialAttachment:"valueAttachment",initialCoding:"valueCoding",initialQuantity:"valueQuantity",initialReference:"valueReference"};function Rs(n){if(!Array.isArray(n.initial)){for(let[e,t]of Object.entries(Ss))if(n[e]!==void 0){n.initial=[{[t]:n[e]}],delete n[e];return}}}function Ts(n){n.type==="coding"&&(n.type="choice")}function mi(n){Ts(n),bs(n),Cs(n),n.enableWhen&&(n.enableWhen=ws(n.enableWhen)),Rs(n);for(let e of n.item||[])mi(e)}function gi(n){if(!Es(n))return n;let e=JSON.parse(JSON.stringify(n));for(let t of e.item||[])mi(t);return e}var _i=1,vi=()=>"n"+_i++,yi=()=>{_i=1},Ns=1,mt=(n="uid")=>n+"-"+Ns++;var ye="http://hl7.org/fhir",As="http://terminology.hl7.org",V=ye+"/StructureDefinition",z=ye+"/uv/sdc/StructureDefinition",Os=ye+"/uv/sdc/CodeSystem",h={sd:V,vs:ye+"/ValueSet",itemControl:V+"/questionnaire-itemControl",constraint:V+"/questionnaire-constraint",unit:V+"/questionnaire-unit",unitValueSet:V+"/questionnaire-unitValueSet",unitOption:V+"/questionnaire-unitOption",minOccurs:V+"/questionnaire-minOccurs",maxOccurs:V+"/questionnaire-maxOccurs",sliderStepValue:V+"/questionnaire-sliderStepValue",supportLink:V+"/questionnaire-supportLink",optionPrefix:V+"/questionnaire-optionPrefix",optionExclusive:V+"/questionnaire-optionExclusive",hidden:V+"/questionnaire-hidden",usageMode:V+"/questionnaire-usageMode",choiceOrientation:V+"/questionnaire-choiceOrientation",displayCategory:V+"/questionnaire-displayCategory",baseType:V+"/questionnaire-baseType",fhirType:V+"/questionnaire-fhirType",referenceResource:V+"/questionnaire-referenceResource",referenceProfile:V+"/questionnaire-referenceProfile",referenceFilter:V+"/questionnaire-referenceFilter",signatureRequired:V+"/questionnaire-signatureRequired",minValue:V+"/minValue",maxValue:V+"/maxValue",minLength:V+"/minLength",maxSize:V+"/maxSize",mimeType:V+"/mimeType",regex:V+"/regex",entryFormat:V+"/entryFormat",ordinalValue:V+"/ordinalValue",itemWeight:V+"/itemWeight",designNote:V+"/designNote",translation:V+"/translation",maxDecimalPlaces:V+"/maxDecimalPlaces",renderingXhtml:V+"/rendering-xhtml",renderingStyle:V+"/rendering-style",renderingMarkdown:V+"/rendering-markdown",artifactVersionAlgorithm:V+"/artifact-versionAlgorithm",artifactCopyrightLabel:V+"/artifact-copyrightLabel",replaces:V+"/replaces",calculatedExpression:z+"/sdc-questionnaire-calculatedExpression",initialExpression:z+"/sdc-questionnaire-initialExpression",enableWhenExpression:z+"/sdc-questionnaire-enableWhenExpression",answerExpression:z+"/sdc-questionnaire-answerExpression",candidateExpression:z+"/sdc-questionnaire-candidateExpression",variable:z+"/sdc-questionnaire-variable",launchContext:z+"/sdc-questionnaire-launchContext",itemMedia:z+"/sdc-questionnaire-itemMedia",answerMedia:z+"/sdc-questionnaire-answerMedia",isSubject:z+"/sdc-questionnaire-isSubject",entryFormatSdc:z+"/sdc-questionnaire-entryFormat",columnCount:z+"/sdc-questionnaire-columnCount",choiceColumn:z+"/sdc-questionnaire-choiceColumn",collapsible:z+"/sdc-questionnaire-collapsible",hiddenSdc:z+"/sdc-questionnaire-hidden",openLabel:z+"/sdc-questionnaire-openLabel",observationExtract:z+"/sdc-questionnaire-observationExtract",preferredTerminologyServer:z+"/sdc-questionnaire-preferredTerminologyServer",shortText:z+"/sdc-questionnaire-shortText",itemContext:z+"/sdc-questionnaire-itemContext",definitionExtract:z+"/sdc-questionnaire-definitionExtract",definitionExtractContext:z+"/sdc-questionnaire-definitionExtractContext",targetStructureMap:z+"/sdc-questionnaire-targetStructureMap",sourceStructureMap:z+"/sdc-questionnaire-sourceStructureMap",sdcQuestionnaire:z+"/sdc-questionnaire",sdcObservation:z+"/sdc-observation",launchContextCS:Os+"/launchContext",itemControlCS:ye+"/questionnaire-item-control",displayCategoryCS:ye+"/questionnaire-display-category",versionAlgorithm:ye+"/version-algorithm",icd10cm:ye+"/sid/icd-10-cm",v3Confidentiality:As+"/CodeSystem/v3-Confidentiality"};var gt="http://fhir-qb.app",re={redcapNs:gt+"/redcap/",uiTranslations:gt+"/StructureDefinition/ui-translations",xhtmlTranslations:gt+"/StructureDefinition/xhtml-translations",markdownTranslations:gt+"/StructureDefinition/markdown-translations"};var Ls=new Set([h.enableWhenExpression,h.constraint,h.itemControl,h.referenceResource,h.unit,h.unitValueSet,h.calculatedExpression,h.initialExpression,h.minLength,h.entryFormatSdc,h.entryFormat,h.choiceOrientation,h.displayCategory,h.minValue,h.maxValue,h.minOccurs,h.maxOccurs,h.sliderStepValue,h.supportLink,h.hiddenSdc,h.hidden,h.observationExtract,h.collapsible,h.openLabel,h.isSubject,h.columnCount,ke,De,h.maxSize,h.mimeType,h.designNote,h.answerExpression,h.candidateExpression,h.preferredTerminologyServer,h.choiceColumn,h.unitOption,h.regex,h.usageMode,h.referenceFilter,h.referenceProfile,h.signatureRequired,h.itemMedia,h.itemWeight,h.baseType,h.fhirType]),_t=[{url:h.answerExpression,prop:"_answerExpression"},{url:h.candidateExpression,prop:"_candidateExpression"}];function rn(n){let e=(n.extension||[]).filter(t=>!Ls.has(t.url));return e.length?e.map(t=>JSON.parse(JSON.stringify(t))):null}function sn(n){return n==="boolean"?"checkbox":n==="integer"?"integer":n==="decimal"?"decimal":n==="quantity"?"quantity":n==="choice"||n==="coding"?"select":n==="open-choice"?"open-choice":n==="display"?"display":n==="date"?"date":n==="dateTime"?"dateTime":n==="time"?"time":n==="url"?"url":n==="attachment"?"attachment":n==="reference"?"reference":"text"}function an(n){return(n||[]).map(e=>{if(e.valueCoding){let t=e.valueCoding.code||"",i=e.valueCoding.display||"";return t&&i&&t!==i?t+"="+i:i||t}return e.valueString!==void 0?e.valueString:e.valueInteger!==void 0?String(e.valueInteger):e.valueDate!==void 0?e.valueDate:e.valueTime!==void 0?e.valueTime:e.valueReference?typeof e.valueReference=="string"?e.valueReference:e.valueReference.reference||"":""}).filter(Boolean).join(", ")}function on(n){return(n||[]).some(e=>!e.valueCoding)}function xi(n){return(n||[]).some(e=>e.valueCoding&&[e.valueCoding.code,e.valueCoding.display].some(t=>typeof t=="string"&&t.includes(",")))}function ln(n,e={}){for(let t of n||[])e[t.linkId]=t.text||t.linkId||"",ln(t.item,e);return e}function Ei(n,e,t){if(!n||!n.length)return"";let i=e==="any"?" OR ":" AND ";return n.map(s=>{let o=t&&t[s.question]||s.question;if(s.operator==="exists")return"\xAB"+o+"\xBB has answer";let l;s.answerBoolean!==void 0?l=s.answerBoolean?"Yes":"No":s.answerString!==void 0?l="\xAB"+s.answerString+"\xBB":s.answerInteger!==void 0?l=s.answerInteger:s.answerDecimal!==void 0?l=s.answerDecimal:s.answerQuantity!==void 0?l=(s.answerQuantity.value??"?")+(s.answerQuantity.unit||s.answerQuantity.code?" "+(s.answerQuantity.unit||s.answerQuantity.code):""):s.answerCoding?l=s.answerCoding.display||s.answerCoding.code||"?":l="?";let a={"=":"=","!=":"\u2260",">":">","<":"<",">=":"\u2265","<=":"\u2264"}[s.operator]||s.operator;return"\xAB"+o+"\xBB "+a+" "+l}).join(i)}function vt(n,e,t){e.enableWhen&&e.enableWhen.length&&(n.enableWhen=e.enableWhen.map(r=>({...r})),n.enableBehavior=e.enableBehavior==="any"?"any":"all",n._enableWhenText=Ei(e.enableWhen,e.enableBehavior,t));let i=(e.extension||[]).find(r=>r.url===h.enableWhenExpression);i&&i.valueExpression&&(n.enableWhenExpression=i.valueExpression.expression||"")}function cn(n,e){let t=(e.extension||[]).filter(r=>r.url===h.constraint);if(!t.length)return!1;let i=!1;return n.constraint=t.map(r=>({key:r.extension?.find(s=>s.url==="key")?.valueId||"",expression:r.extension?.find(s=>s.url==="expression")?.valueString||"",human:r.extension?.find(s=>s.url==="human")?.valueString||"",severity:r.extension?.find(s=>s.url==="severity")?.valueCode||"error"})).filter(r=>r.key===He?(i=!0,!1):r.expression),i}function un(n,e){if(!e||!e.startsWith("#"))return"";let t=e.slice(1),i=(n||[]).find(s=>s.resourceType==="ValueSet"&&s.id===t);if(!i)return"";let r=[];for(let s of i.compose?.include||[])for(let o of s.concept||[])o.code&&r.push(o.code+(o.display?"="+o.display:""));return r.join(",")}var H=new Map;var bi=new Map;typeof document<"u"&&document.addEventListener("keydown",n=>{if(n.key!=="Escape")return;let e=null,t=-1;for(let[i,r]of bi){if(i.style.display==="none")continue;let s=parseInt(getComputedStyle(i).zIndex,10)||0;s>t&&(t=s,e=r)}e&&e()});function ue(n,e){let t=document.createElement(n);return e&&(t.className=e),t}var Is='a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',Ds=0,yt=class{getName(){return null}constructor({cancelLabel:e="Cancel",applyLabel:t="Apply",maxWidth:i=null,bodyClass:r=null}={}){this.backdrop=ue("div","modal-backdrop"),this.backdrop.style.display="none";let s=ue("div","modal-box");i&&(s.style.maxWidth=i),this.box=s,s.setAttribute("role","dialog"),s.setAttribute("aria-modal","true"),s.tabIndex=-1;let o=ue("div","modal-header");this.title=ue("span"),this.title.id="modal-title-"+ ++Ds,s.setAttribute("aria-labelledby",this.title.id),this.closeBtn=ue("button","modal-close"),this.closeBtn.type="button",this.closeBtn.dataset.tipTitle="Close",this.closeBtn.textContent="\u2715",o.append(this.title,this.closeBtn),this.body=ue("div",r?`modal-body ${r}`:"modal-body"),this.footer=ue("div","modal-footer"),this.cancelBtn=null,this.applyBtn=null,e!==null&&(this.cancelBtn=ue("button","modal-btn modal-btn--cancel"),this.cancelBtn.type="button",this.cancelBtn.textContent=e,this.footer.appendChild(this.cancelBtn)),t!==null&&(this.applyBtn=ue("button","modal-btn modal-btn--apply"),this.applyBtn.type="button",this.applyBtn.textContent=t,this.footer.appendChild(this.applyBtn)),s.append(o,this.body,this.footer),this.backdrop.appendChild(s);let l=this.getName();l&&(this.backdrop.dataset.testid=l,this.title.dataset.testid=l+"Title",this.closeBtn.dataset.testid=l+"Close",this.body.dataset.testid=l+"Body",this.cancelBtn&&(this.cancelBtn.dataset.testid=l+"Cancel"),this.applyBtn&&(this.applyBtn.dataset.testid=l+"Apply")),this.closeBtn.addEventListener("click",()=>this._cancel()),this.cancelBtn&&this.cancelBtn.addEventListener("click",()=>this._cancel()),this.applyBtn&&this.applyBtn.addEventListener("click",()=>this._apply()),this.backdrop.addEventListener("click",a=>{a.target===this.backdrop&&this._cancel()}),bi.set(this.backdrop,()=>this._cancel()),document.body.appendChild(this.backdrop)}open(){this._prevFocus=typeof document<"u"&&document.activeElement||null,this.backdrop.style.display="flex",this._trapHandler||(this._trapHandler=e=>this._onTrapKeydown(e),this.backdrop.addEventListener("keydown",this._trapHandler));try{this.box.focus({preventScroll:!0})}catch{}}close(){this.backdrop.style.display="none",this._trapHandler&&(this.backdrop.removeEventListener("keydown",this._trapHandler),this._trapHandler=null);let e=this._prevFocus;if(this._prevFocus=null,e&&typeof e.focus=="function"&&e.isConnected)try{e.focus({preventScroll:!0})}catch{}}_onTrapKeydown(e){if(e.key!=="Tab")return;let t=[...this.box.querySelectorAll(Is)].filter(o=>o.offsetParent!==null||o===document.activeElement);if(t.length===0){e.preventDefault(),this.box.focus();return}let i=t[0],r=t[t.length-1],s=document.activeElement;e.shiftKey&&(s===i||s===this.box)?(e.preventDefault(),r.focus()):!e.shiftKey&&s===r&&(e.preventDefault(),i.focus())}setTitle(e,t){this.title.innerHTML="";let i=ue("span","modal-title-label");if(i.textContent=e,this.title.appendChild(i),t){let r=ue("span","modal-title-subject");r.textContent=" \u2014 "+t,this.title.appendChild(r)}}_apply(){this.close()}_cancel(){this.close()}};var se=()=>typeof window<"u"?window.fhirpath_r4_model:void 0;function Ci(n,e){let t=[],i=0,r=null,s=0,o=" "+e+" ",l=o.length,a=n.length;for(let c=0;c<a;c++){let u=n[c];if(r){u===r&&(r=null);continue}if(u==="'"||u==='"'){r=u;continue}if(u==="("||u==="["||u==="{"){i++;continue}if(u===")"||u==="]"||u==="}"){i--;continue}i===0&&n.slice(c,c+l).toLowerCase()===o&&(t.push(n.slice(s,c).trim()),s=c+l,c+=l-1)}return t.length>0?(t.push(n.slice(s).trim()),t):[]}function ks(n){if(n=n.trim(),!n.startsWith("("))return n;let e=0;for(let t=0;t<n.length;t++)if(n[t]==="(")e++;else if(n[t]===")"&&(e--,e===0))return t===n.length-1?n.slice(1,-1).trim():n;return n}function Qe(n){let e=ks(n.trim()),t=/^not\s*\(([\s\S]+)\)$/i.exec(e);if(t)return{type:"NOT",child:Qe(t[1])};let i=Ci(e,"or");if(i.length>=2)return{type:"OR",children:i.map(s=>Qe(s))};let r=Ci(e,"and");return r.length>=2?{type:"AND",children:r.map(s=>Qe(s))}:{type:"LEAF",expr:e}}function Je(n,e,t,i){switch(n.type){case"LEAF":{try{let r=e.evaluate(t||{},n.expr,i||{},se()),s=Array.isArray(r)?r[0]:r;n.result=s===!0||s==="true"||typeof s=="number"&&s!==0?!0:s===!1||s==="false"||s===0?!1:r.length>0}catch(r){n.result=null,n.error=r.message}break}case"NOT":{Je(n.child,e,t,i),n.result=n.child.result===null?null:!n.child.result;break}case"AND":{for(let r of n.children)Je(r,e,t,i);n.result=n.children.every(r=>r.result===!0);break}case"OR":{for(let r of n.children)Je(r,e,t,i);n.result=n.children.some(r=>r.result===!0);break}}return n}var dn=class extends yt{getName(){return"explainModal"}constructor(){super({cancelLabel:"Close",applyLabel:null}),this.setTitle("Expression Explain")}show(e,t,i,r){this.setTitle("Expression Explain"),this.body.innerHTML="";try{let a=Qe(e);Je(a,t,i,r),this.body.appendChild(pn(a,0))}catch(a){let c=document.createElement("div");c.className="explain-parse-error",c.textContent="Could not parse expression: "+a.message,this.body.appendChild(c)}let s=document.createElement("div");s.className="explain-fhirpath";let o=document.createElement("span");o.className="explain-fhirpath-label",o.textContent="FHIRPath:";let l=document.createElement("code");l.className="explain-full-expr",l.textContent=e,s.append(o,l),this.body.appendChild(s),super.open()}showAudit(e,t){this.setTitle(e),this.body.innerHTML="";let i=document.createElement("div");i.className="explain-audit-head",i.textContent=`Shown only when ${t.logic} of these conditions are met:`,this.body.appendChild(i);for(let r of t.rows){let s=document.createElement("div");s.className="explain-row",s.style.setProperty("--explain-depth",0),s.appendChild(wi(r.ok));let o=document.createElement("span");o.className="explain-expr",o.textContent=r.text,s.appendChild(o),this.body.appendChild(s)}super.open()}_cancel(){this.close()}};function wi(n){let e=document.createElement("span");return e.className="explain-icon"+(n===!0?" explain-icon--true":n===!1?" explain-icon--false":" explain-icon--err"),e.textContent=n===!0?"\u2713":n===!1?"\u2717":"?",e}function pn(n,e){let t=document.createDocumentFragment(),i=document.createElement("div");if(i.className="explain-row",i.style.setProperty("--explain-depth",e),i.appendChild(wi(n.result)),n.type==="LEAF"){let r=document.createElement("code");if(r.className="explain-expr",r.textContent=n.expr,i.appendChild(r),n.error){let s=document.createElement("span");s.className="explain-error",s.textContent=n.error,i.appendChild(s)}}else{let r=document.createElement("span");r.className="explain-op explain-op--"+n.type.toLowerCase(),r.textContent=n.type,i.appendChild(r)}if(t.appendChild(i),n.type==="AND"||n.type==="OR")for(let r of n.children)t.appendChild(pn(r,e+1));else n.type==="NOT"&&t.appendChild(pn(n.child,e+1));return t}var Ms=null,Si=()=>Ms??=new dn,Re=(n,e,t,i)=>Si().show(n,e,t,i),Ri=(n,e)=>Si().showAudit(n,e);function Ni(n,e){for(let t of n)e.push({node:t,visible:!0,ok:!0,disabled:!0}),t.children?.length&&Ni(t.children,e)}function ze(n,e){if(e.operator==="exists"){let s=n!=null&&n!=="";return e.answerBoolean!==!1?s:!s}if(e.answerQuantity!==void 0){let s=e.answerQuantity||{},o=Number(n&&typeof n=="object"?n.value:n),l=Number(s.value),a=n&&typeof n=="object"&&n.unit||"",c=s.code||s.unit||"",u=!c||String(a)===String(c);switch(e.operator){case"=":return o===l&&u;case"!=":return!(o===l&&u);case">":return o>l;case"<":return o<l;case">=":return o>=l;case"<=":return o<=l}return!1}let t;if(e.answerBoolean!==void 0)t=e.answerBoolean;else if(e.answerString!==void 0)t=e.answerString;else if(e.answerInteger!==void 0)t=e.answerInteger;else if(e.answerDecimal!==void 0)t=e.answerDecimal;else if(e.answerCoding)t=e.answerCoding.code||e.answerCoding.display||"";else return!1;let i=String(t),r=n!=null?String(n):"";switch(e.operator){case"=":return r===i;case"!=":return r!==i;case">":return Number(r)>Number(i);case"<":return Number(r)<Number(i);case">=":return Number(r)>=Number(i);case"<=":return Number(r)<=Number(i)}return!1}function Ps(n,e,t){let i=t.getAll(n.question,e);return i.length===0&&e&&e.length&&(i=t.getAll(n.question)),i.length===0?ze(void 0,n):i.some(r=>ze(r,n))}function Vs(n,e,t){let i=e?.answerStore||ht;if(n.enableWhen&&n.enableWhen.length){let r=n.enableWhen.map(s=>Ps(s,t,i));return n.enableBehavior==="any"?r.some(Boolean):r.every(Boolean)}if(n.enableWhenExpression&&e&&e.fp&&e.qr)try{let r={resource:e.qr,...e.envVars||{}};return e.fp.evaluate(e.qr,n.enableWhenExpression,r,se())[0]===!0}catch{return!1}return!0}function Pe(n,e,t,i=!1,r=[]){if(n._hidden||i){let c=!!n._hidden&&!i,u={node:n,visible:!0,ok:!0,hidden:!0,hiddenRoot:c};if(t.push(u),n.children?.length)for(let d of n.children)Pe(d,e,t,!0,r);return{ok:!0,visible:!0,hidden:!0}}if(!Vs(n,e,r)){let c=!!(n.enableWhen&&n.enableWhen.length)||!!n.enableWhenExpression;return t.push({node:n,visible:!1,ok:n.mandatory===!1,showDimmed:c}),c&&n.children?.length&&Ni(n.children,t),{ok:n.mandatory===!1,visible:!1,showDimmed:c}}if(n.type==="item"){if(t.push({node:n,visible:!0,ok:!0}),n.children?.length)for(let c of n.children)Pe(c,e,t,!1,r);return{ok:!0,visible:!0}}if(n.repeats)return t.push({node:n,visible:!0,ok:!0,repeating:!0}),{ok:!0,visible:!0};let o={node:n,visible:!0,ok:!0};t.push(o);let l=[];for(let c of n.children){let u=Pe(c,e,t,!1,r);u.visible&&l.push(u)}let a;if(l.length===0)a=n.mandatory===!1;else{a=l[0].ok;for(let c=1;c<l.length;c++)a=n.logicWithParent==="AND"?a&&l[c].ok:a||l[c].ok}return o.ok=a,{ok:a,visible:!0}}var Bs=["font-weight","font-style","color","font-size","text-decoration"];function Ai(n){let e={};if(!n)return e;let t=new Set(Bs);return n.split(";").forEach(i=>{let r=i.indexOf(":");if(r<1)return;let s=i.slice(0,r).trim().toLowerCase(),o=i.slice(r+1).trim();t.has(s)&&o&&(e[s]=o)}),e}function Oi(n,e,t){if(!t)return null;let i=e==="any"?"ANY":"ALL",r=n.map(s=>{let o=t(s.question),l=o.length===0?"(no answer)":o.map(u=>JSON.stringify(u)).join(", "),a=s.operator==="exists"?s.answerBoolean!==!1?"exists":"not exists":JSON.stringify(s.answerBoolean!==void 0?s.answerBoolean:s.answerString!==void 0?s.answerString:s.answerInteger!==void 0?s.answerInteger:s.answerDecimal!==void 0?s.answerDecimal:s.answerCoding!==void 0?s.answerCoding.code||s.answerCoding.display:"?");return{ok:o.length===0?ze(void 0,s):o.some(u=>ze(u,s)),text:`[${s.question}] ${s.operator} ${a} \u2192 actual: ${l}`}});return{logic:i,rows:r}}function Us(n,e,t){let i=Oi(n,e,t);if(!i)return null;let r=i.rows.map(s=>`${s.ok?"\u2713":"\u2717"} ${s.text}`);return`Enable when (${i.logic}):
2
+ `+r.join(`
3
+ `)}function Y(){let n=document.createElement("span");return n.className="ctrl-wrap",n}function xt(n,e){return e.isMandatory(n)&&e.CHECKABLE_TYPES.has(n.itemType)||n._calculatedExpr&&n._readOnly&&n.itemType==="checkbox"||n.constraint?.length>0||n._minValue!==void 0||n._maxValue!==void 0}function Ye(n,e){let t=Ai(e);for(let i of Object.keys(t))n.style.setProperty(i,t[i])}var D=class n{static _collapseMap=new Map;constructor(e={}){this.id=e.id??vi(),this.title=e.title??"",this.enableWhen=e.enableWhen??[],this.enableBehavior=e.enableBehavior??"all",this.enableWhenExpression=e.enableWhenExpression??"",this.mandatory=e.mandatory??!1,this._previewCollapsed=!1,typeof document<"u"&&(this._ac=new AbortController,document.addEventListener(E.COPY_TO_NODES,t=>{let{ids:i,patch:r,nodeType:s}=t.detail;i.includes(this.id)&&(s&&this.type!==s||this.applyPatch(r))},{signal:this._ac.signal}))}_ensureBusListeners(e){if(this._busWired||!this._ac)return;this._busWired=!0;let t=e?.bus||X;this._bus=t,t.on(E.REFRESH_CALC_BADGES,()=>this._refreshCalcBadge?.(),{signal:this._ac.signal}),t.on(E.BUILDER_NAVIGATE,i=>{this._previewCollapsed&&we(i.detail.id,this)&&(this._previewCollapsed=!1)},{signal:this._ac.signal}),t.on(E.COLLAPSE_ALL_PREVIEW,()=>{this._previewCollapsed=!0},{signal:this._ac.signal}),t.on(E.EXPAND_ALL_PREVIEW,()=>{this._previewCollapsed=!1},{signal:this._ac.signal}),this._initPreviewNavListener(t)}destroy(){this._ac?.abort(),this._navAbort?.abort()}applyPatch(e){for(let[t,i]of Object.entries(e))i===null?delete this[t]:this[t]=i}static _hasClipboard=!1;static{typeof document<"u"&&document.addEventListener(E.CLIPBOARD_CHANGED,e=>{n._hasClipboard=e.detail.hasClip})}static notifyChanged(e){(e||X).dispatch(E.RESPONSE_CHANGED)}static dispatch(e,t,i){e&&e.node.renderPreview(e,t,i)}renderPreview(e,t,i){if(this._ensureBusListeners(i),!e.visible&&!e.showDimmed)return;let r=i.previewMode==="patient";if(e.hidden&&(r||!i.viewPrefs.showHiddenItems))return;if(i.cellMode&&this.type==="item"){if(!e.visible)return;let l=this._makePreviewRow("lform-item gtable-cell-item");e._iconEl=null,this._buildRowContent(l,e,i),t.appendChild(l);return}if(this._usageMode){let l=this._usageMode,a=l==="display"||l==="display-non-empty";if(r&&a)return;!r&&a&&(e._usageModeHidden=!0)}if(!e.visible&&e.showDimmed){r||this._renderDimmed(e,t,i);return}if(e.disabled){this._renderDisabled(e,t,i);return}let s=this._createBaseRow(e,i);this._buildRowContent(s,e,i);let o=this._appendRow(s,e,t);this._renderChildren(e,o,i)}_renderDimmed(e,t,i){let r=this._makePreviewRow("lform-item lform-waiting"+(i.showNavBtn?" preview-row--pointer":""));i.showNavBtn&&(r.dataset.tipTitle="Click to navigate to builder node",r.addEventListener("click",()=>i.bus.dispatch(E.BUILDER_NAVIGATE_TO,{nodeId:this.id})));let s=document.createElement("span");s.className="preview-icon-ph",r.appendChild(s);let o=document.createElement("span");o.className="preview-label--dim",o.textContent=(this.type==="group"?"Group: ":"Item: ")+this.title,r.appendChild(o);let l=document.createElement("span");l.className="preview-condition-hint preview-condition-waiting",l.dataset.testid="preview-condition-hint";let a=this._enableWhenText||this.enableWhenExpression||"condition not met";if(l.textContent="\u{1F512} "+a,this.enableWhenExpression){if(l.dataset.tipTitle="Visibility condition",l.dataset.tipBody="Not met. FHIRPath: "+this.enableWhenExpression+(i.showExplain?`
4
4
 
5
- Click to explain.`:""),l.dataset.tipFhir="sdc-questionnaire-enableWhenExpression",l.dataset.tipSpec="SDC",i.showExplain){l.classList.add("preview-condition-hint--explain");let c=this.enableWhenExpression;l.addEventListener("click",d=>{d.stopPropagation(),i.lastCtx.fp&&Se(c,i.lastCtx.fp,i.lastCtx.qr,i.lastCtx.env)})}}else{let c=Ds(this.enableWhen,this.enableBehavior,i.getAll);l.dataset.tipTitle="Visibility condition",l.dataset.tipBody=c?c+`
5
+ Click to explain.`:""),l.dataset.tipFhir="sdc-questionnaire-enableWhenExpression",l.dataset.tipSpec="SDC",i.showExplain){l.classList.add("preview-condition-hint--explain");let c=this.enableWhenExpression;l.addEventListener("click",u=>{u.stopPropagation(),i.lastCtx.fp&&Re(c,i.lastCtx.fp,i.lastCtx.qr,i.lastCtx.env)})}}else{let c=Us(this.enableWhen,this.enableBehavior,i.getAll);l.dataset.tipTitle="Visibility condition",l.dataset.tipBody=c?c+`
6
6
 
7
- This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`:"Not yet met: "+r+`
7
+ This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`:"Not yet met: "+a+`
8
8
 
9
- This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`,l.dataset.tipFhir="Questionnaire.item.enableWhen[]",l.dataset.tipSpec="R4",this._attachEnableWhenAudit(l,i)}s.appendChild(l),e.appendChild(s),this._renderDimmedChildren(t,e,i)}_attachEnableWhenAudit(t,e){!e.showExplain||!this.enableWhen?.length||(t.classList.add("preview-condition-hint--explain"),t.addEventListener("click",i=>{i.stopPropagation();let s=ci(this.enableWhen,this.enableBehavior,e.getAll);s&&ri("Visibility condition",s)}))}_renderDimmedChildren(t,e,i){}_renderDisabled(t,e,i){if(i.previewMode==="patient")return;let s=this._makePreviewRow("lform-item lform-disabled"+(i.showNavBtn?" preview-row--pointer":""));i.showNavBtn&&s.addEventListener("click",()=>i.bus.dispatch(w.BUILDER_NAVIGATE_TO,{nodeId:this.id}));let a=document.createElement("span");a.className="icon-na",s.appendChild(a);let o=document.createElement("span");this.type==="group"&&(o.className="group-label"),o.textContent=(this.type==="group"?"Group: ":"Item: ")+this.title,s.appendChild(o),e.appendChild(s),this._renderDisabledChildren(t,e,i)}_renderDisabledChildren(t,e,i){}_createBaseRow(t,e){let i=e.previewMode==="patient",s=this._makePreviewRow("lform-item");if((t.hiddenRoot||t._usageModeHidden)&&s.classList.add("lform-item--hidden"),!i&&e.showNavBtn){let r=document.createElement("span");r.className="preview-nav-btn",r.dataset.testid="preview-nav-btn",r.textContent="\u2197",r.dataset.tipTitle="Go to builder node",r.dataset.tipBody="Scroll and highlight the corresponding node in the builder panel.",r.addEventListener("click",c=>{c.stopPropagation(),e.bus.dispatch(w.BUILDER_NAVIGATE_TO,{nodeId:this.id})}),s.appendChild(r)}let{hasCondition:a,displayOk:o}=this._evalCondition(t,e),l=null;if(!i)if(a&&!t.hidden)l=document.createElement("span"),l.className=o?"icon-ok":"icon-fail",l.textContent=o?"\u2713":"\u2717",s.appendChild(l);else{let r=document.createElement("span");r.className="preview-icon-ph",s.appendChild(r)}if(t._iconEl=l,this._iconEl=l,e.viewPrefs.showLinkId&&!i&&s.appendChild(this._buildLinkIdTag(e)),t.hiddenRoot&&!i){let r=document.createElement("span");r.className="preview-hidden-badge",r.textContent="HIDDEN",r.dataset.tipTitle="sdc-questionnaire-hidden",r.dataset.tipBody="This item is permanently hidden from patients. It still participates in calculatedExpression logic. Controls are disabled in preview.",r.dataset.tipFhir="sdc-questionnaire-hidden",r.dataset.tipSpec="SDC",s.appendChild(r)}if(this._usageMode&&!i){let r=document.createElement("span");r.className="preview-hidden-badge",r.textContent=this._usageMode,r.dataset.tipTitle="questionnaire-usageMode",r.dataset.tipBody=`Usage mode: "${this._usageMode}". Controls when this item is shown:
9
+ This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`,l.dataset.tipFhir="Questionnaire.item.enableWhen[]",l.dataset.tipSpec="R4",this._attachEnableWhenAudit(l,i)}r.appendChild(l),t.appendChild(r),this._renderDimmedChildren(e,t,i)}_attachEnableWhenAudit(e,t){!t.showExplain||!this.enableWhen?.length||(e.classList.add("preview-condition-hint--explain"),e.addEventListener("click",i=>{i.stopPropagation();let r=Oi(this.enableWhen,this.enableBehavior,t.getAll);r&&Ri("Visibility condition",r)}))}_renderDimmedChildren(e,t,i){}_renderDisabled(e,t,i){if(i.previewMode==="patient")return;let r=this._makePreviewRow("lform-item lform-disabled"+(i.showNavBtn?" preview-row--pointer":""));i.showNavBtn&&r.addEventListener("click",()=>i.bus.dispatch(E.BUILDER_NAVIGATE_TO,{nodeId:this.id}));let s=document.createElement("span");s.className="icon-na",r.appendChild(s);let o=document.createElement("span");this.type==="group"&&(o.className="group-label"),o.textContent=(this.type==="group"?"Group: ":"Item: ")+this.title,r.appendChild(o),t.appendChild(r),this._renderDisabledChildren(e,t,i)}_renderDisabledChildren(e,t,i){}_createBaseRow(e,t){let i=t.previewMode==="patient",r=this._makePreviewRow("lform-item");if((e.hiddenRoot||e._usageModeHidden)&&r.classList.add("lform-item--hidden"),!i&&t.showNavBtn){let a=document.createElement("span");a.className="preview-nav-btn",a.dataset.testid="preview-nav-btn",a.textContent="\u2197",a.dataset.tipTitle="Go to builder node",a.dataset.tipBody="Scroll and highlight the corresponding node in the builder panel.",a.addEventListener("click",c=>{c.stopPropagation(),t.bus.dispatch(E.BUILDER_NAVIGATE_TO,{nodeId:this.id})}),r.appendChild(a)}let{hasCondition:s,displayOk:o}=this._evalCondition(e,t),l=null;if(!i)if(s&&!e.hidden)l=document.createElement("span"),l.className=o?"icon-ok":"icon-fail",l.textContent=o?"\u2713":"\u2717",r.appendChild(l);else{let a=document.createElement("span");a.className="preview-icon-ph",r.appendChild(a)}if(e._iconEl=l,this._iconEl=l,t.viewPrefs.showLinkId&&!i&&r.appendChild(this._buildLinkIdTag(t)),e.hiddenRoot&&!i){let a=document.createElement("span");a.className="preview-hidden-badge",a.textContent="HIDDEN",a.dataset.tipTitle="sdc-questionnaire-hidden",a.dataset.tipBody="This item is permanently hidden from patients. It still participates in calculatedExpression logic. Controls are disabled in preview.",a.dataset.tipFhir="sdc-questionnaire-hidden",a.dataset.tipSpec="SDC",r.appendChild(a)}if(this._usageMode&&!i){let a=document.createElement("span");a.className="preview-hidden-badge",a.textContent=this._usageMode,a.dataset.tipTitle="questionnaire-usageMode",a.dataset.tipBody=`Usage mode: "${this._usageMode}". Controls when this item is shown:
10
10
  \u2022 capture \u2014 only during data entry
11
11
  \u2022 display \u2014 only when displaying completed data
12
12
  \u2022 display-non-empty \u2014 display only if answered
13
13
  \u2022 capture-display \u2014 both modes
14
- \u2022 capture-display-non-empty \u2014 capture always, display only if answered`,r.dataset.tipFhir="item.extension[questionnaire-usageMode].valueCode",r.dataset.tipSpec="R4",s.appendChild(r)}if(this._shortText&&!i){let r=document.createElement("span");r.className="preview-short-text-badge",r.textContent=this._shortText,r.dataset.tipTitle="sdc-questionnaire-shortText",r.dataset.tipBody=`Short Text: "${this._shortText}" \u2014 abbreviated label used in summary views.`,r.dataset.tipFhir="item.extension[sdc-questionnaire-shortText].valueString",r.dataset.tipSpec="SDC",s.appendChild(r)}if(this._signatureRequired?.length){let r=this._signatureRequired.map(d=>d.display||d.code).join(", "),c=document.createElement("span");c.className="preview-meta-badge preview-meta-badge--sig",c.textContent="\u{1F50F} "+r,c.dataset.tipTitle="Signature required",c.dataset.tipBody=`A digital signature is required for this item.
15
- Type(s): `+r,c.dataset.tipFhir="item.extension[questionnaire-signatureRequired].valueCodeableConcept",c.dataset.tipSpec="R4",s.appendChild(c)}if(this._isSubject&&!i){let r=document.createElement("span");r.className="preview-meta-badge preview-meta-badge--subject",r.dataset.testid="preview-subject-badge",r.textContent="SUBJECT",r.dataset.tipTitle="sdc-questionnaire-isSubject",r.dataset.tipBody="This item\u2019s answer identifies the subject of the QuestionnaireResponse (QuestionnaireResponse.subject). Used by SDC servers when generating the response \u2014 has no effect on the patient-facing control.",r.dataset.tipFhir="item.extension[sdc-questionnaire-isSubject].valueBoolean",r.dataset.tipSpec="SDC",s.appendChild(r)}if(this._prefix&&e.viewPrefs.showPrefix){let r=document.createElement("span");r.className="preview-prefix",this.type==="group"&&r.classList.add("preview-prefix--group"),r.textContent=this._prefix,r.dataset.tipTitle="Item prefix",r.dataset.tipBody="Prefix label assigned to this item (item.prefix).",r.dataset.tipFhir="Questionnaire.item.prefix",r.dataset.tipSpec="R4",s.appendChild(r)}return s}_evalCondition(t,e){return{hasCondition:!1,displayOk:!0}}_hasChildLogic(t){return this._calculatedExpr?!1:t.visible.some(e=>e.node.type==="item"&&!e.disabled&&!e.hidden&&Ce(e.node.id,this)&&dt(e.node,t))}_buildLinkIdTag(t){let e=this.itemType,i=e==="checkbox"?"true / false":e==="integer"?"42 (valueInteger)":e==="decimal"?"3.14 (valueDecimal)":e==="number"?"42":e==="date"?'"2024-01-15"':e==="select"||e==="radio"||e==="open-choice"?'"option-code"':e==="quantity"?'{ value: 70, unit: "kg" }':'"text value"',s=document.createElement("span");return s.className="preview-linkid",s.dataset.testid="preview-linkid",s.textContent=this.id,s.dataset.tipTitle="linkId: "+this.id,s.dataset.tipBody="In visibility rules: values['"+this.id+`']
16
- Expected value: `+i+(e?`
17
- Item type: `+e:"")+`
18
- Click to copy linkId to clipboard.`,s.dataset.tipFhir="Questionnaire.item.linkId",s.dataset.tipSpec="R4",s.addEventListener("click",a=>{a.stopPropagation(),navigator.clipboard.writeText(this.id).catch(()=>{}),s.textContent="\u2713 copied",setTimeout(()=>{s.textContent=this.id},1200)}),s}_applyLabelContent(t,e){let i=window.DOMPurify,s=window.marked,a=e?.activeLanguage;if(a&&e?.translations?.[a]?.xhtml?.[this.id]!=null){t.innerHTML=i?i.sanitize(e.translations[a].xhtml[this.id]):"";return}if(a&&e?.translations?.[a]?.markdown?.[this.id]!=null){let o=e.translations[a].markdown[this.id];t.innerHTML=i&&s?i.sanitize(s.parseInline(o)):o;return}if(a&&e?.translations?.[a]?.items?.[this.id]!=null){t.textContent=e.translations[a].items[this.id];return}this._renderXhtml&&i?t.innerHTML=i.sanitize(this._renderXhtml):this._renderMarkdown&&i&&s?t.innerHTML=i.sanitize(s.parseInline(this._renderMarkdown)):t.textContent=this.title}_buildLabel(t,e){let i=document.createElement("span");return this._applyLabelContent(i,e),i}_buildSupportLinks(t,e){if(!this._supportLinks||!this._supportLinks.length)return;let i=this._supportLinks.filter(a=>a&&a.trim()),s=e.previewMode==="patient";for(let a of i)if(/^https?:|^mailto:/i.test(a.trim()))if(s){let o=document.createElement("a");o.className="support-link-patient-btn",o.dataset.testid="support-link-patient-btn",o.href=a,o.target="_blank",o.rel="noopener noreferrer",o.textContent=Ae("more_info",e),t.appendChild(o)}else{let o=document.createElement("a");o.className="support-link-icon",o.dataset.testid="support-link-icon",o.href=a,o.target="_blank",o.rel="noopener noreferrer",o.textContent="\u{1F517}",o.dataset.tipTitle="Support link",o.dataset.tipBody=a,o.dataset.tipFhir="Questionnaire.item.extension[questionnaire-supportLink]",o.dataset.tipSpec="R4",o.addEventListener("click",l=>l.stopPropagation()),t.appendChild(o)}}_buildVisHint(t,e){let i=e.previewMode==="patient",s=this._enableWhenText||this.enableWhenExpression;if(!i&&s){let a=document.createElement("span");if(a.className="preview-condition-hint",a.dataset.testid="preview-condition-hint",a.textContent="\u{1F441}\uFE0F "+s,this.enableWhenExpression){if(a.dataset.tipTitle="Visibility condition",a.dataset.tipBody="FHIRPath: "+this.enableWhenExpression+(e.showExplain?`
14
+ \u2022 capture-display-non-empty \u2014 capture always, display only if answered`,a.dataset.tipFhir="item.extension[questionnaire-usageMode].valueCode",a.dataset.tipSpec="R4",r.appendChild(a)}if(this._shortText&&!i){let a=document.createElement("span");a.className="preview-short-text-badge",a.textContent=this._shortText,a.dataset.tipTitle="sdc-questionnaire-shortText",a.dataset.tipBody=`Short Text: "${this._shortText}" \u2014 abbreviated label used in summary views.`,a.dataset.tipFhir="item.extension[sdc-questionnaire-shortText].valueString",a.dataset.tipSpec="SDC",r.appendChild(a)}if(this._signatureRequired?.length){let a=this._signatureRequired.map(u=>u.display||u.code).join(", "),c=document.createElement("span");c.className="preview-meta-badge preview-meta-badge--sig",c.textContent="\u{1F50F} "+a,c.dataset.tipTitle="Signature required",c.dataset.tipBody=`A digital signature is required for this item.
15
+ Type(s): `+a,c.dataset.tipFhir="item.extension[questionnaire-signatureRequired].valueCodeableConcept",c.dataset.tipSpec="R4",r.appendChild(c)}if(this._isSubject&&!i){let a=document.createElement("span");a.className="preview-meta-badge preview-meta-badge--subject",a.dataset.testid="preview-subject-badge",a.textContent="SUBJECT",a.dataset.tipTitle="sdc-questionnaire-isSubject",a.dataset.tipBody="This item\u2019s answer identifies the subject of the QuestionnaireResponse (QuestionnaireResponse.subject). Used by SDC servers when generating the response \u2014 has no effect on the patient-facing control.",a.dataset.tipFhir="item.extension[sdc-questionnaire-isSubject].valueBoolean",a.dataset.tipSpec="SDC",r.appendChild(a)}if(this._prefix&&t.viewPrefs.showPrefix){let a=document.createElement("span");a.className="preview-prefix",this.type==="group"&&a.classList.add("preview-prefix--group"),a.textContent=this._prefix,a.dataset.tipTitle="Item prefix",a.dataset.tipBody="Prefix label assigned to this item (item.prefix).",a.dataset.tipFhir="Questionnaire.item.prefix",a.dataset.tipSpec="R4",r.appendChild(a)}return r}_evalCondition(e,t){return{hasCondition:!1,displayOk:!0}}_hasChildLogic(e){return this._calculatedExpr?!1:e.visible.some(t=>t.node.type==="item"&&!t.disabled&&!t.hidden&&we(t.node.id,this)&&xt(t.node,e))}_buildLinkIdTag(e){let t=this.itemType,i=t==="checkbox"?"true / false":t==="integer"?"42 (valueInteger)":t==="decimal"?"3.14 (valueDecimal)":t==="number"?"42":t==="date"?'"2024-01-15"':t==="select"||t==="radio"||t==="open-choice"?'"option-code"':t==="quantity"?'{ value: 70, unit: "kg" }':'"text value"',r=document.createElement("span");return r.className="preview-linkid",r.dataset.testid="preview-linkid",r.textContent=this.id,r.dataset.tipTitle="linkId: "+this.id,r.dataset.tipBody="In visibility rules: values['"+this.id+`']
16
+ Expected value: `+i+(t?`
17
+ Item type: `+t:"")+`
18
+ Click to copy linkId to clipboard.`,r.dataset.tipFhir="Questionnaire.item.linkId",r.dataset.tipSpec="R4",r.addEventListener("click",s=>{s.stopPropagation(),navigator.clipboard.writeText(this.id).catch(()=>{}),r.textContent="\u2713 copied",setTimeout(()=>{r.textContent=this.id},1200)}),r}_applyLabelContent(e,t){let i=window.DOMPurify,r=window.marked,s=t?.activeLanguage;if(s&&t?.translations?.[s]?.xhtml?.[this.id]!=null){e.innerHTML=i?i.sanitize(t.translations[s].xhtml[this.id]):"";return}if(s&&t?.translations?.[s]?.markdown?.[this.id]!=null){let o=t.translations[s].markdown[this.id];e.innerHTML=i&&r?i.sanitize(r.parseInline(o)):o;return}if(s&&t?.translations?.[s]?.items?.[this.id]!=null){e.textContent=t.translations[s].items[this.id];return}this._renderXhtml&&i?e.innerHTML=i.sanitize(this._renderXhtml):this._renderMarkdown&&i&&r?e.innerHTML=i.sanitize(r.parseInline(this._renderMarkdown)):e.textContent=this.title}_buildLabel(e,t){let i=document.createElement("span");return i.className="item-label",this._applyLabelContent(i,t),i}_buildSupportLinks(e,t){if(!this._supportLinks||!this._supportLinks.length)return;let i=this._supportLinks.filter(s=>s&&s.trim()),r=t.previewMode==="patient";for(let s of i)if(/^https?:|^mailto:/i.test(s.trim()))if(r){let o=document.createElement("a");o.className="support-link-patient-btn",o.dataset.testid="support-link-patient-btn",o.href=s,o.target="_blank",o.rel="noopener noreferrer",o.textContent=Ie("more_info",t),e.appendChild(o)}else{let o=document.createElement("a");o.className="support-link-icon",o.dataset.testid="support-link-icon",o.href=s,o.target="_blank",o.rel="noopener noreferrer",o.textContent="\u{1F517}",o.dataset.tipTitle="Support link",o.dataset.tipBody=s,o.dataset.tipFhir="Questionnaire.item.extension[questionnaire-supportLink]",o.dataset.tipSpec="R4",o.addEventListener("click",l=>l.stopPropagation()),e.appendChild(o)}}_buildVisHint(e,t){let i=t.previewMode==="patient",r=this._enableWhenText||this.enableWhenExpression;if(!i&&r){let s=document.createElement("span");if(s.className="preview-condition-hint",s.dataset.testid="preview-condition-hint",s.textContent="\u{1F441}\uFE0F "+r,this.enableWhenExpression){if(s.dataset.tipTitle="Visibility condition",s.dataset.tipBody="FHIRPath: "+this.enableWhenExpression+(t.showExplain?`
19
19
 
20
- Click to explain.`:""),a.dataset.tipFhir="sdc-questionnaire-enableWhenExpression",a.dataset.tipSpec="SDC",e.showExplain){a.classList.add("preview-condition-hint--explain");let o=this.enableWhenExpression;a.addEventListener("click",()=>{e.lastCtx.fp&&Se(o,e.lastCtx.fp,e.lastCtx.qr,e.lastCtx.env)})}}else a.dataset.tipTitle="Visibility condition",a.dataset.tipBody="This item is shown only when: "+s+`
20
+ Click to explain.`:""),s.dataset.tipFhir="sdc-questionnaire-enableWhenExpression",s.dataset.tipSpec="SDC",t.showExplain){s.classList.add("preview-condition-hint--explain");let o=this.enableWhenExpression;s.addEventListener("click",()=>{t.lastCtx.fp&&Re(o,t.lastCtx.fp,t.lastCtx.qr,t.lastCtx.env)})}}else s.dataset.tipTitle="Visibility condition",s.dataset.tipBody="This item is shown only when: "+r+`
21
21
 
22
- This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`,a.dataset.tipFhir="Questionnaire.item.enableWhen[]",a.dataset.tipSpec="R4",this._attachEnableWhenAudit(a,e);t.appendChild(a)}}_buildRowContent(t,e,i){let s=this._buildLabel(e,i);this._renderStyle&&$e(s,this._renderStyle);let a=document.createElement("div");a.className="item-body",a.appendChild(s),this._buildSupportLinks(a,i),this._buildVisHint(a,i),t.appendChild(a),t._itemBody=a}_appendRow(t,e,i){if((e.hiddenRoot||e._usageModeHidden)&&this.type==="group"){let s=document.createElement("div");return s.className="lform-item--hidden",i.appendChild(s),t.classList.remove("lform-item--hidden"),s.appendChild(t),s}return i.appendChild(t),i}_buildPreviewCollapseToggle(t){if(!this.children?.length)return;let e=this._previewCollapsed,i=document.createElement("span");i.className="preview-collapse-toggle",i.setAttribute("role","button"),i.setAttribute("tabindex","0"),e||i.classList.add("preview-collapse-toggle--open"),i.dataset.tipTitle=e?"Expand section":"Collapse section";let s=this,a=()=>{s._previewCollapsed=!s._previewCollapsed,(s._bus||X).dispatch(w.CALC_RECALC_REQUESTED),n.notifyChanged(s._bus)};i.addEventListener("click",o=>{o.stopPropagation(),a()}),i.addEventListener("keydown",o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),a())}),t.appendChild(i)}_appendChildRows(t,e){let i=this.logicWithParent||"AND",s=this._hasChildLogic(e),a=!0;for(let o of this.children){let l=e.resultMap.get(o.id);if(!(l&&l.hidden&&(e.previewMode==="patient"||!e.viewPrefs.showHiddenItems))&&l&&(l.visible||l.showDimmed)){let r=o.itemType==="display"||o.type==="group"&&!o.children?.length;if(s&&!r&&!a&&l.visible){let c=document.createElement("div");c.className="logic-separator logic-separator-"+i.toLowerCase(),c.textContent=i==="OR"?Ae("or_separator",e):Ae("and_separator",e),t.appendChild(c)}n.dispatch(l,t,e),l.visible&&(a=r)}}}_renderNestedChildren(t,e,i){if(!this.children?.length)return;let s=document.createElement("div");s.className="preview-nested";for(let a of this.children){let o=i.resultMap.get(a.id);o&&n.dispatch(o,s,i)}s.childElementCount>0&&e.appendChild(s)}_renderChildren(t,e,i){}isDraggable(){return!0}_buildCollapseBtn(t){let e=n._collapseMap.get(this.id)||!1,i=document.createElement("button");return i.type="button",i.className="node-collapse-btn",i.dataset.testid="group-collapse-btn",i.textContent=e?"\u25B6":"\u25BC",i.dataset.tipTitle=e?"Expand":"Collapse",i.onclick=s=>{s.stopPropagation();let a=!n._collapseMap.get(this.id);n._collapseMap.set(this.id,a),i.textContent=a?"\u25B6":"\u25BC",i.dataset.tipTitle=a?"Expand":"Collapse";let o=t.querySelector(".node-body");o&&(o.style.display=a?"none":"")},i}_initNavListener(t){this._navAbort?.abort(),this._navAbort=new AbortController,document.addEventListener(w.BUILDER_NAVIGATE_TO,e=>{if(e.detail?.nodeId!==this.id)return;let i=document.querySelector(".left-panel-body");if(i){let s=t.getBoundingClientRect().top-i.getBoundingClientRect().top+i.scrollTop-10;i.scrollTo({top:s,behavior:"instant"})}else t.scrollIntoView({behavior:"instant",block:"start"});t.classList.add("node-flash"),setTimeout(()=>t.classList.remove("node-flash"),1e3)},{signal:this._navAbort.signal})}_dispatchRerender(){document.dispatchEvent(new CustomEvent(w.BUILDER_RERENDER))}_dispatchNavigate(){document.dispatchEvent(new CustomEvent(w.BUILDER_NAVIGATE,{detail:{id:this.id}}))}_makePreviewRow(t){let e=document.createElement("div");return e.className=t,e.dataset.previewId=this.id,this._previewEl=e,this._scrollAfterRender&&(this._scrollAfterRender=!1,requestAnimationFrame(()=>this._scrollIntoView())),e}_scrollIntoView(){!this._previewEl||!document.contains(this._previewEl)||(this._previewEl.scrollIntoView({behavior:"smooth",block:"center"}),this._previewEl.classList.add("preview-flash"),setTimeout(()=>this._previewEl?.classList.remove("preview-flash"),1e3))}_initPreviewNavListener(t){t.on(w.PREVIEW_NAVIGATE_TO,e=>{e.detail?.id===this.id&&(this._previewEl&&document.contains(this._previewEl)?this._scrollIntoView():(this._scrollAfterRender=!0,requestAnimationFrame(()=>{this._scrollAfterRender&&this._previewEl&&document.contains(this._previewEl)&&(this._scrollAfterRender=!1,this._scrollIntoView())})))},{signal:this._ac.signal})}};var ut=class{constructor(t){this._group=t}render(t,e,i=[]){let s=this._group,a=document.createElement("table");a.className="gtable",a.dataset.testid="gtable",a.dataset.gtableId=s.id;let l=a.createTHead().insertRow(),r=e.previewMode==="patient";for(let u of s.children){let f=document.createElement("th");f.className="gtable-th";let h=document.createElement("span");if(h.className="gtable-th-title",h.textContent=u.title||u.id,u.mandatory===!0){let _=document.createElement("span");_.className="gtable-required-star",_.textContent=" *",h.appendChild(_)}if(f.appendChild(h),!r){let _=document.createElement("div");_.className="gtable-th-indicators",this._buildColIndicators(_,u,e),_.childElementCount>0&&f.appendChild(_)}l.appendChild(f)}if(s.repeats){let u=document.createElement("th");u.className="gtable-th gtable-th-action",l.appendChild(u)}let c=a.createTBody();if(s.repeats)this._renderRepeatingRows(c,e,i);else{let u=c.insertRow();this._appendCells(u,e)}if(s.repeats){let u=e.instanceCount(s.id,i),f=s._maxOccurs,h=f!==void 0&&u>=f,v=a.createTFoot().insertRow(),C=document.createElement("td");C.colSpan=s.children.length+1,C.className="gtable-tfoot-td";let T=document.createElement("button");T.type="button",T.className="repeat-add-btn gtable-add-btn",T.dataset.testid="gtable-add-btn",T.textContent="+ Add row",T.disabled=h,h&&(T.dataset.tipTitle=`Maximum ${f} row${f===1?"":"s"} reached`),T.addEventListener("click",()=>{h||(e.addInstance(s.id,i),I.notifyChanged(e.bus))}),C.appendChild(T),v.appendChild(C)}let d=document.createElement("div");d.className="gtable-wrap",d.dataset.gtableId=s.id,d.appendChild(a),t.appendChild(d)}_renderRepeatingRows(t,e,i){let s=this._group,a=s._minOccurs!=null&&s._minOccurs>0?s._minOccurs:1,o=e.instanceCount(s.id,i);for(;o<a;)e.addInstance(s.id,i),o++;let l={map:e.resultMap,visible:e.visible,path:e.instancePath};for(let r=0;r<o;r++){let c=[...i,{id:s.id,idx:r}];e.instancePath=c;let d=e.evalChildren(s.children,c);e.resultMap=new Map(d.map(h=>[h.node.id,h])),e.visible=d;let u=t.insertRow();this._appendCells(u,e);let f=document.createElement("td");if(f.className="gtable-td-action",o>a){let h=document.createElement("button");h.type="button",h.className="repeat-remove-btn gtable-rm-btn",h.textContent="\xD7",h.dataset.testid="gtable-remove-btn",h.dataset.tipTitle="Remove this row";let _=r;h.addEventListener("click",()=>{e.removeInstance(s.id,_,i),I.notifyChanged(e.bus)}),f.appendChild(h)}u.appendChild(f),e.resultMap=l.map,e.visible=l.visible,e.instancePath=l.path}}_appendCells(t,e){let i=e.cellMode;for(let s of this._group.children){let a=document.createElement("td");a.className="gtable-td";let o=e.resultMap.get(s.id);o&&(e.cellMode=s.type==="item",I.dispatch(o,a,e)),t.appendChild(a)}e.cellMode=i}_buildColIndicators(t,e,i){if(e.enableWhen?.length||e.enableWhenExpression){let s=document.createElement("span");s.className="gtable-col-ind",s.textContent="\u{1F441}",s.dataset.tipTitle="Conditional column",s.dataset.tipBody=e._enableWhenText||e.enableWhenExpression||"This column has a Show When (enableWhen) condition.",s.dataset.tipFhir="Questionnaire.item.enableWhen[]",s.dataset.tipSpec="R4",t.appendChild(s)}if(e._readOnly&&!e._calculatedExpr){let s=document.createElement("span");s.className="gtable-col-ind",s.textContent="\u{1F512}",s.dataset.tipTitle="Read-only column",s.dataset.tipBody="Values in this column are read-only (item.readOnly).",s.dataset.tipFhir="Questionnaire.item.readOnly",s.dataset.tipSpec="R4",t.appendChild(s)}if(e._calculatedExpr){let s=document.createElement("span");s.className="gtable-col-ind",s.textContent="\u26A1",s.dataset.tipTitle="Calculated column",s.dataset.tipBody="Values in this column are computed by: "+e._calculatedExpr,s.dataset.tipFhir="sdc-questionnaire-calculatedExpression",s.dataset.tipSpec="SDC",t.appendChild(s)}if(e.constraint?.length){let s=e.constraint.map(o=>o.human||o.expression||o.key).filter(Boolean),a=document.createElement("span");a.className="gtable-col-ind",a.textContent="\u26A0\uFE0F",a.dataset.tipTitle="Has constraint",a.dataset.tipBody=s.join(`
23
- `)||"questionnaire-constraint on this column",a.dataset.tipFhir="Questionnaire.item.extension[questionnaire-constraint]",a.dataset.tipSpec="R4",t.appendChild(a)}if(e._supportLinks?.length){let s=e._supportLinks.filter(a=>a&&/^https?:/i.test(a));for(let a of s){let o=document.createElement("a");o.className="gtable-col-ind support-link-icon",o.textContent="\u{1F517}",o.href=a,o.target="_blank",o.rel="noopener noreferrer",o.dataset.tipTitle="Support link",o.dataset.tipBody=a,o.dataset.tipFhir="Questionnaire.item.extension[questionnaire-supportLink]",o.dataset.tipSpec="R4",o.addEventListener("click",l=>l.stopPropagation()),t.appendChild(o)}}if(e.mandatory===!1&&e.type==="item"){let s=document.createElement("span");s.className="gtable-col-ind gtable-col-ind--optional",s.textContent="optional",s.dataset.tipTitle="Optional column",s.dataset.tipBody="This field is not required (item.required: false).",s.dataset.tipFhir="Questionnaire.item.required",s.dataset.tipSpec="R4",t.appendChild(s)}}};var ce=class n extends I{static get _collapseMap(){return I._collapseMap}constructor(t={}){super(t),this.type="group",this.logicWithParent=t.logicWithParent??"AND",this.children=t.children??[],this.repeats=t.repeats??!1}destroy(){super.destroy(),this.children.forEach(t=>t.destroy())}_evalCondition(t,e){if(this._calculatedExpr){if(this.constraint?.length){let{ctx:c,cEnv:d}=e;return{hasCondition:!0,displayOk:e.evalConstraints(this,c.fp,c.qr,d)}}return{hasCondition:!1,displayOk:!0}}let s=e.visible.filter(c=>c.node.type==="item"&&!c.disabled&&!c.hidden&&Ce(c.node.id,this)).filter(c=>dt(c.node,e));if(s.length===0)return{hasCondition:!1,displayOk:!0};let{ctx:a,cEnv:o}=e,l=c=>c.ok&&e.calcFormOk(c.node)&&(!c.node.constraint?.length||e.evalConstraints(c.node,a.fp,a.qr,o));return{hasCondition:!0,displayOk:this.logicWithParent==="OR"?s.some(l):s.every(l)}}refreshIcon(t){let e=t.groupIconMap.get(this.id);if(!e)return;let{icon:i,descendants:s}=e,{ctx:a}=t;if(this._calculatedExpr){if(this.constraint?.length){let c=t.evalConstraints(this,a.fp,a.qr,a.envVars||{});i.className=c?"icon-ok":"icon-fail",i.textContent=c?"\u2713":"\u2717"}else i.className="icon-ok",i.textContent="\u2713";return}let o=s.filter(c=>dt(c.node,t));if(o.length===0){i.className="icon-ok",i.textContent="\u2713";return}let l=c=>c.ok&&t.calcFormOk(c.node)&&(!c.node.constraint?.length||t.evalConstraints(c.node,a.fp,a.qr,a.envVars||{})),r=this.logicWithParent==="OR"?o.some(l):o.every(l);i.className=r?"icon-ok":"icon-fail",i.textContent=r?"\u2713":"\u2717"}_buildLabel(t,e){let i=this.children.length===0,s=document.createElement("span");return s.className=i?"display-info-label":"group-label",this._applyLabelContent(s,e),s}_buildRowContent(t,e,i){super._buildRowContent(t,e,i);let s=t._itemBody,a=i.previewMode==="patient",o=this.children.length===0;if((this._itemControl==="header"||this._itemControl==="footer")&&(t.classList.add("lform-group-"+this._itemControl),!a)){let l=document.createElement("span");l.className="preview-group-ctrl-badge",l.textContent=this._itemControl,l.dataset.tipTitle=this._itemControl==="header"?"Group header":"Group footer",l.dataset.tipBody=this._itemControl==="header"?"This group is rendered as a header \u2014 continuously visible at the top of the questionnaire.":"This group is rendered as a footer \u2014 continuously visible at the bottom of the questionnaire.",l.dataset.tipFhir="item.extension[questionnaire-itemControl].valueCodeableConcept.coding.code = "+this._itemControl,l.dataset.tipSpec="R4",s.appendChild(l)}if(this._itemControl==="gtable"&&!a){let l=document.createElement("span");l.className="preview-group-ctrl-badge preview-group-ctrl-badge--gtable",l.textContent="gtable",l.dataset.testid="gtable-badge",l.dataset.tipTitle="Group table layout (gtable)",l.dataset.tipBody="This group is rendered as a table \u2014 each child item is a column, each repeat instance is a row.",l.dataset.tipFhir="item.extension[questionnaire-itemControl].valueCodeableConcept.coding.code = gtable",l.dataset.tipSpec="R4 \xB7 SDC",s.appendChild(l)}if(this.repeats&&!a){let l=document.createElement("span");l.className="preview-group-ctrl-badge",l.textContent="Repeatable",l.dataset.tipTitle="Repeatable group",l.dataset.tipBody="This group repeats \u2014 the respondent can add multiple entries.",l.dataset.tipFhir="Questionnaire.item.repeats",l.dataset.tipSpec="R4",s.appendChild(l)}if(!a&&!o&&this._hasChildLogic(i)){let l=this.logicWithParent==="OR",r=document.createElement("span");r.className="preview-logic-badge preview-logic-"+(l?"or":"and"),r.textContent=l?"ANY item \u2713":"ALL items \u2713",r.dataset.tipTitle=l?"Any item passes (OR)":"All items required (AND)",r.dataset.tipBody=l?`Group is satisfied if at least one child item has a valid answer.
22
+ This label is auto-generated from the enableWhen condition. To change it \u2014 edit the Show When panel in the builder.`,s.dataset.tipFhir="Questionnaire.item.enableWhen[]",s.dataset.tipSpec="R4",this._attachEnableWhenAudit(s,t);e.appendChild(s)}}_buildRowContent(e,t,i){let r=this._buildLabel(t,i);this._renderStyle&&Ye(r,this._renderStyle);let s=document.createElement("div");s.className="item-body",s.appendChild(r),this._buildSupportLinks(s,i),this._buildVisHint(s,i),e.appendChild(s),e._itemBody=s}_appendRow(e,t,i){if((t.hiddenRoot||t._usageModeHidden)&&this.type==="group"){let r=document.createElement("div");return r.className="lform-item--hidden",i.appendChild(r),e.classList.remove("lform-item--hidden"),r.appendChild(e),r}return i.appendChild(e),i}_buildPreviewCollapseToggle(e){if(!this.children?.length)return;let t=this._previewCollapsed,i=document.createElement("span");i.className="preview-collapse-toggle",i.setAttribute("role","button"),i.setAttribute("tabindex","0"),t||i.classList.add("preview-collapse-toggle--open"),i.dataset.tipTitle=t?"Expand section":"Collapse section";let r=this,s=()=>{r._previewCollapsed=!r._previewCollapsed,(r._bus||X).dispatch(E.CALC_RECALC_REQUESTED),n.notifyChanged(r._bus)};i.addEventListener("click",o=>{o.stopPropagation(),s()}),i.addEventListener("keydown",o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),s())}),e.appendChild(i)}_appendChildRows(e,t){let i=this.logicWithParent||"AND",r=this._hasChildLogic(t),s=!0;for(let o of this.children){let l=t.resultMap.get(o.id);if(!(l&&l.hidden&&(t.previewMode==="patient"||!t.viewPrefs.showHiddenItems))&&l&&(l.visible||l.showDimmed)){let a=o.itemType==="display"||o.type==="group"&&!o.children?.length;if(r&&!a&&!s&&l.visible){let c=document.createElement("div");c.className="logic-separator logic-separator-"+i.toLowerCase(),c.textContent=i==="OR"?Ie("or_separator",t):Ie("and_separator",t),e.appendChild(c)}n.dispatch(l,e,t),l.visible&&(s=a)}}}_renderNestedChildren(e,t,i){if(!this.children?.length)return;let r=document.createElement("div");r.className="preview-nested";for(let s of this.children){let o=i.resultMap.get(s.id);o&&n.dispatch(o,r,i)}r.childElementCount>0&&t.appendChild(r)}_renderChildren(e,t,i){}isDraggable(){return!0}_buildCollapseBtn(e){let t=n._collapseMap.get(this.id)||!1,i=document.createElement("button");return i.type="button",i.className="node-collapse-btn",i.dataset.testid="group-collapse-btn",i.textContent=t?"\u25B6":"\u25BC",i.dataset.tipTitle=t?"Expand":"Collapse",i.onclick=r=>{r.stopPropagation();let s=!n._collapseMap.get(this.id);n._collapseMap.set(this.id,s),i.textContent=s?"\u25B6":"\u25BC",i.dataset.tipTitle=s?"Expand":"Collapse";let o=e.querySelector(".node-body");o&&(o.style.display=s?"none":"")},i}_initNavListener(e){this._navAbort?.abort(),this._navAbort=new AbortController,document.addEventListener(E.BUILDER_NAVIGATE_TO,t=>{if(t.detail?.nodeId!==this.id)return;let i=document.querySelector(".left-panel-body");if(i){let r=e.getBoundingClientRect().top-i.getBoundingClientRect().top+i.scrollTop-10;i.scrollTo({top:r,behavior:"instant"})}else e.scrollIntoView({behavior:"instant",block:"start"});e.classList.add("node-flash"),setTimeout(()=>e.classList.remove("node-flash"),1e3)},{signal:this._navAbort.signal})}_dispatchRerender(){document.dispatchEvent(new CustomEvent(E.BUILDER_RERENDER))}_dispatchNavigate(){document.dispatchEvent(new CustomEvent(E.BUILDER_NAVIGATE,{detail:{id:this.id}}))}_makePreviewRow(e){let t=document.createElement("div");return t.className=e,t.dataset.previewId=this.id,this._previewEl=t,this._scrollAfterRender&&(this._scrollAfterRender=!1,requestAnimationFrame(()=>this._scrollIntoView())),t}_scrollIntoView(){!this._previewEl||!document.contains(this._previewEl)||(this._previewEl.scrollIntoView({behavior:"smooth",block:"center"}),this._previewEl.classList.add("preview-flash"),setTimeout(()=>this._previewEl?.classList.remove("preview-flash"),1e3))}_initPreviewNavListener(e){e.on(E.PREVIEW_NAVIGATE_TO,t=>{t.detail?.id===this.id&&(this._previewEl&&document.contains(this._previewEl)?this._scrollIntoView():(this._scrollAfterRender=!0,requestAnimationFrame(()=>{this._scrollAfterRender&&this._previewEl&&document.contains(this._previewEl)&&(this._scrollAfterRender=!1,this._scrollIntoView())})))},{signal:this._ac.signal})}};var Et=class{constructor(e){this._group=e}render(e,t,i=[]){let r=this._group,s=document.createElement("table");s.className="gtable",s.dataset.testid="gtable",s.dataset.gtableId=r.id;let l=s.createTHead().insertRow(),a=t.previewMode==="patient";for(let d of r.children){let p=document.createElement("th");p.className="gtable-th";let f=document.createElement("span");if(f.className="gtable-th-title",f.textContent=d.title||d.id,d.mandatory===!0){let _=document.createElement("span");_.className="gtable-required-star",_.textContent=" *",f.appendChild(_)}if(p.appendChild(f),!a){let _=document.createElement("div");_.className="gtable-th-indicators",this._buildColIndicators(_,d,t),_.childElementCount>0&&p.appendChild(_)}l.appendChild(p)}if(r.repeats){let d=document.createElement("th");d.className="gtable-th gtable-th-action",l.appendChild(d)}let c=s.createTBody();if(r.repeats)this._renderRepeatingRows(c,t,i);else{let d=c.insertRow();this._appendCells(d,t)}if(r.repeats){let d=t.instanceCount(r.id,i),p=r._maxOccurs,f=p!==void 0&&d>=p,v=s.createTFoot().insertRow(),w=document.createElement("td");w.colSpan=r.children.length+1,w.className="gtable-tfoot-td";let S=document.createElement("button");S.type="button",S.className="repeat-add-btn gtable-add-btn",S.dataset.testid="gtable-add-btn",S.textContent="+ Add row",S.disabled=f,f&&(S.dataset.tipTitle=`Maximum ${p} row${p===1?"":"s"} reached`),S.addEventListener("click",()=>{f||(t.addInstance(r.id,i),D.notifyChanged(t.bus))}),w.appendChild(S),v.appendChild(w)}let u=document.createElement("div");u.className="gtable-wrap",u.dataset.gtableId=r.id,u.appendChild(s),e.appendChild(u)}_renderRepeatingRows(e,t,i){let r=this._group,s=r._minOccurs!=null&&r._minOccurs>0?r._minOccurs:1,o=t.instanceCount(r.id,i);for(;o<s;)t.addInstance(r.id,i),o++;let l={map:t.resultMap,visible:t.visible,path:t.instancePath};for(let a=0;a<o;a++){let c=[...i,{id:r.id,idx:a}];t.instancePath=c;let u=t.evalChildren(r.children,c);t.resultMap=new Map(u.map(f=>[f.node.id,f])),t.visible=u;let d=e.insertRow();this._appendCells(d,t);let p=document.createElement("td");if(p.className="gtable-td-action",o>s){let f=document.createElement("button");f.type="button",f.className="repeat-remove-btn gtable-rm-btn",f.textContent="\xD7",f.dataset.testid="gtable-remove-btn",f.dataset.tipTitle="Remove this row";let _=a;f.addEventListener("click",()=>{t.removeInstance(r.id,_,i),D.notifyChanged(t.bus)}),p.appendChild(f)}d.appendChild(p),t.resultMap=l.map,t.visible=l.visible,t.instancePath=l.path}}_appendCells(e,t){let i=t.cellMode;for(let r of this._group.children){let s=document.createElement("td");s.className="gtable-td";let o=t.resultMap.get(r.id);o&&(t.cellMode=r.type==="item",D.dispatch(o,s,t)),e.appendChild(s)}t.cellMode=i}_buildColIndicators(e,t,i){if(t.enableWhen?.length||t.enableWhenExpression){let r=document.createElement("span");r.className="gtable-col-ind",r.textContent="\u{1F441}",r.dataset.tipTitle="Conditional column",r.dataset.tipBody=t._enableWhenText||t.enableWhenExpression||"This column has a Show When (enableWhen) condition.",r.dataset.tipFhir="Questionnaire.item.enableWhen[]",r.dataset.tipSpec="R4",e.appendChild(r)}if(t._readOnly&&!t._calculatedExpr){let r=document.createElement("span");r.className="gtable-col-ind",r.textContent="\u{1F512}",r.dataset.tipTitle="Read-only column",r.dataset.tipBody="Values in this column are read-only (item.readOnly).",r.dataset.tipFhir="Questionnaire.item.readOnly",r.dataset.tipSpec="R4",e.appendChild(r)}if(t._calculatedExpr){let r=document.createElement("span");r.className="gtable-col-ind",r.textContent="\u26A1",r.dataset.tipTitle="Calculated column",r.dataset.tipBody="Values in this column are computed by: "+t._calculatedExpr,r.dataset.tipFhir="sdc-questionnaire-calculatedExpression",r.dataset.tipSpec="SDC",e.appendChild(r)}if(t.constraint?.length){let r=t.constraint.map(o=>o.human||o.expression||o.key).filter(Boolean),s=document.createElement("span");s.className="gtable-col-ind",s.textContent="\u26A0\uFE0F",s.dataset.tipTitle="Has constraint",s.dataset.tipBody=r.join(`
23
+ `)||"questionnaire-constraint on this column",s.dataset.tipFhir="Questionnaire.item.extension[questionnaire-constraint]",s.dataset.tipSpec="R4",e.appendChild(s)}if(t._supportLinks?.length){let r=t._supportLinks.filter(s=>s&&/^https?:/i.test(s));for(let s of r){let o=document.createElement("a");o.className="gtable-col-ind support-link-icon",o.textContent="\u{1F517}",o.href=s,o.target="_blank",o.rel="noopener noreferrer",o.dataset.tipTitle="Support link",o.dataset.tipBody=s,o.dataset.tipFhir="Questionnaire.item.extension[questionnaire-supportLink]",o.dataset.tipSpec="R4",o.addEventListener("click",l=>l.stopPropagation()),e.appendChild(o)}}if(t.mandatory===!1&&t.type==="item"){let r=document.createElement("span");r.className="gtable-col-ind gtable-col-ind--optional",r.textContent="optional",r.dataset.tipTitle="Optional column",r.dataset.tipBody="This field is not required (item.required: false).",r.dataset.tipFhir="Questionnaire.item.required",r.dataset.tipSpec="R4",e.appendChild(r)}}};var pe=class n extends D{static get _collapseMap(){return D._collapseMap}constructor(e={}){super(e),this.type="group",this.logicWithParent=e.logicWithParent??"AND",this.children=e.children??[],this.repeats=e.repeats??!1}destroy(){super.destroy(),this.children.forEach(e=>e.destroy())}_evalCondition(e,t){if(this._calculatedExpr){if(this.constraint?.length){let{ctx:c,cEnv:u}=t;return{hasCondition:!0,displayOk:t.evalConstraints(this,c.fp,c.qr,u)}}return{hasCondition:!1,displayOk:!0}}let r=t.visible.filter(c=>c.node.type==="item"&&!c.disabled&&!c.hidden&&we(c.node.id,this)).filter(c=>xt(c.node,t));if(r.length===0)return{hasCondition:!1,displayOk:!0};let{ctx:s,cEnv:o}=t,l=c=>c.ok&&t.calcFormOk(c.node)&&(!c.node.constraint?.length||t.evalConstraints(c.node,s.fp,s.qr,o));return{hasCondition:!0,displayOk:this.logicWithParent==="OR"?r.some(l):r.every(l)}}refreshIcon(e){let t=e.groupIconMap.get(this.id);if(!t)return;let{icon:i,descendants:r}=t,{ctx:s}=e;if(this._calculatedExpr){if(this.constraint?.length){let c=e.evalConstraints(this,s.fp,s.qr,s.envVars||{});i.className=c?"icon-ok":"icon-fail",i.textContent=c?"\u2713":"\u2717"}else i.className="icon-ok",i.textContent="\u2713";return}let o=r.filter(c=>xt(c.node,e));if(o.length===0){i.className="icon-ok",i.textContent="\u2713";return}let l=c=>c.ok&&e.calcFormOk(c.node)&&(!c.node.constraint?.length||e.evalConstraints(c.node,s.fp,s.qr,s.envVars||{})),a=this.logicWithParent==="OR"?o.some(l):o.every(l);i.className=a?"icon-ok":"icon-fail",i.textContent=a?"\u2713":"\u2717"}_buildLabel(e,t){let i=this.children.length===0,r=document.createElement("span");return r.className=(i?"display-info-label":"group-label")+" item-label",this._applyLabelContent(r,t),r}_buildRowContent(e,t,i){super._buildRowContent(e,t,i);let r=e._itemBody,s=i.previewMode==="patient",o=this.children.length===0;if((this._itemControl==="header"||this._itemControl==="footer")&&(e.classList.add("lform-group-"+this._itemControl),!s)){let l=document.createElement("span");l.className="preview-group-ctrl-badge",l.textContent=this._itemControl,l.dataset.tipTitle=this._itemControl==="header"?"Group header":"Group footer",l.dataset.tipBody=this._itemControl==="header"?"This group is rendered as a header \u2014 continuously visible at the top of the questionnaire.":"This group is rendered as a footer \u2014 continuously visible at the bottom of the questionnaire.",l.dataset.tipFhir="item.extension[questionnaire-itemControl].valueCodeableConcept.coding.code = "+this._itemControl,l.dataset.tipSpec="R4",r.appendChild(l)}if(this._itemControl==="gtable"&&!s){let l=document.createElement("span");l.className="preview-group-ctrl-badge preview-group-ctrl-badge--gtable",l.textContent="gtable",l.dataset.testid="gtable-badge",l.dataset.tipTitle="Group table layout (gtable)",l.dataset.tipBody="This group is rendered as a table \u2014 each child item is a column, each repeat instance is a row.",l.dataset.tipFhir="item.extension[questionnaire-itemControl].valueCodeableConcept.coding.code = gtable",l.dataset.tipSpec="R4 \xB7 SDC",r.appendChild(l)}if(this.repeats&&!s){let l=document.createElement("span");l.className="preview-group-ctrl-badge",l.textContent="Repeatable",l.dataset.tipTitle="Repeatable group",l.dataset.tipBody="This group repeats \u2014 the respondent can add multiple entries.",l.dataset.tipFhir="Questionnaire.item.repeats",l.dataset.tipSpec="R4",r.appendChild(l)}if(!s&&!o&&this._hasChildLogic(i)){let l=this.logicWithParent==="OR",a=document.createElement("span");a.className="preview-logic-badge preview-logic-"+(l?"or":"and"),a.textContent=l?"ANY item \u2713":"ALL items \u2713",a.dataset.tipTitle=l?"Any item passes (OR)":"All items required (AND)",a.dataset.tipBody=l?`Group is satisfied if at least one child item has a valid answer.
24
24
  Stored in FHIR as a questionnaire-constraint with key e3a8c2f1\u2026:group-or.`:`Group is satisfied only when all child items have valid answers.
25
- This is the default FHIR behaviour \u2014 no extra constraint is generated.`,r.dataset.tipFhir=l?"questionnaire-constraint (key: ITLH_NS:group-or)":"item.required (default AND)",r.dataset.tipSpec="R4",s.appendChild(r)}o||this._buildPreviewCollapseToggle(t)}_renderDimmedChildren(t,e,i){this._previewCollapsed||this._renderNestedChildren(t,e,i)}_renderDisabledChildren(t,e,i){this._previewCollapsed||this._renderNestedChildren(t,e,i)}_renderChildren(t,e,i){if(this.children.length===0)return;let s=t._iconEl,a=i.visible.filter(l=>l.node.type==="item"&&!l.disabled&&!l.hidden&&Ce(l.node.id,this));if(s&&i.groupIconMap.set(this.id,{icon:s,descendants:a,node:this}),this._previewCollapsed)return;if(this._itemControl==="gtable"){new ut(this).render(e,i,i.instancePath||[]);return}if(this.repeats){this._renderInstances(e,i);return}let o=document.createElement("div");o.className="preview-nested",this._appendChildRows(o,i),o.childElementCount>0&&e.appendChild(o)}_renderInstances(t,e){let i=e.instancePath||[],s=this._minOccurs&&this._minOccurs>0?this._minOccurs:1,a=e.instanceCount(this.id,i);for(;a<s;)e.addInstance(this.id,i),a++;let o=document.createElement("div");o.className="preview-nested rg-instances",o.dataset.rgGroup=this.id;let l={map:e.resultMap,visible:e.visible,path:e.instancePath};for(let u=0;u<a;u++){let f=[...i,{id:this.id,idx:u}],h=document.createElement("div");if(h.className="rg-inst",a>s){let v=document.createElement("button");v.type="button",v.className="repeat-remove-btn rg-del",v.textContent="\xD7",v.dataset.testid="rg-remove-btn",v.dataset.tipTitle="Remove this entry";let C=u;v.onclick=()=>{e.removeInstance(this.id,C,i),I.notifyChanged(e.bus)},h.appendChild(v)}e.instancePath=f;let _=e.evalChildren(this.children,f);e.resultMap=new Map(_.map(v=>[v.node.id,v])),e.visible=_,this._appendChildRows(h,e),e.resultMap=l.map,e.visible=l.visible,e.instancePath=l.path,o.appendChild(h)}let r=this._maxOccurs,c=r!==void 0&&a>=r,d=document.createElement("button");d.type="button",d.className="repeat-add-btn",d.dataset.testid="rg-add-btn",d.textContent="+ Add another entry",c&&(d.disabled=!0,d.dataset.tipTitle="Maximum "+r+" entr"+(r===1?"y":"ies")+" reached"),d.onclick=()=>{c||(e.addInstance(this.id,i),I.notifyChanged(e.bus))},o.appendChild(d),t.appendChild(o)}static updateAll(t){for(let[,{node:e}]of t.groupIconMap.entries())e.refreshIcon(t)}static resetCollapsedFromTree(t){for(let e of t)I._collapseMap.delete(e.id),e.children?.length&&(e.type==="group"&&(e._previewCollapsed=e._collapsible==="default-closed"),n.resetCollapsedFromTree(e.children))}};W.set("group",ce);var Q=class extends I{constructor(t={}){super(t),this.type="item",this.repeats=t.repeats??!1,this.options=t.options??"",this.constraint=t.constraint??[],this.children=t.children??[],this.logicWithParent=t.logicWithParent??"AND"}destroy(){super.destroy(),this.children.forEach(t=>t.destroy())}buildControl(t){throw new Error(`buildControl() not implemented on ${this.constructor.name} (itemType: ${this.itemType})`)}supportsRepeat(){return!0}impliesRepeats(){return!1}_renderChildren(t,e,i){if(this._previewCollapsed||!this.children.length)return;let s=document.createElement("div");s.className="preview-nested",this._appendChildRows(s,i),s.childElementCount>0&&e.appendChild(s)}_renderDimmedChildren(t,e,i){this._renderNestedChildren(t,e,i)}_renderDisabledChildren(t,e,i){this._renderNestedChildren(t,e,i)}_evalCondition(t,e){let{ctx:i,cEnv:s}=e,a=this.constraint?.length?e.evalConstraints(this,i.fp,i.qr,s):!0,o=this.itemType!=="display"&&(e.CHECKABLE_TYPES.has(this.itemType)&&(e.isMandatory(this)||this.itemType==="url")||this._calculatedExpr&&this._readOnly&&this.itemType==="checkbox"||this.constraint?.length>0||this._minValue!==void 0||this._maxValue!==void 0||this._maxDecimalPlaces!==void 0||this._regex),l=t.ok&&e.calcFormOk(this)&&a;return{hasCondition:o,displayOk:l}}_buildLabel(t,e){let i=document.createElement("span");return this._applyLabelContent(i,e),i}_buildRowContent(t,e,i){let s=i.previewMode==="patient";if(i.cellMode){this._buildControl(t,e,i),this._buildReadOnlyValue(t,i);return}let a=this._buildLabel(e,i);this._renderStyle&&$e(a,this._renderStyle);let o=null;if(this.itemType!=="display"&&!this._readOnly)if(this.mandatory===!1)s||(o=document.createElement("span"),o.className="preview-optional-badge",o.dataset.testid="preview-optional-badge",o.textContent="optional",o.dataset.tipTitle="Optional field",o.dataset.tipBody="This field is not required \u2014 the questionnaire response is valid without an answer.",o.dataset.tipFhir="item.required: false",o.dataset.tipSpec="R4");else{let r=document.createElement("span");r.className="preview-required-star",r.dataset.testid="preview-required-star",r.textContent="*",r.dataset.tipTitle="Required field",r.dataset.tipBody="This item is marked as required (item.required = true) and must be answered.",r.dataset.tipFhir="Questionnaire.item.required",r.dataset.tipSpec="R4",a.appendChild(r)}let l=document.createElement("div");l.className="item-body",l.appendChild(a),o&&l.appendChild(o),this._buildSupportLinks(l,i),this._buildVisHint(l,i),this._buildConstraintBadge(l,i),this._buildReadOnlyBadge(l,i),this._buildInitialBadge(l,i),this._buildItemMedia(l),this._buildControl(l,e,i),this._buildReadOnlyValue(l,i),this._buildCalcBadge(l,e,i),t.appendChild(l),this._buildPreviewCollapseToggle(t)}_buildConstraintBadge(t,e){if(!this.constraint?.length||e.previewMode==="patient")return;let{ctx:s,cEnv:a}=e,o=e.evalConstraints(this,s.fp,s.qr,a),l=document.createElement("span");l.className="preview-constraint-badge"+(o?"":" preview-constraint-badge--fail");let r=this.constraint.filter(d=>d.severity==="error").map(d=>d.human||d.expression||d.key).filter(Boolean);l.textContent=o?"\u26A0\uFE0F constraint":"\u2718 constraint",l.dataset.tipTitle=o?"Has constraint":"Constraint: FAIL",l.dataset.tipBody=r.length?r.join(`
26
- `):"questionnaire-constraint on this item",l.dataset.tipFhir="Questionnaire.item.extension[questionnaire-constraint]",l.dataset.tipSpec="R4";let c=this.constraint.find(d=>d.expression?.trim())?.expression;c&&e.showExplain&&(l.classList.add("preview-condition-hint--explain"),l.dataset.tipBody+=`
25
+ This is the default FHIR behaviour \u2014 no extra constraint is generated.`,a.dataset.tipFhir=l?"questionnaire-constraint (key: ITLH_NS:group-or)":"item.required (default AND)",a.dataset.tipSpec="R4",r.appendChild(a)}o||this._buildPreviewCollapseToggle(e)}_renderDimmedChildren(e,t,i){this._previewCollapsed||this._renderNestedChildren(e,t,i)}_renderDisabledChildren(e,t,i){this._previewCollapsed||this._renderNestedChildren(e,t,i)}_renderChildren(e,t,i){if(this.children.length===0)return;let r=e._iconEl,s=i.visible.filter(l=>l.node.type==="item"&&!l.disabled&&!l.hidden&&we(l.node.id,this));if(r&&i.groupIconMap.set(this.id,{icon:r,descendants:s,node:this}),this._previewCollapsed)return;if(this._itemControl==="gtable"){new Et(this).render(t,i,i.instancePath||[]);return}if(this.repeats){this._renderInstances(t,i);return}let o=document.createElement("div");o.className="preview-nested",this._appendChildRows(o,i),o.childElementCount>0&&t.appendChild(o)}_renderInstances(e,t){let i=t.instancePath||[],r=this._minOccurs&&this._minOccurs>0?this._minOccurs:1,s=t.instanceCount(this.id,i);for(;s<r;)t.addInstance(this.id,i),s++;let o=document.createElement("div");o.className="preview-nested rg-instances",o.dataset.rgGroup=this.id;let l={map:t.resultMap,visible:t.visible,path:t.instancePath};for(let d=0;d<s;d++){let p=[...i,{id:this.id,idx:d}],f=document.createElement("div");if(f.className="rg-inst",s>r){let v=document.createElement("button");v.type="button",v.className="repeat-remove-btn rg-del",v.textContent="\xD7",v.dataset.testid="rg-remove-btn",v.dataset.tipTitle="Remove this entry";let w=d;v.onclick=()=>{t.removeInstance(this.id,w,i),D.notifyChanged(t.bus)},f.appendChild(v)}t.instancePath=p;let _=t.evalChildren(this.children,p);t.resultMap=new Map(_.map(v=>[v.node.id,v])),t.visible=_,this._appendChildRows(f,t),t.resultMap=l.map,t.visible=l.visible,t.instancePath=l.path,o.appendChild(f)}let a=this._maxOccurs,c=a!==void 0&&s>=a,u=document.createElement("button");u.type="button",u.className="repeat-add-btn",u.dataset.testid="rg-add-btn",u.textContent="+ Add another entry",c&&(u.disabled=!0,u.dataset.tipTitle="Maximum "+a+" entr"+(a===1?"y":"ies")+" reached"),u.onclick=()=>{c||(t.addInstance(this.id,i),D.notifyChanged(t.bus))},o.appendChild(u),e.appendChild(o)}static updateAll(e){for(let[,{node:t}]of e.groupIconMap.entries())t.refreshIcon(e)}static resetCollapsedFromTree(e){for(let t of e)D._collapseMap.delete(t.id),t.children?.length&&(t.type==="group"&&(t._previewCollapsed=t._collapsible==="default-closed"),n.resetCollapsedFromTree(t.children))}};H.set("group",pe);var Q=class extends D{constructor(e={}){super(e),this.type="item",this.repeats=e.repeats??!1,this.options=e.options??"",this.constraint=e.constraint??[],this.children=e.children??[],this.logicWithParent=e.logicWithParent??"AND"}destroy(){super.destroy(),this.children.forEach(e=>e.destroy())}buildControl(e){throw new Error(`buildControl() not implemented on ${this.constructor.name} (itemType: ${this.itemType})`)}supportsRepeat(){return!0}impliesRepeats(){return!1}_renderChildren(e,t,i){if(this._previewCollapsed||!this.children.length)return;let r=document.createElement("div");r.className="preview-nested",this._appendChildRows(r,i),r.childElementCount>0&&t.appendChild(r)}_renderDimmedChildren(e,t,i){this._renderNestedChildren(e,t,i)}_renderDisabledChildren(e,t,i){this._renderNestedChildren(e,t,i)}_evalCondition(e,t){let{ctx:i,cEnv:r}=t,s=this.constraint?.length?t.evalConstraints(this,i.fp,i.qr,r):!0,o=this.itemType!=="display"&&(t.CHECKABLE_TYPES.has(this.itemType)&&(t.isMandatory(this)||this.itemType==="url")||this._calculatedExpr&&this._readOnly&&this.itemType==="checkbox"||this.constraint?.length>0||this._minValue!==void 0||this._maxValue!==void 0||this._maxDecimalPlaces!==void 0||this._regex),l=e.ok&&t.calcFormOk(this)&&s;return{hasCondition:o,displayOk:l}}_buildLabel(e,t){let i=document.createElement("span");return i.className="item-label",this._applyLabelContent(i,t),i}_buildRowContent(e,t,i){let r=i.previewMode==="patient";if(i.cellMode){this._buildControl(e,t,i),this._buildReadOnlyValue(e,i);return}let s=this._buildLabel(t,i);this._renderStyle&&Ye(s,this._renderStyle);let o=null;if(this.itemType!=="display"&&!this._readOnly)if(this.mandatory===!1)r||(o=document.createElement("span"),o.className="preview-optional-badge",o.dataset.testid="preview-optional-badge",o.textContent="optional",o.dataset.tipTitle="Optional field",o.dataset.tipBody="This field is not required \u2014 the questionnaire response is valid without an answer.",o.dataset.tipFhir="item.required: false",o.dataset.tipSpec="R4");else{let a=document.createElement("span");a.className="preview-required-star",a.dataset.testid="preview-required-star",a.textContent="*",a.dataset.tipTitle="Required field",a.dataset.tipBody="This item is marked as required (item.required = true) and must be answered.",a.dataset.tipFhir="Questionnaire.item.required",a.dataset.tipSpec="R4",s.appendChild(a)}let l=document.createElement("div");l.className="item-body",l.appendChild(s),o&&l.appendChild(o),this._buildSupportLinks(l,i),this._buildVisHint(l,i),this._buildConstraintBadge(l,i),this._buildReadOnlyBadge(l,i),this._buildInitialBadge(l,i),this._buildItemMedia(l),this._buildControl(l,t,i),this._buildReadOnlyValue(l,i),this._buildCalcBadge(l,t,i),e.appendChild(l),this._buildPreviewCollapseToggle(e)}_buildConstraintBadge(e,t){if(!this.constraint?.length||t.previewMode==="patient")return;let{ctx:r,cEnv:s}=t,o=t.evalConstraints(this,r.fp,r.qr,s),l=document.createElement("span");l.className="preview-constraint-badge"+(o?"":" preview-constraint-badge--fail");let a=this.constraint.filter(u=>u.severity==="error").map(u=>u.human||u.expression||u.key).filter(Boolean);l.textContent=o?"\u26A0\uFE0F constraint":"\u2718 constraint",l.dataset.tipTitle=o?"Has constraint":"Constraint: FAIL",l.dataset.tipBody=a.length?a.join(`
26
+ `):"questionnaire-constraint on this item",l.dataset.tipFhir="Questionnaire.item.extension[questionnaire-constraint]",l.dataset.tipSpec="R4";let c=this.constraint.find(u=>u.expression?.trim())?.expression;c&&t.showExplain&&(l.classList.add("preview-condition-hint--explain"),l.dataset.tipBody+=`
27
27
 
28
- Click to explain.`,l.addEventListener("click",()=>{e.lastCtx.fp&&Se(c,e.lastCtx.fp,e.lastCtx.qr,e.lastCtx.env)})),t.appendChild(l)}_buildReadOnlyBadge(t,e){if(e.previewMode==="patient"||!this._readOnly||this._calculatedExpr)return;let i=document.createElement("span");i.className="preview-meta-badge",i.textContent="\u{1F512} read-only",i.dataset.tipTitle="Read-only field",i.dataset.tipBody="This field is marked readOnly in the FHIR Questionnaire. It cannot be edited by the user.",i.dataset.tipFhir="Questionnaire.item.readOnly",i.dataset.tipSpec="R4",t.appendChild(i)}_buildInitialBadge(t,e){if(e.previewMode==="patient"||this._initialValue===void 0||this._initialValue==="")return;let i=document.createElement("span");i.className="preview-meta-badge preview-meta-badge--init",i.textContent="\u21BA default",i.dataset.tipTitle="Has default value",i.dataset.tipBody="Pre-filled from Questionnaire.item.initial[]. User can change it unless the field is readOnly.",i.dataset.tipFhir="Questionnaire.item.initial[]",i.dataset.tipSpec="R4",t.appendChild(i)}_buildItemMedia(t){if(!this._itemMedia?.url)return;let e=this._itemMedia,i=e.contentType||"",s=i.startsWith("audio/")?Object.assign(document.createElement("audio"),{src:e.url,controls:!0}):i.startsWith("video/")?Object.assign(document.createElement("video"),{src:e.url,controls:!0,style:"max-width:100%;max-height:240px"}):Object.assign(document.createElement("img"),{src:e.url,alt:e.title||"",style:"max-width:100%;max-height:200px"});s.className="preview-item-media",s.dataset.testid="preview-item-media",t.appendChild(s)}_buildControl(t,e,i){this._readOnly||this._calculatedExpr||(this.repeats&&this.supportsRepeat()?t.appendChild(this._buildRepeatContainer(e._iconEl,()=>i.updateGroupIcons(),i)):t.appendChild(i.buildControl(this,e._iconEl,()=>i.updateGroupIcons())),i.previewMode==="patient"&&this._previewEl&&this._previewEl.classList.toggle("lform-item--invalid",!i.calcFormOk(this)))}_buildRepeatContainer(t,e,i){let s=this.id,a=u=>u===0?s:s+"$$"+u,o=i.getValue(s+"$$n")||0,l=document.createElement("div");l.className="repeat-wrap";for(let u=0;u<=o;u++){let f=a(u),h=u===0?this:Object.assign(Object.create(Object.getPrototypeOf(this)),this,{id:f}),_=document.createElement("div");if(_.className="repeat-row",_.appendChild(i.buildControl(h,u===0?t:null,e)),o>0){let v=document.createElement("button");v.type="button",v.className="repeat-remove-btn",v.textContent="\xD7",v.dataset.tipTitle="Remove this answer",v.dataset.testid="repeat-remove-btn";let C=u;v.onclick=()=>{for(let T=C;T<o;T++)i.set(a(T),i.getValue(a(T+1)));i.remove(a(o)),i.set(s+"$$n",o-1),I.notifyChanged(i.bus)},_.appendChild(v)}l.appendChild(_)}let r=this._maxOccurs,c=r!==void 0&&o+1>=r,d=document.createElement("button");return d.type="button",d.className="repeat-add-btn",d.textContent=Ae("add_another",i),d.dataset.testid="repeat-add-btn",c&&(d.disabled=!0,d.dataset.tipTitle="Maximum "+r+" answer"+(r===1?"":"s")+" reached"),d.onclick=()=>{c||(i.set(s+"$$n",o+1),I.notifyChanged(i.bus))},l.appendChild(d),l}_buildReadOnlyValue(t,e){if(!this._readOnly||this._calculatedExpr)return;let i=e.getValue(this.id),s=document.createElement("span");s.className="preview-readonly-value",s.dataset.testid="preview-readonly-value",s.textContent=i!=null&&i!==""?String(i):"\u2014",t.appendChild(s)}_buildCalcBadge(t,e,i){if(!this._calculatedExpr||!this._readOnly)return;let s=i.previewMode==="patient",a=document.createElement("span");if(a.dataset.calcId=this.id,a.dataset.calcType=this.itemType,s){let o=i.getValue(this.id);a.className="preview-calc-value",a.textContent=o!==void 0&&o!==""?String(o):"\u2014",this._attachCalcExplain(a,i)}else if(this.itemType==="checkbox"){let o=i.getValue(this.id);if(a.className="calc-badge "+(o?"calc-true":"calc-false")+(i.showExplain?" calc-badge--explain":""),a.textContent=o?"\u2713 true":"\u2717 false",a.dataset.tipTitle="Calculated value",a.dataset.tipBody="FHIRPath: "+this._calculatedExpr+(i.showExplain?`
28
+ Click to explain.`,l.addEventListener("click",()=>{t.lastCtx.fp&&Re(c,t.lastCtx.fp,t.lastCtx.qr,t.lastCtx.env)})),e.appendChild(l)}_buildReadOnlyBadge(e,t){if(t.previewMode==="patient"||!this._readOnly||this._calculatedExpr)return;let i=document.createElement("span");i.className="preview-meta-badge",i.textContent="\u{1F512} read-only",i.dataset.tipTitle="Read-only field",i.dataset.tipBody="This field is marked readOnly in the FHIR Questionnaire. It cannot be edited by the user.",i.dataset.tipFhir="Questionnaire.item.readOnly",i.dataset.tipSpec="R4",e.appendChild(i)}_buildInitialBadge(e,t){if(t.previewMode==="patient"||this._initialValue===void 0||this._initialValue==="")return;let i=document.createElement("span");i.className="preview-meta-badge preview-meta-badge--init",i.textContent="\u21BA default",i.dataset.tipTitle="Has default value",i.dataset.tipBody="Pre-filled from Questionnaire.item.initial[]. User can change it unless the field is readOnly.",i.dataset.tipFhir="Questionnaire.item.initial[]",i.dataset.tipSpec="R4",e.appendChild(i)}_buildItemMedia(e){if(!this._itemMedia?.url)return;let t=this._itemMedia,i=t.contentType||"",r=i.startsWith("audio/")?Object.assign(document.createElement("audio"),{src:t.url,controls:!0}):i.startsWith("video/")?Object.assign(document.createElement("video"),{src:t.url,controls:!0,style:"max-width:100%;max-height:240px"}):Object.assign(document.createElement("img"),{src:t.url,alt:t.title||"",style:"max-width:100%;max-height:200px"});r.className="preview-item-media",r.dataset.testid="preview-item-media",e.appendChild(r)}_buildControl(e,t,i){this._readOnly||this._calculatedExpr||(this.repeats&&this.supportsRepeat()?e.appendChild(this._buildRepeatContainer(t._iconEl,()=>i.updateGroupIcons(),i)):e.appendChild(i.buildControl(this,t._iconEl,()=>i.updateGroupIcons())),i.previewMode==="patient"&&this._previewEl&&this._previewEl.classList.toggle("lform-item--invalid",!i.calcFormOk(this)))}_buildRepeatContainer(e,t,i){let r=this.id,s=d=>d===0?r:r+"$$"+d,o=i.getValue(r+"$$n")||0,l=document.createElement("div");l.className="repeat-wrap";for(let d=0;d<=o;d++){let p=s(d),f=d===0?this:Object.assign(Object.create(Object.getPrototypeOf(this)),this,{id:p}),_=document.createElement("div");if(_.className="repeat-row",_.appendChild(i.buildControl(f,d===0?e:null,t)),o>0){let v=document.createElement("button");v.type="button",v.className="repeat-remove-btn",v.textContent="\xD7",v.dataset.tipTitle="Remove this answer",v.dataset.testid="repeat-remove-btn";let w=d;v.onclick=()=>{for(let S=w;S<o;S++)i.set(s(S),i.getValue(s(S+1)));i.remove(s(o)),i.set(r+"$$n",o-1),D.notifyChanged(i.bus)},_.appendChild(v)}l.appendChild(_)}let a=this._maxOccurs,c=a!==void 0&&o+1>=a,u=document.createElement("button");return u.type="button",u.className="repeat-add-btn",u.textContent=Ie("add_another",i),u.dataset.testid="repeat-add-btn",c&&(u.disabled=!0,u.dataset.tipTitle="Maximum "+a+" answer"+(a===1?"":"s")+" reached"),u.onclick=()=>{c||(i.set(r+"$$n",o+1),D.notifyChanged(i.bus))},l.appendChild(u),l}_buildReadOnlyValue(e,t){if(!this._readOnly||this._calculatedExpr)return;let i=t.getValue(this.id),r=document.createElement("span");r.className="preview-readonly-value",r.dataset.testid="preview-readonly-value",r.textContent=i!=null&&i!==""?String(i):"\u2014",e.appendChild(r)}_buildCalcBadge(e,t,i){if(!this._calculatedExpr||!this._readOnly)return;let r=i.previewMode==="patient",s=document.createElement("span");if(s.dataset.calcId=this.id,s.dataset.calcType=this.itemType,r){let o=i.getValue(this.id);s.className="preview-calc-value",s.textContent=o!==void 0&&o!==""?String(o):"\u2014",this._attachCalcExplain(s,i)}else if(this.itemType==="checkbox"){let o=i.getValue(this.id);if(s.className="calc-badge "+(o?"calc-true":"calc-false")+(i.showExplain?" calc-badge--explain":""),s.textContent=o?"\u2713 true":"\u2717 false",s.dataset.tipTitle="Calculated value",s.dataset.tipBody="FHIRPath: "+this._calculatedExpr+(i.showExplain?`
29
29
 
30
- Click to explain.`:""),a.dataset.tipFhir="sdc-questionnaire-calculatedExpression",a.dataset.tipSpec="SDC",i.showExplain){let l=this._calculatedExpr;a.addEventListener("click",()=>{i.lastCtx.fp&&Se(l,i.lastCtx.fp,i.lastCtx.qr,i.lastCtx.env)})}}else{let o=i.getValue(this.id);a.className="preview-calc-value",a.textContent=o!==void 0&&o!==""?String(o):"\u2014",this._attachCalcExplain(a,i)}this._refreshCalcBadge=()=>{if(this.itemType==="checkbox"&&i.previewMode!=="patient"){let o=i.getValue(this.id);a.className="calc-badge "+(o?"calc-true":"calc-false")+(i.showExplain?" calc-badge--explain":""),a.textContent=o?"\u2713 true":"\u2717 false"}else{let o=i.getValue(this.id);a.className="preview-calc-value"+(i.showExplain&&this._calculatedExpr?" preview-calc-value--explain":""),a.textContent=o!==void 0&&o!==""?String(o):"\u2014"}},t.appendChild(a)}_attachCalcExplain(t,e){if(!e.showExplain||!this._calculatedExpr)return;t.classList.add("preview-calc-value--explain"),t.dataset.tipTitle="Calculated value",t.dataset.tipBody="FHIRPath: "+this._calculatedExpr+`
30
+ Click to explain.`:""),s.dataset.tipFhir="sdc-questionnaire-calculatedExpression",s.dataset.tipSpec="SDC",i.showExplain){let l=this._calculatedExpr;s.addEventListener("click",()=>{i.lastCtx.fp&&Re(l,i.lastCtx.fp,i.lastCtx.qr,i.lastCtx.env)})}}else{let o=i.getValue(this.id);s.className="preview-calc-value",s.textContent=o!==void 0&&o!==""?String(o):"\u2014",this._attachCalcExplain(s,i)}this._refreshCalcBadge=()=>{if(this.itemType==="checkbox"&&i.previewMode!=="patient"){let o=i.getValue(this.id);s.className="calc-badge "+(o?"calc-true":"calc-false")+(i.showExplain?" calc-badge--explain":""),s.textContent=o?"\u2713 true":"\u2717 false"}else{let o=i.getValue(this.id);s.className="preview-calc-value"+(i.showExplain&&this._calculatedExpr?" preview-calc-value--explain":""),s.textContent=o!==void 0&&o!==""?String(o):"\u2014"}},e.appendChild(s)}_attachCalcExplain(e,t){if(!t.showExplain||!this._calculatedExpr)return;e.classList.add("preview-calc-value--explain"),e.dataset.tipTitle="Calculated value",e.dataset.tipBody="FHIRPath: "+this._calculatedExpr+`
31
31
 
32
- Click to explain.`,t.dataset.tipFhir="sdc-questionnaire-calculatedExpression",t.dataset.tipSpec="SDC";let i=this._calculatedExpr;t.addEventListener("click",()=>{e.lastCtx.fp&&Se(i,e.lastCtx.fp,e.lastCtx.qr,e.lastCtx.env)})}_appendRow(t,e,i){return e.hidden&&this.type==="item"&&t.querySelectorAll("input, select, textarea").forEach(s=>{s.disabled=!0}),super._appendRow(t,e,i)}};var je=class extends Q{constructor(t={}){super(t),this.itemType="text"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y();l.className="ctrl-wrap ctrl-wrap--text";let r=document.createElement("textarea");r.className="ctrl-input--text",r.rows=3,r.value=i(e.id)!==void 0?i(e.id):"",e._maxLength&&(r.maxLength=e._maxLength),e._minLength&&(r.minLength=e._minLength),e._entryFormat&&(r.placeholder=e._entryFormat);let c=()=>{r.style.height="auto",r.style.height=r.scrollHeight+"px"},d=null;if(e._maxLength){d=document.createElement("span"),d.className="ctrl-char-counter",d.dataset.testid="char-counter";let v=()=>{d.textContent=r.value.length+"\xA0/\xA0"+e._maxLength};v(),r.addEventListener("input",v)}let u=null;if(e._minLength){u=document.createElement("span"),u.className="ctrl-err ctrl-err--ml",u.dataset.testid="minlength-err",u.textContent="Min\xA0"+e._minLength+"\xA0chars";let v=()=>{u.style.display=r.value.length>0&&r.value.length<e._minLength?"inline":"none"};e._interacted?v():u.style.display="none"}let f=null,h=e._regex?(()=>{try{return new RegExp(e._regex)}catch{return null}})():null;if(e._regex){f=document.createElement("span"),f.className="ctrl-err ctrl-err--regex",f.dataset.testid="regex-err",f.textContent="Does not match pattern";let v=()=>{f.style.display=h&&r.value.length>0&&!h.test(r.value)?"inline":"none"};e._interacted?v():f.style.display="none"}r.addEventListener("blur",()=>{e._interacted=!0,u&&(u.style.display=r.value.length>0&&r.value.length<e._minLength?"inline":"none"),f&&(f.style.display=h&&r.value.length>0&&!h.test(r.value)?"inline":"none")});let _=null;return r.oninput=()=>{s(e.id,r.value),c(),clearTimeout(_),_=setTimeout(()=>{o(),a()},200)},r.onchange=()=>{I.notifyChanged(t.bus)},l.appendChild(r),d&&l.appendChild(d),u&&l.appendChild(u),f&&l.appendChild(f),r.value&&requestAnimationFrame(c),l}};W.set("text",je);var Ie=class extends Q{constructor(t={}){super(t),this.itemType=t.itemType??"number"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y();if(e._sliderStep!==void 0||e._itemControl==="slider"){let u=document.createElement("input");u.type="range",u.className="ctrl-input--slider",u.dataset.testid="slider-input",u.min=e._minValue!==void 0?String(e._minValue):"0",u.max=e._maxValue!==void 0?String(e._maxValue):"100",u.step=String(e._sliderStep);let f=i(e.id);u.value=f!==void 0&&f!==""?String(f):u.min;let h=document.createElement("span");return h.className="ctrl-slider-value",h.dataset.testid="slider-value",h.textContent=u.value,u.oninput=()=>{let _=parseFloat(u.value);s(e.id,_),h.textContent=u.value,o(),a()},u.onchange=()=>{I.notifyChanged(t.bus)},l.appendChild(u),l.appendChild(h),l}let r=document.createElement("input");r.type="number",r.className="ctrl-input--number",r.value=i(e.id)!==void 0?i(e.id):"",e._minValue!==void 0&&(r.min=String(e._minValue)),e._maxValue!==void 0&&(r.max=String(e._maxValue)),e._maxDecimalPlaces!==void 0&&(r.step=String(Math.pow(10,-e._maxDecimalPlaces))),e._entryFormat&&(r.placeholder=e._entryFormat);let c=document.createElement("span");c.className="ctrl-err ctrl-err--ml",c.dataset.testid="numeric-err",c.style.display="none";let d=u=>{if(u===void 0||u===""||u===null){c.style.display="none";return}let f=Number(u);if(e._minValue!==void 0&&f<e._minValue)c.textContent="Min: "+e._minValue,c.style.display="inline";else if(e._maxValue!==void 0&&f>e._maxValue)c.textContent="Max: "+e._maxValue,c.style.display="inline";else if(e._maxDecimalPlaces!==void 0){let h=String(u).split(".");h.length>1&&h[1].length>e._maxDecimalPlaces?(c.textContent="Max "+e._maxDecimalPlaces+" decimal place"+(e._maxDecimalPlaces!==1?"s":""),c.style.display="inline"):c.style.display="none"}else c.style.display="none"};return r.oninput=()=>{let u=r.value===""?void 0:e.itemType==="integer"?parseInt(r.value,10):parseFloat(r.value);s(e.id,u),d(u),o(),a()},r.onchange=()=>{I.notifyChanged(t.bus)},d(i(e.id)),l.appendChild(r),(e._minValue!==void 0||e._maxValue!==void 0||e._maxDecimalPlaces!==void 0)&&l.appendChild(c),l}};W.set("number",Ie);W.set("integer",Ie);W.set("decimal",Ie);var Z={CORS_PROXY:"corsProxyUrl",TERMINOLOGY_SERVER:"terminologyServer",NLM_API_BASE:"nlmApiBaseUrl",FHIR_BASE:"fhirBaseUrl",SDC_SERVER:"sdcServerUrl",VALIDATORS:"validators",TRANSLATE_API:"translateApiUrl",TRANSLATE_PROVIDER:"translateProvider",TRANSLATE_API_KEY:"translateApiKey"};var tn=class{get(t){return null}set(t,e){}get writable(){return!1}get label(){return"Unknown"}},Ve=class extends tn{constructor(t={}){super(),this._cfg=t}get(t){let e=this._cfg[t];return e==null?null:typeof e=="string"?e:JSON.stringify(e)}get label(){return"Default (config.json)"}};function ks(){let n=[],t=null;return{register(e){n.unshift(e)},load(e="./config.json"){return t||(t=fetch(e).then(i=>i.json()).then(i=>(n.push(new Ve(i)),i)).catch(()=>(n.push(new Ve({})),{})),t)},ready(){return t??Promise.resolve({})},get(e){for(let i of n){let s=i.get(e);if(s!=null)return s}return null},getParsed(e){let i=this.get(e);if(i==null)return null;if(e===Z.VALIDATORS)try{return JSON.parse(i)}catch{return null}return i},set(e,i){for(let s of n)if(s.writable){s.set(e,i);return}},reset(e){this.set(e,null)},getProviders(){return[...n]},hasOverride(e){for(let i of n)if(i.writable&&i.get(e)!=null)return!0;return!1},_clear(){n.length=0,t=null}}}var de=ks();var Is="https://tx.fhir.org/r4",Vs=500,di=15e3,Ms=8e3,Ps=new Set([429,500,503,504]),pi=700,nn=2,ui=3e4;function Bs(n,t){let e=n.headers.get("Retry-After");if(e){let i=Number(e);if(!isNaN(i)&&i>0)return Math.min(i*1e3,ui);let s=new Date(e);if(!isNaN(s.getTime()))return Math.min(Math.max(0,s-Date.now()),ui)}return pi*(t+1)}async function sn(n,t,e,i){let s;for(let a=0;a<=nn;a++){let o;try{o=await fetch(n,{...t,signal:AbortSignal.timeout(e)})}catch(l){s=l,a<nn&&(await new Promise(r=>setTimeout(r,pi*(a+1))),i?.());continue}if(!Ps.has(o.status))return o;s=new Error(`HTTP ${o.status} ${o.statusText}`),a<nn&&(await new Promise(l=>setTimeout(l,Bs(o,a))),i?.())}throw s}function fi(n,t=[]){for(let e of n)e._answerValueSet&&!e._answerValueSet.startsWith("#")&&e._itemControl!=="lookup"&&t.push(e),e.children?.length&&fi(e.children,t);return t}function hi(n,t=[]){for(let e of n)e._unitValueSet&&t.push(e),e.children?.length&&hi(e.children,t);return t}var Ge=class{constructor(t){this._cfg=t}_corsProxy(){return(this._cfg.get(Z.CORS_PROXY)||"").replace(/\/$/,"")}_termServer(){return(this._cfg.get(Z.TERMINOLOGY_SERVER)||Is).replace(/\/$/,"")}_nlmApiBase(){return(this._cfg.get(Z.NLM_API_BASE)||"https://clinicaltables.nlm.nih.gov/api").replace(/\/$/,"")}_proxyUrl(t){let e=this._corsProxy();return e?`${e}?url=${encodeURIComponent(t)}`:t}async nlmUrl(t){return await this._cfg.ready?.(),`${this._nlmApiBase()}/${t}`}getServer(t,e){return(t?._preferredTermServer||e?.preferredTermServer||this._termServer()).replace(/\/$/,"")}async expandValueSet(t,e){await this._cfg.ready?.();let i=(e||this._termServer()).replace(/\/$/,""),s=this._proxyUrl(`${i}/ValueSet/$expand?url=${encodeURIComponent(t)}&_count=${Vs}`),a=await sn(s,{headers:{Accept:"application/fhir+json"}},di);if(!a.ok)throw new Error(`HTTP ${a.status} ${a.statusText}`);let o=await a.json();if(o.resourceType!=="ValueSet")throw new Error("Response is not a FHIR ValueSet");return(o.expansion?.contains||[]).map(l=>({code:l.code??"",display:l.display||l.code||"",system:l.system||""}))}async expandWithFilter(t,e,i="",s=50){await this._cfg.ready?.();let a=(e||this._termServer()).replace(/\/$/,""),o=new URLSearchParams({url:t,_count:String(s)});i&&i.trim()&&o.set("filter",i.trim());let l=this._proxyUrl(`${a}/ValueSet/$expand?${o}`),r=await sn(l,{headers:{Accept:"application/fhir+json"}},di);if(!r.ok)throw new Error(`HTTP ${r.status} ${r.statusText}`);let c=await r.json();if(c.resourceType!=="ValueSet")throw new Error("Response is not a FHIR ValueSet");return(c.expansion?.contains||[]).map(d=>({code:d.code??"",display:d.display||d.code||"",system:d.system||""}))}async testServer(t,{onRetry:e}={}){await this._cfg.ready?.();let i=(t||"").trim().replace(/\/$/,"");if(!i)return{ok:!1,message:"No URL provided"};try{let s=await sn(this._proxyUrl(`${i}/metadata`),{headers:{Accept:"application/fhir+json"}},Ms,e);if(!s.ok)return{ok:!1,message:`HTTP ${s.status} ${s.statusText}`};let a=await s.json();return a.resourceType!=="CapabilityStatement"?{ok:!1,message:"Not a FHIR server (no CapabilityStatement)"}:{ok:!0,message:[a.software?.name,a.software?.version].filter(Boolean).join(" ")||"OK"}}catch(s){return{ok:!1,message:s.message}}}async testExpand(t,e){if(!t)return{ok:!1,message:"No URL provided"};try{let i=await this.expandValueSet(t,e||this._termServer());return{ok:!0,message:`${i.length} code${i.length!==1?"s":""}`,count:i.length}}catch(i){return{ok:!1,message:i.message}}}async expandAll(t,e){let i=fi(t),s=hi(t);if(!i.length&&!s.length)return[];let a=[];for(let o of i){let l=this.getServer(o,e);try{o._vsCache=await this.expandValueSet(o._answerValueSet,l)}catch(r){o._vsCache=[];let d=r instanceof TypeError&&r.message.includes("fetch")?`Network error (possible CORS restriction \u2014 the server may not allow browser requests): ${r.message}`:r.message;a.push({node:o,vsUrl:o._answerValueSet,server:l,error:d})}}for(let o of s){let l=this.getServer(o,e);try{o._unitVsCache=await this.expandValueSet(o._unitValueSet,l)}catch(r){o._unitVsCache=[];let d=r instanceof TypeError&&r.message.includes("fetch")?`Network error (possible CORS restriction \u2014 the server may not allow browser requests): ${r.message}`:r.message;a.push({node:o,vsUrl:o._unitValueSet,server:l,error:d})}}return a}},rn=new Ge(de);function pt(n){return n._rawAnswerOptions?Mn(n._rawAnswerOptions):nt(n.options)}function Qe(n,t){let e=n._answerExpression||n._candidateExpression;return e?!t||!t.fp||!t.qr?pt(n):qs(n,e,t):n._answerValueSet&&!n._answerValueSet.startsWith("#")?n._vsCache??[]:pt(n)}function mi(n,t,e){let i=Number(e(n+"$$n"))||0,s=new Set;for(let a=0;a<=i;a++){let o=a===0?n:n+"$$"+a;if(o===t)continue;let l=e(o);l&&s.add(l)}return s}function gi(n,t,e){return!e||!e.size?n:n.filter(i=>i.code===t||!e.has(i.code))}function _i(n){return String(n).replace(/\$\$\d+$/,"")}function qs(n,t,e){try{let i=e.fp.evaluate(e.qr,t,e.env||{},re());return!i||!i.length?pt(n):i.map(s=>{if(s==null)return null;if(typeof s=="string")return{code:s,display:s};if(typeof s=="number")return{code:String(s),display:String(s)};if(typeof s=="boolean")return{code:String(s),display:s?"Yes":"No"};if(typeof s=="object"){if(s.code!==void 0)return{code:String(s.code),display:s.display||String(s.code)};if(s.value!==void 0)return{code:String(s.value),display:s.display||String(s.value)}}return{code:String(s),display:String(s)}}).filter(Boolean)}catch{return pt(n)}}function vi(n,t,e,i){if(n){let s=n.valueCoding||n.valueReference||n;if(s&&s[i]!==void 0)return String(s[i])}return i==="code"?t:i==="display"&&e||""}function an(n,t){return n._rawAnswerOptions&&n._rawAnswerOptions.find(e=>{let i=e.valueCoding||e.valueReference;return!!(i&&(i.code===t||i.reference===t)||e.valueString===t||e.valueInteger!==void 0&&String(e.valueInteger)===t||e.valueDate===t||e.valueTime===t)})||null}function yi(n,t,e){if(!n._choiceColumns||!n._choiceColumns.length)return e;let i=n._choiceColumns.find(o=>o.forDisplay);if(!i)return e;let s=an(n,t);return vi(s,t,e,i.path)||e}function xi(n){let t=document.createElement("div");t.className="oc-col-header";for(let e of n){let i=document.createElement("span");i.className="oc-col-cell",i.textContent=e.label||e.path,e.width&&(i.style.width=e.width.value+(e.width.unit||e.width.code||"%")),t.appendChild(i)}return t}function bi(n,t,e,i){let s=document.createElement("div");s.className="oc-opt oc-col-row";for(let a of n){let o=document.createElement("span");o.className="oc-col-cell",o.textContent=vi(t,e,i,a.path),a.width&&(o.style.width=a.width.value+(a.width.unit||a.width.code||"%")),s.appendChild(o)}return s}function on(n,t){let e=document.createElement("table");e.className="atable-item",e.dataset.testid="atable-item";let i=document.createElement("tr"),s=document.createElement("tr");n.forEach(({code:l,display:r},c)=>{let d=document.createElement("th");d.className="atable-th",d.textContent=r,i.appendChild(d);let u=document.createElement("td");u.className="atable-td",u.appendChild(t(l,c)),s.appendChild(u)});let a=document.createElement("thead");a.appendChild(i);let o=document.createElement("tbody");return o.appendChild(s),e.append(a,o),e}function ft(n,t,e){if(t._optionWeights&&t._optionWeights[e]!==void 0){let i=document.createElement("span");i.className="option-weight",i.textContent="\xA0[w:"+t._optionWeights[e]+"]",i.dataset.tipTitle="Item weight",i.dataset.tipBody="Scoring weight for this answer option (itemWeight).",i.dataset.tipFhir="answerOption.extension[itemWeight].valueDecimal",i.dataset.tipSpec="SDC",n.appendChild(i)}if(t._answerMedias&&t._answerMedias[e]){let i=t._answerMedias[e],s=i.contentType||"",a=s.startsWith("audio/")?Object.assign(document.createElement("audio"),{src:i.url,controls:!0}):s.startsWith("video/")?Object.assign(document.createElement("video"),{src:i.url,controls:!0,style:"max-width:200px;max-height:120px"}):Object.assign(document.createElement("img"),{src:i.url,alt:i.title||"",style:"max-width:120px;max-height:80px;vertical-align:middle;margin-left:6px"});a.className="preview-answer-media",n.appendChild(a)}}function Ei(n,t,e){let i=t.getBoundingClientRect(),a=window.innerHeight-i.bottom-4,o=i.top-4,l=parseInt(getComputedStyle(n).maxHeight)||200;n.style.left=i.left+"px",n.style.minWidth=i.width+"px",n.style.fontSize=getComputedStyle(e||t).fontSize;let r=Math.min(l,Math.max(a>=Math.min(l,o)?a:o,60));return n.style.maxHeight=r+"px",a>=Math.min(l,o)?n.style.top=i.bottom+2+"px":n.style.top=Math.max(4,i.top-Math.min(r,n.offsetHeight||r)-2)+"px",i}var ht=class extends Q{constructor(t={}){super(t),this.itemType="select"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=i(e.id)||"",c=Qe(e,t._fpCtx);e.repeats&&(c=gi(c,r,mi(_i(e.id),e.id,i))),e._lookupDisplayCache||(e._lookupDisplayCache={});let d=document.createElement("div");d.className="sc-trigger",d.tabIndex=0,d.setAttribute("role","combobox"),d.setAttribute("aria-haspopup","listbox"),d.setAttribute("aria-expanded","false");{let m=String(e.title||"").replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();m&&d.setAttribute("aria-label",m)}let u=document.createElement("span");u.className="sc-trigger-text",d.appendChild(u);let f=()=>{let m=c.find(x=>x.code===r);if(m){let x=yi(e,m.code,m.display||m.code);e._optionPrefixes&&e._optionPrefixes[m.code]!==void 0&&(x=e._optionPrefixes[m.code]+"\xA0"+x),e._optionOrdinals&&e._optionOrdinals[m.code]!==void 0&&(x+="\xA0("+e._optionOrdinals[m.code]+")"),u.textContent=x,d.classList.remove("sc-trigger--empty")}else r&&e._lookupDisplayCache[r]?(u.textContent=e._lookupDisplayCache[r],d.classList.remove("sc-trigger--empty")):(u.textContent="\u2014 select \u2014",d.classList.add("sc-trigger--empty"))};f();let h=null,_=!1,v=-1,C=rt("csel"),T=()=>{h&&(h.remove(),h=null),_=!1,v=-1,d.setAttribute("aria-expanded","false"),d.removeAttribute("aria-activedescendant"),document.removeEventListener("mousedown",N,!0),document.removeEventListener("keydown",b,!0)},N=m=>{!l.contains(m.target)&&!h?.contains(m.target)&&T()},D=m=>{r=m,s(e.id,m),f(),o(),a(),I.notifyChanged(t.bus),T(),d.focus()},O=()=>h?[...h.querySelectorAll('[role="option"]')]:[],A=m=>{let x=O();x.length&&(v=Math.max(0,Math.min(m,x.length-1)),x.forEach((k,$)=>{k.id||(k.id=C+"-opt-"+$),k.classList.toggle("oc-opt--active",$===v)}),d.setAttribute("aria-activedescendant",x[v].id),x[v].scrollIntoView({block:"nearest"}))},b=m=>{if(!_)return;if(m.key==="Escape"){m.preventDefault(),m.stopPropagation(),T(),d.focus();return}let x=O();if(x.length){if(m.key==="ArrowDown")m.preventDefault(),m.stopPropagation(),A(v+1);else if(m.key==="ArrowUp")m.preventDefault(),m.stopPropagation(),A(v-1);else if(m.key==="Home")m.preventDefault(),m.stopPropagation(),A(0);else if(m.key==="End")m.preventDefault(),m.stopPropagation(),A(x.length-1);else if(m.key==="Enter"){m.preventDefault(),m.stopPropagation();let k=x[v]||c[0];k&&k.dataset.code!==void 0&&D(k.dataset.code)}}},P=(m,x="")=>{let k=x.toLowerCase(),$=e._choiceColumns;$&&$.length&&m.appendChild(xi($));for(let{code:q,display:z}of c){let K=z||q;if(!(k&&!K.toLowerCase().includes(k)&&!q.toLowerCase().includes(k)))if($&&$.length){let U=an(e,q),j=bi($,U,q,z);j.setAttribute("role","option"),j.setAttribute("aria-selected",String(q===r)),j.dataset.code=q,q===r&&j.classList.add("oc-opt--sel"),j.addEventListener("mousedown",se=>{se.preventDefault(),D(q)}),m.appendChild(j)}else{let U=document.createElement("div");if(U.className="oc-opt",U.setAttribute("role","option"),U.setAttribute("aria-selected",String(q===r)),U.dataset.code=q,e._optionPrefixes&&e._optionPrefixes[q]!==void 0){let j=document.createElement("span");j.className="option-prefix",j.textContent=e._optionPrefixes[q]+"\xA0",U.appendChild(j)}if(e._optionOrdinals&&e._optionOrdinals[q]!==void 0){U.appendChild(document.createTextNode(K));let j=document.createElement("span");j.className="option-ordinal",j.textContent="\xA0("+e._optionOrdinals[q]+")",U.appendChild(j)}else U.appendChild(document.createTextNode(K));ft(U,e,q),q===r&&U.classList.add("oc-opt--sel"),U.addEventListener("mousedown",j=>{j.preventDefault(),D(q)}),m.appendChild(U)}}},y=()=>{P(h)},R=()=>{let m=document.createElement("input");m.type="text",m.className="oc-search",m.placeholder="Search\u2026",m.dataset.testid="autocomplete-search";let x=document.createElement("div");P(x),m.addEventListener("input",()=>{x.innerHTML="",P(x,m.value)}),h.appendChild(m),h.appendChild(x),requestAnimationFrame(()=>m.focus())},S=()=>{let m=document.createElement("input");m.type="text",m.className="oc-search",m.placeholder="Search codes\u2026",m.dataset.testid="lookup-search";let x=document.createElement("div");x.className="oc-lookup-status",x.dataset.testid="lookup-status",x.style.display="none";let k=document.createElement("div"),$=null,q=z=>{clearTimeout($),x.textContent="Searching\u2026",x.style.display="",k.innerHTML="",$=setTimeout(async()=>{if(!e._answerValueSet){x.textContent="No ValueSet configured",x.style.display="";return}try{let K=rn.getServer(e,null),U=await rn.expandWithFilter(e._answerValueSet,K,z);x.textContent=U.length?"":"No results",x.style.display=U.length?"none":"",k.innerHTML="";for(let{code:j,display:se}of U){let le=document.createElement("div");le.className="oc-opt",le.textContent=se||j,j===r&&le.classList.add("oc-opt--sel"),le.addEventListener("mousedown",Te=>{Te.preventDefault(),e._lookupDisplayCache[j]=se||j,D(j)}),k.appendChild(le)}L()}catch(K){x.textContent="\u2717 "+(K.message||"Search failed"),x.style.display="",k.innerHTML=""}},z.trim()?300:0)};m.addEventListener("input",()=>q(m.value)),h.appendChild(m),h.appendChild(x),h.appendChild(k),requestAnimationFrame(()=>{m.focus(),q("")})},L=()=>{if(!h)return;let m=Ei(h,d);e._choiceColumns&&e._choiceColumns.length?(h.style.minWidth=m.width+"px",h.style.width="auto"):h.style.width=m.width+"px"},H=()=>{if(h){T();return}switch(h=document.createElement("div"),h.className="oc-drop",h.setAttribute("role","listbox"),e._itemControl){case"autocomplete":R();break;case"lookup":S();break;default:y();break}if(document.body.appendChild(h),_=!0,d.setAttribute("aria-expanded","true"),d.setAttribute("aria-controls",h.id||(h.id=C+"-list")),L(),document.addEventListener("mousedown",N,!0),e._itemControl!=="autocomplete"&&e._itemControl!=="lookup"){document.addEventListener("keydown",b,!0);let x=O().findIndex(k=>k.dataset.code===r);A(x>=0?x:0)}};return d.addEventListener("click",H),d.addEventListener("keydown",m=>{_||(m.key==="Enter"||m.key===" "||m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),H())}),l.appendChild(d),l}},mt=class extends Q{constructor(t={}){super(t),this.itemType="radio"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=Qe(e,t._fpCtx);if(!r.length){let d=document.createElement("span");return d.className="radio-no-opts",d.textContent="(no options)",l.appendChild(d),l}e._columnCount>1?(l.classList.add("ctrl-wrap--columns"),l.style.setProperty("--col-count",e._columnCount)):e._choiceOrientation==="vertical"?l.classList.add("ctrl-wrap--vertical"):e._choiceOrientation==="horizontal"&&l.classList.add("ctrl-wrap--horizontal");let c="radio_"+e.id;if(e._itemControl==="atable")return l.appendChild(on(r,d=>{let u=document.createElement("input");return u.type="radio",u.name=c,u.value=d,u.checked=i(e.id)===d,u.onchange=()=>{u.checked&&(s(e.id,d),o(),a(),I.notifyChanged(t.bus))},u})),l;for(let{code:d,display:u}of r){let f=document.createElement("label");f.className="radio-label";let h=document.createElement("input");if(h.type="radio",h.name=c,h.value=d,h.checked=i(e.id)===d,h.onchange=()=>{h.checked&&(s(e.id,d),o(),a(),I.notifyChanged(t.bus))},f.appendChild(h),e._optionPrefixes&&e._optionPrefixes[d]!==void 0){let _=document.createElement("span");_.className="option-prefix",_.textContent=e._optionPrefixes[d]+"\xA0",f.appendChild(_)}if(f.appendChild(document.createTextNode(u)),e._optionOrdinals&&e._optionOrdinals[d]!==void 0){let _=document.createElement("span");_.className="option-ordinal",_.textContent="\xA0("+e._optionOrdinals[d]+")",f.appendChild(_)}ft(f,e,d),l.appendChild(f)}return l}},gt=class extends Q{constructor(t={}){super(t),this.itemType="open-choice"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=Qe(e,t._fpCtx),c=document.createElement("div");c.className="oc-wrap";let d=document.createElement("input");d.type="text",d.className="oc-input",d.placeholder=e._openLabel||"Choose or type\u2026",d.value=i(e.id)!==void 0?i(e.id):"",d.autocomplete="off";let u=e._answerConstraint==="optionsOnly";u&&(d.readOnly=!0,d.placeholder=e._openLabel||"Choose\u2026",d.classList.add("choice-open-readonly"));let f=document.createElement("button");f.type="button",f.className="oc-btn",f.innerHTML="&#x25BE;",f.dataset.tipTitle="Show options",c.appendChild(d),c.appendChild(f);let h=null,_=!1,v=()=>{h&&(h.remove(),h=null),_=!1,document.removeEventListener("mousedown",C,!0)},C=D=>{!c.contains(D.target)&&!h?.contains(D.target)&&v()},T=D=>{d.value=D,s(e.id,D),o(),a(),I.notifyChanged(t.bus),v(),d.focus()},N=(D="")=>{h&&h.remove();let O=D.toLowerCase(),A=O?r.filter(({display:b,code:P})=>(b||P).toLowerCase().includes(O)):r;if(!A.length){_=!1;return}h=document.createElement("div"),h.className="oc-drop";for(let{display:b,code:P}of A){let y=b||P,R=document.createElement("div");R.className="oc-opt",R.textContent=y,y===d.value&&R.classList.add("oc-opt--sel"),R.addEventListener("mousedown",S=>{S.preventDefault(),T(y)}),h.appendChild(R)}document.body.appendChild(h),_=!0,Ei(h,c,d),document.addEventListener("mousedown",C,!0)};return d.addEventListener("input",()=>{u||(s(e.id,d.value),o(),a(),N(d.value))}),d.addEventListener("change",()=>{I.notifyChanged(t.bus)}),d.addEventListener("focus",()=>{r.length&&N(d.value)}),d.addEventListener("keydown",D=>{D.key==="Escape"&&v()}),f.addEventListener("click",D=>{D.stopPropagation(),_?v():(d.focus(),N(d.value))}),l.appendChild(c),l}},_t=class extends Q{constructor(t={}){super(t),this.itemType="checklist",this.repeats=!0}supportsRepeat(){return!1}impliesRepeats(){return!0}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=Qe(e,t._fpCtx);if(!r.length){let _=document.createElement("span");return _.className="radio-no-opts",_.textContent="(no options)",l.appendChild(_),l}e._columnCount>1?(l.classList.add("ctrl-wrap--columns"),l.style.setProperty("--col-count",e._columnCount)):e._choiceOrientation==="horizontal"?l.classList.add("ctrl-wrap--horizontal"):l.classList.add("ctrl-wrap--vertical");let c=()=>{let _=i(e.id);return!_||_===""?new Set:new Set(String(_).split(","))},d=_=>[..._].join(","),u=e._optionExclusives||{},f=[],h=_=>{let v=document.createElement("input");return v.type="checkbox",v.value=_,v.checked=c().has(_),f.push(v),v.onchange=()=>{let C=c();if(v.checked)if(u[_]){C.clear(),C.add(_);for(let N of f)N.checked=N.value===_}else{C.add(_);for(let N of Object.keys(u))C.delete(N);for(let N of f)u[N.value]&&(N.checked=!1)}else C.delete(_);let T=d(C);s(e.id,T||void 0),o(),a(),I.notifyChanged(t.bus)},v};if(e._itemControl==="atable")return l.appendChild(on(r,h)),l;for(let{code:_,display:v}of r){let C=document.createElement("label");C.className="radio-label";let T=h(_);if(C.appendChild(T),e._optionPrefixes&&e._optionPrefixes[_]!==void 0){let N=document.createElement("span");N.className="option-prefix",N.textContent=e._optionPrefixes[_]+"\xA0",C.appendChild(N)}if(C.appendChild(document.createTextNode(v)),e._optionOrdinals&&e._optionOrdinals[_]!==void 0){let N=document.createElement("span");N.className="option-ordinal",N.textContent="\xA0("+e._optionOrdinals[_]+")",C.appendChild(N)}ft(C,e,_),l.appendChild(C)}return l}};W.set("select",ht);W.set("radio",mt);W.set("checklist",_t);W.set("open-choice",gt);var Ci=["January","February","March","April","May","June","July","August","September","October","November","December"],Fs=["Su","Mo","Tu","We","Th","Fr","Sa"];function cn(n){if(!n||n.length<10)return null;let t=parseInt(n.slice(0,4),10),e=parseInt(n.slice(5,7),10)-1,i=parseInt(n.slice(8,10),10),s=n.length>=16&&parseInt(n.slice(11,13),10)||0,a=n.length>=16&&parseInt(n.slice(14,16),10)||0;return isNaN(t)||isNaN(e)||isNaN(i)?null:{y:t,m:e,d:i,h:s,min:a}}function ln(n,t,e){return`${n}-${String(t+1).padStart(2,"0")}-${String(e).padStart(2,"0")}`}function Us(n,t){let e=cn(n);if(!e)return"";let i=`${e.d} ${Ci[e.m]} ${e.y}`;return t?`${i} \xB7 ${String(e.h).padStart(2,"0")}:${String(e.min).padStart(2,"0")}`:i}function dn({value:n="",onChange:t,className:e="",testid:i,placeholder:s,withTime:a=!1}={}){let o=s||(a?"\u2014 date & time \u2014":"\u2014 date \u2014"),l=n,r=t||null,c=document.createElement("div");c.className="sc-trigger dp-trigger"+(e?" "+e:""),c.tabIndex=0,i&&(c.dataset.testid=i);let d=document.createElement("span");d.className="sc-trigger-text",c.appendChild(d);let u=()=>{let S=Us(l,a);d.textContent=S||o,c.classList.toggle("sc-trigger--empty",!S),c.dataset.value=l};u();let f=null,h=0,_=0,v=null,C=null,T=null,N=0,D=0,O=()=>{f&&(f.remove(),f=null),document.removeEventListener("mousedown",A,!0),document.removeEventListener("keydown",b,!0)},A=S=>{!c.contains(S.target)&&!f?.contains(S.target)&&O()},b=S=>{S.key==="Escape"&&(O(),c.focus())},P=()=>{if(f){O();return}let S=cn(l),L=new Date;h=S?S.y:L.getFullYear(),_=S?S.m:L.getMonth(),v=S?S.y:null,C=S?S.m:null,T=S?S.d:null,N=S?S.h:0,D=S?S.min:0,f=document.createElement("div"),f.className="dp-cal"+(a?" dp-cal--dt":""),document.body.appendChild(f),R(),y(),document.addEventListener("mousedown",A,!0),document.addEventListener("keydown",b,!0)},y=()=>{if(!f)return;let S=c.getBoundingClientRect();f.style.left=S.left+"px";let L=f.offsetHeight;S.bottom+L+4<=window.innerHeight?f.style.top=S.bottom+2+"px":f.style.top=Math.max(4,S.top-L-2)+"px"},R=()=>{f.innerHTML="";let S=h,L=_,H=new Date,m=H.getFullYear(),x=H.getMonth(),k=H.getDate(),$=a?v!==null?{y:v,m:C,d:T}:null:cn(l),q=document.createElement("div");q.className="dp-hdr";let z=document.createElement("button");z.type="button",z.className="dp-nav-btn",z.textContent="\u2039",z.addEventListener("mousedown",G=>{G.preventDefault(),_===0?(_=11,h--):_--,R()});let K=document.createElement("span");K.className="dp-month-lbl",K.textContent=`${Ci[L]} ${S}`;let U=document.createElement("button");U.type="button",U.className="dp-nav-btn",U.textContent="\u203A",U.addEventListener("mousedown",G=>{G.preventDefault(),_===11?(_=0,h++):_++,R()}),q.append(z,K,U),f.appendChild(q);let j=document.createElement("div");j.className="dp-grid";for(let G of Fs){let F=document.createElement("div");F.className="dp-dn",F.textContent=G,j.appendChild(F)}f.appendChild(j);let se=document.createElement("div");se.className="dp-grid";let le=new Date(S,L,1).getDay(),Te=new Date(S,L+1,0).getDate();for(let G=0;G<le;G++){let F=document.createElement("div");F.className="dp-day dp-day--blank",se.appendChild(F)}for(let G=1;G<=Te;G++){let F=document.createElement("div"),g=S===m&&L===x&&G===k,E=$&&S===$.y&&L===$.m&&G===$.d;F.className="dp-day"+(g?" dp-day--today":"")+(E?" dp-day--sel":""),F.textContent=G;let M=S,V=L,ie=G;F.addEventListener("mousedown",et=>{et.preventDefault(),a?(v=M,C=V,T=ie,R()):(l=ln(M,V,ie),u(),r&&r(l),O(),c.focus())}),se.appendChild(F)}f.appendChild(se);let ge=document.createElement("div");if(ge.className="dp-footer",a){let G=document.createElement("div");G.className="dp-time-row";let F=document.createElement("input");F.type="number",F.min="0",F.max="23",F.step="1",F.className="dp-time-inp",F.value=String(N).padStart(2,"0"),F.addEventListener("mousedown",ie=>ie.stopPropagation()),F.addEventListener("input",()=>{N=Math.min(23,Math.max(0,parseInt(F.value,10)||0))}),F.addEventListener("blur",()=>{F.value=String(N).padStart(2,"0")});let g=document.createElement("span");g.className="dp-time-sep",g.textContent=":";let E=document.createElement("input");E.type="number",E.min="0",E.max="59",E.step="1",E.className="dp-time-inp",E.value=String(D).padStart(2,"0"),E.addEventListener("mousedown",ie=>ie.stopPropagation()),E.addEventListener("input",()=>{D=Math.min(59,Math.max(0,parseInt(E.value,10)||0))}),E.addEventListener("blur",()=>{E.value=String(D).padStart(2,"0")}),G.append(F,g,E),ge.appendChild(G);let M=document.createElement("button");M.type="button",M.className="dp-footer-btn dp-footer-btn--set",M.textContent="Set",M.disabled=v===null,M.addEventListener("mousedown",ie=>{ie.preventDefault(),v!==null&&(l=`${ln(v,C,T)}T${String(N).padStart(2,"0")}:${String(D).padStart(2,"0")}:00`,u(),r&&r(l),O(),c.focus())});let V=document.createElement("button");V.type="button",V.className="dp-footer-btn dp-footer-btn--clear",V.textContent="Clear",V.addEventListener("mousedown",ie=>{ie.preventDefault(),l="",u(),r&&r(""),O(),c.focus()}),ge.append(M,V)}else{let G=document.createElement("button");G.type="button",G.className="dp-footer-btn",G.textContent="Today",G.addEventListener("mousedown",g=>{g.preventDefault(),l=ln(m,x,k),u(),r&&r(l),O(),c.focus()});let F=document.createElement("button");F.type="button",F.className="dp-footer-btn dp-footer-btn--clear",F.textContent="Clear",F.addEventListener("mousedown",g=>{g.preventDefault(),l="",u(),r&&r(""),O(),c.focus()}),ge.append(G,F)}f.appendChild(ge),setTimeout(y,0)};return c.addEventListener("click",P),c.addEventListener("keydown",S=>{(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),P()),S.key==="Escape"&&O()}),c._dpSetValue=S=>{l=S||"",u(),r&&r(l)},{el:c,getValue(){return l},setValue(S){l=S||"",u()}}}var vt=class extends Q{constructor(t={}){super(t),this.itemType="date"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=dn({value:i(e.id)||"",onChange:c=>{s(e.id,c||void 0),o(),a(),I.notifyChanged(t.bus)},className:"ctrl-input--date",testid:"date-input"});return l.appendChild(r.el),l}},yt=class extends Q{constructor(t={}){super(t),this.itemType="dateTime"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=dn({value:i(e.id)||"",onChange:c=>{s(e.id,c||void 0),o(),a(),I.notifyChanged(t.bus)},withTime:!0,className:"ctrl-input--date",testid:"datetime-input"});return l.appendChild(r.el),l}},xt=class extends Q{constructor(t={}){super(t),this.itemType="time"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=document.createElement("input");r.type="time",r.className="ctrl-input ctrl-input--time",r.dataset.testid="time-input";let c=i(e.id);return r.value=c?String(c).slice(0,5):"",r.addEventListener("change",()=>{let d=r.value;s(e.id,d?d+":00":void 0),o(),a(),I.notifyChanged(t.bus)}),l.appendChild(r),l}};W.set("date",vt);W.set("dateTime",yt);W.set("time",xt);var Ws=[{label:"Yes",value:!0},{label:"No",value:!1},{label:"Not Answered",value:void 0}],bt=class extends Q{constructor(t={}){super(t),this.itemType="checkbox"}supportsRepeat(){return!1}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=document.createElement("div");r.className="bool-seg",r.setAttribute("role","group"),r.setAttribute("aria-label",e.text||"Yes/No question");let c=i(e.id);for(let d of Ws){let u=document.createElement("button");u.type="button",u.className="bool-seg__btn",u.textContent=d.label;let f=d.value===c;u.classList.toggle("bool-seg__btn--active",f),u.setAttribute("aria-pressed",String(f)),u.addEventListener("click",()=>{r.querySelectorAll(".bool-seg__btn").forEach(h=>{h.classList.remove("bool-seg__btn--active"),h.setAttribute("aria-pressed","false")}),u.classList.add("bool-seg__btn--active"),u.setAttribute("aria-pressed","true"),s(e.id,d.value),o(),a(),I.notifyChanged(t.bus)}),r.appendChild(u)}return l.appendChild(r),l}};W.set("checkbox",bt);var Et=class extends Q{constructor(t={}){super(t),this.itemType="url"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y();l.className="ctrl-wrap ctrl-wrap--text";let r=document.createElement("textarea");r.className="ctrl-input--text",r.rows=1,r.placeholder=e._entryFormat||"https://",r.value=i(e.id)!==void 0?i(e.id):"";let c=()=>{r.style.height="auto",r.style.height=r.scrollHeight+"px"},d=C=>{try{return new URL(C),!0}catch{return!1}};e._maxLength&&(r.maxLength=e._maxLength),e._minLength&&(r.minLength=e._minLength);let u=document.createElement("span");u.className="ctrl-err ctrl-err--ml",u.textContent="Invalid URL",u.style.display="none";let f=(()=>{if(!e._regex)return null;try{return new RegExp(e._regex)}catch{return null}})(),h=()=>{e._minLength&&r.value.length>0&&r.value.length<e._minLength?(u.textContent="Min\xA0"+e._minLength+"\xA0chars",u.style.display="inline"):f&&r.value.length>0&&!f.test(r.value)?(u.textContent="Does not match pattern",u.style.display="inline"):(u.textContent="Invalid URL",u.style.display=r.value===""||d(r.value)?"none":"inline")};(e._interacted||r.value&&!d(r.value))&&h();let _=null;if(e._maxLength){_=document.createElement("span"),_.className="ctrl-char-counter",_.dataset.testid="char-counter";let C=()=>{_.textContent=r.value.length+"\xA0/\xA0"+e._maxLength};C(),r.addEventListener("input",C)}let v=null;return r.oninput=()=>{s(e.id,r.value),c(),clearTimeout(v),v=setTimeout(()=>{o(),a()},200)},r.onchange=()=>{I.notifyChanged(t.bus)},r.addEventListener("blur",()=>{e._interacted=!0,h()}),l.appendChild(r),l.appendChild(u),_&&l.appendChild(_),r.value&&requestAnimationFrame(c),l}};W.set("url",Et);var Ct=class extends Q{constructor(t={}){super(t),this.itemType="attachment"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=document.createElement("input");r.type="file",r.className="file-input-hidden",e._mimeTypes&&e._mimeTypes.length&&(r.accept=e._mimeTypes.join(","));let c=document.createElement("button");c.type="button",c.className="btn-file",c.textContent="Choose file",c.onclick=()=>r.click();let d=document.createElement("span");d.className="file-name-tag",d.textContent=i(e.id)?i(e.id).name:"No file chosen";let u=document.createElement("span");u.className="file-size-hint",e._maxFileSizeMB!==void 0&&(u.textContent=`Max ${e._maxFileSizeMB} MB`);let f=document.createElement("span");return f.className="file-size-hint",f.dataset.testid="mime-hint",e._mimeTypes&&e._mimeTypes.length&&(f.textContent=e._mimeTypes.join(", ")),r.onchange=()=>{let h=r.files[0]||null;if(h&&e._maxFileSizeMB!==void 0&&h.size>e._maxFileSizeMB*1024*1024){_e(`File too large \u2014 max ${e._maxFileSizeMB} MB allowed`),r.value="",s(e.id,null),o(),a(),I.notifyChanged(t.bus);return}d.classList.remove("file-name-tag--error"),s(e.id,h?{name:h.name,size:h.size,type:h.type}:null),d.textContent=h?h.name:"No file chosen",o(),a(),I.notifyChanged(t.bus)},l.appendChild(r),l.appendChild(c),l.appendChild(d),e._maxFileSizeMB!==void 0&&l.appendChild(u),e._mimeTypes&&e._mimeTypes.length&&l.appendChild(f),l}};W.set("attachment",Ct);function wt({items:n=[],value:t="",onChange:e,className:i="",testid:s,searchable:a,ariaLabel:o}={}){let l=n.slice(),r=t,c=e||null,d=-1,u=rt("csel"),f=document.createElement("div");f.className="sc-trigger"+(i?" "+i:""),f.tabIndex=0,f.setAttribute("role","combobox"),f.setAttribute("aria-haspopup","listbox"),f.setAttribute("aria-expanded","false"),o&&f.setAttribute("aria-label",o),s&&(f.dataset.testid=s);let h=document.createElement("span");h.className="sc-trigger-text",f.appendChild(h);let _=()=>{let R=l.find(S=>S.value===r);h.textContent=R?R.label:"\u2014 "+(r||"select")+" \u2014",f.classList.toggle("sc-trigger--empty",!R),f.dataset.value=r};_();let v=null,C=()=>{v&&(v.remove(),v=null),d=-1,f.setAttribute("aria-expanded","false"),f.removeAttribute("aria-activedescendant"),document.removeEventListener("mousedown",T,!0),document.removeEventListener("keydown",O,!0)},T=R=>{!f.contains(R.target)&&!v?.contains(R.target)&&C()},N=()=>v?[...v.querySelectorAll(".oc-opt")].filter(R=>R.style.display!=="none"):[],D=R=>{let S=N();if(!S.length)return;d=Math.max(0,Math.min(R,S.length-1)),S.forEach((H,m)=>H.classList.toggle("oc-opt--active",m===d));let L=S[d];f.setAttribute("aria-activedescendant",L.id),L.scrollIntoView({block:"nearest"})},O=R=>{if(R.key==="Escape"){C(),f.focus();return}let S=N();if(S.length){if(R.key==="ArrowDown")R.preventDefault(),D(d+1);else if(R.key==="ArrowUp")R.preventDefault(),D(d-1);else if(R.key==="Home")R.preventDefault(),D(0);else if(R.key==="End")R.preventDefault(),D(S.length-1);else if(R.key==="Enter"){R.preventDefault();let L=S[d]||S[0],H=l.find(m=>m.value===L.dataset.val);H&&A(H)}}},A=R=>{r=R.value,_(),c&&c(R.value,R),C(),f.focus()},b=()=>{if(v){C();return}let R=a!==void 0?a:l.length>8;v=document.createElement("div"),v.className="oc-drop csel-drop",v.dataset.testid="csel-drop",v.id=u+"-list",v.setAttribute("role","listbox"),f.setAttribute("aria-controls",v.id),f.setAttribute("aria-expanded","true");let S=()=>{let H=N().findIndex(m=>m.dataset.val===r);D(H>=0?H:0)};if(R){let L=document.createElement("input");L.type="text",L.className="vis-q-sel-search",L.placeholder="Search\u2026",L.addEventListener("mousedown",m=>m.stopPropagation()),v.appendChild(L);let H=P(v);L.addEventListener("input",()=>{let m=L.value.toLowerCase();for(let x of H){let k=!m||x.dataset.val.toLowerCase().includes(m)||x.textContent.toLowerCase().includes(m);x.style.display=k?"":"none"}D(0)}),document.body.appendChild(v),y(),S(),document.addEventListener("mousedown",T,!0),document.addEventListener("keydown",O,!0),setTimeout(()=>L.focus(),0)}else P(v),document.body.appendChild(v),y(),S(),document.addEventListener("mousedown",T,!0),document.addEventListener("keydown",O,!0)},P=R=>{let S=[];return l.forEach((L,H)=>{let m=document.createElement("div");m.className="oc-opt"+(L.value===r?" oc-opt--sel":""),m.id=u+"-opt-"+H,m.setAttribute("role","option"),m.setAttribute("aria-selected",String(L.value===r)),m.textContent=L.label,m.dataset.val=L.value,L.title&&(m.dataset.tipTitle=L.title),m.addEventListener("mousedown",x=>{x.preventDefault(),A(L)}),R.appendChild(m),S.push(m)}),S},y=()=>{let R=f.getBoundingClientRect(),L=window.innerHeight-R.bottom-4,H=R.top-4,m=200;if(v.style.left=R.left+"px",v.style.minWidth=R.width+"px",L>=Math.min(m,H)){let x=Math.min(m,Math.max(L,60));v.style.maxHeight=x+"px",v.style.top=R.bottom+2+"px"}else{let x=Math.min(m,Math.max(H,60));v.style.maxHeight=x+"px",v.style.top=R.top-Math.min(x,v.offsetHeight||x)-2+"px"}};return f.addEventListener("click",b),f.addEventListener("keydown",R=>{R.key==="Enter"||R.key===" "||R.key==="ArrowDown"||R.key==="ArrowUp"?(R.preventDefault(),v||b()):R.key==="Escape"&&C()}),{el:f,getValue(){return r},setValue(R){if(r=R,_(),v)for(let S of v.querySelectorAll(".oc-opt")){let L=S.dataset.val===r;S.classList.toggle("oc-opt--sel",L),S.setAttribute("aria-selected",String(L))}},setOptions(R){l=R.slice();let S=r;l.find(L=>L.value===S)||(r=l[0]?.value??""),_(),v&&C()},setOnChange(R){c=R}}}var Hs=["hapi.fhir.org","r4.smarthealthit.org","launch.smarthealthit.org","test.ahdis.ch","terminology.hl7.org"];function un(n,t){let e=((t??de.get(Z.CORS_PROXY))||"").replace(/\/$/,"");if(!e)return n;try{let{hostname:i}=new URL(n);if(Hs.includes(i))return n}catch{}return`${e}?url=${encodeURIComponent(n)}`}function $s(n){let t=n.resourceType;if(["Patient","Practitioner","RelatedPerson","Person"].includes(t)){let e=n.name?.[0];if(e){let i=e.family||"",s=(e.given||[]).join(" ");return[i,s].filter(Boolean).join(", ")||e.text||n.id}}if(["Organization","Location","HealthcareService"].includes(t))return n.name||n.id;if(["Encounter","EpisodeOfCare"].includes(t)){let e=n.subject?.display||n.patient?.display||"",i=n.status?`[${n.status}]`:"",s=n.period?.start?.slice(0,10)||"";return[e,s,i].filter(Boolean).join(" ")||n.id}if(["Condition","Observation","Procedure"].includes(t)){let e=n.code?.coding?.[0]?.display||n.code?.text||"",i=n.subject?.display||"";return[e,i].filter(Boolean).join(" \u2014 ")||n.id}return n.name||n.title||n.id}function js(n){return["Patient","Practitioner","RelatedPerson","Person"].includes(n)||["Organization","Location","HealthcareService","Medication"].includes(n)?"name":["Encounter","EpisodeOfCare","Condition","Observation","Procedure","DiagnosticReport","MedicationRequest","ServiceRequest"].includes(n)?"patient.name":["Medication","Substance"].includes(n)?"code":"_id"}async function wi(n,t,e=10,i={}){let s=((i.fhirBase??de.get(Z.FHIR_BASE))||"").replace(/\/$/,"");if(!s||!n||!t.trim())return[];let a=new URLSearchParams({_count:String(e)});a.set(js(n),t);let o=un(`${s}/${n}?${a}`,i.corsProxy),l=await fetch(o,{headers:{Accept:"application/fhir+json"},signal:AbortSignal.timeout(6e3)});if(!l.ok){let c=`HTTP ${l.status}`;try{let u=(await l.json())?.issue?.[0]?.diagnostics;u&&(c+=" \u2014 "+u.substring(0,120))}catch{}throw new Error(c)}return((await l.json()).entry||[]).map(c=>({id:c.resource?.id||"",display:$s(c.resource)})).filter(c=>c.id)}var St=new Set(["checkbox","text","number","date","dateTime","time","url","attachment","open-choice","decimal","integer","quantity","reference","radio","select","checklist"]),Gs=new Set(["text","number","date","dateTime","time","open-choice","decimal","integer","radio","select","checklist"]),ae=n=>n.mandatory===!0;function Ye(n,t,e,i){if(!n.constraint||!n.constraint.length||!t||!e)return!0;let s={resource:e,...i};for(let a of n.constraint)if(!(!a.expression||a.severity!=="error"))try{let o=t.evaluate(e,a.expression,s,re());if(!o||o.length===0||o[0]===!1)return!1}catch{return!1}return!0}function Qs(n){try{return new URL(n),!0}catch{return!1}}function pn(n,t){if(!t)return!1;let e=n&&typeof n=="object"?n.reference:"";if(!e)return!1;let i=String(e).split("/")[0];return!!i&&i!==t}function Re(n,t,e){if(e&&e.length){let i=t;t={get:s=>i.get(s,e)}}if(n._calculatedExpr&&n._readOnly)return n.itemType!=="checkbox"?!0:t.get(n.id)===!0;if(n.itemType==="reference"&&n.referenceResource&&pn(t.get(n.id),n.referenceResource))return!1;if(n.itemType==="checkbox"&&ae(n)){let i=t.get(n.id);return i===!0||i===!1}if(n.itemType==="url"){let i=t.get(n.id);if(!i||i==="")return!ae(n);if(!Qs(i))return!1;if(n._regex)try{if(!new RegExp(n._regex).test(i))return!1}catch{}return!0}if(n.itemType==="attachment"){let i=t.get(n.id);return i&&n._maxFileSizeMB!==void 0&&i.size>n._maxFileSizeMB*1024*1024?!1:ae(n)?i!=null:!0}if(n.itemType==="integer"||n.itemType==="decimal"||n.itemType==="number"){let i=t.get(n.id);if(i!==void 0&&i!==""&&i!==null){let s=Number(i);if(!isFinite(s)||n._minValue!==void 0&&s<Number(n._minValue)||n._maxValue!==void 0&&s>Number(n._maxValue))return!1;if(n._maxDecimalPlaces!==void 0){let a=String(i).split(".");if(a.length>1&&a[1].length>n._maxDecimalPlaces)return!1}}return ae(n)?i!==void 0&&i!==""&&i!==null:!0}if(n.mandatory===!1)return!0;if(n.itemType==="reference"){if(!ae(n))return!0;let i=t.get(n.id);return i!=null&&typeof i=="object"&&!!i.reference}if(n.itemType==="quantity"){if(!ae(n))return!0;let i=t.get(n.id);return i!=null&&typeof i=="object"&&i.value!==void 0&&!!i.unit}if(n._minLength){let i=t.get(n.id);if(i&&String(i).length>0&&String(i).length<n._minLength)return!1}if(n._regex){let i=t.get(n.id);if(i&&String(i).length>0)try{if(!new RegExp(n._regex).test(String(i)))return!1}catch{}}if(ae(n)&&Gs.has(n.itemType)){let i=t.get(n.id);return i!==void 0&&i!==""&&i!==null}return!0}var Ys=["Account","ActivityDefinition","AdverseEvent","AllergyIntolerance","Appointment","AppointmentResponse","AuditEvent","Basic","Binary","BiologicallyDerivedProduct","BodyStructure","Bundle","CapabilityStatement","CarePlan","CareTeam","ChargeItem","ChargeItemDefinition","Claim","ClaimResponse","ClinicalImpression","CodeSystem","Communication","CommunicationRequest","CompartmentDefinition","Composition","ConceptMap","Condition","Consent","Contract","Coverage","CoverageEligibilityRequest","CoverageEligibilityResponse","DetectedIssue","Device","DeviceDefinition","DeviceMetric","DeviceRequest","DeviceUseStatement","DiagnosticReport","DocumentManifest","DocumentReference","Encounter","Endpoint","EnrollmentRequest","EnrollmentResponse","EpisodeOfCare","EventDefinition","ExplanationOfBenefit","FamilyMemberHistory","Flag","Goal","Group","GuidanceResponse","HealthcareService","ImagingStudy","Immunization","ImmunizationEvaluation","ImmunizationRecommendation","ImplementationGuide","InsurancePlan","Invoice","Library","Linkage","List","Location","Measure","MeasureReport","Media","Medication","MedicationAdministration","MedicationDispense","MedicationKnowledge","MedicationRequest","MedicationStatement","MessageDefinition","MessageHeader","MolecularSequence","NamingSystem","NutritionOrder","Observation","ObservationDefinition","OperationDefinition","OperationOutcome","Organization","OrganizationAffiliation","Parameters","Patient","PaymentNotice","PaymentReconciliation","Person","PlanDefinition","Practitioner","PractitionerRole","Procedure","Provenance","Questionnaire","QuestionnaireResponse","RelatedPerson","RequestGroup","ResearchStudy","ResearchSubject","RiskAssessment","Schedule","SearchParameter","ServiceRequest","Slot","Specimen","SpecimenDefinition","StructureDefinition","StructureMap","Subscription","Substance","SupplyDelivery","SupplyRequest","Task","TerminologyCapabilities","TestReport","TestScript","ValueSet","VerificationResult","VisionPrescription"],Rt=class extends Q{constructor(t={}){super(t),this.itemType="reference"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y();l.classList.add("ctrl-wrap--joined");let r=i(e.id),c=r&&r.reference||"",d=c.indexOf("/"),u=d>-1?c.slice(0,d):e.referenceResource||"",f=d>-1?c.slice(d+1):"",h=e.referenceResource?[{value:e.referenceResource,label:e.referenceResource}]:[{value:"",label:"\u2014 type \u2014"},...Ys.map(A=>({value:A,label:A}))],_=wt({items:h,value:u||"",className:"ref-type-sel",onChange:()=>{O(),I.notifyChanged(t.bus)}}),v=document.createElement("span");v.textContent="/",v.className="ref-sep";let C=document.createElement("input");C.type="text",C.placeholder=t.fhirBase?"search or enter id":"id",C.value=f,C.className="ref-id-input";let T=document.createElement("span");T.className="ctrl-err ctrl-err--ml",T.textContent="id is required";let N=document.createElement("span");N.className="ctrl-err ctrl-err--ml",N.dataset.testid="ref-type-error",N.style.display="none";let D=()=>{let A=i(e.id),b=!!e.referenceResource&&pn(A,e.referenceResource);N.textContent=b?`Expected ${e.referenceResource}`:"",N.style.display=b?"inline":"none"},O=()=>{let A=_.getValue(),b=C.value.trim();T.style.display=A&&!b?"inline":"none",s(e.id,A&&b?{reference:A+"/"+b}:void 0),D(),o(),a()};if(C.oninput=O,C.onchange=()=>{I.notifyChanged(t.bus)},t.fhirBase){let A=document.createElement("div");A.className="ref-search-wrap";let b=document.createElement("div");b.className="ref-search-drop",b.style.display="none",document.body.appendChild(b);let P=()=>{let m=C.getBoundingClientRect(),x=240;b.style.position="fixed",b.style.top=m.bottom+4+"px",b.style.width=x+"px",b.style.maxHeight="220px";let k=m.right-x;b.style.left=Math.max(4,k)+"px"},y=null,R=()=>{b.style.display="none"},S=()=>{P(),b.style.display="block"},L=(m,x)=>{if(b.innerHTML="",m.length===0){let k=document.createElement("div");k.className="ref-search-empty",k.textContent=x.trim()?"No results":"Type to search\u2026",b.appendChild(k)}else m.forEach(k=>{let $=document.createElement("button");$.type="button",$.className="ref-search-item";let q=document.createElement("span");q.className="ref-search-name",q.textContent=k.display;let z=document.createElement("span");z.className="ref-search-id",z.textContent=k.id,$.append(q,z),$.addEventListener("mousedown",K=>{K.preventDefault(),C.value=k.id,O(),I.notifyChanged(t.bus),R()}),b.appendChild($)});S()},H=async m=>{let x=_.getValue();if(!x){R();return}let k=document.createElement("div");k.className="ref-search-empty",k.textContent="Searching\u2026",b.innerHTML="",b.appendChild(k),S();try{let $=await wi(x,m,10,{fhirBase:t.fhirBase,corsProxy:t.corsProxy});L($,m)}catch($){let q=document.createElement("div");q.className="ref-search-empty ref-search-error",q.textContent=$.message||"Search failed",b.innerHTML="",b.appendChild(q)}};C.addEventListener("input",()=>{clearTimeout(y);let m=C.value.trim();if(!m){R();return}y=setTimeout(()=>H(m),350)}),C.addEventListener("focus",()=>{C.value.trim()&&H(C.value.trim())}),C.addEventListener("blur",()=>{setTimeout(R,150)}),e._ac?.signal&&e._ac.signal.addEventListener("abort",()=>{b.remove()},{once:!0}),A.appendChild(C),l.appendChild(_.el),l.appendChild(v),l.appendChild(A)}else l.appendChild(_.el),l.appendChild(v),l.appendChild(C);if(l.appendChild(T),l.appendChild(N),D(),e._referenceProfiles?.length){let A=document.createElement("span");A.className="ctrl-ref-info",A.textContent="Profile: "+e._referenceProfiles.join(", "),A.dataset.tipTitle="questionnaire-referenceProfile",A.dataset.tipBody=`Allowed profiles:
33
- `+e._referenceProfiles.join(`
34
- `),A.dataset.tipFhir="item.extension[questionnaire-referenceProfile].valueCanonical",A.dataset.tipSpec="R4",l.appendChild(A)}if(e._referenceFilter){let A=document.createElement("span");A.className="ctrl-ref-info",A.textContent="Filter: "+e._referenceFilter,A.dataset.tipTitle="questionnaire-referenceFilter",A.dataset.tipBody=`Server-side filter expression:
35
- `+e._referenceFilter,A.dataset.tipFhir="item.extension[questionnaire-referenceFilter].valueString",A.dataset.tipSpec="R4",l.appendChild(A)}return l}};W.set("reference",Rt);var Js=[{label:"\u2500\u2500 Mass \u2500\u2500",disabled:!0},{label:"kg",value:"kg"},{label:"g",value:"g"},{label:"lb",value:"[lb_av]"},{label:"oz",value:"[oz_av]"},{label:"mg",value:"mg"},{label:"\xB5g",value:"ug"},{label:"\u2500\u2500 Length \u2500\u2500",disabled:!0},{label:"cm",value:"cm"},{label:"m",value:"m"},{label:"mm",value:"mm"},{label:"in",value:"[in_i]"},{label:"ft",value:"[ft_i]"},{label:"\u2500\u2500 Volume \u2500\u2500",disabled:!0},{label:"mL",value:"mL"},{label:"L",value:"L"},{label:"dL",value:"dL"},{label:"\u2500\u2500 Temperature \u2500\u2500",disabled:!0},{label:"\xB0C",value:"Cel"},{label:"\xB0F",value:"[degF]"},{label:"\u2500\u2500 Pressure \u2500\u2500",disabled:!0},{label:"mmHg",value:"mm[Hg]"},{label:"kPa",value:"kPa"},{label:"\u2500\u2500 Indices \u2500\u2500",disabled:!0},{label:"kg/m\xB2",value:"kg/m2"},{label:"%",value:"%"},{label:"\u2500\u2500 Rates \u2500\u2500",disabled:!0},{label:"/min",value:"/min"},{label:"beats/min",value:"{beats}/min"},{label:"breaths/min",value:"{breaths}/min"},{label:"\u2500\u2500 Time \u2500\u2500",disabled:!0},{label:"min",value:"min"},{label:"h",value:"h"},{label:"d",value:"d"},{label:"wk",value:"wk"},{label:"mo",value:"mo"},{label:"a (year)",value:"a"},{label:"\u2500\u2500 Lab \u2500\u2500",disabled:!0},{label:"mg/dL",value:"mg/dL"},{label:"mmol/L",value:"mmol/L"},{label:"g/dL",value:"g/dL"},{label:"mEq/L",value:"meq/L"},{label:"IU/L",value:"U/L"},{label:"IU",value:"[iU]"}],Tt=class extends Q{constructor(t={}){super(t),this.itemType="quantity"}buildControl(t){let e=this,{getValue:i,setValue:s,onChange:a,_reCalc:o}=t,l=Y(),r=i(e.id),c=r&&r.value!==void 0?r.value:"",d=e._unitOptions&&e._unitOptions.length||e._unitValueSet,u=r?r.unit||(d?"":e.quantityUnit)||"":d?"":e.quantityUnit||"",f=document.createElement("input");f.type="number",f.step="any",f.placeholder=e._entryFormat||"0",f.value=c,f.className="qty-num-input",f.dataset.testid="qty-num-input";let h;if(e._unitOptions&&e._unitOptions.length)h=[{value:"",label:"\u2014 unit \u2014"},...e._unitOptions.map(T=>({value:T.code,label:T.display||T.code}))];else if(e._unitValueSet){let T=e._unitVsCache||[];h=[{value:"",label:"\u2014 unit \u2014"},...T.map(N=>({value:N.code,label:N.display||N.code}))]}else h=[{value:"",label:"\u2014 unit \u2014"},...Js.filter(T=>!T.disabled).map(T=>({value:T.value,label:T.label}))];let _=wt({items:h,value:u||"",className:"qty-unit-sel",testid:"qty-unit-sel",onChange:()=>{C()}}),v=document.createElement("span");v.className="ctrl-err";let C=()=>{let T=f.value.trim(),N=_.getValue(),D=T!==""?parseFloat(T):void 0,O=D!==void 0&&!isNaN(D),A=!!N;O&&!A?(v.textContent="unit is required",v.style.display="inline"):!O&&A?(v.textContent="value is required",v.style.display="inline"):v.style.display="none",s(e.id,O&&A?{value:D,unit:N}:void 0),o(),a()};return f.oninput=C,f.onchange=()=>{I.notifyChanged(t.bus)},l.appendChild(f),l.appendChild(_.el),l.appendChild(v),l}};W.set("quantity",Tt);var zs='<svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true" focusable="false"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.4"/><circle cx="8" cy="4.7" r="1" fill="currentColor"/><rect x="7.15" y="6.9" width="1.7" height="5" rx="0.85" fill="currentColor"/></svg>',Nt=class extends Q{constructor(t={}){super(t),this.itemType="display"}buildControl(t){return Y()}supportsRepeat(){return!1}_initRowClass(t){this._displayCategory&&t.classList.add("lform-item--"+this._displayCategory)}_buildLabel(t,e){if(this._displayCategory==="help"){let a=document.createElement("span");a.className="display-help-wrap";let o=document.createElement("button");o.type="button",o.className="display-help-toggle",o.dataset.testid="display-help-toggle",o.textContent="? Help";let l=document.createElement("span");return l.className="display-help-content",l.dataset.testid="display-help-content",this._applyLabelContent(l,e),this._helpOpen&&(l.classList.add("display-help-content--open"),o.classList.add("display-help-toggle--open")),o.addEventListener("click",()=>{this._helpOpen=!this._helpOpen,l.classList.toggle("display-help-content--open",this._helpOpen),o.classList.toggle("display-help-toggle--open",this._helpOpen)}),a.append(o,l),a}let s=document.createElement("span");return this._applyLabelContent(s,e),s}_buildRowContent(t,e,i){if(this._initRowClass(t),this._itemControl==="flyover"){let l=document.createElement("span");l.className="display-flyover",l.dataset.testid="display-flyover",l.innerHTML=zs,l.dataset.tipTitle="Flyover",l.dataset.tipBody=this.title,t.appendChild(l),this._buildSupportLinks(t,i),this._buildVisHint(t,i);return}let s=this._displayCategory;if(s&&s!=="help"){let l=document.createElement("span");l.className="display-cat-icon display-cat-icon--"+s,l.dataset.testid="display-category-icon",l.textContent=s==="instructions"?"\u2139":"\u26A0",l.dataset.tipTitle=s==="instructions"?"Instructions":"Security notice",l.dataset.tipBody="questionnaire-displayCategory: "+s,l.dataset.tipFhir="item.extension[questionnaire-displayCategory].valueCodeableConcept.coding[0].code",l.dataset.tipSpec="R5",t.appendChild(l)}let a=this._buildLabel(e,i);this._renderStyle&&$e(a,this._renderStyle);let o=document.createElement("div");o.className="item-body",o.appendChild(a),this._buildSupportLinks(o,i),this._buildVisHint(o,i),t.appendChild(o)}};W.set("display",Nt);function Si(n={}){return typeof n=="string"&&(n={title:n}),new ce({title:n.title||"New Group",...n})}function Ri(n,t={}){typeof t=="string"&&(t={title:t});let e=W.get(n)??je;return new e({title:t.title||"New Item",...t,itemType:n})}function Ni(n,t){let e=n._text?.extension;if(!e)return;let i=e.find(o=>o.url===p.renderingStyle);i&&(t._renderStyle=i.valueString||"");let s=e.find(o=>o.url===p.renderingXhtml);s&&(t._renderXhtml=s.valueString||"");let a=e.find(o=>o.url===p.renderingMarkdown);a&&(t._renderMarkdown=a.valueMarkdown||a.valueString||"")}function Ti(n,t,e){let i=Qt(n.type||"string"),a=(n.extension||[]).find(g=>g.url===p.itemControl)?.valueCodeableConcept?.coding?.[0]?.code;(i==="select"||i==="open-choice")&&(a==="radio-button"?i="radio":a==="check-box"?i="checklist":a==="atable"&&(i=n.repeats?"checklist":"radio"));let o=Ri(i,{id:n.linkId,title:n.text||n.linkId||"Item",mandatory:!!n.required});o.options=Yt(n.answerOption);let l=(n.extension||[]).some(g=>g.url===p.choiceColumn);n.answerOption&&(Jt(n.answerOption)||l||Zn(n.answerOption))&&(o._rawAnswerOptions=JSON.parse(JSON.stringify(n.answerOption))),a&&a!=="radio-button"&&a!=="check-box"&&(o._itemControl=a);let r={};for(let g of n.answerOption||[])if(g.valueCoding){let E=g.valueCoding.code||g.valueCoding.display||"",M=(g.extension||[]).find(V=>V.url===p.ordinalValue)||(g.valueCoding.extension||[]).find(V=>V.url===p.ordinalValue);M&&M.valueDecimal!==void 0&&E&&(r[E]=M.valueDecimal)}Object.keys(r).length&&(o._optionOrdinals=r);let c={};for(let g of n.answerOption||[])if(g.valueCoding){let E=g.valueCoding.code||g.valueCoding.display||"",M=(g.extension||[]).find(V=>V.url===p.optionPrefix);M?.valueString&&E&&(c[E]=M.valueString)}Object.keys(c).length&&(o._optionPrefixes=c);let d={};for(let g of n.answerOption||[])if(g.valueCoding){let E=g.valueCoding.code||g.valueCoding.display||"";(g.extension||[]).find(V=>V.url===p.optionExclusive)?.valueBoolean&&E&&(d[E]=!0)}Object.keys(d).length&&(o._optionExclusives=d);let u={};for(let g of n.answerOption||[])if(g.valueCoding){let E=g.valueCoding.code||g.valueCoding.display||"",M=(g.extension||[]).find(V=>V.url===p.itemWeight)||(g.valueCoding.extension||[]).find(V=>V.url===p.itemWeight);M?.valueDecimal!==void 0&&E&&(u[E]=M.valueDecimal)}Object.keys(u).length&&(o._optionWeights=u);let f={};for(let g of n.answerOption||[])if(g.valueCoding){let E=g.valueCoding.code||g.valueCoding.display||"",M=(g.extension||[]).find(V=>V.url===p.answerMedia);M?.valueAttachment&&E&&(f[E]=M.valueAttachment)}if(Object.keys(f).length&&(o._answerMedias=f),lt(o,n,t),Xt(o,n),o.itemType==="reference"){let g=(n.extension||[]).find(V=>V.url===p.referenceResource);g&&g.valueCode&&(o.referenceResource=g.valueCode);let E=(n.extension||[]).find(V=>V.url===p.referenceFilter);E?.valueString&&(o._referenceFilter=E.valueString);let M=(n.extension||[]).filter(V=>V.url===p.referenceProfile);M.length&&(o._referenceProfiles=M.map(V=>V.valueCanonical).filter(Boolean))}if(o.itemType==="quantity"||o.itemType==="decimal"||o.itemType==="integer"){let g=(n.extension||[]).find(V=>V.url===p.unit);g?.valueCoding?.code&&(o.quantityUnit=g.valueCoding.code);let E=(n.extension||[]).find(V=>V.url===p.unitValueSet);E?.valueCanonical&&(o._unitValueSet=E.valueCanonical);let M=(n.extension||[]).filter(V=>V.url===p.unitOption);M.length&&(o._unitOptions=M.filter(V=>V.valueCoding).map(V=>({system:V.valueCoding.system,code:V.valueCoding.code,display:V.valueCoding.display})))}Ni(n,o);let h=(n.extension||[]).find(g=>g.url===p.calculatedExpression);h?.valueExpression&&(o._calculatedExpr=h.valueExpression.expression||"");let _=(n.extension||[]).find(g=>g.url===p.initialExpression);_?.valueExpression&&(o._initialExpr=_.valueExpression.expression||"");for(let{url:g,prop:E}of ot){let M=(n.extension||[]).find(V=>V.url===g);M?.valueExpression&&(o[E]=M.valueExpression.expression||"")}n.maxLength&&(o._maxLength=n.maxLength),n.answerConstraint&&(o._answerConstraint=n.answerConstraint);let v=(n.extension||[]).find(g=>g.url===Le);v?.valueCode&&(o._answerConstraint=v.valueCode);let C=(n.extension||[]).find(g=>g.url===p.minLength);C?.valueInteger!==void 0&&(o._minLength=C.valueInteger);let T=(n.extension||[]).find(g=>g.url===p.regex);T?.valueString&&(o._regex=T.valueString);let N=(n.extension||[]).find(g=>g.url===p.entryFormatSdc||g.url===p.entryFormat);N?.valueString&&(o._entryFormat=N.valueString);let D=(n.extension||[]).find(g=>g.url===p.choiceOrientation);D?.valueCode&&(o._choiceOrientation=D.valueCode);let O=(n.extension||[]).find(g=>g.url===p.columnCount);Number.isInteger(O?.valueInteger)&&O.valueInteger>1&&(o._columnCount=O.valueInteger);let A=(n.extension||[]).filter(g=>g.url===p.choiceColumn);if(A.length&&(o._choiceColumns=A.map(g=>{let E=g.extension||[],M={},V=E.find(be=>be.url==="path");V?.valueString&&(M.path=V.valueString);let ie=E.find(be=>be.url==="label");ie?.valueString&&(M.label=ie.valueString);let et=E.find(be=>be.url==="width");et?.valueQuantity&&(M.width=et.valueQuantity);let In=E.find(be=>be.url==="forDisplay");return In?.valueBoolean!==void 0&&(M.forDisplay=In.valueBoolean),M})),o.itemType==="display"){let E=(n.extension||[]).find(M=>M.url===p.displayCategory)?.valueCodeableConcept?.coding?.[0]?.code;E&&(o._displayCategory=E)}let b=(n.extension||[]).find(g=>g.url===p.minValue);if(b){let g=b.valueDecimal??b.valueInteger;g!==void 0&&(o._minValue=g)}let P=(n.extension||[]).find(g=>g.url===p.maxValue);if(P){let g=P.valueDecimal??P.valueInteger;g!==void 0&&(o._maxValue=g)}let y=(n.extension||[]).find(g=>g.url===p.minOccurs);y?.valueInteger!==void 0&&(o._minOccurs=y.valueInteger);let R=(n.extension||[]).find(g=>g.url===p.maxOccurs);R?.valueInteger!==void 0&&(o._maxOccurs=R.valueInteger);let S=(n.extension||[]).find(g=>g.url===p.maxDecimalPlaces);S?.valueInteger!==void 0&&(o._maxDecimalPlaces=S.valueInteger);let L=(n.extension||[]).find(g=>g.url===p.sliderStepValue);if(L){let g=L.valueDecimal??L.valueInteger;g!==void 0&&(o._sliderStep=g)}let H=(n.extension||[]).find(g=>g.url===p.maxSize);H?.valueDecimal!==void 0&&(o._maxFileSizeMB=H.valueDecimal);let m=(n.extension||[]).filter(g=>g.url===p.mimeType&&g.valueCode).map(g=>g.valueCode);m.length&&(o._mimeTypes=m);let x=(n.extension||[]).filter(g=>g.url===p.supportLink&&g.valueUri).map(g=>g.valueUri);x.length&&(o._supportLinks=x),(n.extension||[]).find(g=>g.url===p.hiddenSdc||g.url===p.hidden)?.valueBoolean===!0&&(o._hidden=!0),(n.extension||[]).find(g=>g.url===p.isSubject)?.valueBoolean===!0&&(o._isSubject=!0);let q=(n.extension||[]).find(g=>g.url===p.observationExtract);if(q&&(o._observationExtract=q.valueBoolean!==!1),o.itemType==="open-choice"){let g=(n.extension||[]).find(E=>E.url===p.openLabel);g?.valueString&&(o._openLabel=g.valueString)}let z=(n.extension||[]).find(g=>g.url===p.preferredTerminologyServer);z?.valueUrl&&(o._preferredTermServer=z.valueUrl);let K=(n.extension||[]).find(g=>g.url===p.shortText);K?.valueString&&(o._shortText=K.valueString);let U=(n.extension||[]).find(g=>g.url===p.designNote);U?.valueMarkdown?o._designNote=U.valueMarkdown:U?.valueString&&(o._designNote=U.valueString);let j=(n.extension||[]).find(g=>g.url===p.usageMode);j?.valueCode&&(o._usageMode=j.valueCode);let se=(n.extension||[]).filter(g=>g.url===p.signatureRequired);se.length&&(o._signatureRequired=se.filter(g=>g.valueCodeableConcept?.coding?.[0]).map(g=>{let E=g.valueCodeableConcept.coding[0];return{system:E.system||"",code:E.code||"",display:E.display||""}}));let le=(n.extension||[]).find(g=>g.url===p.itemMedia);le?.valueAttachment&&(o._itemMedia=le.valueAttachment),n.disabledDisplay&&(o._disabledDisplay=n.disabledDisplay);let Te=(n.extension||[]).find(g=>g.url===Oe);Te?.valueCode&&(o._disabledDisplay=Te.valueCode),o._readOnly=!!n.readOnly,(n.repeats||o.impliesRepeats())&&(o.repeats=!0),n.prefix&&(o._prefix=n.prefix),n.definition&&(o._definition=n.definition);let ge=(n.extension||[]).find(g=>g.url===p.baseType);ge?.valueCode&&(o._baseType=ge.valueCode);let G=(n.extension||[]).find(g=>g.url===p.fhirType);if(G?.valueCode&&(o._fhirType=G.valueCode),n.code&&n.code.length&&(o._codes=n.code),n.answerValueSet){o._answerValueSet=n.answerValueSet;let g=Kt(e,n.answerValueSet);g&&(o.options=g)}if(n.initial&&n.initial.length){let g=E=>{if(E.valueBoolean!==void 0)return E.valueBoolean;if(E.valueDecimal!==void 0)return String(E.valueDecimal);if(E.valueInteger!==void 0)return String(E.valueInteger);if(E.valueDate!==void 0)return E.valueDate;if(E.valueDateTime!==void 0)return E.valueDateTime;if(E.valueTime!==void 0)return E.valueTime;if(E.valueString!==void 0)return E.valueString;if(E.valueUri!==void 0)return E.valueUri;if(E.valueCoding)return E.valueCoding.code||E.valueCoding.display||"";if(E.valueReference)return typeof E.valueReference=="string"?{reference:E.valueReference}:E.valueReference;if(E.valueQuantity)return{value:E.valueQuantity.value!==void 0?String(E.valueQuantity.value):"",unit:E.valueQuantity.unit||""}};if(o.repeats&&n.initial.length>1){let E=n.initial.map(g).filter(M=>M!==void 0);o._initialValues=E,o._initialValue=E[0]}else{let E=g(n.initial[0]);E!==void 0&&(o._initialValue=E)}}for(let g of n.answerOption||[])if(g.initialSelected){let E;if(g.valueCoding?E=g.valueCoding.code||g.valueCoding.display||"":g.valueString!==void 0?E=g.valueString:g.valueInteger!==void 0&&(E=String(g.valueInteger)),E!==void 0){o._initialSelected=E,o._initialValue===void 0&&(o._initialValue=E);break}}let F=Gt(n);return F&&(o._unknownExtensions=F),o}function At(n,t,e){if((n.type||"string")==="group"){let s=Si({id:n.linkId,title:n.text||n.linkId||"Group",mandatory:!!n.required});lt(s,n,t),Xt(s,n)&&(s.logicWithParent="OR"),n.repeats&&(s.repeats=!0);let o=(n.extension||[]).find(y=>y.url===p.minOccurs);o?.valueInteger!==void 0&&(s._minOccurs=o.valueInteger);let l=(n.extension||[]).find(y=>y.url===p.maxOccurs);l?.valueInteger!==void 0&&(s._maxOccurs=l.valueInteger),Ni(n,s),n.prefix&&(s._prefix=n.prefix),n.definition&&(s._definition=n.definition);let r=(n.extension||[]).find(y=>y.url===p.baseType);r?.valueCode&&(s._baseType=r.valueCode);let c=(n.extension||[]).find(y=>y.url===p.fhirType);c?.valueCode&&(s._fhirType=c.valueCode),n.code&&n.code.length&&(s._codes=n.code);let d=(n.extension||[]).filter(y=>y.url===p.supportLink&&y.valueUri).map(y=>y.valueUri);d.length&&(s._supportLinks=d),(n.extension||[]).find(y=>y.url===p.hiddenSdc||y.url===p.hidden)?.valueBoolean===!0&&(s._hidden=!0);let f=(n.extension||[]).find(y=>y.url===p.observationExtract);f&&(s._observationExtract=f.valueBoolean!==!1);let h=(n.extension||[]).find(y=>y.url===p.collapsible);h?.valueCode&&(s._collapsible=h.valueCode);let _=(n.extension||[]).find(y=>y.url===p.preferredTerminologyServer);_?.valueUrl&&(s._preferredTermServer=_.valueUrl);let v=(n.extension||[]).find(y=>y.url===p.shortText);v?.valueString&&(s._shortText=v.valueString);let C=(n.extension||[]).find(y=>y.url===p.designNote);C?.valueMarkdown?s._designNote=C.valueMarkdown:C?.valueString&&(s._designNote=C.valueString);let N=(n.extension||[]).find(y=>y.url===p.displayCategory)?.valueCodeableConcept?.coding?.[0]?.code;N&&(s._displayCategory=N);let O=(n.extension||[]).find(y=>y.url===p.itemControl)?.valueCodeableConcept?.coding?.[0]?.code;O&&(s._itemControl=O);let A=(n.extension||[]).find(y=>y.url===p.calculatedExpression);A?.valueExpression&&(s._calculatedExpr=A.valueExpression.expression||"");let b=(n.extension||[]).find(y=>y.url===p.initialExpression);b?.valueExpression&&(s._initialExpr=b.valueExpression.expression||"");let P=Gt(n);P&&(s._unknownExtensions=P);for(let y of n.item||[]){let R=At(y,t,e);R&&s.children.push(R)}return s}if((n.item||[]).length>0){let s=Ti(n,t,e);for(let a of n.item){let o=At(a,t,e);o&&s.children.push(o)}return s}return Ti(n,t,e)}function Ai(n,t){for(let e of n){if(e.repeats&&e._initialValues&&e._initialValues.length>1){t.dispatch(w.ANSWER_SET,{id:e.id,value:e._initialValues[0]});for(let i=1;i<e._initialValues.length;i++)t.dispatch(w.ANSWER_SET,{id:e.id+"$$"+i,value:e._initialValues[i]});t.dispatch(w.ANSWER_SET,{id:e.id+"$$n",value:e._initialValues.length-1})}else e._initialValue!==void 0&&t.dispatch(w.ANSWER_SET,{id:e.id,value:e._initialValue});e.type==="group"&&Ai(e.children,t)}}function Li(n,t={}){let e=t.questDoc||pe.get(w.APP_CONTEXT_READY)?.questDoc,i=t.bus||X,{tree:s,meta:a,variables:o,contained:l}=e,r=n;if(typeof r=="string")try{r=JSON.parse(r)}catch(b){_e(`Invalid JSON:
36
- `+b.message);return}if(!r||r.resourceType!=="Questionnaire"){_e('Not a FHIR Questionnaire resource (resourceType must be "Questionnaire").');return}r=Jn(r),tt(s),i.dispatch(w.ANSWERS_CLEAR),e.rawFhir=r,e.translations??={};for(let b of Object.keys(e.translations))delete e.translations[b];Kn(),a.id=r.id||"",a.url=r.url||"",a.version=r.version||"",a.title=r.title||"",a.status=r.status||"draft",a.publisher=r.publisher||"",a.description=r.description||"",a.name=r.name||"",a.date=r.date||"",a.subjectType=Array.isArray(r.subjectType)&&r.subjectType.length?[...r.subjectType]:[],a.purpose=r.purpose||"",a.copyright=r.copyright||"",a.approvalDate=r.approvalDate||"",a.lastReviewDate=r.lastReviewDate||"",a.effectivePeriodStart=r.effectivePeriod?.start||"",a.effectivePeriodEnd=r.effectivePeriod?.end||"",a.experimental=r.experimental!==void 0?r.experimental:null,a.language=r.language||"",a._rawIdentifier=Array.isArray(r.identifier)?JSON.parse(JSON.stringify(r.identifier)):[],a._rawText=r.text&&r.text.status&&r.text.div?{status:r.text.status,div:r.text.div}:null,a._rawContact=Array.isArray(r.contact)?r.contact:null,a._rawUseContext=Array.isArray(r.useContext)?r.useContext:null,a._rawJurisdiction=Array.isArray(r.jurisdiction)?r.jurisdiction:null,a._rawCode=Array.isArray(r.code)?r.code:null,a.derivedFrom=Array.isArray(r.derivedFrom)?[...r.derivedFrom]:[],a._rawModifierExtension=Array.isArray(r.modifierExtension)&&r.modifierExtension.length?JSON.parse(JSON.stringify(r.modifierExtension)):[],a._metaVersionId=r.meta?.versionId||"",a._metaSource=r.meta?.source||"",a._metaLastUpdated=r.meta?.lastUpdated||"",a._rawMetaProfile=Array.isArray(r.meta?.profile)?[...r.meta.profile]:[],a._implicitRules=r.implicitRules||"",a._rawMetaTag=Array.isArray(r.meta?.tag)?JSON.parse(JSON.stringify(r.meta.tag)):[],a._rawMetaSecurity=Array.isArray(r.meta?.security)?JSON.parse(JSON.stringify(r.meta.security)):[];let c=p.variable,d=p.replaces,u=p.launchContext,f=p.artifactVersionAlgorithm,h=p.artifactCopyrightLabel,_=(r.extension||[]).find(b=>b.url===f);r.versionAlgorithmString!==void 0?(a._versionAlgorithmString=r.versionAlgorithmString,a._versionAlgorithmCoding=null):r.versionAlgorithmCoding?(a._versionAlgorithmCoding=JSON.parse(JSON.stringify(r.versionAlgorithmCoding)),a._versionAlgorithmString=""):_?.valueString!==void 0?(a._versionAlgorithmString=_.valueString,a._versionAlgorithmCoding=null):_?.valueCoding?(a._versionAlgorithmCoding=JSON.parse(JSON.stringify(_.valueCoding)),a._versionAlgorithmString=""):(a._versionAlgorithmString="",a._versionAlgorithmCoding=null);let v=(r.extension||[]).find(b=>b.url===h);if(a.copyrightLabel=r.copyrightLabel||v?.valueString||"",o.splice(0),l.splice(0),Array.isArray(r.contained))for(let b of r.contained)l.push(b);a.replaces=(r.extension||[]).filter(b=>b.url===d&&b.valueCanonical).map(b=>b.valueCanonical);for(let b of r.extension||[])b.url===c&&b.valueExpression&&o.push({name:b.valueExpression.name||"",expression:b.valueExpression.expression||""});let C=p.preferredTerminologyServer,T=(r.extension||[]).find(b=>b.url===C);a.preferredTermServer=T?.valueUrl||"";let N=p.signatureRequired,D=(r.extension||[]).filter(b=>b.url===N);a._signatureRequired=D.length?D.filter(b=>b.valueCodeableConcept?.coding?.[0]).map(b=>{let P=b.valueCodeableConcept.coding[0];return{system:P.system||"",code:P.code||"",display:P.display||""}}):[];let O=(r.extension||[]).filter(b=>b.url!==c&&b.url!==d&&b.url!==C&&b.url!==N&&b.url!==we&&b.url!==u&&b.url!==f&&b.url!==h);a._rawQuestExtensions=O.length?JSON.parse(JSON.stringify(O)):[];let A=(r.extension||[]).filter(b=>b.url===u);a.launchContexts=A.map(b=>{let P=b.extension||[],y=P.find(L=>L.url==="name"),R=P.find(L=>L.url==="type"),S=P.find(L=>L.url==="description");return{name:y?.valueCoding?.code||y?.valueId||"",type:R?.valueCode||"",description:S?.valueString||""}});try{let b=zt(r.item);for(let P of r.item||[]){let y=At(P,b,r.contained);y&&s.push(y)}Ai(s,i),Xs(r,s,e.translations)}finally{i.dispatch(w.REINIT_FORM)}i.dispatch(w.BUILDER_RERENDER)}var fn=p.translation;function Xs(n,t,e){let i=(n._title?.extension||[]).filter(r=>r.url===fn);for(let r of i){let c=(r.extension||[]).find(u=>u.url==="lang")?.valueCode,d=(r.extension||[]).find(u=>u.url==="content")?.valueString;!c||d==null||(Me(e,c),e[c].title=d)}function s(r){for(let c of r||[]){let d=(c._text?.extension||[]).filter(u=>u.url===fn);for(let u of d){let f=(u.extension||[]).find(_=>_.url==="lang")?.valueCode,h=(u.extension||[]).find(_=>_.url==="content")?.valueString;!f||h==null||(Me(e,f),e[f].items[c.linkId]=h)}for(let u of c.answerOption||[]){let f=u.valueCoding?.code||u.valueString||u.valueInteger?.toString();if(!f)continue;let h=(u._valueCoding?._display?.extension||[]).filter(_=>_.url===fn);for(let _ of h){let v=(_.extension||[]).find(T=>T.url==="lang")?.valueCode,C=(_.extension||[]).find(T=>T.url==="content")?.valueString;!v||C==null||(Me(e,v),e[v].opts[c.linkId+"__"+f]=C)}}s(c.item)}}s(n.item);let a=te.uiTranslations;for(let r of(n.extension||[]).filter(c=>c.url===a)){let c=(r.extension||[]).find(u=>u.url==="lang")?.valueCode,d=(r.extension||[]).find(u=>u.url==="strings")?.valueString;if(!(!c||!d))try{let u=JSON.parse(d);Me(e,c),Object.assign(e[c].ui,u)}catch{}}let o=te.xhtmlTranslations;for(let r of(n.extension||[]).filter(c=>c.url===o)){let c=(r.extension||[]).find(u=>u.url==="lang")?.valueCode,d=(r.extension||[]).find(u=>u.url==="strings")?.valueString;if(!(!c||!d))try{let u=JSON.parse(d);Me(e,c),e[c].xhtml||(e[c].xhtml={}),Object.assign(e[c].xhtml,u)}catch{}}let l=te.markdownTranslations;for(let r of(n.extension||[]).filter(c=>c.url===l)){let c=(r.extension||[]).find(u=>u.url==="lang")?.valueCode,d=(r.extension||[]).find(u=>u.url==="strings")?.valueString;if(!(!c||!d))try{let u=JSON.parse(d);Me(e,c),Object.assign(e[c].markdown,u)}catch{}}}function Me(n,t){n[t]||(n[t]={title:"",items:{},opts:{},ui:{},xhtml:{},markdown:{}}),n[t].ui||(n[t].ui={}),n[t].xhtml||(n[t].xhtml={}),n[t].markdown||(n[t].markdown={})}function Oi(n,t=new Set){for(let e of n)e.id&&t.add(e.id),e.children&&Oi(e.children,t);return t}function hn(n,t={}){for(let e of n||[]){if(e.answer&&e.answer.length){let i=s=>{if(s.valueBoolean!==void 0)return s.valueBoolean;if(s.valueCoding!==void 0)return s.valueCoding.code;if(s.valueDecimal!==void 0)return s.valueDecimal;if(s.valueInteger!==void 0)return s.valueInteger;if(s.valueDate!==void 0)return s.valueDate;if(s.valueDateTime!==void 0)return s.valueDateTime;if(s.valueTime!==void 0)return s.valueTime;if(s.valueQuantity!==void 0)return{value:s.valueQuantity.value,unit:s.valueQuantity.unit||""};if(s.valueUri!==void 0)return s.valueUri;if(s.valueReference!==void 0)return{reference:s.valueReference.reference||""};if(s.valueString!==void 0)return s.valueString};t[e.linkId]=e.answer.map(i).filter(s=>s!==void 0),t[e.linkId].length===0&&delete t[e.linkId];for(let s of e.answer)s.item&&hn(s.item,t)}e.item&&hn(e.item,t)}return t}function Di(n,t=new Set){for(let e of n)e.itemType==="checklist"&&t.add(e.id),e.children&&Di(e.children,t);return t}function Lt(n,t,e){if(!n||n.resourceType!=="QuestionnaireResponse")return{ok:!1,error:"Not a QuestionnaireResponse (resourceType: "+(n?.resourceType??"unknown")+")"};let i=Oi(e),s=hn(n.item||[]),a=[],o=0;for(let[r,c]of Object.entries(s))i.has(r)?(t[r]=c,o++):a.push(r);let l=Di(e);for(let r of l){let c=t[r];Array.isArray(c)&&c.length>1&&(t[r]=[c.filter(d=>d!==void 0).join(",")])}return{ok:!0,loaded:o,unmatched:a,questionnaire:n.questionnaire||"",meta:{status:n.status||"in-progress",subject:n.subject?.reference||"",author:n.author?.reference||"",id:n.id||"",language:n.language||"",metaVersionId:n.meta?.versionId||"",metaSource:n.meta?.source||"",metaProfile:(n.meta?.profile||[]).slice(),metaTag:(n.meta?.tag||[]).map(r=>({...r})),metaSecurity:(n.meta?.security||[]).map(r=>({...r}))}}}var mn=p.ordinalValue;function _n(n,t){let e=n.type||"string";if(e==="boolean")return{valueBoolean:t===!0};if(e==="date")return{valueDate:String(t)};if(e==="dateTime")return{valueDateTime:String(t)};if(e==="time")return{valueTime:String(t)};if(e==="choice"||e==="open-choice"){let i=String(t),s={code:i},a=(n.answerOption||[]).find(o=>o.valueCoding&&o.valueCoding.code===i||o.valueString!==void 0&&String(o.valueString)===i);if(a&&a.valueCoding){a.valueCoding.system&&(s.system=a.valueCoding.system),a.valueCoding.display&&(s.display=a.valueCoding.display);let o=(a.extension||[]).find(l=>l.url===mn)||(a.valueCoding.extension||[]).find(l=>l.url===mn);o!==void 0&&(s.extension=[{url:mn,valueDecimal:o.valueDecimal}])}return{valueCoding:s}}return e==="integer"?{valueInteger:parseInt(t,10)||0}:e==="decimal"?{valueDecimal:parseFloat(t)||0}:e==="quantity"?{valueQuantity:{value:parseFloat(t?.value)||0,unit:t?.unit||""}}:e==="url"?{valueUri:String(t)}:e==="reference"?{valueReference:{reference:String(t?.reference||"")}}:{valueString:String(t)}}function gn(n,t){let e={linkId:n.linkId},i=n.item||[],s=n.type||"string",a=t[n.linkId],o=a?a[0]:void 0;function l(){return(t[n.linkId]||[]).filter(c=>c!==void 0)}let r=c=>_n(n,c);if(s==="group")i.length>0&&(e.item=i.map(c=>gn(c,t)));else if(i.length>0){let c={};s==="boolean"?o!==void 0&&(c.valueBoolean=o===!0):(s==="string"||s==="text")&&o!==void 0&&(c.valueString=String(o)),c.item=i.map(d=>gn(d,t)),e.answer=[c]}else{let c=l();(s==="choice"||s==="open-choice")&&n.repeats&&c.length===1&&typeof c[0]=="string"&&c[0].includes(",")?e.answer=c[0].split(",").map(r):c.length>0&&(e.answer=c.map(r))}return e}function Je(n,t){return{resourceType:"QuestionnaireResponse",questionnaire:n.url||n.id||"",status:"in-progress",item:(n.item||[]).map(e=>gn(e,t))}}function Ks(n){let t=new Set,e=new Set;if(!n||typeof n!="string")return{linkIds:[],vars:[]};let i=/linkId\s*=\s*(['"])(.*?)\1/g,s;for(;(s=i.exec(n))!==null;)s[2]&&t.add(s[2]);let a=/%(`[^`]+`|[A-Za-z_][A-Za-z0-9_]*)/g;for(;(s=a.exec(n))!==null;){let o=s[1];o.startsWith("`")&&o.endsWith("`")&&(o=o.slice(1,-1)),o!=="resource"&&o!=="context"&&e.add(o)}return{linkIds:[...t],vars:[...e]}}function ki(n,t=[]){for(let e of n)t.push(e),e.children?.length&&ki(e.children,t);return t}function vn(n,t=[]){let e=ki(n||[]),i=e.map(u=>u.id),s=new Set(i),a=new Set((t||[]).map(u=>u&&u.name).filter(Boolean)),o=new Map;function l(u,f){for(let h of u)o.set(h.id,new Set(f)),h.children?.length&&l(h.children,[...f,h.id])}l(n||[],[]);let r=new Map,c=new Map;for(let u of i)r.set(u,new Set);let d=(u,f)=>{f!==u&&(o.get(u)?.has(f)||(s.has(f)?r.get(u).add(f):a.has(f)||(c.has(u)||c.set(u,new Set),c.get(u).add(f))))};for(let u of e){if(Array.isArray(u.enableWhen))for(let h of u.enableWhen)h&&h.question&&d(u.id,h.question);let f=[u.enableWhenExpression,u._calculatedExpr,u._initialExpr];for(let h of f){let{linkIds:_}=Ks(h);for(let v of _)d(u.id,v)}}return{edges:r,nodeIds:i,varNames:a,missing:c}}function Zs(n){let{edges:t}=n,e=0,i=1,s=2,a=new Map;for(let c of t.keys())a.set(c,e);let o=[],l=[],r=c=>{a.set(c,i),l.push(c);for(let d of t.get(c)||[]){let u=a.get(d);if(u===i){let f=l.indexOf(d);f!==-1&&o.push([...l.slice(f),d])}else u===e&&r(d)}l.pop(),a.set(c,s)};for(let c of t.keys())a.get(c)===e&&r(c);return o}function yn(n){let{edges:t,nodeIds:e}=n,i=new Map,s=new Map;for(let c of e)i.set(c,(t.get(c)||new Set).size),s.set(c,[]);for(let c of e)for(let d of t.get(c)||[])s.has(d)&&s.get(d).push(c);let a=e.filter(c=>i.get(c)===0),o=[],l=new Set;for(;a.length;){let c=a.shift();o.push(c),l.add(c);for(let d of s.get(c)||[])i.set(d,i.get(d)-1),i.get(d)===0&&a.push(d)}let r=Zs(n);if(o.length<e.length)for(let c of e)l.has(c)||o.push(c);return{order:o,cycles:r}}function En(n,t,e){let i={};for(let s of n)if(!(!s.name||!s.expression))try{let a=e.evaluate(t,s.expression,{resource:t,...i},re());i[s.name]=Array.isArray(a)&&a.length===1?a[0]:a}catch{}return i}function Cn(n,t=new Map){for(let e of n)t.set(e.id,e),e.children?.length&&Cn(e.children,t);return t}function xn(n,t=new Map){for(let e of n||[])if(e.linkId&&t.set(e.linkId,e),Array.isArray(e.item)&&xn(e.item,t),Array.isArray(e.answer))for(let i of e.answer)Array.isArray(i.item)&&xn(i.item,t);return t}function bn(n,t=new Map){for(let e of n||[])if(e.linkId&&t.set(e.linkId,e),Array.isArray(e.item)&&bn(e.item,t),Array.isArray(e.answer))for(let i of e.answer)Array.isArray(i.item)&&bn(i.item,t);return t}function er(n,t){return n.itemType==="checkbox"?t[0]===!0||t[0]==="true":Array.isArray(t)?t.join(""):t[0]!==void 0?String(t[0]):""}function Ii(n,t=[]){return{nodeMap:Cn(n),order:yn(vn(n,t)).order}}function Vi(n,t,e,i,s={},a=null,o=null){let l={resource:t,...s},r=o?.nodeMap||Cn(n),c=o?.order||yn(vn(n,[])).order,d=a?xn(a.item):null,u=d?bn(t.item):null;for(let f of c){let h=r.get(f);if(!(!h||!(h._calculatedExpr&&h._readOnly)))try{let _=e.evaluate(t,h._calculatedExpr,l,re()),v=er(h,_);if(i[h.id]=v,u&&d){let C=u.get(h.id),T=d.get(h.id);if(C&&T){let N=_n(T,v),D=C.answer?.[0]?.item;D&&(N.item=D),C.answer=[N]}}}catch{}}}function wn(n,t,e,i,s={}){let a={resource:t,...s};for(let o of n){if(o._initialExpr)try{let l=e.evaluate(t,o._initialExpr,a,re());o.itemType==="checkbox"?i[o.id]=l[0]===!0||l[0]==="true":i[o.id]=Array.isArray(l)?l.join(""):l[0]!==void 0?String(l[0]):""}catch{}o.children?.length&&wn(o.children,t,e,i,s)}}var tr={disabledDisplay:Oe,answerConstraint:Le},Mi=p.artifactVersionAlgorithm,nr=p.artifactCopyrightLabel;function Ot(n){if(!n)return;let t=[];n.versionAlgorithmString!==void 0?(t.push({url:Mi,valueString:n.versionAlgorithmString}),delete n.versionAlgorithmString):n.versionAlgorithmCoding!==void 0&&(t.push({url:Mi,valueCoding:n.versionAlgorithmCoding}),delete n.versionAlgorithmCoding),n.copyrightLabel!==void 0&&(t.push({url:nr,valueString:n.copyrightLabel}),delete n.copyrightLabel),t.length&&(n.extension=[...n.extension||[],...t])}function Dt(n){n?.item&&Pi(n.item)}function Pi(n){if(Array.isArray(n))for(let t of n){for(let[e,i]of Object.entries(tr))t[e]===void 0||t[e]===null||(t.extension=(t.extension||[]).filter(s=>s?.url!==i),t.extension.push({url:i,valueCode:t[e]}),delete t[e]);t.item&&Pi(t.item)}}fe.register({id:"R4",label:"FHIR R4 JSON (.json)",selectorLabel:"FHIR R4",isBuilderVersion:!0,metaVersion:"4.0.1",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let t=JSON.parse(JSON.stringify(n));return Dt(t),Ot(t),t.meta=t.meta??{lastUpdated:new Date().toISOString()},De(t,"4.0.1"),t}});fe.register({id:"R4B",label:"FHIR R4B JSON (.json)",selectorLabel:"FHIR R4B",isBuilderVersion:!0,metaVersion:"4.3.0",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let t=JSON.parse(JSON.stringify(n));return Dt(t),Ot(t),t.meta=t.meta??{lastUpdated:new Date().toISOString()},De(t,"4.3.0"),t}});function Bi(n){if(Array.isArray(n))for(let t of n)t.type==="open-choice"?(t.type="coding",t.answerConstraint||(t.answerConstraint="optionsOrString")):t.type==="choice"&&(t.type="coding"),t.item&&Bi(t.item)}fe.register({id:"R5",label:"FHIR R5 JSON (.json)",selectorLabel:"FHIR R5",isBuilderVersion:!0,metaVersion:"5.0.0",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let t=JSON.parse(JSON.stringify(n));return t.item&&Bi(t.item),t.meta=t.meta??{lastUpdated:new Date().toISOString()},De(t,"5.0.0"),t}});var ir={equal:"=","not-equal":"<>",exists:null,">":">",">=":">=","<":"<","<=":"<="};function qi(n,t){if(!n||n.length===0)return"";let e=t==="any"?" OR ":" AND ",i=n.map(s=>{let a=`[${s.question}]`,o=s.operator||"equal",l=ir[o]??"=",r;return s.answerDecimal!==void 0?r=String(s.answerDecimal):s.answerInteger!==void 0?r=String(s.answerInteger):s.answerBoolean!==void 0?r=s.answerBoolean?"1":"0":s.answerCoding?.code!==void 0?r=`'${s.answerCoding.code}'`:s.answerString!==void 0?r=`'${s.answerString}'`:r="''",`${a} ${l} ${r}`});return i.length===1?i[0]:i.map(s=>`(${s})`).join(e)}var Ql=te.redcapNs,Yl=p.itemControl,Jl=p.minValue,zl=p.maxValue,Xl=p.calculatedExpression;var Hi=te.redcapNs,sr=p.itemControl,rr=p.minValue,ar=p.maxValue,$i=p.calculatedExpression,ji=["Variable / Field Name","Form Name","Section Header","Field Type","Field Label","Choices, Calculations, OR Slider Labels","Field Note","Text Validation Type OR Show Slider Number","Text Validation Min","Text Validation Max","Identifier?","Branching Logic (Show field only if...)","Required Field?","Custom Alignment","Question Number (surveys only)","Matrix Group Name","Matrix Ranking?","Field Annotation"];function ee(n,t){if(!n)return;let e=Hi+t,i=n.find(s=>s.url===e);if(i){for(let s of Object.keys(i))if(s.startsWith("value"))return i[s]}}function It(n,t){return(n||[]).find(e=>e.url===t)}function Gi(n){let t=String(n??"");return t.includes(",")||t.includes('"')||t.includes(`
37
- `)?'"'+t.replace(/"/g,'""')+'"':t}function or(n){return ji.map(t=>Gi(n[t]??"")).join(",")}function Fi(n){let e=It(n.extension,sr)?.valueCodeableConcept?.coding?.[0]?.code;if(e==="drop-down")return"dropdown";if(e==="slider")return"slider";if(It(n.extension,$i))return"calc";switch(n.type){case"string":return"text";case"text":return"notes";case"integer":return"text";case"decimal":return"text";case"date":return"text";case"dateTime":return"text";case"time":return"text";case"boolean":return"yesno";case"choice":return n.repeats?"checkbox":"radio";case"attachment":return"file";case"display":return"descriptive";default:return"text"}}function lr(n){switch(n.type){case"integer":return"integer";case"decimal":return"number";case"date":return"date_ymd";case"dateTime":return"datetime_ymd";case"time":return"time";default:return""}}function Ui(n){return!n||n.length===0?"":n.map(t=>{if(t.valueCoding){let e=t.valueCoding.code||"",i=t.valueCoding.display||t.valueCoding.code||"";return`${e}, ${i}`}return t.valueString!==void 0?`${t.valueString}, ${t.valueString}`:t.valueInteger!==void 0?`${t.valueInteger}, ${t.valueInteger}`:""}).filter(Boolean).join(" | ")}function Wi(n,t){let e=It(n,t);if(!e)return"";for(let i of Object.keys(e))if(i.startsWith("value"))return String(e[i]);return""}function kt(n,t,e,i,s=0){for(let a of n||[]){if(a.type==="group"){let O=ee(a.extension,"form-name")||a.text||a.linkId,A=ee(a.extension,"section-header")||"";if(s===0)kt(a.item,O,"",i,s+1);else if(s===1){let b=A||(O!==t?a.text:"");kt(a.item,t,b,i,s+1)}else kt(a.item,t,e,i,s+1);continue}let o=(a.extension||[]).some(O=>O.url.startsWith(Hi)),l;if(o){let O=ee(a.extension,"calc-expression"),A=ee(a.extension,"sql-query");O!==void 0?l="calc":A!==void 0?l="sql":l=Fi(a)}else l=Fi(a);let r;if(o){let O=ee(a.extension,"calc-expression"),A=ee(a.extension,"sql-query"),b=ee(a.extension,"slider-labels");O!==void 0?r=O:A!==void 0?r=A:b!==void 0?r=b:r=Ui(a.answerOption)}else{let O=It(a.extension,$i);O?.valueExpression?.expression?r=O.valueExpression.expression:r=Ui(a.answerOption)}let c="";o?c=ee(a.extension,"branching-logic")||"":a.enableWhen&&a.enableWhen.length>0&&(c=qi(a.enableWhen,a.enableBehavior||"all"));let d=o?"":lr(a),u=Wi(a.extension,rr),f=Wi(a.extension,ar),h=ee(a.extension,"annotation")??"",_=ee(a.extension,"matrix-group")??"",v=ee(a.extension,"alignment")??"",C=ee(a.extension,"identifier")??!1,T=ee(a.extension,"field-note")??"",N=ee(a.extension,"question-number")??"",D=ee(a.extension,"matrix-ranking")??!1;i.push({"Variable / Field Name":a.linkId,"Form Name":t,"Section Header":e,"Field Type":l,"Field Label":a.text||a.linkId,"Choices, Calculations, OR Slider Labels":r,"Field Note":T,"Text Validation Type OR Show Slider Number":d,"Text Validation Min":u,"Text Validation Max":f,"Identifier?":C?"y":"","Branching Logic (Show field only if...)":c,"Required Field?":a.required?"y":"","Custom Alignment":v,"Question Number (surveys only)":N,"Matrix Group Name":_,"Matrix Ranking?":D?"y":"","Field Annotation":h})}}function Sn(n){let t=[];kt(n.item||[],"my_form","",t,0);let e=[ji.map(Gi).join(",")];for(let i of t)e.push(or(i));return e.join(`\r
32
+ Click to explain.`,e.dataset.tipFhir="sdc-questionnaire-calculatedExpression",e.dataset.tipSpec="SDC";let i=this._calculatedExpr;e.addEventListener("click",()=>{t.lastCtx.fp&&Re(i,t.lastCtx.fp,t.lastCtx.qr,t.lastCtx.env)})}_appendRow(e,t,i){return t.hidden&&this.type==="item"&&e.querySelectorAll("input, select, textarea").forEach(r=>{r.disabled=!0}),super._appendRow(e,t,i)}};var Xe=class extends Q{constructor(e={}){super(e),this.itemType="text"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y();l.className="ctrl-wrap ctrl-wrap--text";let a=document.createElement("textarea");a.className="ctrl-input--text",a.rows=3,a.value=i(t.id)!==void 0?i(t.id):"",t._maxLength&&(a.maxLength=t._maxLength),t._minLength&&(a.minLength=t._minLength),t._entryFormat&&(a.placeholder=t._entryFormat);let c=()=>{a.style.height="auto",a.style.height=a.scrollHeight+"px"},u=null;if(t._maxLength){u=document.createElement("span"),u.className="ctrl-char-counter",u.dataset.testid="char-counter";let v=()=>{u.textContent=a.value.length+"\xA0/\xA0"+t._maxLength};v(),a.addEventListener("input",v)}let d=null;if(t._minLength){d=document.createElement("span"),d.className="ctrl-err ctrl-err--ml",d.dataset.testid="minlength-err",d.textContent="Min\xA0"+t._minLength+"\xA0chars";let v=()=>{d.style.display=a.value.length>0&&a.value.length<t._minLength?"inline":"none"};t._interacted?v():d.style.display="none"}let p=null,f=t._regex?(()=>{try{return new RegExp(t._regex)}catch{return null}})():null;if(t._regex){p=document.createElement("span"),p.className="ctrl-err ctrl-err--regex",p.dataset.testid="regex-err",p.textContent="Does not match pattern";let v=()=>{p.style.display=f&&a.value.length>0&&!f.test(a.value)?"inline":"none"};t._interacted?v():p.style.display="none"}a.addEventListener("blur",()=>{t._interacted=!0,d&&(d.style.display=a.value.length>0&&a.value.length<t._minLength?"inline":"none"),p&&(p.style.display=f&&a.value.length>0&&!f.test(a.value)?"inline":"none")});let _=null;return a.oninput=()=>{r(t.id,a.value),c(),clearTimeout(_),_=setTimeout(()=>{o(),s()},200)},a.onchange=()=>{D.notifyChanged(e.bus)},l.appendChild(a),u&&l.appendChild(u),d&&l.appendChild(d),p&&l.appendChild(p),a.value&&requestAnimationFrame(c),l}};H.set("text",Xe);var Ve=class extends Q{constructor(e={}){super(e),this.itemType=e.itemType??"number"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y();if(t._sliderStep!==void 0||t._itemControl==="slider"){let d=document.createElement("input");d.type="range",d.className="ctrl-input--slider",d.dataset.testid="slider-input",d.min=t._minValue!==void 0?String(t._minValue):"0",d.max=t._maxValue!==void 0?String(t._maxValue):"100",d.step=String(t._sliderStep);let p=i(t.id);d.value=p!==void 0&&p!==""?String(p):d.min;let f=document.createElement("span");return f.className="ctrl-slider-value",f.dataset.testid="slider-value",f.textContent=d.value,d.oninput=()=>{let _=parseFloat(d.value);r(t.id,_),f.textContent=d.value,o(),s()},d.onchange=()=>{D.notifyChanged(e.bus)},l.appendChild(d),l.appendChild(f),l}let a=document.createElement("input");a.type="number",a.className="ctrl-input--number",a.value=i(t.id)!==void 0?i(t.id):"",t._minValue!==void 0&&(a.min=String(t._minValue)),t._maxValue!==void 0&&(a.max=String(t._maxValue)),t._maxDecimalPlaces!==void 0&&(a.step=String(Math.pow(10,-t._maxDecimalPlaces))),t._entryFormat&&(a.placeholder=t._entryFormat);let c=document.createElement("span");c.className="ctrl-err ctrl-err--ml",c.dataset.testid="numeric-err",c.style.display="none";let u=d=>{if(d===void 0||d===""||d===null){c.style.display="none";return}let p=Number(d);if(t._minValue!==void 0&&p<t._minValue)c.textContent="Min: "+t._minValue,c.style.display="inline";else if(t._maxValue!==void 0&&p>t._maxValue)c.textContent="Max: "+t._maxValue,c.style.display="inline";else if(t._maxDecimalPlaces!==void 0){let f=String(d).split(".");f.length>1&&f[1].length>t._maxDecimalPlaces?(c.textContent="Max "+t._maxDecimalPlaces+" decimal place"+(t._maxDecimalPlaces!==1?"s":""),c.style.display="inline"):c.style.display="none"}else c.style.display="none"};return a.oninput=()=>{let d=a.value===""?void 0:t.itemType==="integer"?parseInt(a.value,10):parseFloat(a.value);r(t.id,d),u(d),o(),s()},a.onchange=()=>{D.notifyChanged(e.bus)},u(i(t.id)),l.appendChild(a),(t._minValue!==void 0||t._maxValue!==void 0||t._maxDecimalPlaces!==void 0)&&l.appendChild(c),l}};H.set("number",Ve);H.set("integer",Ve);H.set("decimal",Ve);var J={CORS_PROXY:"corsProxyUrl",TERMINOLOGY_SERVER:"terminologyServer",NLM_API_BASE:"nlmApiBaseUrl",FHIR_BASE:"fhirBaseUrl",SDC_SERVER:"sdcServerUrl",VALIDATORS:"validators",TRANSLATE_API:"translateApiUrl",TRANSLATE_PROVIDER:"translateProvider",TRANSLATE_API_KEY:"translateApiKey",FHIR_BASE_OAUTH_AUTHORIZE_URL:"fhirBaseOauthAuthorizeUrl",FHIR_BASE_OAUTH_TOKEN_URL:"fhirBaseOauthTokenUrl",FHIR_BASE_OAUTH_CLIENT_ID:"fhirBaseOauthClientId",FHIR_BASE_OAUTH_SCOPE:"fhirBaseOauthScope",SDC_SERVER_OAUTH_AUTHORIZE_URL:"sdcServerOauthAuthorizeUrl",SDC_SERVER_OAUTH_TOKEN_URL:"sdcServerOauthTokenUrl",SDC_SERVER_OAUTH_CLIENT_ID:"sdcServerOauthClientId",SDC_SERVER_OAUTH_SCOPE:"sdcServerOauthScope"};var fn=class{get(e){return null}set(e,t){}get writable(){return!1}get label(){return"Unknown"}},Be=class extends fn{constructor(e={}){super(),this._cfg=e}get(e){let t=this._cfg[e];return t==null?null:typeof t=="string"?t:JSON.stringify(t)}get label(){return"Default (config.json)"}};function qs(){let n=[],e=null;return{register(t){n.unshift(t)},load(t="./config.json"){return e||(e=fetch(t).then(i=>i.json()).then(i=>(n.push(new Be(i)),i)).catch(()=>(n.push(new Be({})),{})),e)},ready(){return e??Promise.resolve({})},get(t){for(let i of n){let r=i.get(t);if(r!=null)return r}return null},getParsed(t){let i=this.get(t);if(i==null)return null;if(t===J.VALIDATORS)try{return JSON.parse(i)}catch{return null}return i},set(t,i){for(let r of n)if(r.writable){r.set(t,i);return}},reset(t){this.set(t,null)},getProviders(){return[...n]},hasOverride(t){for(let i of n)if(i.writable&&i.get(t)!=null)return!0;return!1},_clear(){n.length=0,e=null}}}var te=qs(),hn="fhirqb.debugLogin.";function Fs(){let n=sessionStorage.getItem(hn+"tokenUrl"),e=sessionStorage.getItem(hn+"clientId"),t=sessionStorage.getItem(hn+"clientSecret");return!n||!e||!t?null:{tokenUrl:n,clientId:e,clientSecret:t}}async function Li(){let n=Fs();if(!n)return{};try{let e=await fetch(n.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"client_credentials",client_id:n.clientId,client_secret:n.clientSecret})});if(!e.ok)return{};let t=await e.json();return t.access_token?{Authorization:`Bearer ${t.access_token}`}:{}}catch{return{}}}var $s="https://tx.fhir.org/r4",Hs=500,Ii=15e3,Ws=8e3,js=new Set([429,500,503,504]),ki=700,mn=2,Di=3e4;function Gs(n,e){let t=n.headers.get("Retry-After");if(t){let i=Number(t);if(!isNaN(i)&&i>0)return Math.min(i*1e3,Di);let r=new Date(t);if(!isNaN(r.getTime()))return Math.min(Math.max(0,r-Date.now()),Di)}return ki*(e+1)}async function gn(n,e,t,i){let r;for(let s=0;s<=mn;s++){let o;try{o=await fetch(n,{...e,signal:AbortSignal.timeout(t)})}catch(l){r=l,s<mn&&(await new Promise(a=>setTimeout(a,ki*(s+1))),i?.());continue}if(!js.has(o.status))return o;r=new Error(`HTTP ${o.status} ${o.statusText}`),s<mn&&(await new Promise(l=>setTimeout(l,Gs(o,s))),i?.())}throw r}function Mi(n,e=[]){for(let t of n)t._answerValueSet&&!t._answerValueSet.startsWith("#")&&t._itemControl!=="lookup"&&e.push(t),t.children?.length&&Mi(t.children,e);return e}function Pi(n,e=[]){for(let t of n)t._unitValueSet&&e.push(t),t.children?.length&&Pi(t.children,e);return e}var Ke=class{constructor(e){this._cfg=e}_corsProxy(){return(this._cfg.get(J.CORS_PROXY)||"").replace(/\/$/,"")}_termServer(){return(this._cfg.get(J.TERMINOLOGY_SERVER)||$s).replace(/\/$/,"")}_nlmApiBase(){return(this._cfg.get(J.NLM_API_BASE)||"https://clinicaltables.nlm.nih.gov/api").replace(/\/$/,"")}_proxyUrl(e){let t=this._corsProxy();return t?`${t}?url=${encodeURIComponent(e)}`:e}async nlmUrl(e){return await this._cfg.ready?.(),`${this._nlmApiBase()}/${e}`}getServer(e,t){return(e?._preferredTermServer||t?.preferredTermServer||this._termServer()).replace(/\/$/,"")}async expandValueSet(e,t){await this._cfg.ready?.();let i=(t||this._termServer()).replace(/\/$/,""),r=this._proxyUrl(`${i}/ValueSet/$expand?url=${encodeURIComponent(e)}&_count=${Hs}`),s=await gn(r,{headers:{Accept:"application/fhir+json"}},Ii);if(!s.ok)throw new Error(`HTTP ${s.status} ${s.statusText}`);let o=await s.json();if(o.resourceType!=="ValueSet")throw new Error("Response is not a FHIR ValueSet");return(o.expansion?.contains||[]).map(l=>({code:l.code??"",display:l.display||l.code||"",system:l.system||""}))}async expandWithFilter(e,t,i="",r=50){await this._cfg.ready?.();let s=(t||this._termServer()).replace(/\/$/,""),o=new URLSearchParams({url:e,_count:String(r)});i&&i.trim()&&o.set("filter",i.trim());let l=this._proxyUrl(`${s}/ValueSet/$expand?${o}`),a=await gn(l,{headers:{Accept:"application/fhir+json"}},Ii);if(!a.ok)throw new Error(`HTTP ${a.status} ${a.statusText}`);let c=await a.json();if(c.resourceType!=="ValueSet")throw new Error("Response is not a FHIR ValueSet");return(c.expansion?.contains||[]).map(u=>({code:u.code??"",display:u.display||u.code||"",system:u.system||""}))}async testServer(e,{onRetry:t}={}){await this._cfg.ready?.();let i=(e||"").trim().replace(/\/$/,"");if(!i)return{ok:!1,message:"No URL provided"};try{let r=await gn(this._proxyUrl(`${i}/metadata`),{headers:{Accept:"application/fhir+json"}},Ws,t);if(!r.ok)return{ok:!1,message:`HTTP ${r.status} ${r.statusText}`};let s=await r.json();return s.resourceType!=="CapabilityStatement"?{ok:!1,message:"Not a FHIR server (no CapabilityStatement)"}:{ok:!0,message:[s.software?.name,s.software?.version].filter(Boolean).join(" ")||"OK"}}catch(r){return{ok:!1,message:r.message}}}async testExpand(e,t){if(!e)return{ok:!1,message:"No URL provided"};try{let i=await this.expandValueSet(e,t||this._termServer());return{ok:!0,message:`${i.length} code${i.length!==1?"s":""}`,count:i.length}}catch(i){return{ok:!1,message:i.message}}}async expandAll(e,t){let i=Mi(e),r=Pi(e);if(!i.length&&!r.length)return[];let s=[];for(let o of i){let l=this.getServer(o,t);try{o._vsCache=await this.expandValueSet(o._answerValueSet,l)}catch(a){o._vsCache=[];let u=a instanceof TypeError&&a.message.includes("fetch")?`Network error (possible CORS restriction \u2014 the server may not allow browser requests): ${a.message}`:a.message;s.push({node:o,vsUrl:o._answerValueSet,server:l,error:u})}}for(let o of r){let l=this.getServer(o,t);try{o._unitVsCache=await this.expandValueSet(o._unitValueSet,l)}catch(a){o._unitVsCache=[];let u=a instanceof TypeError&&a.message.includes("fetch")?`Network error (possible CORS restriction \u2014 the server may not allow browser requests): ${a.message}`:a.message;s.push({node:o,vsUrl:o._unitValueSet,server:l,error:u})}}return s}},_n=new Ke(te);function bt(n){return n._rawAnswerOptions?ai(n._rawAnswerOptions):pt(n.options)}function Ze(n,e){let t=n._answerExpression||n._candidateExpression;return t?!e||!e.fp||!e.qr?bt(n):Qs(n,t,e):n._answerValueSet&&!n._answerValueSet.startsWith("#")?n._vsCache??[]:bt(n)}function Vi(n,e,t){let i=Number(t(n+"$$n"))||0,r=new Set;for(let s=0;s<=i;s++){let o=s===0?n:n+"$$"+s;if(o===e)continue;let l=t(o);l&&r.add(l)}return r}function Bi(n,e,t){return!t||!t.size?n:n.filter(i=>i.code===e||!t.has(i.code))}function Ui(n){return String(n).replace(/\$\$\d+$/,"")}function Qs(n,e,t){try{let i=t.fp.evaluate(t.qr,e,t.env||{},se());return!i||!i.length?bt(n):i.map(r=>{if(r==null)return null;if(typeof r=="string")return{code:r,display:r};if(typeof r=="number")return{code:String(r),display:String(r)};if(typeof r=="boolean")return{code:String(r),display:r?"Yes":"No"};if(typeof r=="object"){if(r.code!==void 0)return{code:String(r.code),display:r.display||String(r.code)};if(r.value!==void 0)return{code:String(r.value),display:r.display||String(r.value)}}return{code:String(r),display:String(r)}}).filter(Boolean)}catch{return bt(n)}}function qi(n,e,t,i){if(n){let r=n.valueCoding||n.valueReference||n;if(r&&r[i]!==void 0)return String(r[i])}return i==="code"?e:i==="display"&&t||""}function vn(n,e){return n._rawAnswerOptions&&n._rawAnswerOptions.find(t=>{let i=t.valueCoding||t.valueReference;return!!(i&&(i.code===e||i.reference===e)||t.valueString===e||t.valueInteger!==void 0&&String(t.valueInteger)===e||t.valueDate===e||t.valueTime===e)})||null}function Fi(n,e,t){if(!n._choiceColumns||!n._choiceColumns.length)return t;let i=n._choiceColumns.find(o=>o.forDisplay);if(!i)return t;let r=vn(n,e);return qi(r,e,t,i.path)||t}function $i(n){let e=document.createElement("div");e.className="oc-col-header";for(let t of n){let i=document.createElement("span");i.className="oc-col-cell",i.textContent=t.label||t.path,t.width&&(i.style.width=t.width.value+(t.width.unit||t.width.code||"%")),e.appendChild(i)}return e}function Hi(n,e,t,i){let r=document.createElement("div");r.className="oc-opt oc-col-row";for(let s of n){let o=document.createElement("span");o.className="oc-col-cell",o.textContent=qi(e,t,i,s.path),s.width&&(o.style.width=s.width.value+(s.width.unit||s.width.code||"%")),r.appendChild(o)}return r}function yn(n,e){let t=document.createElement("table");t.className="atable-item",t.dataset.testid="atable-item";let i=document.createElement("tr"),r=document.createElement("tr");n.forEach(({code:l,display:a},c)=>{let u=document.createElement("th");u.className="atable-th",u.textContent=a,i.appendChild(u);let d=document.createElement("td");d.className="atable-td",d.appendChild(e(l,c)),r.appendChild(d)});let s=document.createElement("thead");s.appendChild(i);let o=document.createElement("tbody");return o.appendChild(r),t.append(s,o),t}function Ct(n,e,t){if(e._optionWeights&&e._optionWeights[t]!==void 0){let i=document.createElement("span");i.className="option-weight",i.textContent="\xA0[w:"+e._optionWeights[t]+"]",i.dataset.tipTitle="Item weight",i.dataset.tipBody="Scoring weight for this answer option (itemWeight).",i.dataset.tipFhir="answerOption.extension[itemWeight].valueDecimal",i.dataset.tipSpec="SDC",n.appendChild(i)}if(e._answerMedias&&e._answerMedias[t]){let i=e._answerMedias[t],r=i.contentType||"",s=r.startsWith("audio/")?Object.assign(document.createElement("audio"),{src:i.url,controls:!0}):r.startsWith("video/")?Object.assign(document.createElement("video"),{src:i.url,controls:!0,style:"max-width:200px;max-height:120px"}):Object.assign(document.createElement("img"),{src:i.url,alt:i.title||"",style:"max-width:120px;max-height:80px;vertical-align:middle;margin-left:6px"});s.className="preview-answer-media",n.appendChild(s)}}function Wi(n,e,t){let i=e.getBoundingClientRect(),s=window.innerHeight-i.bottom-4,o=i.top-4,l=parseInt(getComputedStyle(n).maxHeight)||200;n.style.left=i.left+"px",n.style.minWidth=i.width+"px",n.style.fontSize=getComputedStyle(t||e).fontSize;let a=Math.min(l,Math.max(s>=Math.min(l,o)?s:o,60));return n.style.maxHeight=a+"px",s>=Math.min(l,o)?n.style.top=i.bottom+2+"px":n.style.top=Math.max(4,i.top-Math.min(a,n.offsetHeight||a)-2)+"px",i}var wt=class extends Q{constructor(e={}){super(e),this.itemType="select"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=i(t.id)||"",c=Ze(t,e._fpCtx);t.repeats&&(c=Bi(c,a,Vi(Ui(t.id),t.id,i))),t._lookupDisplayCache||(t._lookupDisplayCache={});let u=document.createElement("div");u.className="sc-trigger",u.tabIndex=0,u.setAttribute("role","combobox"),u.setAttribute("aria-haspopup","listbox"),u.setAttribute("aria-expanded","false");{let m=String(t.title||"").replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();m&&u.setAttribute("aria-label",m)}let d=document.createElement("span");d.className="sc-trigger-text",u.appendChild(d);let p=()=>{let m=c.find(b=>b.code===a);if(m){let b=Fi(t,m.code,m.display||m.code);t._optionPrefixes&&t._optionPrefixes[m.code]!==void 0&&(b=t._optionPrefixes[m.code]+"\xA0"+b),t._optionOrdinals&&t._optionOrdinals[m.code]!==void 0&&(b+="\xA0("+t._optionOrdinals[m.code]+")"),d.textContent=b,u.classList.remove("sc-trigger--empty")}else a&&t._lookupDisplayCache[a]?(d.textContent=t._lookupDisplayCache[a],u.classList.remove("sc-trigger--empty")):(d.textContent="\u2014 select \u2014",u.classList.add("sc-trigger--empty"))};p();let f=null,_=!1,v=-1,w=mt("csel"),S=()=>{f&&(f.remove(),f=null),_=!1,v=-1,u.setAttribute("aria-expanded","false"),u.removeAttribute("aria-activedescendant"),document.removeEventListener("mousedown",N,!0),document.removeEventListener("keydown",I,!0)},N=m=>{!l.contains(m.target)&&!f?.contains(m.target)&&S()},L=m=>{a=m,r(t.id,m),p(),o(),s(),D.notifyChanged(e.bus),S(),u.focus()},A=()=>f?[...f.querySelectorAll('[role="option"]')]:[],T=m=>{let b=A();b.length&&(v=Math.max(0,Math.min(m,b.length-1)),b.forEach((M,K)=>{M.id||(M.id=w+"-opt-"+K),M.classList.toggle("oc-opt--active",K===v)}),u.setAttribute("aria-activedescendant",b[v].id),b[v].scrollIntoView({block:"nearest"}))},I=m=>{if(!_)return;if(m.key==="Escape"){m.preventDefault(),m.stopPropagation(),S(),u.focus();return}let b=A();if(b.length){if(m.key==="ArrowDown")m.preventDefault(),m.stopPropagation(),T(v+1);else if(m.key==="ArrowUp")m.preventDefault(),m.stopPropagation(),T(v-1);else if(m.key==="Home")m.preventDefault(),m.stopPropagation(),T(0);else if(m.key==="End")m.preventDefault(),m.stopPropagation(),T(b.length-1);else if(m.key==="Enter"){m.preventDefault(),m.stopPropagation();let M=b[v]||c[0];M&&M.dataset.code!==void 0&&L(M.dataset.code)}}},B=(m,b="")=>{let M=b.toLowerCase(),K=t._choiceColumns;K&&K.length&&m.appendChild($i(K));for(let{code:W,display:Z}of c){let ee=Z||W;if(!(M&&!ee.toLowerCase().includes(M)&&!W.toLowerCase().includes(M)))if(K&&K.length){let F=vn(t,W),j=Hi(K,F,W,Z);j.setAttribute("role","option"),j.setAttribute("aria-selected",String(W===a)),j.dataset.code=W,W===a&&j.classList.add("oc-opt--sel"),j.addEventListener("mousedown",le=>{le.preventDefault(),L(W)}),m.appendChild(j)}else{let F=document.createElement("div");if(F.className="oc-opt",F.setAttribute("role","option"),F.setAttribute("aria-selected",String(W===a)),F.dataset.code=W,t._optionPrefixes&&t._optionPrefixes[W]!==void 0){let j=document.createElement("span");j.className="option-prefix",j.textContent=t._optionPrefixes[W]+"\xA0",F.appendChild(j)}if(t._optionOrdinals&&t._optionOrdinals[W]!==void 0){F.appendChild(document.createTextNode(ee));let j=document.createElement("span");j.className="option-ordinal",j.textContent="\xA0("+t._optionOrdinals[W]+")",F.appendChild(j)}else F.appendChild(document.createTextNode(ee));Ct(F,t,W),W===a&&F.classList.add("oc-opt--sel"),F.addEventListener("mousedown",j=>{j.preventDefault(),L(W)}),m.appendChild(F)}}},x=()=>{B(f)},R=()=>{let m=document.createElement("input");m.type="text",m.className="oc-search",m.placeholder="Search\u2026",m.dataset.testid="autocomplete-search";let b=document.createElement("div");B(b),m.addEventListener("input",()=>{b.innerHTML="",B(b,m.value)}),f.appendChild(m),f.appendChild(b),requestAnimationFrame(()=>m.focus())},y=()=>{let m=document.createElement("input");m.type="text",m.className="oc-search",m.placeholder="Search codes\u2026",m.dataset.testid="lookup-search";let b=document.createElement("div");b.className="oc-lookup-status",b.dataset.testid="lookup-status",b.style.display="none";let M=document.createElement("div"),K=null,W=Z=>{clearTimeout(K),b.textContent="Searching\u2026",b.style.display="",M.innerHTML="",K=setTimeout(async()=>{if(!t._answerValueSet){b.textContent="No ValueSet configured",b.style.display="";return}try{let ee=_n.getServer(t,null),F=await _n.expandWithFilter(t._answerValueSet,ee,Z);b.textContent=F.length?"":"No results",b.style.display=F.length?"none":"",M.innerHTML="";for(let{code:j,display:le}of F){let de=document.createElement("div");de.className="oc-opt",de.textContent=le||j,j===a&&de.classList.add("oc-opt--sel"),de.addEventListener("mousedown",Ae=>{Ae.preventDefault(),t._lookupDisplayCache[j]=le||j,L(j)}),M.appendChild(de)}O()}catch(ee){b.textContent="\u2717 "+(ee.message||"Search failed"),b.style.display="",M.innerHTML=""}},Z.trim()?300:0)};m.addEventListener("input",()=>W(m.value)),f.appendChild(m),f.appendChild(b),f.appendChild(M),requestAnimationFrame(()=>{m.focus(),W("")})},O=()=>{if(!f)return;let m=Wi(f,u);t._choiceColumns&&t._choiceColumns.length?(f.style.minWidth=m.width+"px",f.style.width="auto"):f.style.width=m.width+"px"},U=()=>{if(f){S();return}switch(f=document.createElement("div"),f.className="oc-drop",f.setAttribute("role","listbox"),t._itemControl){case"autocomplete":R();break;case"lookup":y();break;default:x();break}if(document.body.appendChild(f),_=!0,u.setAttribute("aria-expanded","true"),u.setAttribute("aria-controls",f.id||(f.id=w+"-list")),O(),document.addEventListener("mousedown",N,!0),t._itemControl!=="autocomplete"&&t._itemControl!=="lookup"){document.addEventListener("keydown",I,!0);let b=A().findIndex(M=>M.dataset.code===a);T(b>=0?b:0)}};return u.addEventListener("click",U),u.addEventListener("keydown",m=>{_||(m.key==="Enter"||m.key===" "||m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),U())}),l.appendChild(u),l}},St=class extends Q{constructor(e={}){super(e),this.itemType="radio"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=Ze(t,e._fpCtx);if(!a.length){let u=document.createElement("span");return u.className="radio-no-opts",u.textContent="(no options)",l.appendChild(u),l}t._columnCount>1?(l.classList.add("ctrl-wrap--columns"),l.style.setProperty("--col-count",t._columnCount)):t._choiceOrientation==="vertical"?l.classList.add("ctrl-wrap--vertical"):t._choiceOrientation==="horizontal"&&l.classList.add("ctrl-wrap--horizontal");let c="radio_"+t.id;if(t._itemControl==="atable")return l.appendChild(yn(a,u=>{let d=document.createElement("input");return d.type="radio",d.name=c,d.value=u,d.checked=i(t.id)===u,d.onchange=()=>{d.checked&&(r(t.id,u),o(),s(),D.notifyChanged(e.bus))},d})),l;for(let{code:u,display:d}of a){let p=document.createElement("label");p.className="radio-label";let f=document.createElement("input");if(f.type="radio",f.name=c,f.value=u,f.checked=i(t.id)===u,f.onchange=()=>{f.checked&&(r(t.id,u),o(),s(),D.notifyChanged(e.bus))},p.appendChild(f),t._optionPrefixes&&t._optionPrefixes[u]!==void 0){let _=document.createElement("span");_.className="option-prefix",_.textContent=t._optionPrefixes[u]+"\xA0",p.appendChild(_)}if(p.appendChild(document.createTextNode(d)),t._optionOrdinals&&t._optionOrdinals[u]!==void 0){let _=document.createElement("span");_.className="option-ordinal",_.textContent="\xA0("+t._optionOrdinals[u]+")",p.appendChild(_)}Ct(p,t,u),l.appendChild(p)}return l}},Rt=class extends Q{constructor(e={}){super(e),this.itemType="open-choice"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=Ze(t,e._fpCtx),c=document.createElement("div");c.className="oc-wrap";let u=document.createElement("input");u.type="text",u.className="oc-input",u.placeholder=t._openLabel||"Choose or type\u2026",u.value=i(t.id)!==void 0?i(t.id):"",u.autocomplete="off";let d=t._answerConstraint==="optionsOnly";d&&(u.readOnly=!0,u.placeholder=t._openLabel||"Choose\u2026",u.classList.add("choice-open-readonly"));let p=document.createElement("button");p.type="button",p.className="oc-btn",p.innerHTML="&#x25BE;",p.dataset.tipTitle="Show options",c.appendChild(u),c.appendChild(p);let f=null,_=!1,v=()=>{f&&(f.remove(),f=null),_=!1,document.removeEventListener("mousedown",w,!0)},w=L=>{!c.contains(L.target)&&!f?.contains(L.target)&&v()},S=L=>{u.value=L,r(t.id,L),o(),s(),D.notifyChanged(e.bus),v(),u.focus()},N=(L="")=>{f&&f.remove();let A=L.toLowerCase(),T=A?a.filter(({display:I,code:B})=>(I||B).toLowerCase().includes(A)):a;if(!T.length){_=!1;return}f=document.createElement("div"),f.className="oc-drop";for(let{display:I,code:B}of T){let x=I||B,R=document.createElement("div");R.className="oc-opt",R.textContent=x,x===u.value&&R.classList.add("oc-opt--sel"),R.addEventListener("mousedown",y=>{y.preventDefault(),S(x)}),f.appendChild(R)}document.body.appendChild(f),_=!0,Wi(f,c,u),document.addEventListener("mousedown",w,!0)};return u.addEventListener("input",()=>{d||(r(t.id,u.value),o(),s(),N(u.value))}),u.addEventListener("change",()=>{D.notifyChanged(e.bus)}),u.addEventListener("focus",()=>{a.length&&N(u.value)}),u.addEventListener("keydown",L=>{L.key==="Escape"&&v()}),p.addEventListener("click",L=>{L.stopPropagation(),_?v():(u.focus(),N(u.value))}),l.appendChild(c),l}},Tt=class extends Q{constructor(e={}){super(e),this.itemType="checklist",this.repeats=!0}supportsRepeat(){return!1}impliesRepeats(){return!0}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=Ze(t,e._fpCtx);if(!a.length){let _=document.createElement("span");return _.className="radio-no-opts",_.textContent="(no options)",l.appendChild(_),l}t._columnCount>1?(l.classList.add("ctrl-wrap--columns"),l.style.setProperty("--col-count",t._columnCount)):t._choiceOrientation==="horizontal"?l.classList.add("ctrl-wrap--horizontal"):l.classList.add("ctrl-wrap--vertical");let c=()=>{let _=i(t.id);return!_||_===""?new Set:new Set(String(_).split(","))},u=_=>[..._].join(","),d=t._optionExclusives||{},p=[],f=_=>{let v=document.createElement("input");return v.type="checkbox",v.value=_,v.checked=c().has(_),p.push(v),v.onchange=()=>{let w=c();if(v.checked)if(d[_]){w.clear(),w.add(_);for(let N of p)N.checked=N.value===_}else{w.add(_);for(let N of Object.keys(d))w.delete(N);for(let N of p)d[N.value]&&(N.checked=!1)}else w.delete(_);let S=u(w);r(t.id,S||void 0),o(),s(),D.notifyChanged(e.bus)},v};if(t._itemControl==="atable")return l.appendChild(yn(a,f)),l;for(let{code:_,display:v}of a){let w=document.createElement("label");w.className="radio-label";let S=f(_);if(w.appendChild(S),t._optionPrefixes&&t._optionPrefixes[_]!==void 0){let N=document.createElement("span");N.className="option-prefix",N.textContent=t._optionPrefixes[_]+"\xA0",w.appendChild(N)}if(w.appendChild(document.createTextNode(v)),t._optionOrdinals&&t._optionOrdinals[_]!==void 0){let N=document.createElement("span");N.className="option-ordinal",N.textContent="\xA0("+t._optionOrdinals[_]+")",w.appendChild(N)}Ct(w,t,_),l.appendChild(w)}return l}};H.set("select",wt);H.set("radio",St);H.set("checklist",Tt);H.set("open-choice",Rt);var ji=["January","February","March","April","May","June","July","August","September","October","November","December"],Js=["Su","Mo","Tu","We","Th","Fr","Sa"];function En(n){if(!n||n.length<10)return null;let e=parseInt(n.slice(0,4),10),t=parseInt(n.slice(5,7),10)-1,i=parseInt(n.slice(8,10),10),r=n.length>=16&&parseInt(n.slice(11,13),10)||0,s=n.length>=16&&parseInt(n.slice(14,16),10)||0;return isNaN(e)||isNaN(t)||isNaN(i)?null:{y:e,m:t,d:i,h:r,min:s}}function xn(n,e,t){return`${n}-${String(e+1).padStart(2,"0")}-${String(t).padStart(2,"0")}`}function zs(n,e){let t=En(n);if(!t)return"";let i=`${t.d} ${ji[t.m]} ${t.y}`;return e?`${i} \xB7 ${String(t.h).padStart(2,"0")}:${String(t.min).padStart(2,"0")}`:i}function bn({value:n="",onChange:e,className:t="",testid:i,placeholder:r,withTime:s=!1}={}){let o=r||(s?"\u2014 date & time \u2014":"\u2014 date \u2014"),l=n,a=e||null,c=document.createElement("div");c.className="sc-trigger dp-trigger"+(t?" "+t:""),c.tabIndex=0,i&&(c.dataset.testid=i);let u=document.createElement("span");u.className="sc-trigger-text",c.appendChild(u);let d=()=>{let y=zs(l,s);u.textContent=y||o,c.classList.toggle("sc-trigger--empty",!y),c.dataset.value=l};d();let p=null,f=0,_=0,v=null,w=null,S=null,N=0,L=0,A=()=>{p&&(p.remove(),p=null),document.removeEventListener("mousedown",T,!0),document.removeEventListener("keydown",I,!0)},T=y=>{!c.contains(y.target)&&!p?.contains(y.target)&&A()},I=y=>{y.key==="Escape"&&(A(),c.focus())},B=()=>{if(p){A();return}let y=En(l),O=new Date;f=y?y.y:O.getFullYear(),_=y?y.m:O.getMonth(),v=y?y.y:null,w=y?y.m:null,S=y?y.d:null,N=y?y.h:0,L=y?y.min:0,p=document.createElement("div"),p.className="dp-cal"+(s?" dp-cal--dt":""),document.body.appendChild(p),R(),x(),document.addEventListener("mousedown",T,!0),document.addEventListener("keydown",I,!0)},x=()=>{if(!p)return;let y=c.getBoundingClientRect();p.style.left=y.left+"px";let O=p.offsetHeight;y.bottom+O+4<=window.innerHeight?p.style.top=y.bottom+2+"px":p.style.top=Math.max(4,y.top-O-2)+"px"},R=()=>{p.innerHTML="";let y=f,O=_,U=new Date,m=U.getFullYear(),b=U.getMonth(),M=U.getDate(),K=s?v!==null?{y:v,m:w,d:S}:null:En(l),W=document.createElement("div");W.className="dp-hdr";let Z=document.createElement("button");Z.type="button",Z.className="dp-nav-btn",Z.textContent="\u2039",Z.addEventListener("mousedown",G=>{G.preventDefault(),_===0?(_=11,f--):_--,R()});let ee=document.createElement("span");ee.className="dp-month-lbl",ee.textContent=`${ji[O]} ${y}`;let F=document.createElement("button");F.type="button",F.className="dp-nav-btn",F.textContent="\u203A",F.addEventListener("mousedown",G=>{G.preventDefault(),_===11?(_=0,f++):_++,R()}),W.append(Z,ee,F),p.appendChild(W);let j=document.createElement("div");j.className="dp-grid";for(let G of Js){let q=document.createElement("div");q.className="dp-dn",q.textContent=G,j.appendChild(q)}p.appendChild(j);let le=document.createElement("div");le.className="dp-grid";let de=new Date(y,O,1).getDay(),Ae=new Date(y,O+1,0).getDate();for(let G=0;G<de;G++){let q=document.createElement("div");q.className="dp-day dp-day--blank",le.appendChild(q)}for(let G=1;G<=Ae;G++){let q=document.createElement("div"),g=y===m&&O===b&&G===M,C=K&&y===K.y&&O===K.m&&G===K.d;q.className="dp-day"+(g?" dp-day--today":"")+(C?" dp-day--sel":""),q.textContent=G;let P=y,k=O,oe=G;q.addEventListener("mousedown",ut=>{ut.preventDefault(),s?(v=P,w=k,S=oe,R()):(l=xn(P,k,oe),d(),a&&a(l),A(),c.focus())}),le.appendChild(q)}p.appendChild(le);let ve=document.createElement("div");if(ve.className="dp-footer",s){let G=document.createElement("div");G.className="dp-time-row";let q=document.createElement("input");q.type="number",q.min="0",q.max="23",q.step="1",q.className="dp-time-inp",q.value=String(N).padStart(2,"0"),q.addEventListener("mousedown",oe=>oe.stopPropagation()),q.addEventListener("input",()=>{N=Math.min(23,Math.max(0,parseInt(q.value,10)||0))}),q.addEventListener("blur",()=>{q.value=String(N).padStart(2,"0")});let g=document.createElement("span");g.className="dp-time-sep",g.textContent=":";let C=document.createElement("input");C.type="number",C.min="0",C.max="59",C.step="1",C.className="dp-time-inp",C.value=String(L).padStart(2,"0"),C.addEventListener("mousedown",oe=>oe.stopPropagation()),C.addEventListener("input",()=>{L=Math.min(59,Math.max(0,parseInt(C.value,10)||0))}),C.addEventListener("blur",()=>{C.value=String(L).padStart(2,"0")}),G.append(q,g,C),ve.appendChild(G);let P=document.createElement("button");P.type="button",P.className="dp-footer-btn dp-footer-btn--set",P.textContent="Set",P.disabled=v===null,P.addEventListener("mousedown",oe=>{oe.preventDefault(),v!==null&&(l=`${xn(v,w,S)}T${String(N).padStart(2,"0")}:${String(L).padStart(2,"0")}:00`,d(),a&&a(l),A(),c.focus())});let k=document.createElement("button");k.type="button",k.className="dp-footer-btn dp-footer-btn--clear",k.textContent="Clear",k.addEventListener("mousedown",oe=>{oe.preventDefault(),l="",d(),a&&a(""),A(),c.focus()}),ve.append(P,k)}else{let G=document.createElement("button");G.type="button",G.className="dp-footer-btn",G.textContent="Today",G.addEventListener("mousedown",g=>{g.preventDefault(),l=xn(m,b,M),d(),a&&a(l),A(),c.focus()});let q=document.createElement("button");q.type="button",q.className="dp-footer-btn dp-footer-btn--clear",q.textContent="Clear",q.addEventListener("mousedown",g=>{g.preventDefault(),l="",d(),a&&a(""),A(),c.focus()}),ve.append(G,q)}p.appendChild(ve),setTimeout(x,0)};return c.addEventListener("click",B),c.addEventListener("keydown",y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),B()),y.key==="Escape"&&A()}),c._dpSetValue=y=>{l=y||"",d(),a&&a(l)},{el:c,getValue(){return l},setValue(y){l=y||"",d()}}}var Nt=class extends Q{constructor(e={}){super(e),this.itemType="date"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=bn({value:i(t.id)||"",onChange:c=>{r(t.id,c||void 0),o(),s(),D.notifyChanged(e.bus)},className:"ctrl-input--date",testid:"date-input"});return l.appendChild(a.el),l}},At=class extends Q{constructor(e={}){super(e),this.itemType="dateTime"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=bn({value:i(t.id)||"",onChange:c=>{r(t.id,c||void 0),o(),s(),D.notifyChanged(e.bus)},withTime:!0,className:"ctrl-input--date",testid:"datetime-input"});return l.appendChild(a.el),l}},Ot=class extends Q{constructor(e={}){super(e),this.itemType="time"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=document.createElement("input");a.type="time",a.className="ctrl-input ctrl-input--time",a.dataset.testid="time-input";let c=i(t.id);return a.value=c?String(c).slice(0,5):"",a.addEventListener("change",()=>{let u=a.value;r(t.id,u?u+":00":void 0),o(),s(),D.notifyChanged(e.bus)}),l.appendChild(a),l}};H.set("date",Nt);H.set("dateTime",At);H.set("time",Ot);var Ys=[{label:"Yes",value:!0},{label:"No",value:!1},{label:"Not Answered",value:void 0}],Lt=class extends Q{constructor(e={}){super(e),this.itemType="checkbox"}supportsRepeat(){return!1}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=document.createElement("div");a.className="bool-seg",a.setAttribute("role","group"),a.setAttribute("aria-label",t.text||"Yes/No question");let c=i(t.id);for(let u of Ys){let d=document.createElement("button");d.type="button",d.className="bool-seg__btn",d.textContent=u.label;let p=u.value===c;d.classList.toggle("bool-seg__btn--active",p),d.setAttribute("aria-pressed",String(p)),d.addEventListener("click",()=>{a.querySelectorAll(".bool-seg__btn").forEach(f=>{f.classList.remove("bool-seg__btn--active"),f.setAttribute("aria-pressed","false")}),d.classList.add("bool-seg__btn--active"),d.setAttribute("aria-pressed","true"),r(t.id,u.value),o(),s(),D.notifyChanged(e.bus)}),a.appendChild(d)}return l.appendChild(a),l}};H.set("checkbox",Lt);var It=class extends Q{constructor(e={}){super(e),this.itemType="url"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y();l.className="ctrl-wrap ctrl-wrap--text";let a=document.createElement("textarea");a.className="ctrl-input--text",a.rows=1,a.placeholder=t._entryFormat||"https://",a.value=i(t.id)!==void 0?i(t.id):"";let c=()=>{a.style.height="auto",a.style.height=a.scrollHeight+"px"},u=w=>{try{return new URL(w),!0}catch{return!1}};t._maxLength&&(a.maxLength=t._maxLength),t._minLength&&(a.minLength=t._minLength);let d=document.createElement("span");d.className="ctrl-err ctrl-err--ml",d.textContent="Invalid URL",d.style.display="none";let p=(()=>{if(!t._regex)return null;try{return new RegExp(t._regex)}catch{return null}})(),f=()=>{t._minLength&&a.value.length>0&&a.value.length<t._minLength?(d.textContent="Min\xA0"+t._minLength+"\xA0chars",d.style.display="inline"):p&&a.value.length>0&&!p.test(a.value)?(d.textContent="Does not match pattern",d.style.display="inline"):(d.textContent="Invalid URL",d.style.display=a.value===""||u(a.value)?"none":"inline")};(t._interacted||a.value&&!u(a.value))&&f();let _=null;if(t._maxLength){_=document.createElement("span"),_.className="ctrl-char-counter",_.dataset.testid="char-counter";let w=()=>{_.textContent=a.value.length+"\xA0/\xA0"+t._maxLength};w(),a.addEventListener("input",w)}let v=null;return a.oninput=()=>{r(t.id,a.value),c(),clearTimeout(v),v=setTimeout(()=>{o(),s()},200)},a.onchange=()=>{D.notifyChanged(e.bus)},a.addEventListener("blur",()=>{t._interacted=!0,f()}),l.appendChild(a),l.appendChild(d),_&&l.appendChild(_),a.value&&requestAnimationFrame(c),l}};H.set("url",It);var Dt=class extends Q{constructor(e={}){super(e),this.itemType="attachment"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=document.createElement("input");a.type="file",a.className="file-input-hidden",t._mimeTypes&&t._mimeTypes.length&&(a.accept=t._mimeTypes.join(","));let c=document.createElement("button");c.type="button",c.className="btn-file",c.textContent="Choose file",c.onclick=()=>a.click();let u=document.createElement("span");u.className="file-name-tag",u.textContent=i(t.id)?i(t.id).name:"No file chosen";let d=document.createElement("span");d.className="file-size-hint",t._maxFileSizeMB!==void 0&&(d.textContent=`Max ${t._maxFileSizeMB} MB`);let p=document.createElement("span");return p.className="file-size-hint",p.dataset.testid="mime-hint",t._mimeTypes&&t._mimeTypes.length&&(p.textContent=t._mimeTypes.join(", ")),a.onchange=()=>{let f=a.files[0]||null;if(f&&t._maxFileSizeMB!==void 0&&f.size>t._maxFileSizeMB*1024*1024){Ge(`File too large \u2014 max ${t._maxFileSizeMB} MB allowed`),a.value="",r(t.id,null),o(),s(),D.notifyChanged(e.bus);return}u.classList.remove("file-name-tag--error"),r(t.id,f?{name:f.name,size:f.size,type:f.type}:null),u.textContent=f?f.name:"No file chosen",o(),s(),D.notifyChanged(e.bus)},l.appendChild(a),l.appendChild(c),l.appendChild(u),t._maxFileSizeMB!==void 0&&l.appendChild(d),t._mimeTypes&&t._mimeTypes.length&&l.appendChild(p),l}};H.set("attachment",Dt);function kt({items:n=[],value:e="",onChange:t,className:i="",testid:r,searchable:s,ariaLabel:o}={}){let l=n.slice(),a=e,c=t||null,u=-1,d=mt("csel"),p=document.createElement("div");p.className="sc-trigger"+(i?" "+i:""),p.tabIndex=0,p.setAttribute("role","combobox"),p.setAttribute("aria-haspopup","listbox"),p.setAttribute("aria-expanded","false"),o&&p.setAttribute("aria-label",o),r&&(p.dataset.testid=r);let f=document.createElement("span");f.className="sc-trigger-text",p.appendChild(f);let _=()=>{let R=l.find(y=>y.value===a);f.textContent=R?R.label:"\u2014 "+(a||"select")+" \u2014",p.classList.toggle("sc-trigger--empty",!R),p.dataset.value=a};_();let v=null,w=()=>{v&&(v.remove(),v=null),u=-1,p.setAttribute("aria-expanded","false"),p.removeAttribute("aria-activedescendant"),document.removeEventListener("mousedown",S,!0),document.removeEventListener("keydown",A,!0)},S=R=>{!p.contains(R.target)&&!v?.contains(R.target)&&w()},N=()=>v?[...v.querySelectorAll(".oc-opt")].filter(R=>R.style.display!=="none"):[],L=R=>{let y=N();if(!y.length)return;u=Math.max(0,Math.min(R,y.length-1)),y.forEach((U,m)=>U.classList.toggle("oc-opt--active",m===u));let O=y[u];p.setAttribute("aria-activedescendant",O.id),O.scrollIntoView({block:"nearest"})},A=R=>{if(R.key==="Escape"){w(),p.focus();return}let y=N();if(y.length){if(R.key==="ArrowDown")R.preventDefault(),L(u+1);else if(R.key==="ArrowUp")R.preventDefault(),L(u-1);else if(R.key==="Home")R.preventDefault(),L(0);else if(R.key==="End")R.preventDefault(),L(y.length-1);else if(R.key==="Enter"){R.preventDefault();let O=y[u]||y[0],U=l.find(m=>m.value===O.dataset.val);U&&T(U)}}},T=R=>{a=R.value,_(),c&&c(R.value,R),w(),p.focus()},I=()=>{if(v){w();return}let R=s!==void 0?s:l.length>8;v=document.createElement("div"),v.className="oc-drop csel-drop",v.dataset.testid="csel-drop",v.id=d+"-list",v.setAttribute("role","listbox"),p.setAttribute("aria-controls",v.id),p.setAttribute("aria-expanded","true");let y=()=>{let U=N().findIndex(m=>m.dataset.val===a);L(U>=0?U:0)};if(R){let O=document.createElement("input");O.type="text",O.className="vis-q-sel-search",O.placeholder="Search\u2026",O.addEventListener("mousedown",m=>m.stopPropagation()),v.appendChild(O);let U=B(v);O.addEventListener("input",()=>{let m=O.value.toLowerCase();for(let b of U){let M=!m||b.dataset.val.toLowerCase().includes(m)||b.textContent.toLowerCase().includes(m);b.style.display=M?"":"none"}L(0)}),document.body.appendChild(v),x(),y(),document.addEventListener("mousedown",S,!0),document.addEventListener("keydown",A,!0),setTimeout(()=>O.focus(),0)}else B(v),document.body.appendChild(v),x(),y(),document.addEventListener("mousedown",S,!0),document.addEventListener("keydown",A,!0)},B=R=>{let y=[];return l.forEach((O,U)=>{let m=document.createElement("div");m.className="oc-opt"+(O.value===a?" oc-opt--sel":""),m.id=d+"-opt-"+U,m.setAttribute("role","option"),m.setAttribute("aria-selected",String(O.value===a)),m.textContent=O.label,m.dataset.val=O.value,O.title&&(m.dataset.tipTitle=O.title),O.tipBody&&(m.dataset.tipBody=O.tipBody),m.addEventListener("mousedown",b=>{b.preventDefault(),T(O)}),R.appendChild(m),y.push(m)}),y},x=()=>{let R=p.getBoundingClientRect(),O=window.innerHeight-R.bottom-4,U=R.top-4,m=200;if(v.style.left=R.left+"px",v.style.minWidth=R.width+"px",O>=Math.min(m,U)){let b=Math.min(m,Math.max(O,60));v.style.maxHeight=b+"px",v.style.top=R.bottom+2+"px"}else{let b=Math.min(m,Math.max(U,60));v.style.maxHeight=b+"px",v.style.top=R.top-Math.min(b,v.offsetHeight||b)-2+"px"}};return p.addEventListener("click",I),p.addEventListener("keydown",R=>{R.key==="Enter"||R.key===" "||R.key==="ArrowDown"||R.key==="ArrowUp"?(R.preventDefault(),v||I()):R.key==="Escape"&&w()}),{el:p,getValue(){return a},setValue(R){if(a=R,_(),v)for(let y of v.querySelectorAll(".oc-opt")){let O=y.dataset.val===a;y.classList.toggle("oc-opt--sel",O),y.setAttribute("aria-selected",String(O))}},setOptions(R){l=R.slice();let y=a;l.find(O=>O.value===y)||(a=l[0]?.value??""),_(),v&&w()},setOnChange(R){c=R}}}var Xs="fhirqb.oauthToken.",Cn="fhirqb.oauthState.",Ks="oauth-callback",Zs={FHIR_BASE:{authorizeUrl:J.FHIR_BASE_OAUTH_AUTHORIZE_URL,tokenUrl:J.FHIR_BASE_OAUTH_TOKEN_URL,clientId:J.FHIR_BASE_OAUTH_CLIENT_ID,scope:J.FHIR_BASE_OAUTH_SCOPE},SDC_SERVER:{authorizeUrl:J.SDC_SERVER_OAUTH_AUTHORIZE_URL,tokenUrl:J.SDC_SERVER_OAUTH_TOKEN_URL,clientId:J.SDC_SERVER_OAUTH_CLIENT_ID,scope:J.SDC_SERVER_OAUTH_SCOPE}};function wn(n){let e=Zs[n];if(!e)return null;let t=te.get(e.authorizeUrl),i=te.get(e.tokenUrl),r=te.get(e.clientId);return!t||!i||!r?null:{authorizeUrl:t,tokenUrl:i,clientId:r,scope:te.get(e.scope)||""}}function Sn(n){return wn(n)!=null}function Te(n,e){return`${Xs}${n}.${e}`}function Ue(n){let e=localStorage.getItem(Te(n,"accessToken")),t=Number(localStorage.getItem(Te(n,"expiresAt")));return!e||!t?null:{accessToken:e,expiresAt:t,refreshToken:localStorage.getItem(Te(n,"refreshToken"))}}function Qi(n,{accessToken:e,refreshToken:t,expiresIn:i}){localStorage.setItem(Te(n,"accessToken"),e),localStorage.setItem(Te(n,"expiresAt"),String(Date.now()+(Number(i)||3600)*1e3)),t&&localStorage.setItem(Te(n,"refreshToken"),t)}function qe(n){["accessToken","refreshToken","expiresAt"].forEach(e=>localStorage.removeItem(Te(n,e)))}function Rn(n){let e=Ue(n);return!e||Date.now()>=e.expiresAt?null:e.accessToken}function Ji(n){let e="";for(let t of n)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Gi(n=48){let e=new Uint8Array(n);return crypto.getRandomValues(e),Ji(e)}async function ea(n){let e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n));return Ji(new Uint8Array(e))}async function zi(n,e){let t=await fetch(n.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e,signal:AbortSignal.timeout(15e3)});if(!t.ok)throw new Error(`Token endpoint returned HTTP ${t.status}`);return t.json()}async function ta(n){let e=wn(n);if(!e)throw new Error(`No OAuth config for ${n} \u2014 set it up in Settings first.`);let t=Gi(18),i=Gi(48),r=await ea(i);sessionStorage.setItem(Cn+t,i);let s=new URL(Ks,window.location.href).toString(),o=new URL(e.authorizeUrl);o.searchParams.set("response_type","code"),o.searchParams.set("client_id",e.clientId),o.searchParams.set("redirect_uri",s),o.searchParams.set("state",t),o.searchParams.set("code_challenge",r),o.searchParams.set("code_challenge_method","S256"),e.scope&&o.searchParams.set("scope",e.scope);let l=window.open(o.toString(),"fhirqb-oauth-login","width=480,height=680");if(!l)throw sessionStorage.removeItem(Cn+t),new Error("Popup blocked \u2014 please allow popups for this site and try again.");return new Promise((a,c)=>{let u=!1,d=()=>{window.removeEventListener("message",p),clearInterval(f),sessionStorage.removeItem(Cn+t),l.closed||l.close()};function p(_){if(_.origin===window.location.origin&&!(_.data?.source!=="fhirqb-oauth-callback"||_.data.state!==t)){if(u=!0,d(),_.data.error){c(new Error(_.data.error));return}zi(e,new URLSearchParams({grant_type:"authorization_code",code:_.data.code,redirect_uri:s,client_id:e.clientId,code_verifier:i})).then(v=>{Qi(n,{accessToken:v.access_token,refreshToken:v.refresh_token,expiresIn:v.expires_in}),a(v.access_token)},c)}}let f=setInterval(()=>{l.closed&&!u&&(u=!0,d(),c(new Error("login-cancelled")))},500);window.addEventListener("message",p)})}async function et(n){let e=wn(n),t=Ue(n);if(!e||!t?.refreshToken)throw new Error("no-refresh-token");let i=await zi(e,new URLSearchParams({grant_type:"refresh_token",refresh_token:t.refreshToken,client_id:e.clientId}));return Qi(n,{accessToken:i.access_token,refreshToken:i.refresh_token||t.refreshToken,expiresIn:i.expires_in}),i.access_token}async function Tn(n){if(!Sn(n))return null;let e=Rn(n);if(e)return e;if(Ue(n)?.refreshToken)try{return await et(n)}catch{qe(n)}return ta(n)}var Yi=["hapi.fhir.org","r4.smarthealthit.org","launch.smarthealthit.org","test.ahdis.ch","terminology.hl7.org"];function Mt(n,e){let t=((e??te.get(J.CORS_PROXY))||"").replace(/\/$/,"");if(!t)return n;try{let{hostname:i}=new URL(n);if(Yi.includes(i))return n}catch{}return`${t}?url=${encodeURIComponent(n)}`}async function tt(n,e){try{if(Yi.includes(new URL(n).hostname))return{}}catch{}let t=e&&Rn(e);return t?{Authorization:`Bearer ${t}`}:Li()}async function Pt(n,e){if(e)try{await et(e)}catch{qe(e)}return tt(n,e)}function na(n){let e=n.resourceType;if(["Patient","Practitioner","RelatedPerson","Person"].includes(e)){let t=n.name?.[0];if(t){let i=t.family||"",r=(t.given||[]).join(" ");return[i,r].filter(Boolean).join(", ")||t.text||n.id}}if(["Organization","Location","HealthcareService"].includes(e))return n.name||n.id;if(["Encounter","EpisodeOfCare"].includes(e)){let t=n.subject?.display||n.patient?.display||"",i=n.status?`[${n.status}]`:"",r=n.period?.start?.slice(0,10)||"";return[t,r,i].filter(Boolean).join(" ")||n.id}if(["Condition","Observation","Procedure"].includes(e)){let t=n.code?.coding?.[0]?.display||n.code?.text||"",i=n.subject?.display||"";return[t,i].filter(Boolean).join(" \u2014 ")||n.id}return n.name||n.title||n.id}function ia(n){return["Patient","Practitioner","RelatedPerson","Person"].includes(n)||["Organization","Location","HealthcareService","Medication"].includes(n)?"name":["Encounter","EpisodeOfCare","Condition","Observation","Procedure","DiagnosticReport","MedicationRequest","ServiceRequest"].includes(n)?"patient.name":["Medication","Substance"].includes(n)?"code":"_id"}async function Xi(n,e,t=10,i={}){let r=((i.fhirBase??te.get(J.FHIR_BASE))||"").replace(/\/$/,"");if(!r||!n||!e.trim())return[];let s=new URLSearchParams({_count:String(t)});s.set(ia(n),e);let o=`${r}/${n}?${s}`,l=Mt(o,i.corsProxy),a=i.signal?AbortSignal.any([i.signal,AbortSignal.timeout(6e3)]):AbortSignal.timeout(6e3),c=await fetch(l,{headers:{Accept:"application/fhir+json",...await tt(o,"FHIR_BASE")},signal:a});if(c.status===401&&(c=await fetch(l,{headers:{Accept:"application/fhir+json",...await Pt(o,"FHIR_BASE")},signal:a})),!c.ok){let d=`HTTP ${c.status}`;try{let f=(await c.json())?.issue?.[0]?.diagnostics;f&&(d+=" \u2014 "+f.substring(0,120))}catch{}throw new Error(d)}return((await c.json()).entry||[]).map(d=>({id:d.resource?.id||"",display:na(d.resource)})).filter(d=>d.id)}async function Ki(n,e={}){let t=((e.fhirBase??te.get(J.FHIR_BASE))||"").replace(/\/$/,""),i=/^([A-Za-z]+)\/([^/]+)$/.exec((n||"").trim());if(!t)throw new Error("FHIR Base Server not configured.");if(!i)throw new Error(`Invalid reference: "${n}" (expected "<ResourceType>/<id>")`);let r=`${t}/${i[1]}/${i[2]}`,s=Mt(r,e.corsProxy),o=e.signal?AbortSignal.any([e.signal,AbortSignal.timeout(6e3)]):AbortSignal.timeout(6e3),l=await fetch(s,{headers:{Accept:"application/fhir+json",...e.authHeader??await tt(r,"FHIR_BASE")},signal:o});if(l.status===401&&!e.authHeader&&(l=await fetch(s,{headers:{Accept:"application/fhir+json",...await Pt(r,"FHIR_BASE")},signal:o})),!l.ok){let a=`HTTP ${l.status}`;try{let u=(await l.json())?.issue?.[0]?.diagnostics;u&&(a+=" \u2014 "+u.substring(0,120))}catch{}throw new Error(a)}return l.json()}var ra=350,sa=150;function Zi(n,e){let{getResourceType:t,isEnabled:i=()=>!0,getContext:r=()=>({}),onSelect:s,extraClassName:o="",searchOnFocus:l=!1}=e,a=document.createElement("div");a.className=o?`ref-search-drop ${o}`:"ref-search-drop",a.style.display="none",document.body.appendChild(a);let c=()=>{let S=n.getBoundingClientRect();a.style.position="fixed",a.style.top=S.bottom+3+"px",a.style.left=S.left+"px",a.style.width=S.width+"px"},u=e.positionDrop?()=>e.positionDrop(n,a):c,d=()=>{a.style.display="none"},p=()=>{u(),a.style.display="block"},f=null,_=null,v=(S,N)=>{if(a.innerHTML="",S.length)S.forEach(L=>{let A=document.createElement("button");A.type="button",A.className="ref-search-item";let T=document.createElement("span");T.className="ref-search-name",T.textContent=L.display;let I=document.createElement("span");I.className="ref-search-id",I.textContent=L.id,A.append(T,I),A.addEventListener("mousedown",B=>{B.preventDefault(),s(L,n),d()}),a.appendChild(A)});else{let L=document.createElement("div");L.className="ref-search-empty",L.textContent=N.trim()?"No results":"Type to search\u2026",a.appendChild(L)}p()},w=async S=>{let N=t();if(!N||!i()){d();return}_?.abort();let L=new AbortController;_=L;let A=document.createElement("div");A.className="ref-search-empty",A.textContent="Searching\u2026",a.innerHTML="",a.appendChild(A),p();try{let{fhirBase:T,corsProxy:I}=r(),B=await Xi(N,S,10,{fhirBase:T,corsProxy:I,signal:L.signal});if(L.signal.aborted)return;v(B,S)}catch(T){if(L.signal.aborted||T.name==="AbortError")return;let I=document.createElement("div");I.className="ref-search-empty ref-search-error",I.textContent=T.message||"Search failed",a.innerHTML="",a.appendChild(I)}};return n.addEventListener("input",()=>{clearTimeout(f);let S=n.value.trim();if(!S){d();return}f=setTimeout(()=>w(S),ra)}),l&&n.addEventListener("focus",()=>{n.value.trim()&&w(n.value.trim())}),n.addEventListener("blur",()=>setTimeout(d,sa)),{close:d,destroy(){clearTimeout(f),_?.abort(),a.remove()}}}var Vt=new Set(["checkbox","text","number","date","dateTime","time","url","attachment","open-choice","decimal","integer","quantity","reference","radio","select","checklist"]),aa=new Set(["text","number","date","dateTime","time","open-choice","decimal","integer","radio","select","checklist"]),ce=n=>n.mandatory===!0;function nt(n,e,t,i){if(!n.constraint||!n.constraint.length||!e||!t)return!0;let r={resource:t,...i};for(let s of n.constraint)if(!(!s.expression||s.severity!=="error"))try{let o=e.evaluate(t,s.expression,r,se());if(!o||o.length===0||o[0]===!1)return!1}catch{return!1}return!0}function oa(n){try{return new URL(n),!0}catch{return!1}}function Nn(n,e){if(!e)return!1;let t=n&&typeof n=="object"?n.reference:"";if(!t)return!1;let i=String(t).split("/")[0];return!!i&&i!==e}function Ne(n,e,t){if(t&&t.length){let i=e;e={get:r=>i.get(r,t)}}if(n._calculatedExpr&&n._readOnly)return n.itemType!=="checkbox"?!0:e.get(n.id)===!0;if(n.itemType==="reference"&&n.referenceResource&&Nn(e.get(n.id),n.referenceResource))return!1;if(n.itemType==="checkbox"&&ce(n)){let i=e.get(n.id);return i===!0||i===!1}if(n.itemType==="url"){let i=e.get(n.id);if(!i||i==="")return!ce(n);if(!oa(i))return!1;if(n._regex)try{if(!new RegExp(n._regex).test(i))return!1}catch{}return!0}if(n.itemType==="attachment"){let i=e.get(n.id);return i&&n._maxFileSizeMB!==void 0&&i.size>n._maxFileSizeMB*1024*1024?!1:ce(n)?i!=null:!0}if(n.itemType==="integer"||n.itemType==="decimal"||n.itemType==="number"){let i=e.get(n.id);if(i!==void 0&&i!==""&&i!==null){let r=Number(i);if(!isFinite(r)||n._minValue!==void 0&&r<Number(n._minValue)||n._maxValue!==void 0&&r>Number(n._maxValue))return!1;if(n._maxDecimalPlaces!==void 0){let s=String(i).split(".");if(s.length>1&&s[1].length>n._maxDecimalPlaces)return!1}}return ce(n)?i!==void 0&&i!==""&&i!==null:!0}if(n.mandatory===!1)return!0;if(n.itemType==="reference"){if(!ce(n))return!0;let i=e.get(n.id);return i!=null&&typeof i=="object"&&!!i.reference}if(n.itemType==="quantity"){if(!ce(n))return!0;let i=e.get(n.id);return i!=null&&typeof i=="object"&&i.value!==void 0&&!!i.unit}if(n._minLength){let i=e.get(n.id);if(i&&String(i).length>0&&String(i).length<n._minLength)return!1}if(n._regex){let i=e.get(n.id);if(i&&String(i).length>0)try{if(!new RegExp(n._regex).test(String(i)))return!1}catch{}}if(ce(n)&&aa.has(n.itemType)){let i=e.get(n.id);return i!==void 0&&i!==""&&i!==null}return!0}var la=["Account","ActivityDefinition","AdverseEvent","AllergyIntolerance","Appointment","AppointmentResponse","AuditEvent","Basic","Binary","BiologicallyDerivedProduct","BodyStructure","Bundle","CapabilityStatement","CarePlan","CareTeam","ChargeItem","ChargeItemDefinition","Claim","ClaimResponse","ClinicalImpression","CodeSystem","Communication","CommunicationRequest","CompartmentDefinition","Composition","ConceptMap","Condition","Consent","Contract","Coverage","CoverageEligibilityRequest","CoverageEligibilityResponse","DetectedIssue","Device","DeviceDefinition","DeviceMetric","DeviceRequest","DeviceUseStatement","DiagnosticReport","DocumentManifest","DocumentReference","Encounter","Endpoint","EnrollmentRequest","EnrollmentResponse","EpisodeOfCare","EventDefinition","ExplanationOfBenefit","FamilyMemberHistory","Flag","Goal","Group","GuidanceResponse","HealthcareService","ImagingStudy","Immunization","ImmunizationEvaluation","ImmunizationRecommendation","ImplementationGuide","InsurancePlan","Invoice","Library","Linkage","List","Location","Measure","MeasureReport","Media","Medication","MedicationAdministration","MedicationDispense","MedicationKnowledge","MedicationRequest","MedicationStatement","MessageDefinition","MessageHeader","MolecularSequence","NamingSystem","NutritionOrder","Observation","ObservationDefinition","OperationDefinition","OperationOutcome","Organization","OrganizationAffiliation","Parameters","Patient","PaymentNotice","PaymentReconciliation","Person","PlanDefinition","Practitioner","PractitionerRole","Procedure","Provenance","Questionnaire","QuestionnaireResponse","RelatedPerson","RequestGroup","ResearchStudy","ResearchSubject","RiskAssessment","Schedule","SearchParameter","ServiceRequest","Slot","Specimen","SpecimenDefinition","StructureDefinition","StructureMap","Subscription","Substance","SupplyDelivery","SupplyRequest","Task","TerminologyCapabilities","TestReport","TestScript","ValueSet","VerificationResult","VisionPrescription"],Bt=class extends Q{constructor(e={}){super(e),this.itemType="reference"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y();l.classList.add("ctrl-wrap--joined");let a=i(t.id),c=a&&a.reference||"",u=c.indexOf("/"),d=u>-1?c.slice(0,u):t.referenceResource||"",p=u>-1?c.slice(u+1):"",f=t.referenceResource?[{value:t.referenceResource,label:t.referenceResource}]:[{value:"",label:"\u2014 type \u2014"},...la.map(T=>({value:T,label:T}))],_=kt({items:f,value:d||"",className:"ref-type-sel",onChange:()=>{A(),D.notifyChanged(e.bus)}}),v=document.createElement("span");v.textContent="/",v.className="ref-sep";let w=document.createElement("input");w.type="text",w.placeholder=e.fhirBase?"search or enter id":"id",w.value=p,w.className="ref-id-input";let S=document.createElement("span");S.className="ctrl-err ctrl-err--ml",S.textContent="id is required";let N=document.createElement("span");N.className="ctrl-err ctrl-err--ml",N.dataset.testid="ref-type-error",N.style.display="none";let L=()=>{let T=i(t.id),I=!!t.referenceResource&&Nn(T,t.referenceResource);N.textContent=I?`Expected ${t.referenceResource}`:"",N.style.display=I?"inline":"none"},A=()=>{let T=_.getValue(),I=w.value.trim();S.style.display=T&&!I?"inline":"none",r(t.id,T&&I?{reference:T+"/"+I}:void 0),L(),o(),s()};if(w.oninput=A,w.onchange=()=>{D.notifyChanged(e.bus)},e.fhirBase){let T=document.createElement("div");T.className="ref-search-wrap";let I=Zi(w,{getResourceType:()=>_.getValue(),getContext:()=>({fhirBase:e.fhirBase,corsProxy:e.corsProxy}),searchOnFocus:!0,positionDrop:(B,x)=>{let R=B.getBoundingClientRect(),y=240;x.style.position="fixed",x.style.top=R.bottom+4+"px",x.style.width=y+"px",x.style.maxHeight="220px";let O=R.right-y;x.style.left=Math.max(4,O)+"px"},onSelect:B=>{w.value=B.id,A(),D.notifyChanged(e.bus)}});t._ac?.signal&&t._ac.signal.addEventListener("abort",()=>I.destroy(),{once:!0}),T.appendChild(w),l.appendChild(_.el),l.appendChild(v),l.appendChild(T)}else l.appendChild(_.el),l.appendChild(v),l.appendChild(w);if(l.appendChild(S),l.appendChild(N),L(),t._referenceProfiles?.length){let T=document.createElement("span");T.className="ctrl-ref-info",T.textContent="Profile: "+t._referenceProfiles.join(", "),T.dataset.tipTitle="questionnaire-referenceProfile",T.dataset.tipBody=`Allowed profiles:
33
+ `+t._referenceProfiles.join(`
34
+ `),T.dataset.tipFhir="item.extension[questionnaire-referenceProfile].valueCanonical",T.dataset.tipSpec="R4",l.appendChild(T)}if(t._referenceFilter){let T=document.createElement("span");T.className="ctrl-ref-info",T.textContent="Filter: "+t._referenceFilter,T.dataset.tipTitle="questionnaire-referenceFilter",T.dataset.tipBody=`Server-side filter expression:
35
+ `+t._referenceFilter,T.dataset.tipFhir="item.extension[questionnaire-referenceFilter].valueString",T.dataset.tipSpec="R4",l.appendChild(T)}return l}};H.set("reference",Bt);var ca=[{label:"\u2500\u2500 Mass \u2500\u2500",disabled:!0},{label:"kg",value:"kg"},{label:"g",value:"g"},{label:"lb",value:"[lb_av]"},{label:"oz",value:"[oz_av]"},{label:"mg",value:"mg"},{label:"\xB5g",value:"ug"},{label:"\u2500\u2500 Length \u2500\u2500",disabled:!0},{label:"cm",value:"cm"},{label:"m",value:"m"},{label:"mm",value:"mm"},{label:"in",value:"[in_i]"},{label:"ft",value:"[ft_i]"},{label:"\u2500\u2500 Volume \u2500\u2500",disabled:!0},{label:"mL",value:"mL"},{label:"L",value:"L"},{label:"dL",value:"dL"},{label:"\u2500\u2500 Temperature \u2500\u2500",disabled:!0},{label:"\xB0C",value:"Cel"},{label:"\xB0F",value:"[degF]"},{label:"\u2500\u2500 Pressure \u2500\u2500",disabled:!0},{label:"mmHg",value:"mm[Hg]"},{label:"kPa",value:"kPa"},{label:"\u2500\u2500 Indices \u2500\u2500",disabled:!0},{label:"kg/m\xB2",value:"kg/m2"},{label:"%",value:"%"},{label:"\u2500\u2500 Rates \u2500\u2500",disabled:!0},{label:"/min",value:"/min"},{label:"beats/min",value:"{beats}/min"},{label:"breaths/min",value:"{breaths}/min"},{label:"\u2500\u2500 Time \u2500\u2500",disabled:!0},{label:"min",value:"min"},{label:"h",value:"h"},{label:"d",value:"d"},{label:"wk",value:"wk"},{label:"mo",value:"mo"},{label:"a (year)",value:"a"},{label:"\u2500\u2500 Lab \u2500\u2500",disabled:!0},{label:"mg/dL",value:"mg/dL"},{label:"mmol/L",value:"mmol/L"},{label:"g/dL",value:"g/dL"},{label:"mEq/L",value:"meq/L"},{label:"IU/L",value:"U/L"},{label:"IU",value:"[iU]"}],Ut=class extends Q{constructor(e={}){super(e),this.itemType="quantity"}buildControl(e){let t=this,{getValue:i,setValue:r,onChange:s,_reCalc:o}=e,l=Y(),a=i(t.id),c=a&&a.value!==void 0?a.value:"",u=t._unitOptions&&t._unitOptions.length||t._unitValueSet,d=a?a.unit||(u?"":t.quantityUnit)||"":u?"":t.quantityUnit||"",p=document.createElement("input");p.type="number",p.step="any",p.placeholder=t._entryFormat||"0",p.value=c,p.className="qty-num-input",p.dataset.testid="qty-num-input";let f;if(t._unitOptions&&t._unitOptions.length)f=[{value:"",label:"\u2014 unit \u2014"},...t._unitOptions.map(S=>({value:S.code,label:S.display||S.code}))];else if(t._unitValueSet){let S=t._unitVsCache||[];f=[{value:"",label:"\u2014 unit \u2014"},...S.map(N=>({value:N.code,label:N.display||N.code}))]}else f=[{value:"",label:"\u2014 unit \u2014"},...ca.filter(S=>!S.disabled).map(S=>({value:S.value,label:S.label}))];let _=kt({items:f,value:d||"",className:"qty-unit-sel",testid:"qty-unit-sel",onChange:()=>{w()}}),v=document.createElement("span");v.className="ctrl-err";let w=()=>{let S=p.value.trim(),N=_.getValue(),L=S!==""?parseFloat(S):void 0,A=L!==void 0&&!isNaN(L),T=!!N;A&&!T?(v.textContent="unit is required",v.style.display="inline"):!A&&T?(v.textContent="value is required",v.style.display="inline"):v.style.display="none",r(t.id,A&&T?{value:L,unit:N}:void 0),o(),s()};return p.oninput=w,p.onchange=()=>{D.notifyChanged(e.bus)},l.appendChild(p),l.appendChild(_.el),l.appendChild(v),l}};H.set("quantity",Ut);var ua='<svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true" focusable="false"><circle cx="8" cy="8" r="7" fill="none" stroke="currentColor" stroke-width="1.4"/><circle cx="8" cy="4.7" r="1" fill="currentColor"/><rect x="7.15" y="6.9" width="1.7" height="5" rx="0.85" fill="currentColor"/></svg>',qt=class extends Q{constructor(e={}){super(e),this.itemType="display"}buildControl(e){return Y()}supportsRepeat(){return!1}_initRowClass(e){this._displayCategory&&e.classList.add("lform-item--"+this._displayCategory)}_buildLabel(e,t){if(this._displayCategory==="help"){let s=document.createElement("span");s.className="display-help-wrap";let o=document.createElement("button");o.type="button",o.className="display-help-toggle",o.dataset.testid="display-help-toggle",o.textContent="? Help";let l=document.createElement("span");return l.className="display-help-content",l.dataset.testid="display-help-content",this._applyLabelContent(l,t),this._helpOpen&&(l.classList.add("display-help-content--open"),o.classList.add("display-help-toggle--open")),o.addEventListener("click",()=>{this._helpOpen=!this._helpOpen,l.classList.toggle("display-help-content--open",this._helpOpen),o.classList.toggle("display-help-toggle--open",this._helpOpen)}),s.append(o,l),s.classList.add("item-label"),s}let r=document.createElement("span");return r.className="item-label",this._applyLabelContent(r,t),r}_buildRowContent(e,t,i){if(this._initRowClass(e),this._itemControl==="flyover"){let l=document.createElement("span");l.className="display-flyover",l.dataset.testid="display-flyover",l.innerHTML=ua,l.dataset.tipTitle="Flyover",l.dataset.tipBody=this.title,e.appendChild(l),this._buildSupportLinks(e,i),this._buildVisHint(e,i);return}let r=this._displayCategory;if(r&&r!=="help"){let l=document.createElement("span");l.className="display-cat-icon display-cat-icon--"+r,l.dataset.testid="display-category-icon",l.textContent=r==="instructions"?"\u2139":"\u26A0",l.dataset.tipTitle=r==="instructions"?"Instructions":"Security notice",l.dataset.tipBody="questionnaire-displayCategory: "+r,l.dataset.tipFhir="item.extension[questionnaire-displayCategory].valueCodeableConcept.coding[0].code",l.dataset.tipSpec="R5",e.appendChild(l)}let s=this._buildLabel(t,i);this._renderStyle&&Ye(s,this._renderStyle);let o=document.createElement("div");o.className="item-body",o.appendChild(s),this._buildSupportLinks(o,i),this._buildVisHint(o,i),e.appendChild(o)}};H.set("display",qt);function er(n={}){return typeof n=="string"&&(n={title:n}),new pe({title:n.title||"New Group",...n})}function tr(n,e={}){typeof e=="string"&&(e={title:e});let t=H.get(n)??Xe;return new t({title:e.title||"New Item",...e,itemType:n})}function ir(n,e){let t=n._text?.extension;if(!t)return;let i=t.find(o=>o.url===h.renderingStyle);i&&(e._renderStyle=i.valueString||"");let r=t.find(o=>o.url===h.renderingXhtml);r&&(e._renderXhtml=r.valueString||"");let s=t.find(o=>o.url===h.renderingMarkdown);s&&(e._renderMarkdown=s.valueMarkdown||s.valueString||"")}function nr(n,e,t){let i=sn(n.type||"string"),s=(n.extension||[]).find(g=>g.url===h.itemControl)?.valueCodeableConcept?.coding?.[0]?.code;(i==="select"||i==="open-choice")&&(s==="radio-button"?i="radio":s==="check-box"?i="checklist":s==="atable"&&(i=n.repeats?"checklist":"radio"));let o=tr(i,{id:n.linkId,title:n.text||n.linkId||"Item",mandatory:!!n.required});o.options=an(n.answerOption);let l=(n.extension||[]).some(g=>g.url===h.choiceColumn);n.answerOption&&(on(n.answerOption)||l||xi(n.answerOption))&&(o._rawAnswerOptions=JSON.parse(JSON.stringify(n.answerOption))),s&&s!=="radio-button"&&s!=="check-box"&&(o._itemControl=s);let a={};for(let g of n.answerOption||[])if(g.valueCoding){let C=g.valueCoding.code||g.valueCoding.display||"",P=(g.extension||[]).find(k=>k.url===h.ordinalValue)||(g.valueCoding.extension||[]).find(k=>k.url===h.ordinalValue);P&&P.valueDecimal!==void 0&&C&&(a[C]=P.valueDecimal)}Object.keys(a).length&&(o._optionOrdinals=a);let c={};for(let g of n.answerOption||[])if(g.valueCoding){let C=g.valueCoding.code||g.valueCoding.display||"",P=(g.extension||[]).find(k=>k.url===h.optionPrefix);P?.valueString&&C&&(c[C]=P.valueString)}Object.keys(c).length&&(o._optionPrefixes=c);let u={};for(let g of n.answerOption||[])if(g.valueCoding){let C=g.valueCoding.code||g.valueCoding.display||"";(g.extension||[]).find(k=>k.url===h.optionExclusive)?.valueBoolean&&C&&(u[C]=!0)}Object.keys(u).length&&(o._optionExclusives=u);let d={};for(let g of n.answerOption||[])if(g.valueCoding){let C=g.valueCoding.code||g.valueCoding.display||"",P=(g.extension||[]).find(k=>k.url===h.itemWeight)||(g.valueCoding.extension||[]).find(k=>k.url===h.itemWeight);P?.valueDecimal!==void 0&&C&&(d[C]=P.valueDecimal)}Object.keys(d).length&&(o._optionWeights=d);let p={};for(let g of n.answerOption||[])if(g.valueCoding){let C=g.valueCoding.code||g.valueCoding.display||"",P=(g.extension||[]).find(k=>k.url===h.answerMedia);P?.valueAttachment&&C&&(p[C]=P.valueAttachment)}if(Object.keys(p).length&&(o._answerMedias=p),vt(o,n,e),cn(o,n),o.itemType==="reference"){let g=(n.extension||[]).find(k=>k.url===h.referenceResource);g&&g.valueCode&&(o.referenceResource=g.valueCode);let C=(n.extension||[]).find(k=>k.url===h.referenceFilter);C?.valueString&&(o._referenceFilter=C.valueString);let P=(n.extension||[]).filter(k=>k.url===h.referenceProfile);P.length&&(o._referenceProfiles=P.map(k=>k.valueCanonical).filter(Boolean))}if(o.itemType==="quantity"||o.itemType==="decimal"||o.itemType==="integer"){let g=(n.extension||[]).find(k=>k.url===h.unit);g?.valueCoding?.code&&(o.quantityUnit=g.valueCoding.code);let C=(n.extension||[]).find(k=>k.url===h.unitValueSet);C?.valueCanonical&&(o._unitValueSet=C.valueCanonical);let P=(n.extension||[]).filter(k=>k.url===h.unitOption);P.length&&(o._unitOptions=P.filter(k=>k.valueCoding).map(k=>({system:k.valueCoding.system,code:k.valueCoding.code,display:k.valueCoding.display})))}ir(n,o);let f=(n.extension||[]).find(g=>g.url===h.calculatedExpression);f?.valueExpression&&(o._calculatedExpr=f.valueExpression.expression||"");let _=(n.extension||[]).find(g=>g.url===h.initialExpression);_?.valueExpression&&(o._initialExpr=_.valueExpression.expression||"");for(let{url:g,prop:C}of _t){let P=(n.extension||[]).find(k=>k.url===g);P?.valueExpression&&(o[C]=P.valueExpression.expression||"")}n.maxLength&&(o._maxLength=n.maxLength),n.answerConstraint&&(o._answerConstraint=n.answerConstraint);let v=(n.extension||[]).find(g=>g.url===De);v?.valueCode&&(o._answerConstraint=v.valueCode);let w=(n.extension||[]).find(g=>g.url===h.minLength);w?.valueInteger!==void 0&&(o._minLength=w.valueInteger);let S=(n.extension||[]).find(g=>g.url===h.regex);S?.valueString&&(o._regex=S.valueString);let N=(n.extension||[]).find(g=>g.url===h.entryFormatSdc||g.url===h.entryFormat);N?.valueString&&(o._entryFormat=N.valueString);let L=(n.extension||[]).find(g=>g.url===h.choiceOrientation);L?.valueCode&&(o._choiceOrientation=L.valueCode);let A=(n.extension||[]).find(g=>g.url===h.columnCount);Number.isInteger(A?.valueInteger)&&A.valueInteger>1&&(o._columnCount=A.valueInteger);let T=(n.extension||[]).filter(g=>g.url===h.choiceColumn);if(T.length&&(o._choiceColumns=T.map(g=>{let C=g.extension||[],P={},k=C.find(be=>be.url==="path");k?.valueString&&(P.path=k.valueString);let oe=C.find(be=>be.url==="label");oe?.valueString&&(P.label=oe.valueString);let ut=C.find(be=>be.url==="width");ut?.valueQuantity&&(P.width=ut.valueQuantity);let ri=C.find(be=>be.url==="forDisplay");return ri?.valueBoolean!==void 0&&(P.forDisplay=ri.valueBoolean),P})),o.itemType==="display"){let C=(n.extension||[]).find(P=>P.url===h.displayCategory)?.valueCodeableConcept?.coding?.[0]?.code;C&&(o._displayCategory=C)}let I=(n.extension||[]).find(g=>g.url===h.minValue);if(I){let g=I.valueDecimal??I.valueInteger;g!==void 0&&(o._minValue=g)}let B=(n.extension||[]).find(g=>g.url===h.maxValue);if(B){let g=B.valueDecimal??B.valueInteger;g!==void 0&&(o._maxValue=g)}let x=(n.extension||[]).find(g=>g.url===h.minOccurs);x?.valueInteger!==void 0&&(o._minOccurs=x.valueInteger);let R=(n.extension||[]).find(g=>g.url===h.maxOccurs);R?.valueInteger!==void 0&&(o._maxOccurs=R.valueInteger);let y=(n.extension||[]).find(g=>g.url===h.maxDecimalPlaces);y?.valueInteger!==void 0&&(o._maxDecimalPlaces=y.valueInteger);let O=(n.extension||[]).find(g=>g.url===h.sliderStepValue);if(O){let g=O.valueDecimal??O.valueInteger;g!==void 0&&(o._sliderStep=g)}let U=(n.extension||[]).find(g=>g.url===h.maxSize);U?.valueDecimal!==void 0&&(o._maxFileSizeMB=U.valueDecimal);let m=(n.extension||[]).filter(g=>g.url===h.mimeType&&g.valueCode).map(g=>g.valueCode);m.length&&(o._mimeTypes=m);let b=(n.extension||[]).filter(g=>g.url===h.supportLink&&g.valueUri).map(g=>g.valueUri);b.length&&(o._supportLinks=b),(n.extension||[]).find(g=>g.url===h.hiddenSdc||g.url===h.hidden)?.valueBoolean===!0&&(o._hidden=!0),(n.extension||[]).find(g=>g.url===h.isSubject)?.valueBoolean===!0&&(o._isSubject=!0);let W=(n.extension||[]).find(g=>g.url===h.observationExtract);if(W&&(o._observationExtract=W.valueBoolean!==!1),o.itemType==="open-choice"){let g=(n.extension||[]).find(C=>C.url===h.openLabel);g?.valueString&&(o._openLabel=g.valueString)}let Z=(n.extension||[]).find(g=>g.url===h.preferredTerminologyServer);Z?.valueUrl&&(o._preferredTermServer=Z.valueUrl);let ee=(n.extension||[]).find(g=>g.url===h.shortText);ee?.valueString&&(o._shortText=ee.valueString);let F=(n.extension||[]).find(g=>g.url===h.designNote);F?.valueMarkdown?o._designNote=F.valueMarkdown:F?.valueString&&(o._designNote=F.valueString);let j=(n.extension||[]).find(g=>g.url===h.usageMode);j?.valueCode&&(o._usageMode=j.valueCode);let le=(n.extension||[]).filter(g=>g.url===h.signatureRequired);le.length&&(o._signatureRequired=le.filter(g=>g.valueCodeableConcept?.coding?.[0]).map(g=>{let C=g.valueCodeableConcept.coding[0];return{system:C.system||"",code:C.code||"",display:C.display||""}}));let de=(n.extension||[]).find(g=>g.url===h.itemMedia);de?.valueAttachment&&(o._itemMedia=de.valueAttachment),n.disabledDisplay&&(o._disabledDisplay=n.disabledDisplay);let Ae=(n.extension||[]).find(g=>g.url===ke);Ae?.valueCode&&(o._disabledDisplay=Ae.valueCode),o._readOnly=!!n.readOnly,(n.repeats||o.impliesRepeats())&&(o.repeats=!0),n.prefix&&(o._prefix=n.prefix),n.definition&&(o._definition=n.definition);let ve=(n.extension||[]).find(g=>g.url===h.baseType);ve?.valueCode&&(o._baseType=ve.valueCode);let G=(n.extension||[]).find(g=>g.url===h.fhirType);if(G?.valueCode&&(o._fhirType=G.valueCode),n.code&&n.code.length&&(o._codes=n.code),n.answerValueSet){o._answerValueSet=n.answerValueSet;let g=un(t,n.answerValueSet);g&&(o.options=g)}if(n.initial&&n.initial.length){let g=C=>{if(C.valueBoolean!==void 0)return C.valueBoolean;if(C.valueDecimal!==void 0)return String(C.valueDecimal);if(C.valueInteger!==void 0)return String(C.valueInteger);if(C.valueDate!==void 0)return C.valueDate;if(C.valueDateTime!==void 0)return C.valueDateTime;if(C.valueTime!==void 0)return C.valueTime;if(C.valueString!==void 0)return C.valueString;if(C.valueUri!==void 0)return C.valueUri;if(C.valueCoding)return C.valueCoding.code||C.valueCoding.display||"";if(C.valueReference)return typeof C.valueReference=="string"?{reference:C.valueReference}:C.valueReference;if(C.valueQuantity)return{value:C.valueQuantity.value!==void 0?String(C.valueQuantity.value):"",unit:C.valueQuantity.unit||""}};if(o.repeats&&n.initial.length>1){let C=n.initial.map(g).filter(P=>P!==void 0);o._initialValues=C,o._initialValue=C[0]}else{let C=g(n.initial[0]);C!==void 0&&(o._initialValue=C)}}for(let g of n.answerOption||[])if(g.initialSelected){let C;if(g.valueCoding?C=g.valueCoding.code||g.valueCoding.display||"":g.valueString!==void 0?C=g.valueString:g.valueInteger!==void 0&&(C=String(g.valueInteger)),C!==void 0){o._initialSelected=C,o._initialValue===void 0&&(o._initialValue=C);break}}let q=rn(n);return q&&(o._unknownExtensions=q),o}function Ft(n,e,t){if((n.type||"string")==="group"){let r=er({id:n.linkId,title:n.text||n.linkId||"Group",mandatory:!!n.required});vt(r,n,e),cn(r,n)&&(r.logicWithParent="OR"),n.repeats&&(r.repeats=!0);let o=(n.extension||[]).find(x=>x.url===h.minOccurs);o?.valueInteger!==void 0&&(r._minOccurs=o.valueInteger);let l=(n.extension||[]).find(x=>x.url===h.maxOccurs);l?.valueInteger!==void 0&&(r._maxOccurs=l.valueInteger),ir(n,r),n.prefix&&(r._prefix=n.prefix),n.definition&&(r._definition=n.definition);let a=(n.extension||[]).find(x=>x.url===h.baseType);a?.valueCode&&(r._baseType=a.valueCode);let c=(n.extension||[]).find(x=>x.url===h.fhirType);c?.valueCode&&(r._fhirType=c.valueCode),n.code&&n.code.length&&(r._codes=n.code);let u=(n.extension||[]).filter(x=>x.url===h.supportLink&&x.valueUri).map(x=>x.valueUri);u.length&&(r._supportLinks=u),(n.extension||[]).find(x=>x.url===h.hiddenSdc||x.url===h.hidden)?.valueBoolean===!0&&(r._hidden=!0);let p=(n.extension||[]).find(x=>x.url===h.observationExtract);p&&(r._observationExtract=p.valueBoolean!==!1);let f=(n.extension||[]).find(x=>x.url===h.collapsible);f?.valueCode&&(r._collapsible=f.valueCode);let _=(n.extension||[]).find(x=>x.url===h.preferredTerminologyServer);_?.valueUrl&&(r._preferredTermServer=_.valueUrl);let v=(n.extension||[]).find(x=>x.url===h.shortText);v?.valueString&&(r._shortText=v.valueString);let w=(n.extension||[]).find(x=>x.url===h.designNote);w?.valueMarkdown?r._designNote=w.valueMarkdown:w?.valueString&&(r._designNote=w.valueString);let N=(n.extension||[]).find(x=>x.url===h.displayCategory)?.valueCodeableConcept?.coding?.[0]?.code;N&&(r._displayCategory=N);let A=(n.extension||[]).find(x=>x.url===h.itemControl)?.valueCodeableConcept?.coding?.[0]?.code;A&&(r._itemControl=A);let T=(n.extension||[]).find(x=>x.url===h.calculatedExpression);T?.valueExpression&&(r._calculatedExpr=T.valueExpression.expression||"");let I=(n.extension||[]).find(x=>x.url===h.initialExpression);I?.valueExpression&&(r._initialExpr=I.valueExpression.expression||"");let B=rn(n);B&&(r._unknownExtensions=B);for(let x of n.item||[]){let R=Ft(x,e,t);R&&r.children.push(R)}return r}if((n.item||[]).length>0){let r=nr(n,e,t);for(let s of n.item){let o=Ft(s,e,t);o&&r.children.push(o)}return r}return nr(n,e,t)}function rr(n,e){for(let t of n){if(t.repeats&&t._initialValues&&t._initialValues.length>1){e.dispatch(E.ANSWER_SET,{id:t.id,value:t._initialValues[0]});for(let i=1;i<t._initialValues.length;i++)e.dispatch(E.ANSWER_SET,{id:t.id+"$$"+i,value:t._initialValues[i]});e.dispatch(E.ANSWER_SET,{id:t.id+"$$n",value:t._initialValues.length-1})}else t._initialValue!==void 0&&e.dispatch(E.ANSWER_SET,{id:t.id,value:t._initialValue});t.type==="group"&&rr(t.children,e)}}function sr(n,e={}){let t=e.questDoc||fe.get(E.APP_CONTEXT_READY)?.questDoc,i=e.bus||X,{tree:r,meta:s,variables:o,contained:l}=t,a=n;if(typeof a=="string")try{a=JSON.parse(a)}catch(y){Ge(`Invalid JSON:
36
+ `+y.message);return}if(!a||a.resourceType!=="Questionnaire"){Ge('Not a FHIR Questionnaire resource (resourceType must be "Questionnaire").');return}a=gi(a),dt(r),i.dispatch(E.ANSWERS_CLEAR),t.rawFhir=a,t.translations??={};for(let y of Object.keys(t.translations))delete t.translations[y];yi(),s.id=a.id||"",s.url=a.url||"",s.version=a.version||"",s.title=a.title||"",s.status=a.status||"draft",s.publisher=a.publisher||"",s.description=a.description||"",s.name=a.name||"",s.date=a.date||"",s.subjectType=Array.isArray(a.subjectType)&&a.subjectType.length?[...a.subjectType]:[],s.purpose=a.purpose||"",s.copyright=a.copyright||"",s.approvalDate=a.approvalDate||"",s.lastReviewDate=a.lastReviewDate||"",s.effectivePeriodStart=a.effectivePeriod?.start||"",s.effectivePeriodEnd=a.effectivePeriod?.end||"",s.experimental=a.experimental!==void 0?a.experimental:null,s.language=a.language||"",s._rawIdentifier=Array.isArray(a.identifier)?JSON.parse(JSON.stringify(a.identifier)):[],s._rawText=a.text&&a.text.status&&a.text.div?{status:a.text.status,div:a.text.div}:null,s._rawContact=Array.isArray(a.contact)?a.contact:null,s._rawUseContext=Array.isArray(a.useContext)?a.useContext:null,s._rawJurisdiction=Array.isArray(a.jurisdiction)?a.jurisdiction:null,s._rawCode=Array.isArray(a.code)?a.code:null,s.derivedFrom=Array.isArray(a.derivedFrom)?[...a.derivedFrom]:[],s._rawModifierExtension=Array.isArray(a.modifierExtension)&&a.modifierExtension.length?JSON.parse(JSON.stringify(a.modifierExtension)):[],s._metaVersionId=a.meta?.versionId||"",s._metaSource=a.meta?.source||"",s._metaLastUpdated=a.meta?.lastUpdated||"",s._rawMetaProfile=Array.isArray(a.meta?.profile)?[...a.meta.profile]:[],s._implicitRules=a.implicitRules||"",s._rawMetaTag=Array.isArray(a.meta?.tag)?JSON.parse(JSON.stringify(a.meta.tag)):[],s._rawMetaSecurity=Array.isArray(a.meta?.security)?JSON.parse(JSON.stringify(a.meta.security)):[];let c=h.variable,u=h.replaces,d=h.launchContext,p=h.artifactVersionAlgorithm,f=h.artifactCopyrightLabel,_=(a.extension||[]).find(y=>y.url===p);a.versionAlgorithmString!==void 0?(s._versionAlgorithmString=a.versionAlgorithmString,s._versionAlgorithmCoding=null):a.versionAlgorithmCoding?(s._versionAlgorithmCoding=JSON.parse(JSON.stringify(a.versionAlgorithmCoding)),s._versionAlgorithmString=""):_?.valueString!==void 0?(s._versionAlgorithmString=_.valueString,s._versionAlgorithmCoding=null):_?.valueCoding?(s._versionAlgorithmCoding=JSON.parse(JSON.stringify(_.valueCoding)),s._versionAlgorithmString=""):(s._versionAlgorithmString="",s._versionAlgorithmCoding=null);let v=(a.extension||[]).find(y=>y.url===f);if(s.copyrightLabel=a.copyrightLabel||v?.valueString||"",o.splice(0),l.splice(0),Array.isArray(a.contained))for(let y of a.contained)l.push(y);s.replaces=(a.extension||[]).filter(y=>y.url===u&&y.valueCanonical).map(y=>y.valueCanonical);for(let y of a.extension||[])y.url===c&&y.valueExpression&&o.push({name:y.valueExpression.name||"",expression:y.valueExpression.expression||""});let w=h.preferredTerminologyServer,S=(a.extension||[]).find(y=>y.url===w);s.preferredTermServer=S?.valueUrl||"";let N=h.targetStructureMap,L=(a.extension||[]).find(y=>y.url===N);s.targetStructureMap=L?.valueCanonical||"";let A=h.sourceStructureMap,T=(a.extension||[]).find(y=>y.url===A);s.sourceStructureMap=T?.valueCanonical||"";let I=h.signatureRequired,B=(a.extension||[]).filter(y=>y.url===I);s._signatureRequired=B.length?B.filter(y=>y.valueCodeableConcept?.coding?.[0]).map(y=>{let O=y.valueCodeableConcept.coding[0];return{system:O.system||"",code:O.code||"",display:O.display||""}}):[];let x=(a.extension||[]).filter(y=>y.url!==c&&y.url!==u&&y.url!==w&&y.url!==N&&y.url!==A&&y.url!==I&&y.url!==Se&&y.url!==d&&y.url!==p&&y.url!==f);s._rawQuestExtensions=x.length?JSON.parse(JSON.stringify(x)):[];let R=(a.extension||[]).filter(y=>y.url===d);s.launchContexts=R.map(y=>{let O=y.extension||[],U=O.find(M=>M.url==="name"),m=O.find(M=>M.url==="type"),b=O.find(M=>M.url==="description");return{name:U?.valueCoding?.code||U?.valueId||"",type:m?.valueCode||"",description:b?.valueString||""}});try{let y=ln(a.item);for(let O of a.item||[]){let U=Ft(O,y,a.contained);U&&r.push(U)}rr(r,i),da(a,r,t.translations)}finally{i.dispatch(E.REINIT_FORM)}i.dispatch(E.BUILDER_RERENDER)}var An=h.translation;function da(n,e,t){let i=(n._title?.extension||[]).filter(a=>a.url===An);for(let a of i){let c=(a.extension||[]).find(d=>d.url==="lang")?.valueCode,u=(a.extension||[]).find(d=>d.url==="content")?.valueString;!c||u==null||(Fe(t,c),t[c].title=u)}function r(a){for(let c of a||[]){let u=(c._text?.extension||[]).filter(d=>d.url===An);for(let d of u){let p=(d.extension||[]).find(_=>_.url==="lang")?.valueCode,f=(d.extension||[]).find(_=>_.url==="content")?.valueString;!p||f==null||(Fe(t,p),t[p].items[c.linkId]=f)}for(let d of c.answerOption||[]){let p=d.valueCoding?.code||d.valueString||d.valueInteger?.toString();if(!p)continue;let f=(d._valueCoding?._display?.extension||[]).filter(_=>_.url===An);for(let _ of f){let v=(_.extension||[]).find(S=>S.url==="lang")?.valueCode,w=(_.extension||[]).find(S=>S.url==="content")?.valueString;!v||w==null||(Fe(t,v),t[v].opts[c.linkId+"__"+p]=w)}}r(c.item)}}r(n.item);let s=re.uiTranslations;for(let a of(n.extension||[]).filter(c=>c.url===s)){let c=(a.extension||[]).find(d=>d.url==="lang")?.valueCode,u=(a.extension||[]).find(d=>d.url==="strings")?.valueString;if(!(!c||!u))try{let d=JSON.parse(u);Fe(t,c),Object.assign(t[c].ui,d)}catch{}}let o=re.xhtmlTranslations;for(let a of(n.extension||[]).filter(c=>c.url===o)){let c=(a.extension||[]).find(d=>d.url==="lang")?.valueCode,u=(a.extension||[]).find(d=>d.url==="strings")?.valueString;if(!(!c||!u))try{let d=JSON.parse(u);Fe(t,c),t[c].xhtml||(t[c].xhtml={}),Object.assign(t[c].xhtml,d)}catch{}}let l=re.markdownTranslations;for(let a of(n.extension||[]).filter(c=>c.url===l)){let c=(a.extension||[]).find(d=>d.url==="lang")?.valueCode,u=(a.extension||[]).find(d=>d.url==="strings")?.valueString;if(!(!c||!u))try{let d=JSON.parse(u);Fe(t,c),Object.assign(t[c].markdown,d)}catch{}}}function Fe(n,e){n[e]||(n[e]={title:"",items:{},opts:{},ui:{},xhtml:{},markdown:{}}),n[e].ui||(n[e].ui={}),n[e].xhtml||(n[e].xhtml={}),n[e].markdown||(n[e].markdown={})}function ar(n,e=new Set){for(let t of n)t.id&&e.add(t.id),t.children&&ar(t.children,e);return e}function On(n,e={}){for(let t of n||[]){if(t.answer&&t.answer.length){let i=r=>{if(r.valueBoolean!==void 0)return r.valueBoolean;if(r.valueCoding!==void 0)return r.valueCoding.code;if(r.valueDecimal!==void 0)return r.valueDecimal;if(r.valueInteger!==void 0)return r.valueInteger;if(r.valueDate!==void 0)return r.valueDate;if(r.valueDateTime!==void 0)return r.valueDateTime;if(r.valueTime!==void 0)return r.valueTime;if(r.valueQuantity!==void 0)return{value:r.valueQuantity.value,unit:r.valueQuantity.unit||""};if(r.valueUri!==void 0)return r.valueUri;if(r.valueReference!==void 0)return{reference:r.valueReference.reference||""};if(r.valueString!==void 0)return r.valueString};e[t.linkId]=t.answer.map(i).filter(r=>r!==void 0),e[t.linkId].length===0&&delete e[t.linkId];for(let r of t.answer)r.item&&On(r.item,e)}t.item&&On(t.item,e)}return e}function or(n,e=new Set){for(let t of n)t.itemType==="checklist"&&e.add(t.id),t.children&&or(t.children,e);return e}function it(n,e,t){if(!n||n.resourceType!=="QuestionnaireResponse")return{ok:!1,error:"Not a QuestionnaireResponse (resourceType: "+(n?.resourceType??"unknown")+")"};let i=ar(t),r=On(n.item||[]),s=[],o=0;for(let[a,c]of Object.entries(r))i.has(a)?(e[a]=c,o++):s.push(a);let l=or(t);for(let a of l){let c=e[a];Array.isArray(c)&&c.length>1&&(e[a]=[c.filter(u=>u!==void 0).join(",")])}return{ok:!0,loaded:o,unmatched:s,questionnaire:n.questionnaire||"",meta:{status:n.status||"in-progress",subject:n.subject?.reference||"",author:n.author?.reference||"",id:n.id||"",language:n.language||"",metaVersionId:n.meta?.versionId||"",metaSource:n.meta?.source||"",metaProfile:(n.meta?.profile||[]).slice(),metaTag:(n.meta?.tag||[]).map(a=>({...a})),metaSecurity:(n.meta?.security||[]).map(a=>({...a}))}}}var Ln=h.ordinalValue;function Dn(n,e){let t=n.type||"string";if(t==="boolean")return{valueBoolean:e===!0};if(t==="date")return{valueDate:String(e)};if(t==="dateTime")return{valueDateTime:String(e)};if(t==="time")return{valueTime:String(e)};if(t==="choice"||t==="open-choice"){let i=String(e),r={code:i},s=(n.answerOption||[]).find(o=>o.valueCoding&&o.valueCoding.code===i||o.valueString!==void 0&&String(o.valueString)===i);if(s&&s.valueCoding){s.valueCoding.system&&(r.system=s.valueCoding.system),s.valueCoding.display&&(r.display=s.valueCoding.display);let o=(s.extension||[]).find(l=>l.url===Ln)||(s.valueCoding.extension||[]).find(l=>l.url===Ln);o!==void 0&&(r.extension=[{url:Ln,valueDecimal:o.valueDecimal}])}return{valueCoding:r}}return t==="integer"?{valueInteger:parseInt(e,10)||0}:t==="decimal"?{valueDecimal:parseFloat(e)||0}:t==="quantity"?{valueQuantity:{value:parseFloat(e?.value)||0,unit:e?.unit||""}}:t==="url"?{valueUri:String(e)}:t==="reference"?{valueReference:{reference:String(e?.reference||"")}}:{valueString:String(e)}}function In(n,e){let t={linkId:n.linkId},i=n.item||[],r=n.type||"string",s=e[n.linkId],o=s?s[0]:void 0;function l(){return(e[n.linkId]||[]).filter(c=>c!==void 0)}let a=c=>Dn(n,c);if(r==="group")i.length>0&&(t.item=i.map(c=>In(c,e)));else if(i.length>0){let c={};r==="boolean"?o!==void 0&&(c.valueBoolean=o===!0):(r==="string"||r==="text")&&o!==void 0&&(c.valueString=String(o)),c.item=i.map(u=>In(u,e)),t.answer=[c]}else{let c=l();(r==="choice"||r==="open-choice")&&n.repeats&&c.length===1&&typeof c[0]=="string"&&c[0].includes(",")?t.answer=c[0].split(",").map(a):c.length>0&&(t.answer=c.map(a))}return t}function rt(n,e){return{resourceType:"QuestionnaireResponse",questionnaire:n.url||n.id||"",status:"in-progress",item:(n.item||[]).map(t=>In(t,e))}}function pa(n){let e=new Set,t=new Set;if(!n||typeof n!="string")return{linkIds:[],vars:[]};let i=/linkId\s*=\s*(['"])(.*?)\1/g,r;for(;(r=i.exec(n))!==null;)r[2]&&e.add(r[2]);let s=/%(`[^`]+`|[A-Za-z_][A-Za-z0-9_]*)/g;for(;(r=s.exec(n))!==null;){let o=r[1];o.startsWith("`")&&o.endsWith("`")&&(o=o.slice(1,-1)),o!=="resource"&&o!=="context"&&t.add(o)}return{linkIds:[...e],vars:[...t]}}function lr(n,e=[]){for(let t of n)e.push(t),t.children?.length&&lr(t.children,e);return e}function kn(n,e=[]){let t=lr(n||[]),i=t.map(d=>d.id),r=new Set(i),s=new Set((e||[]).map(d=>d&&d.name).filter(Boolean)),o=new Map;function l(d,p){for(let f of d)o.set(f.id,new Set(p)),f.children?.length&&l(f.children,[...p,f.id])}l(n||[],[]);let a=new Map,c=new Map;for(let d of i)a.set(d,new Set);let u=(d,p)=>{p!==d&&(o.get(d)?.has(p)||(r.has(p)?a.get(d).add(p):s.has(p)||(c.has(d)||c.set(d,new Set),c.get(d).add(p))))};for(let d of t){if(Array.isArray(d.enableWhen))for(let f of d.enableWhen)f&&f.question&&u(d.id,f.question);let p=[d.enableWhenExpression,d._calculatedExpr,d._initialExpr];for(let f of p){let{linkIds:_}=pa(f);for(let v of _)u(d.id,v)}}return{edges:a,nodeIds:i,varNames:s,missing:c}}function ha(n){let{edges:e}=n,t=0,i=1,r=2,s=new Map;for(let c of e.keys())s.set(c,t);let o=[],l=[],a=c=>{s.set(c,i),l.push(c);for(let u of e.get(c)||[]){let d=s.get(u);if(d===i){let p=l.indexOf(u);p!==-1&&o.push([...l.slice(p),u])}else d===t&&a(u)}l.pop(),s.set(c,r)};for(let c of e.keys())s.get(c)===t&&a(c);return o}function Mn(n){let{edges:e,nodeIds:t}=n,i=new Map,r=new Map;for(let c of t)i.set(c,(e.get(c)||new Set).size),r.set(c,[]);for(let c of t)for(let u of e.get(c)||[])r.has(u)&&r.get(u).push(c);let s=t.filter(c=>i.get(c)===0),o=[],l=new Set;for(;s.length;){let c=s.shift();o.push(c),l.add(c);for(let u of r.get(c)||[])i.set(u,i.get(u)-1),i.get(u)===0&&s.push(u)}let a=ha(n);if(o.length<t.length)for(let c of t)l.has(c)||o.push(c);return{order:o,cycles:a}}function Bn(n,e,t){let i={};for(let r of n)if(!(!r.name||!r.expression))try{let s=t.evaluate(e,r.expression,{resource:e,...i},se());i[r.name]=Array.isArray(s)&&s.length===1?s[0]:s}catch{}return i}function Un(n,e=new Map){for(let t of n)e.set(t.id,t),t.children?.length&&Un(t.children,e);return e}function Pn(n,e=new Map){for(let t of n||[])if(t.linkId&&e.set(t.linkId,t),Array.isArray(t.item)&&Pn(t.item,e),Array.isArray(t.answer))for(let i of t.answer)Array.isArray(i.item)&&Pn(i.item,e);return e}function Vn(n,e=new Map){for(let t of n||[])if(t.linkId&&e.set(t.linkId,t),Array.isArray(t.item)&&Vn(t.item,e),Array.isArray(t.answer))for(let i of t.answer)Array.isArray(i.item)&&Vn(i.item,e);return e}function fa(n,e){return n.itemType==="checkbox"?e[0]===!0||e[0]==="true":Array.isArray(e)?e.join(""):e[0]!==void 0?String(e[0]):""}function cr(n,e=[]){return{nodeMap:Un(n),order:Mn(kn(n,e)).order}}function ur(n,e,t,i,r={},s=null,o=null){let l={resource:e,...r},a=o?.nodeMap||Un(n),c=o?.order||Mn(kn(n,[])).order,u=s?Pn(s.item):null,d=u?Vn(e.item):null;for(let p of c){let f=a.get(p);if(!(!f||!(f._calculatedExpr&&f._readOnly)))try{let _=t.evaluate(e,f._calculatedExpr,l,se()),v=fa(f,_);if(i[f.id]=v,d&&u){let w=d.get(f.id),S=u.get(f.id);if(w&&S){let N=Dn(S,v),L=w.answer?.[0]?.item;L&&(N.item=L),w.answer=[N]}}}catch{}}}function qn(n,e,t,i,r={}){let s={resource:e,...r};for(let o of n){if(o._initialExpr)try{let l=t.evaluate(e,o._initialExpr,s,se());o.itemType==="checkbox"?i[o.id]=l[0]===!0||l[0]==="true":i[o.id]=Array.isArray(l)?l.join(""):l[0]!==void 0?String(l[0]):""}catch{}o.children?.length&&qn(o.children,e,t,i,r)}}var ma={disabledDisplay:ke,answerConstraint:De},dr=h.artifactVersionAlgorithm,ga=h.artifactCopyrightLabel;function $t(n){if(!n)return;let e=[];n.versionAlgorithmString!==void 0?(e.push({url:dr,valueString:n.versionAlgorithmString}),delete n.versionAlgorithmString):n.versionAlgorithmCoding!==void 0&&(e.push({url:dr,valueCoding:n.versionAlgorithmCoding}),delete n.versionAlgorithmCoding),n.copyrightLabel!==void 0&&(e.push({url:ga,valueString:n.copyrightLabel}),delete n.copyrightLabel),e.length&&(n.extension=[...n.extension||[],...e])}function Ht(n){n?.item&&pr(n.item)}function pr(n){if(Array.isArray(n))for(let e of n){for(let[t,i]of Object.entries(ma))e[t]===void 0||e[t]===null||(e.extension=(e.extension||[]).filter(r=>r?.url!==i),e.extension.push({url:i,valueCode:e[t]}),delete e[t]);e.item&&pr(e.item)}}me.register({id:"R4",label:"FHIR R4 JSON (.json)",selectorLabel:"FHIR R4",isBuilderVersion:!0,metaVersion:"4.0.1",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let e=JSON.parse(JSON.stringify(n));return Ht(e),$t(e),e.meta=e.meta??{lastUpdated:new Date().toISOString()},Me(e,"4.0.1"),e}});me.register({id:"R4B",label:"FHIR R4B JSON (.json)",selectorLabel:"FHIR R4B",isBuilderVersion:!0,metaVersion:"4.3.0",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let e=JSON.parse(JSON.stringify(n));return Ht(e),$t(e),e.meta=e.meta??{lastUpdated:new Date().toISOString()},Me(e,"4.3.0"),e}});function hr(n){if(Array.isArray(n))for(let e of n)e.type==="open-choice"?(e.type="coding",e.answerConstraint||(e.answerConstraint="optionsOrString")):e.type==="choice"&&(e.type="coding"),e.item&&hr(e.item)}me.register({id:"R5",label:"FHIR R5 JSON (.json)",selectorLabel:"FHIR R5",isBuilderVersion:!0,metaVersion:"5.0.0",ext:"json",mimeType:"application/json",reportTitle:"Export \u2014 Validation Report",build(n){let e=JSON.parse(JSON.stringify(n));return e.item&&hr(e.item),e.meta=e.meta??{lastUpdated:new Date().toISOString()},Me(e,"5.0.0"),e}});var _a={equal:"=","not-equal":"<>",exists:null,">":">",">=":">=","<":"<","<=":"<="};function fr(n,e){if(!n||n.length===0)return"";let t=e==="any"?" OR ":" AND ",i=n.map(r=>{let s=`[${r.question}]`,o=r.operator||"equal",l=_a[o]??"=",a;return r.answerDecimal!==void 0?a=String(r.answerDecimal):r.answerInteger!==void 0?a=String(r.answerInteger):r.answerBoolean!==void 0?a=r.answerBoolean?"1":"0":r.answerCoding?.code!==void 0?a=`'${r.answerCoding.code}'`:r.answerString!==void 0?a=`'${r.answerString}'`:a="''",`${s} ${l} ${a}`});return i.length===1?i[0]:i.map(r=>`(${r})`).join(t)}var _d=re.redcapNs,vd=h.itemControl,yd=h.minValue,xd=h.maxValue,Ed=h.calculatedExpression;var vr=re.redcapNs,va=h.itemControl,ya=h.minValue,xa=h.maxValue,yr=h.calculatedExpression,xr=["Variable / Field Name","Form Name","Section Header","Field Type","Field Label","Choices, Calculations, OR Slider Labels","Field Note","Text Validation Type OR Show Slider Number","Text Validation Min","Text Validation Max","Identifier?","Branching Logic (Show field only if...)","Required Field?","Custom Alignment","Question Number (surveys only)","Matrix Group Name","Matrix Ranking?","Field Annotation"];function ie(n,e){if(!n)return;let t=vr+e,i=n.find(r=>r.url===t);if(i){for(let r of Object.keys(i))if(r.startsWith("value"))return i[r]}}function jt(n,e){return(n||[]).find(t=>t.url===e)}function Er(n){let e=String(n??"");return e.includes(",")||e.includes('"')||e.includes(`
37
+ `)?'"'+e.replace(/"/g,'""')+'"':e}function Ea(n){return xr.map(e=>Er(n[e]??"")).join(",")}function mr(n){let t=jt(n.extension,va)?.valueCodeableConcept?.coding?.[0]?.code;if(t==="drop-down")return"dropdown";if(t==="slider")return"slider";if(jt(n.extension,yr))return"calc";switch(n.type){case"string":return"text";case"text":return"notes";case"integer":return"text";case"decimal":return"text";case"date":return"text";case"dateTime":return"text";case"time":return"text";case"boolean":return"yesno";case"choice":return n.repeats?"checkbox":"radio";case"attachment":return"file";case"display":return"descriptive";default:return"text"}}function ba(n){switch(n.type){case"integer":return"integer";case"decimal":return"number";case"date":return"date_ymd";case"dateTime":return"datetime_ymd";case"time":return"time";default:return""}}function gr(n){return!n||n.length===0?"":n.map(e=>{if(e.valueCoding){let t=e.valueCoding.code||"",i=e.valueCoding.display||e.valueCoding.code||"";return`${t}, ${i}`}return e.valueString!==void 0?`${e.valueString}, ${e.valueString}`:e.valueInteger!==void 0?`${e.valueInteger}, ${e.valueInteger}`:""}).filter(Boolean).join(" | ")}function _r(n,e){let t=jt(n,e);if(!t)return"";for(let i of Object.keys(t))if(i.startsWith("value"))return String(t[i]);return""}function Wt(n,e,t,i,r=0){for(let s of n||[]){if(s.type==="group"){let A=ie(s.extension,"form-name")||s.text||s.linkId,T=ie(s.extension,"section-header")||"";if(r===0)Wt(s.item,A,"",i,r+1);else if(r===1){let I=T||(A!==e?s.text:"");Wt(s.item,e,I,i,r+1)}else Wt(s.item,e,t,i,r+1);continue}let o=(s.extension||[]).some(A=>A.url.startsWith(vr)),l;if(o){let A=ie(s.extension,"calc-expression"),T=ie(s.extension,"sql-query");A!==void 0?l="calc":T!==void 0?l="sql":l=mr(s)}else l=mr(s);let a;if(o){let A=ie(s.extension,"calc-expression"),T=ie(s.extension,"sql-query"),I=ie(s.extension,"slider-labels");A!==void 0?a=A:T!==void 0?a=T:I!==void 0?a=I:a=gr(s.answerOption)}else{let A=jt(s.extension,yr);A?.valueExpression?.expression?a=A.valueExpression.expression:a=gr(s.answerOption)}let c="";o?c=ie(s.extension,"branching-logic")||"":s.enableWhen&&s.enableWhen.length>0&&(c=fr(s.enableWhen,s.enableBehavior||"all"));let u=o?"":ba(s),d=_r(s.extension,ya),p=_r(s.extension,xa),f=ie(s.extension,"annotation")??"",_=ie(s.extension,"matrix-group")??"",v=ie(s.extension,"alignment")??"",w=ie(s.extension,"identifier")??!1,S=ie(s.extension,"field-note")??"",N=ie(s.extension,"question-number")??"",L=ie(s.extension,"matrix-ranking")??!1;i.push({"Variable / Field Name":s.linkId,"Form Name":e,"Section Header":t,"Field Type":l,"Field Label":s.text||s.linkId,"Choices, Calculations, OR Slider Labels":a,"Field Note":S,"Text Validation Type OR Show Slider Number":u,"Text Validation Min":d,"Text Validation Max":p,"Identifier?":w?"y":"","Branching Logic (Show field only if...)":c,"Required Field?":s.required?"y":"","Custom Alignment":v,"Question Number (surveys only)":N,"Matrix Group Name":_,"Matrix Ranking?":L?"y":"","Field Annotation":f})}}function Fn(n){let e=[];Wt(n.item||[],"my_form","",e,0);let t=[xr.map(Er).join(",")];for(let i of e)t.push(Ea(i));return t.join(`\r
38
38
  `)+`\r
39
- `}var Rn=class{constructor(){this._validators=[]}register(t){this._validators.push(t)}getAll(){return[...this._validators]}async runAll(t,e,i={}){return Promise.all(this._validators.map(s=>s.run(t,e,i).then(a=>({validator:s,issues:a,error:null})).catch(a=>({validator:s,issues:[],error:a}))))}},Qi=new Rn;var Vt=class{constructor(){this.enabled=!0,typeof document<"u"&&document.addEventListener(w.VALIDATOR_TOGGLE,t=>{t.detail?.id===this.id&&(this.enabled=t.detail.enabled)})}get id(){return""}get name(){throw new Error("Validator.name must be implemented")}get type(){return"local"}async run(t,e,i){return this.enabled?this._run(t,e,i):[]}async _run(t,e,i){return[]}};var uc=p.itemControl,cr=te.redcapNs,dr=new Set([p.answerExpression,p.initialExpression,p.choiceColumn,p.itemContext,p.constraint,p.variable]);function Yi(n,t,e=0){for(let i of n||[])t(i,e),i.item&&Yi(i.item,t,e+1)}function ye(n){return(n.extension||[]).some(t=>t.url.startsWith(cr))}var Mt=class extends Vt{constructor(){super(),this.enabled=!1}get id(){return"redcap-compat"}get name(){return"REDCap Compatibility"}get type(){return"local"}async _run(t,e,i){if(!t)return[];let s=[],a=0;return Yi(t.item,(o,l)=>{let r=o.linkId||"(unknown)";if(o.type==="group"&&(l>a&&(a=l),l>=2&&!ye(o)&&s.push({severity:"warning",nodeId:r,message:`Group "${o.text||r}" is nested at depth ${l+1}. REDCap supports at most 2 levels (Form \u2192 Section). It will be flattened into its parent section.`})),o.type!=="group"){if(o.answerValueSet&&!ye(o)&&s.push({severity:"error",nodeId:r,message:`"${o.text||r}": answerValueSet by URL ("${o.answerValueSet}") cannot be represented in REDCap \u2014 choices must be inline. The field will be exported with empty choices.`}),o.code&&o.code.length>0&&!ye(o)&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": item.code (FHIR Coding) has no REDCap equivalent and will be dropped.`}),o.enableWhenExpression&&!ye(o)&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": FHIRPath-based enableWhenExpression cannot be translated to REDCap branching logic. The branching condition will be lost.`}),!ye(o)&&o.enableWhen&&o.enableWhen.length>1){let c=o.enableBehavior==="all"||!o.enableBehavior,d=o.enableBehavior==="any";!c&&!d&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": enableBehavior "${o.enableBehavior}" is not supported in REDCap. Branching logic may be incorrect.`})}if(!ye(o)){for(let c of o.extension||[])if(dr.has(c.url)){let d=c.url.split("/").pop();s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": extension "${d}" has no REDCap equivalent and will be dropped.`})}}ye(o)||(o.type==="reference"&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": type "reference" (FHIR resource reference) has no REDCap equivalent \u2014 will be exported as a text field.`}),o.type==="quantity"&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": type "quantity" (value + unit) has no direct REDCap equivalent \u2014 will be exported as a text field. Consider splitting into two fields.`})),ye(o)||(o.extension||[]).find(d=>d.url===p.calculatedExpression)&&s.push({severity:"warning",nodeId:r,message:`"${o.text||r}": calculatedExpression uses FHIRPath \u2014 stored as a REDCap calc formula annotation. Manual adjustment in REDCap will be required.`})}}),s}};var ze=new Mt;Qi.register(ze);fe.register({id:"redcap",label:"REDCap CSV \u2014 Data Dictionary (.csv)",isBuilderVersion:!1,metaVersion:null,ext:"csv",mimeType:"text/csv;charset=utf-8;",reportTitle:"REDCap Export \u2014 Compatibility Report",validatorFilter:n=>n.type!=="external",build(n){return Sn(n)},onBeforeReport(){ze.enabled=!0},onAfterExport(){ze.enabled=!1},onCancel(){ze.enabled=!1}});var Ji="http://unitsofmeasure.org",Tn={system:Ji,valueSet:Ji+"/vs"};var ur="http://www.w3.org",zi={xhtml:ur+"/1999/xhtml"};function he(n){return String(n||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function pr(n){let t=[];t.push(`<tr><td><b>Status</b></td><td>${he(n.status)}</td></tr>`),n.date&&t.push(`<tr><td><b>Date</b></td><td>${he(n.date)}</td></tr>`),n.version&&t.push(`<tr><td><b>Version</b></td><td>${he(n.version)}</td></tr>`),n.publisher&&t.push(`<tr><td><b>Publisher</b></td><td>${he(n.publisher)}</td></tr>`),n.description&&t.push(`<tr><td><b>Description</b></td><td>${he(n.description)}</td></tr>`);let e=[];function i(a,o){for(let l of a||[]){let r="\xA0\xA0\xA0\xA0".repeat(o);e.push(`<tr><td>${he(l.linkId)}</td><td>${r}${he(l.text)}</td><td>${he(l.type)}</td></tr>`),l.item&&i(l.item,o+1)}}i(n.item,0);let s=['<div xmlns="'+zi.xhtml+'">',`<h2>${he(n.title||n.id||"Questionnaire")}</h2>`,`<table><tbody>${t.join("")}</tbody></table>`];return e.length&&s.push(`<table><thead><tr><th>LinkId</th><th>Text</th><th>Type</th></tr></thead><tbody>${e.join("")}</tbody></table>`),s.push("</div>"),s.join("")}function Xi(n){return n==="checkbox"?"boolean":n==="integer"?"integer":n==="decimal"||n==="number"?"decimal":n==="quantity"?"quantity":n==="select"||n==="radio"||n==="checklist"?"choice":n==="open-choice"?"open-choice":n==="display"?"display":n==="date"?"date":n==="dateTime"?"dateTime":n==="time"?"time":n==="url"?"url":n==="attachment"?"attachment":n==="reference"?"reference":"string"}function fr(n){return!n||!n.length?[]:n.filter(t=>t.expression).map(t=>({url:p.constraint,extension:[...t.key?[{url:"key",valueId:t.key}]:[],...t.severity?[{url:"severity",valueCode:t.severity}]:[],{url:"expression",valueString:t.expression},...t.human?[{url:"human",valueString:t.human}]:[]]}))}function Ln(n){let t={linkId:n.id,text:n.title,type:n.type==="group"?"group":Xi(n.itemType)};n._prefix&&(t.prefix=n._prefix),n._definition&&(t.definition=n._definition),n._baseType&&(t.extension=t.extension||[],t.extension.push({url:p.baseType,valueCode:n._baseType})),n._fhirType&&(t.extension=t.extension||[],t.extension.push({url:p.fhirType,valueString:n._fhirType})),n._codes&&n._codes.length&&n.itemType!=="display"&&(t.code=n._codes),n.mandatory===!0&&n.itemType!=="display"&&(t.required=!0);let e=n.type==="item"&&(n.options||n._rawAnswerOptions||n._answerValueSet||n._answerExpression||n._candidateExpression);if(n.type==="item"&&n.itemType!=="display"&&!e){let r=Xi(n.itemType),c=d=>{if(r==="boolean")return{valueBoolean:typeof d=="boolean"?d:d==="true"};if(r==="decimal"){let u=parseFloat(d);return isFinite(u)?{valueDecimal:u}:null}if(r==="integer"){let u=parseInt(d,10);return isFinite(u)?{valueInteger:u}:null}if(r==="date")return{valueDate:String(d)};if(r==="dateTime")return{valueDateTime:String(d)};if(r==="time")return{valueTime:String(d)};if(r==="url")return{valueUri:String(d)};if(r==="reference"){let u=d&&typeof d=="object"?d.reference:typeof d=="string"?d:"";return u?{valueReference:{reference:u}}:null}return r==="choice"?{valueCoding:{code:String(d),display:String(d)}}:{valueString:String(d)}};if(n.repeats&&n._initialValues&&n._initialValues.length>1){let d=n._initialValues.map(c).filter(Boolean);d.length&&(t.initial=d)}else if(n._initialValue!==void 0&&n._initialValue!==""){let d=c(n._initialValue);d&&(t.initial=[d])}}n.enableWhen&&n.enableWhen.length&&(t.enableWhen=n.enableWhen.map(r=>({...r})),(n.enableWhen.length>1||n.enableBehavior==="any")&&(t.enableBehavior=n.enableBehavior==="any"?"any":"all"));let i=[];n.enableWhenExpression&&i.push({url:p.enableWhenExpression,valueExpression:{language:"text/fhirpath",expression:n.enableWhenExpression}});let s=(n.constraint||[]).filter(r=>r.key!==Be);if(i.push(...fr(s)),n.type==="group"&&n.logicWithParent==="OR"&&n.children.length>0){let r=n.children.map(c=>`%resource.item.where(linkId='${c.id.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}').answer.exists()`).join(" or ");i.push({url:p.constraint,extension:[{url:"key",valueId:Be},{url:"severity",valueCode:"error"},{url:"human",valueString:"At least one item in this group must be completed"},{url:"expression",valueString:r}]})}if(n.itemType==="reference"&&n.referenceResource&&i.push({url:p.referenceResource,valueCode:n.referenceResource}),n.itemType==="reference"&&n._referenceFilter&&i.push({url:p.referenceFilter,valueString:n._referenceFilter}),n.itemType==="reference"&&n._referenceProfiles?.length)for(let r of n._referenceProfiles)i.push({url:p.referenceProfile,valueCanonical:r});if((n.itemType==="integer"||n.itemType==="decimal")&&n.quantityUnit&&i.push({url:p.unit,valueCoding:{system:Tn.system,code:n.quantityUnit}}),n.itemType==="quantity"&&n.quantityUnit&&!n._unitOptions?.length&&i.push({url:p.unitOption,valueCoding:{system:Tn.system,code:n.quantityUnit}}),n.itemType==="quantity"&&n._unitValueSet&&i.push({url:p.unitValueSet,valueCanonical:n._unitValueSet}),n.itemType==="quantity"&&n._unitOptions&&n._unitOptions.length)for(let r of n._unitOptions){let c={};r.system&&(c.system=r.system),r.code&&(c.code=r.code),r.display&&(c.display=r.display),i.push({url:p.unitOption,valueCoding:c})}n._calculatedExpr&&i.push({url:p.calculatedExpression,valueExpression:{language:"text/fhirpath",expression:n._calculatedExpr}}),n._initialExpr&&i.push({url:p.initialExpression,valueExpression:{language:"text/fhirpath",expression:n._initialExpr}});for(let{url:r,prop:c}of ot)n[c]&&i.push({url:r,valueExpression:{language:"text/fhirpath",expression:n[c]}});n.itemType==="radio"?i.push({url:p.itemControl,valueCodeableConcept:{coding:[{system:p.itemControlCS,code:n._itemControl==="atable"?"atable":"radio-button"}]}}):n.itemType==="checklist"?i.push({url:p.itemControl,valueCodeableConcept:{coding:[{system:p.itemControlCS,code:n._itemControl==="atable"?"atable":"check-box"}]}}):n._itemControl&&i.push({url:p.itemControl,valueCodeableConcept:{coding:[{system:p.itemControlCS,code:n._itemControl}]}});let a=[];n._renderStyle&&a.push({url:p.renderingStyle,valueString:n._renderStyle}),n._renderXhtml&&a.push({url:p.renderingXhtml,valueString:n._renderXhtml}),n._renderMarkdown&&a.push({url:p.renderingMarkdown,valueMarkdown:n._renderMarkdown}),a.length&&(t._text={extension:a}),n.type==="group"?t.item=n.children.map(Ln):(n.itemType==="select"||n.itemType==="radio"||n.itemType==="open-choice"||n.itemType==="checklist")&&(n.options||n._rawAnswerOptions)&&!n._answerValueSet&&!n._answerExpression&&!n._candidateExpression&&(n._rawAnswerOptions?t.answerOption=n._rawAnswerOptions.map(r=>{let c=r.valueCoding?r.valueCoding.code||r.valueCoding.display||"":r.valueString!==void 0?r.valueString:r.valueInteger!==void 0?String(r.valueInteger):r.valueDate!==void 0?r.valueDate:r.valueTime!==void 0?r.valueTime:r.valueReference?typeof r.valueReference=="string"?r.valueReference:r.valueReference.reference||"":"",d={...r},u=new Set([p.ordinalValue,p.optionPrefix,p.optionExclusive,p.itemWeight,p.answerMedia]),f=(r.extension||[]).filter(h=>!u.has(h.url));return n._optionOrdinals?.[c]!==void 0&&f.push({url:p.ordinalValue,valueDecimal:n._optionOrdinals[c]}),n._optionPrefixes?.[c]&&f.push({url:p.optionPrefix,valueString:n._optionPrefixes[c]}),n._optionExclusives?.[c]&&f.push({url:p.optionExclusive,valueBoolean:!0}),n._optionWeights?.[c]!==void 0&&f.push({url:p.itemWeight,valueDecimal:n._optionWeights[c]}),n._answerMedias?.[c]&&f.push({url:p.answerMedia,valueAttachment:n._answerMedias[c]}),f.length&&(d.extension=f),n._initialSelected===c&&(d.initialSelected=!0),d}):t.answerOption=nt(n.options).map(({code:r,display:c})=>{let u={valueCoding:{...n._optionSystems?.[r]?{system:n._optionSystems[r]}:{},code:r,display:c}},f=[];return n._optionOrdinals&&n._optionOrdinals[r]!==void 0&&f.push({url:p.ordinalValue,valueDecimal:n._optionOrdinals[r]}),n._optionPrefixes&&n._optionPrefixes[r]!==void 0&&f.push({url:p.optionPrefix,valueString:n._optionPrefixes[r]}),n._optionExclusives&&n._optionExclusives[r]&&f.push({url:p.optionExclusive,valueBoolean:!0}),n._optionWeights&&n._optionWeights[r]!==void 0&&f.push({url:p.itemWeight,valueDecimal:n._optionWeights[r]}),n._answerMedias&&n._answerMedias[r]&&f.push({url:p.answerMedia,valueAttachment:n._answerMedias[r]}),f.length&&(u.extension=f),n._initialSelected===r&&(u.initialSelected=!0),u}));let o=new Set(["checkbox","decimal","integer","number","text","url","open-choice"]);if(n._maxLength!==void 0&&n._maxLength!==null&&o.has(n.itemType)&&(t.maxLength=n._maxLength),n.type==="item"&&n.children?.length>0&&(t.item=n.children.map(Ln)),n._answerConstraint&&(t.answerConstraint=n._answerConstraint),n._minLength!==void 0&&n._minLength!==null&&i.push({url:p.minLength,valueInteger:n._minLength}),n._regex&&i.push({url:p.regex,valueString:n._regex}),n._maxFileSizeMB!==void 0&&n._maxFileSizeMB!==null&&i.push({url:p.maxSize,valueDecimal:n._maxFileSizeMB}),n._mimeTypes&&n._mimeTypes.length)for(let r of n._mimeTypes)r&&i.push({url:p.mimeType,valueCode:r});if(n._entryFormat&&i.push({url:p.entryFormatSdc,valueString:n._entryFormat}),n._choiceOrientation&&i.push({url:p.choiceOrientation,valueCode:n._choiceOrientation}),Number.isInteger(n._columnCount)&&n._columnCount>1&&i.push({url:p.columnCount,valueInteger:n._columnCount}),n._choiceColumns&&n._choiceColumns.length)for(let r of n._choiceColumns){let c=[];r.path&&c.push({url:"path",valueString:r.path}),r.label&&c.push({url:"label",valueString:r.label}),r.width&&c.push({url:"width",valueQuantity:r.width}),r.forDisplay!==void 0&&c.push({url:"forDisplay",valueBoolean:r.forDisplay}),i.push({url:p.choiceColumn,extension:c})}if(n._supportLinks&&n._supportLinks.length)for(let r of n._supportLinks)r&&i.push({url:p.supportLink,valueUri:r});if(n._hidden&&i.push({url:p.hiddenSdc,valueBoolean:!0}),n._isSubject&&n.type==="item"&&n.itemType!=="display"&&i.push({url:p.isSubject,valueBoolean:!0}),n._observationExtract!=null&&n.itemType!=="display"&&i.push({url:p.observationExtract,valueBoolean:n._observationExtract!==!1}),n.type==="group"&&n._collapsible&&i.push({url:p.collapsible,valueCode:n._collapsible}),n.itemType==="open-choice"&&n._openLabel&&i.push({url:p.openLabel,valueString:n._openLabel}),n._preferredTermServer&&i.push({url:p.preferredTerminologyServer,valueUrl:n._preferredTermServer}),n._shortText&&i.push({url:p.shortText,valueString:n._shortText}),n._designNote&&i.push({url:p.designNote,valueMarkdown:n._designNote}),n._usageMode&&i.push({url:p.usageMode,valueCode:n._usageMode}),n._signatureRequired?.length)for(let r of n._signatureRequired)i.push({url:p.signatureRequired,valueCodeableConcept:{coding:[{system:r.system,code:r.code,display:r.display}]}});if(n._itemMedia&&i.push({url:p.itemMedia,valueAttachment:n._itemMedia}),n._displayCategory&&n.itemType!=="display"&&i.push({url:p.displayCategory,valueCodeableConcept:{coding:[{system:p.displayCategoryCS,code:n._displayCategory}]}}),n._minValue!==void 0){let r=Number.isInteger(n._minValue);i.push({url:p.minValue,[r?"valueInteger":"valueDecimal"]:n._minValue})}if(n._maxValue!==void 0){let r=Number.isInteger(n._maxValue);i.push({url:p.maxValue,[r?"valueInteger":"valueDecimal"]:n._maxValue})}let l=new Set(["select","radio","checklist","open-choice","decimal","integer","number","text","date","dateTime","time","quantity"]);if(n.type==="item"&&n._answerValueSet&&l.has(n.itemType)&&(t.answerValueSet=n._answerValueSet),n._readOnly&&n.itemType!=="display"&&(t.readOnly=!0),n._disabledDisplay&&(t.disabledDisplay=n._disabledDisplay),(n.repeats||n.itemType==="checklist")&&n.itemType!=="display"&&(t.repeats=!0),n.repeats&&n._minOccurs!==void 0&&n.itemType!=="display"&&n.required&&i.push({url:p.minOccurs,valueInteger:n._minOccurs}),n.repeats&&n._maxOccurs!==void 0&&i.push({url:p.maxOccurs,valueInteger:n._maxOccurs}),n._maxDecimalPlaces!==void 0&&i.push({url:p.maxDecimalPlaces,valueInteger:n._maxDecimalPlaces}),n._sliderStep!==void 0){let c=Number.isInteger(n._sliderStep)?n._sliderStep:Math.round(n._sliderStep);i.push({url:p.sliderStepValue,valueInteger:c})}return n._unknownExtensions&&n._unknownExtensions.length&&i.push(...n._unknownExtensions.map(r=>JSON.parse(JSON.stringify(r)))),i.length&&(t.extension=i),t}function Pt(n=pe.get(w.APP_CONTEXT_READY)?.questDoc){let{tree:t,meta:e,rawFhir:i,variables:s,contained:a,translations:o}=n,l=p.variable,r={resourceType:"Questionnaire",id:e.id||"logic-builder-export",status:e.status||"draft",item:t.map(Ln)};if(e.url&&(r.url=e.url),e.version&&(r.version=e.version),r.title=e.title||i&&i.title||"Untitled Questionnaire",e.name&&(r.name=e.name),e.publisher&&(r.publisher=e.publisher),e.description&&(r.description=e.description),e.experimental!==null&&(r.experimental=e.experimental),e._implicitRules&&(r.implicitRules=e._implicitRules),e.language&&(r.language=e.language),e.purpose&&(r.purpose=e.purpose),e.copyright&&(r.copyright=e.copyright),e.copyrightLabel&&(r.copyrightLabel=e.copyrightLabel),e._versionAlgorithmString?r.versionAlgorithmString=e._versionAlgorithmString:e._versionAlgorithmCoding&&(r.versionAlgorithmCoding=JSON.parse(JSON.stringify(e._versionAlgorithmCoding))),e.approvalDate&&(r.approvalDate=e.approvalDate),e.lastReviewDate&&(r.lastReviewDate=e.lastReviewDate),r.date=e.date||new Date().toISOString().split("T")[0],e.subjectType?.length&&(r.subjectType=[...e.subjectType]),e._rawIdentifier?.length&&(r.identifier=JSON.parse(JSON.stringify(e._rawIdentifier))),r.text=e._rawText?{status:e._rawText.status,div:e._rawText.div}:{status:"generated",div:pr(r)},e._rawContact&&(r.contact=e._rawContact),e._rawUseContext&&(r.useContext=e._rawUseContext),e._rawJurisdiction&&(r.jurisdiction=e._rawJurisdiction),e._rawCode&&(r.code=e._rawCode),e._rawModifierExtension?.length&&(r.modifierExtension=JSON.parse(JSON.stringify(e._rawModifierExtension))),e.derivedFrom?.length&&(r.derivedFrom=e.derivedFrom),e.effectivePeriodStart||e.effectivePeriodEnd){let h={};e.effectivePeriodStart&&(h.start=e.effectivePeriodStart),e.effectivePeriodEnd&&(h.end=e.effectivePeriodEnd),r.effectivePeriod=h}let c=s.filter(h=>h.name&&h.expression),d=p.replaces,u=[...c.map(h=>({url:l,valueExpression:{name:h.name,language:"text/fhirpath",expression:h.expression}})),...(e.replaces||[]).filter(h=>h.trim()).map(h=>({url:d,valueCanonical:h.trim()})),...e.preferredTermServer?.trim()?[{url:p.preferredTerminologyServer,valueUrl:e.preferredTermServer.trim()}]:[],...(e._signatureRequired||[]).map(h=>({url:p.signatureRequired,valueCodeableConcept:{coding:[{system:h.system,code:h.code,display:h.display}]}})),...(e.launchContexts||[]).filter(h=>h.name.trim()).map(h=>({url:p.launchContext,extension:[{url:"name",valueCoding:{system:p.launchContextCS,code:h.name.trim()}},...h.type.trim()?[{url:"type",valueCode:h.type.trim()}]:[],...h.description.trim()?[{url:"description",valueString:h.description.trim()}]:[]]})),...(e._rawQuestExtensions||[]).map(h=>JSON.parse(JSON.stringify(h)))];return u.length&&(r.extension=u),a.length&&(r.contained=a.map(h=>JSON.parse(JSON.stringify(h)))),(e._metaVersionId||e._metaSource||e._metaLastUpdated||e._rawMetaProfile?.length||e._rawMetaTag?.length||e._rawMetaSecurity?.length)&&(r.meta={lastUpdated:new Date().toISOString()},e._metaVersionId&&(r.meta.versionId=e._metaVersionId),e._metaSource&&(r.meta.source=e._metaSource),e._rawMetaProfile?.length&&(r.meta.profile=e._rawMetaProfile),e._rawMetaTag?.length&&(r.meta.tag=e._rawMetaTag),e._rawMetaSecurity?.length&&(r.meta.security=e._rawMetaSecurity)),hr(r,o),r}var Ki=p.translation;function hr(n,t){if(!t||!Object.keys(t).length)return;let e=Object.keys(t),i=e.filter(r=>t[r].title).map(r=>Nn(r,t[r].title));i.length&&(n._title=n._title||{},n._title.extension=An(n._title.extension||[],i));function s(r){for(let c of r||[]){let d=e.filter(u=>t[u].items[c.linkId]!=null).map(u=>Nn(u,t[u].items[c.linkId]));d.length&&(c._text=c._text||{},c._text.extension=An(c._text.extension||[],d));for(let u of c.answerOption||[]){let f=u.valueCoding?.code||u.valueString||u.valueInteger?.toString();if(!f)continue;let h=c.linkId+"__"+f,_=e.filter(v=>t[v].opts[h]!=null).map(v=>Nn(v,t[v].opts[h]));_.length&&u.valueCoding&&(u._valueCoding=u._valueCoding||{},u._valueCoding._display=u._valueCoding._display||{},u._valueCoding._display.extension=An(u._valueCoding._display.extension||[],_))}s(c.item)}}s(n.item);let a=te.uiTranslations;n.extension=(n.extension||[]).filter(r=>r.url!==a);for(let r of e){let c=t[r].ui;!c||!Object.keys(c).length||n.extension.push({url:a,extension:[{url:"lang",valueCode:r},{url:"strings",valueString:JSON.stringify(c)}]})}n.extension.length||delete n.extension;let o=te.xhtmlTranslations;n.extension=(n.extension||[]).filter(r=>r.url!==o);for(let r of e){let c=t[r].xhtml;!c||!Object.keys(c).length||n.extension.push({url:o,extension:[{url:"lang",valueCode:r},{url:"strings",valueString:JSON.stringify(c)}]})}let l=te.markdownTranslations;n.extension=(n.extension||[]).filter(r=>r.url!==l);for(let r of e){let c=t[r].markdown;!c||!Object.keys(c).length||n.extension.push({url:l,extension:[{url:"lang",valueCode:r},{url:"strings",valueString:JSON.stringify(c)}]})}n.extension.length||delete n.extension}function Nn(n,t){return{url:Ki,extension:[{url:"lang",valueCode:n},{url:"content",valueString:t}]}}function An(n,t){return[...(n||[]).filter(i=>i.url!==Ki),...t]}async function Zi(n,t,e){let a=`${(de.get(Z.SDC_SERVER)||n).replace(/\/$/,"")}/Questionnaire/$populate`,o=un(a),l=JSON.stringify({resourceType:"Parameters",parameter:[{name:"questionnaire",resource:t},{name:"subject",valueReference:{reference:e}}]}),r=await fetch(o,{method:"POST",headers:{"Content-Type":"application/fhir+json",Accept:"application/fhir+json"},body:l,signal:AbortSignal.timeout(3e4)});if(!r.ok){let d=await r.text().catch(()=>""),u=d.substring(0,150);try{let _=JSON.parse(d)?.issue?.[0];u=_?.diagnostics||_?.details?.text||u}catch{}let f=r.status===400||r.status===404?" (This server may not support the SDC $populate operation.)":"";throw new Error(`$populate: HTTP ${r.status}${u?" \u2014 "+u:""}${f}`)}let c=await r.json();if(c.resourceType==="QuestionnaireResponse")return c;if(c.resourceType==="Parameters"){let d=c.parameter?.find(u=>u.name==="questionnaire-response"||u.name==="response"||u.name==="return");if(d?.resource?.resourceType==="QuestionnaireResponse")return d.resource;throw new Error("$populate Parameters response did not contain a QuestionnaireResponse")}throw new Error(`$populate returned unexpected resourceType: ${c.resourceType}`)}var me=window.fhirpath;function Pe(){return typeof document<"u"&&document.hidden?new Promise(n=>setTimeout(n,0)):new Promise(n=>requestAnimationFrame(()=>requestAnimationFrame(n)))}var Bt=class{constructor(t={}){this._session=t.session||Fn,this._bus=this._session.bus,this._rc=t.rc||Wn,this._rc.bus=this._bus,this._progress=t.progress||{show(){},hide(){}},this._chrome={search:{refresh(){}},statusBadge:{update(){}},languageMenu:{rebuild(){}},...t.chrome||{}},this._mountEl=t.mountEl||null,this._jsonEl=t.jsonEl||null;let e=this._rc;this._tree=null,this._answerStore=null,this._rawFhir=null,this._questVariables=null,this._calcFormOk=null,this._viewPrefs=t.viewPrefs||{showLinkId:!0,showPrefix:!0,showBadges:!0,showHiddenItems:!0},this._previewMode=t.previewMode||"preview",this._lastCtx={fp:null,qr:null,env:{}},this._preQR=null,this._preEnvVars=null,this._renderVersion=0,this._renderTimer=null,this._calcCache=null,this._pendingCtx=null,this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._els={},e.viewPrefs=this._viewPrefs,e.lastCtx=this._lastCtx,e.buildControl=(s,a,o)=>this._buildControl(s,a,o),e.isMandatory=ae,e.evalConstraints=Ye,e.CHECKABLE_TYPES=St;let i=({questDoc:s,answerStore:a})=>{this._tree=s.tree,this._answerStore=a,this._rawFhir=s,this._questVariables=s.variables,this._calcFormOk=(o,l)=>Re(o,a,l),e.instancePath=[],e.translations=s.translations,e.calcFormOk=o=>this._calcFormOk(o,e.instancePath),e.updateGroupIcons=()=>ce.updateAll(e),e.getValue=o=>a.get(o,e.instancePath),e.getAll=o=>a.getAll(o,e.instancePath),e.set=(o,l)=>a.set(o,l,e.instancePath),e.remove=o=>a.remove(o,e.instancePath),e.instanceCount=(o,l)=>a.instanceCount(o,l),e.addInstance=(o,l)=>a.addInstance(o,l),e.removeInstance=(o,l,r)=>a.removeInstance(o,l,r),e.evalChildren=(o,l)=>{let r=[];for(let c of o)ke(c,e.ctx,r,!1,l);return r}};if(t.session)i({questDoc:this._session.questDoc,answerStore:this._session.answerStore});else{let s=pe.get(w.APP_CONTEXT_READY);s?.questDoc?i(s):this._bus.on(w.APP_CONTEXT_READY,a=>i(a.detail),{once:!0})}this._bus.on(w.VIEW_PREF_CHANGE,s=>this._onViewPrefChange(s)),this._bus.on(w.PREVIEW_MODE_CHANGE,s=>this._onPreviewModeChange(s)),this._bus.on(w.REINIT_FORM,s=>this.reinitForm({silent:s.detail?.silent})),this._bus.on(w.QUESTIONNAIRE_LOADED,()=>{this._els.lform?.closest(".right-panel-body")?.scrollTo({top:0}),this._chrome.languageMenu.rebuild(this._rawFhir?.translations)}),this._bus.on(w.BUILDER_NAVIGATE,s=>{this._bus.dispatch(w.PREVIEW_NAVIGATE_TO,{id:s.detail.id})}),this._bus.on(w.RESPONSE_CHANGED,()=>{++this._renderVersion,clearTimeout(this._renderTimer),this._renderTimer=setTimeout(()=>this._asyncRender(this._renderVersion),30)}),this._bus.on(w.CALC_RECALC_REQUESTED,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._calcCache=null}),this._bus.on(w.QR_LOADED,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null}),this._bus.on(w.EXPAND_ALL_PREVIEW,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),this._bus.on(w.COLLAPSE_ALL_PREVIEW,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),this._bus.on(w.SDC_POPULATE_REQUESTED,s=>this._populate(s.detail.patientRef)),this._bus.on(w.LANGUAGE_CHANGED,s=>{e.activeLanguage=s.detail?.lang??"",e.translations=this._rawFhir?.translations??{},this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),t.session||(pe.get(w.APP_CONTEXT_READY)?this.mount():this._bus.on(w.APP_CONTEXT_READY,()=>this.mount(),{once:!0}))}getLastCtx(){return this._lastCtx}collapseAll(){this._bus.dispatch(w.COLLAPSE_ALL_PREVIEW)}expandAll(){this._bus.dispatch(w.EXPAND_ALL_PREVIEW)}destroy(){clearTimeout(this._renderTimer)}mount(){let t={lform:this._mountEl||document.querySelector('[data-mount="preview-lform"]'),fhirJsonView:this._jsonEl||document.querySelector('[data-mount="fhir-json-view"]'),leftPanelBody:document.querySelector('[data-mount="left-panel-body"]'),viewOptionsWrap:document.querySelector('[data-mount="viewOptionsWrap"]'),previewModeWrap:document.querySelector('[data-mount="previewModeWrap"]'),searchWrap:document.querySelector('[data-mount="search-wrap"]')};this._els=t;let e=()=>{let s=this._tree.length>0?"":"none";t.viewOptionsWrap&&(t.viewOptionsWrap.style.display=s),t.searchWrap&&(t.searchWrap.style.display=s),t.previewModeWrap&&(t.previewModeWrap.style.display=s)};e(),this._bus.on(w.QUESTIONNAIRE_LOADED,e),this._bus.on(w.QUESTIONNAIRE_NEW,e),this._bus.on(w.QUESTIONNAIRE_CLEARED,e);let i=t.lform;i&&(i.classList.toggle("preview--no-badges",!this._viewPrefs.showBadges),i.classList.toggle("preview--no-linkid",!this._viewPrefs.showLinkId),i.classList.toggle("preview--no-prefix",!this._viewPrefs.showPrefix),i.classList.toggle("preview--no-hidden",!this._viewPrefs.showHiddenItems),i.classList.toggle("patient-view",this._previewMode==="patient"),i.style.display=this._previewMode==="json"?"none":""),t.fhirJsonView&&(t.fhirJsonView.style.display=this._previewMode==="json"?"":"none"),this._asyncRender(++this._renderVersion)}async reinitForm({silent:t=!1}={}){if(!me)return;let e=this._progress;this._calcCache=null,this._pendingCtx=null,this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,t||e.show("Building questionnaire response\u2026"),await Pe();let s=Je({resourceType:"Questionnaire",item:[]},this._answerStore.toValueMap());t||e.show("Evaluating variables\u2026"),await Pe();let a=En(this._questVariables,s,me);t||e.show("Applying initial values\u2026"),await Pe();let o=this._answerStore.toValueMap();wn(this._tree,s,me,o,a),this._answerStore.merge(o),this._preQR=s,this._preEnvVars=a,t||e.show("Refreshing preview\u2026"),await Pe(),this._asyncRender(++this._renderVersion)}_onViewPrefChange(t){this._viewPrefs[t.detail.key]=t.detail.value;let e=this._els.lform;if(!e)return;let i={showBadges:"preview--no-badges",showLinkId:"preview--no-linkid",showPrefix:"preview--no-prefix",showHiddenItems:"preview--no-hidden"}[t.detail.key];i&&e.classList.toggle(i,!t.detail.value),this._lastVisibleSig=null,this._lastRepCounts=null,this._asyncRender(++this._renderVersion)}_onPreviewModeChange(t){this._previewMode=t.detail.mode;let e=this._els.lform;if(e?.classList.toggle("patient-view",this._previewMode==="patient"),e){let i=this._previewMode==="json";e.style.display=i?"none":"",this._els.fhirJsonView&&(this._els.fhirJsonView.style.display=i?"":"none")}this._lastVisibleSig=null,this._lastRepCounts=null,this._asyncRender(++this._renderVersion)}_reCalc(){if(me){let t,e,i=Pt(this._session.questDoc);this._preQR?(t=this._preQR,e=this._preEnvVars,this._preQR=null,this._preEnvVars=null):(t=Je(i,this._answerStore.toValueMap()),e=En(this._questVariables,t,me));let s=this._answerStore.toValueMap();this._calcCache||(this._calcCache=Ii(this._tree,this._questVariables)),Vi(this._tree,t,me,s,e,i,this._calcCache),this._answerStore.merge(s);let a={resource:t,...e};this._lastCtx.fp=me,this._lastCtx.qr=t,this._lastCtx.env=a,this._bus.dispatch(w.FHIRPATH_CTX_UPDATED,{fp:me,qr:t,env:a}),this._bus.dispatch(w.REFRESH_EXPR_ICONS);let o={fp:me,qr:t,envVars:e};return this._pendingCtx=o,o}return{fp:null,qr:null,envVars:{}}}_buildControl(t,e,i){let s=this._rc,a=this._previewMode==="patient",o=s.instancePath&&s.instancePath.length?s.instancePath.slice():void 0,l=()=>{let f=this._calcFormOk(t,o);e&&(e.className=f?"icon-ok":"icon-fail",e.textContent=f?"\u2713":"\u2717"),a&&t._previewEl&&t._previewEl.classList.toggle("lform-item--invalid",!f)},d={getValue:f=>this._answerStore.get(f,o),setValue:(f,h)=>this._bus.dispatch(w.ANSWER_SET,{id:f,value:h,path:o}),onChange:()=>{l(),i&&i()},_reCalc:()=>{this._reCalc(),this._bus.dispatch(w.REFRESH_CALC_BADGES)},bus:this._bus,fhirBase:this._fhirBase(),corsProxy:this._session.config?.corsProxy??de.get(Z.CORS_PROXY),_fpCtx:this._lastCtx},u=t.buildControl(d);return this._applyA11yLabels(u,t),u&&typeof u.querySelectorAll=="function"&&u.querySelectorAll(".ctrl-err").forEach(f=>{f.setAttribute("role","alert"),f.setAttribute("aria-live","assertive")}),u}_applyA11yLabels(t,e){if(!t||typeof t.querySelectorAll!="function")return;let i=String(e.title||"").replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();i&&t.querySelectorAll("input, select, textarea").forEach(s=>{s.type!=="hidden"&&(s.getAttribute("aria-label")||s.getAttribute("aria-labelledby")||s.id&&t.querySelector(`label[for="${s.id}"]`)||typeof s.closest=="function"&&s.closest("label")||s.setAttribute("aria-label",i))})}async _asyncRender(t){let e=this._rc,i=this._progress,{search:s,statusBadge:a,languageMenu:o}=this._chrome,l=this._pendingCtx||this._reCalc();if(this._pendingCtx=null,await Pe(),t!==this._renderVersion){i.hide();return}if(this._tree.length===0){let m=this._els.lform;if(m){m.innerHTML="";let x=document.createElement("div");x.className="preview-placeholder",x.dataset.testid="preview-placeholder",x.innerHTML='<div class="preview-placeholder-icon">\u{1F4CB}</div><div class="preview-placeholder-title">No questionnaire loaded</div><div class="preview-placeholder-hint">Use <strong>Questionnaires \u25BE</strong> in the toolbar to load a questionnaire:<br><strong>From file\u2026</strong> \u2014 upload a FHIR R4 or STU3 JSON file from your computer,<br><strong>From Library\u2026</strong> \u2014 pick one of the built-in samples,<br><strong>From Cloud\u2026</strong> \u2014 access your saved questionnaires (sign in required).<br>Or start from scratch: click <strong>+ Add Root Group</strong> in the left panel.</div>',m.appendChild(x)}a.update({visible:[],ctx:null}),i.hide();return}let r=[];for(let m of this._tree)ke(m,l,r);let c=r.filter(m=>m.visible),d=new Map(r.map(m=>[m.node.id,m])),u=l.envVars||{};if(await Pe(),t!==this._renderVersion){i.hide();return}let f=this._els.lform;if(!f){i.hide();return}let h=c.map(m=>{let x=m.node;return`${x.id}|${x.title??""}|${x.itemType??""}|${x.mandatory??""}|${x.logicWithParent??""}|${x._prefix??""}|${x._choiceOrientation??""}|${x._previewCollapsed?"c":"e"}`}).join("\0"),_=r.filter(m=>m.visible&&m.node.repeats),v=new Map(_.map(m=>[m.node.id,this._answerStore.data[m.node.id]?.length??1])),C=m=>{let x=this._answerStore.data[m];return x?JSON.stringify(x).length:0},T=new Map(_.map(m=>[m.node.id,C(m.node.id)])),N=_.map(m=>`${v.get(m.node.id)}:${T.get(m.node.id)}`).join(","),D=h+" "+N,[O="",A=""]=(this._lastVisibleSig??" ").split(" "),b=f.children.length>0;if(h===O&&b){if(e.ctx=l,e.resultMap=d,e.cEnv=u,e.visible=c,N===A){for(let m of r){if(!m.visible)continue;let x=m.node._iconEl;if(!x||!document.contains(x))continue;let{displayOk:k}=m.node._evalCondition?.(m,e)??{displayOk:!0};x.className=k?"icon-ok":"icon-fail",x.textContent=k?"\u2713":"\u2717"}ce.updateAll(e),a.update({visible:c,ctx:l}),s.refresh(),this._updateJsonView(),i.hide(),this._bus.dispatch(w.PREVIEW_RENDER_DONE);return}e.previewMode=this._previewMode,e.translations=this._rawFhir?.translations??{},e.instancePath=[];for(let m of _){let x=v.get(m.node.id),k=this._lastRepCounts?.get(m.node.id)??1,$=T.get(m.node.id),q=this._lastRepDataSz?.get(m.node.id)??0;if(x===k&&$===q)continue;let z=m.node._previewEl;if(!z||!document.contains(z))continue;let K=z.nextElementSibling,U=document.createDocumentFragment();I.dispatch(m,U,e),z.replaceWith(U),K&&(K.dataset.rgGroup===m.node.id||K.dataset.gtableId===m.node.id)&&K.remove()}this._lastVisibleSig=D,this._lastRepCounts=v,this._lastRepDataSz=T;for(let m of r){if(!m.visible)continue;let x=m.node._iconEl;if(!x||!document.contains(x))continue;let{displayOk:k}=m.node._evalCondition?.(m,e)??{displayOk:!0};x.className=k?"icon-ok":"icon-fail",x.textContent=k?"\u2713":"\u2717"}ce.updateAll(e),a.update({visible:c,ctx:l}),s.refresh(),this._updateJsonView(),i.hide(),this._bus.dispatch(w.PREVIEW_RENDER_DONE);return}this._lastVisibleSig=D,this._lastRepCounts=v;let P=f.closest(".right-panel-body"),y=P?P.scrollTop:0,R=document.activeElement,S=null;if(R&&f.contains(R)){let m=R.closest("[data-preview-id]");if(m){let x=Array.from(m.querySelectorAll("input, textarea, select"));S={previewId:m.dataset.previewId,inputIndex:x.indexOf(R),selStart:R.selectionStart,selEnd:R.selectionEnd}}}f.innerHTML="";let L=new Map;e.ctx=l,e.resultMap=d,e.cEnv=u,e.visible=c,e.groupIconMap=L,e.previewMode=this._previewMode,e.translations=this._rawFhir?.translations??{},e.instancePath=[];let H=document.createDocumentFragment();for(let m of this._tree){let x=d.get(m.id);x&&I.dispatch(x,H,e)}if(f.appendChild(H),P&&y&&(P.scrollTop=y),S){let m=f.querySelector('[data-preview-id="'+CSS.escape(S.previewId)+'"]');if(m){let k=Array.from(m.querySelectorAll("input, textarea, select"))[S.inputIndex];if(k){k.focus();try{k.setSelectionRange(S.selStart,S.selEnd)}catch{}}}}ce.updateAll(e),a.update({visible:c,ctx:l}),s.refresh(),this._updateJsonView(),o.rebuild(this._rawFhir?.translations),i.hide(),this._bus.dispatch(w.PREVIEW_RENDER_DONE)}_fhirBase(){return this._session.config?.fhirBaseUrl??de.get(Z.FHIR_BASE)}async _populate(t){let e=this._progress,i=this._fhirBase();if(!i){_e("No FHIR Base Server configured. Open Settings to set one.");return}e.show("Populating from server\u2026");try{let s=Pt(this._session.questDoc),a=await Zi(i,s,t),o=this._answerStore.toValueMap(),{loaded:l}=Lt(a,o,this._tree);this._answerStore.replaceAll(o),this._bus.dispatch(w.REINIT_FORM),jn(`Pre-filled ${l} answer${l!==1?"s":""} from server.`)}catch(s){_e(s.message)}finally{e.hide()}}_updateJsonView(){if(this._previewMode!=="json"||!this._els.fhirJsonView)return;let t=Pt(this._session.questDoc);this._els.fhirJsonView.innerHTML=Ee(JSON.stringify(t,null,2)),this._chrome.search.refresh()}};var Xe=class{constructor({els:t,bus:e=X,previewMode:i="preview"}){this._el=t,this._bus=e,this._matches=[],this._idx=-1,this._previewMode=i,this._ac=new AbortController,this._bus.on(w.PREVIEW_MODE_CHANGE,s=>{this._previewMode=s.detail.mode},{signal:this._ac.signal}),this._wire()}_wire(){let t=this._el,e={signal:this._ac.signal};t.input.addEventListener("input",()=>this._onInput(),e),t.input.addEventListener("keydown",i=>{(i.key==="ArrowDown"||i.key==="Enter")&&(i.preventDefault(),this._navigate(1)),i.key==="ArrowUp"&&(i.preventDefault(),this._navigate(-1)),i.key==="Escape"&&(t.input.value="",this._clear())},e),t.nextBtn.addEventListener("click",()=>this._navigate(1),e),t.prevBtn.addEventListener("click",()=>this._navigate(-1),e),document.addEventListener("keydown",i=>{if((i.ctrlKey||i.metaKey)&&i.key==="f"){if(t.searchWrap&&t.searchWrap.style.display==="none")return;i.preventDefault(),t.input.focus(),t.input.select()}},e)}destroy(){this._ac.abort()}refresh(){this._el.input.value.trim()&&this._onInput()}_onInput(){let t=this._el.input.value.trim().toLowerCase();if(this._clearHighlights(),!t){this._clear();return}this._previewMode==="json"?this._onInputJson(t):this._onInputRows(t)}_onInputRows(t){let e=[...this._el.lform.querySelectorAll("[data-preview-id]")];if(this._matches=e.filter(i=>i.textContent.toLowerCase().includes(t)),this._matches.length===0){this._idx=-1,this._el.counter.textContent="No results",this._el.counter.classList.add("search-counter--empty"),this._el.input.classList.add("search-input--empty");return}this._el.input.classList.remove("search-input--empty"),this._el.counter.classList.remove("search-counter--empty"),this._matches.forEach(i=>i.classList.add("search-match")),this._idx=0,this._activate()}_onInputJson(t){let e=this._el.fhirJsonView.textContent,{html:i,count:s}=Pn(e,t);if(this._el.fhirJsonView.innerHTML=i,s===0){this._idx=-1,this._el.counter.textContent="No results",this._el.counter.classList.add("search-counter--empty"),this._el.input.classList.add("search-input--empty");return}this._el.input.classList.remove("search-input--empty"),this._el.counter.classList.remove("search-counter--empty"),this._matches=[...this._el.fhirJsonView.querySelectorAll("mark.search-match")],this._idx=0,this._activateJson()}_navigate(t){this._matches.length!==0&&(this._idx>=0&&this._idx<this._matches.length&&this._matches[this._idx].classList.remove("search-match--active"),this._idx=(this._idx+t+this._matches.length)%this._matches.length,this._previewMode==="json"?this._activateJson():this._activate())}_activate(){let t=this._matches[this._idx];t.classList.add("search-match--active"),t.scrollIntoView({behavior:"smooth",block:"center"}),this._el.counter.textContent=this._idx+1+" / "+this._matches.length,this._el.counter.classList.remove("search-counter--empty")}_activateJson(){this._matches.forEach((t,e)=>t.classList.toggle("search-match--active",e===this._idx)),this._matches[this._idx].scrollIntoView({behavior:"smooth",block:"center"}),this._el.counter.textContent=this._idx+1+" / "+this._matches.length,this._el.counter.classList.remove("search-counter--empty")}_clearHighlights(){if(this._previewMode==="json"&&this._el.fhirJsonView.querySelector("mark.search-match")){let t=this._el.fhirJsonView.textContent;this._el.fhirJsonView.innerHTML=Ee(t)}else this._matches.forEach(t=>{t.classList.remove("search-match"),t.classList.remove("search-match--active")});this._matches=[],this._idx=-1}_clear(){this._clearHighlights(),this._el.counter.textContent="",this._el.counter.classList.remove("search-counter--empty"),this._el.input.classList.remove("search-input--empty")}},mr=null;function gr(){let n={input:document.querySelector('[data-mount="search-input"]'),prevBtn:document.querySelector('[data-mount="search-prev-btn"]'),nextBtn:document.querySelector('[data-mount="search-next-btn"]'),counter:document.querySelector('[data-mount="search-counter"]'),lform:document.querySelector('[data-mount="preview-lform"]'),fhirJsonView:document.querySelector('[data-mount="fhir-json-view"]'),searchWrap:document.querySelector('[data-mount="search-wrap"]')};n.input&&(mr=new Xe({els:n,bus:X}))}typeof document<"u"&&gr();var Ke=class{constructor({els:t,bus:e=X,getStore:i}={}){this._btn=t.btn,this._dropdown=t.dropdown,this._wrap=t.wrap,this._bus=e,this._getStore=i||(()=>pe.get(w.APP_CONTEXT_READY)?.answerStore),this._open=!1,this._ac=new AbortController,this._btn.setAttribute("aria-live","polite"),this._btn.setAttribute("aria-atomic","true"),this._btn.addEventListener("click",s=>{s.stopPropagation(),this._open=!this._open,this._dropdown.style.display=this._open?"block":"none"},{signal:this._ac.signal}),document.addEventListener("click",()=>{this._open&&this._close()},{signal:this._ac.signal})}destroy(){this._ac.abort()}update({visible:t,ctx:e}){if(!this._btn)return;let i=this._getStore();if(!i)return;let s=t.length>0,a=e?.fp??null,o=e?.qr??null,l=e?.envVars??{},r=t.filter(y=>!y.disabled&&!y.hidden&&y.node.type==="item"),c=r.filter(y=>ae(y.node)&&St.has(y.node.itemType)),d=c.length>0,u=r.filter(y=>y.node._calculatedExpr&&y.node._readOnly&&y.node.itemType==="checkbox"),f=u.length>0,h=u.every(y=>i?.get(y.node.id)===!0),_=r.filter(y=>y.node.constraint?.length),v=_.length>0,C=_.every(y=>Ye(y.node,a,o,l)),T=r.filter(y=>!ae(y.node)&&(y.node._minValue!==void 0||y.node._maxValue!==void 0)),N=T.length>0,D=T.every(y=>Re(y.node,i)),O=d||f||v||N;if(!s||!O){this._wrap.style.display="none",this._close();return}let A=t.filter(y=>!y.disabled&&!y.hidden).every(y=>y.node.type==="item"?y.ok&&Re(y.node,i):y.ok),b=(d?A:!0)&&(f?h:!0)&&(!v||C)&&(!N||D)&&O,P=[...c.filter(y=>!y.ok||!Re(y.node,i)).map(y=>({title:y.node.title,id:y.node.id})),...u.filter(y=>i?.get(y.node.id)!==!0).map(y=>({title:y.node.title,id:y.node.id})),..._.filter(y=>!Ye(y.node,a,o,l)).map(y=>({title:y.node.title,id:y.node.id})),...T.filter(y=>!Re(y.node,i)).map(y=>({title:y.node.title,id:y.node.id}))];if(this._wrap.style.display="inline-flex",b)this._btn.className="status-badge status-badge--pass",this._btn.textContent="\u2713 PASS";else{let y=P.length;this._btn.className="status-badge status-badge--fail",this._btn.textContent="\u2717 FAIL \xB7 "+y+" issue"+(y!==1?"s":"")}this._renderList(P)}_close(){this._open=!1,this._dropdown&&(this._dropdown.style.display="none")}_renderList(t){if(!this._dropdown)return;if(this._dropdown.innerHTML="",t.length===0){let i=document.createElement("div");i.className="status-dropdown-msg",i.textContent="All criteria met",this._dropdown.appendChild(i);return}let e=document.createElement("div");e.className="status-dropdown-header",e.textContent=t.length+" issue"+(t.length!==1?"s":"")+" to resolve",this._dropdown.appendChild(e),t.forEach((i,s)=>{let a=document.createElement("div");a.className="status-dropdown-row",a.dataset.tipTitle="Click to navigate",a.addEventListener("click",c=>{c.stopPropagation(),this._close(),this._bus.dispatch(w.BUILDER_NAVIGATE,{id:i.id})});let o=document.createElement("span");o.className="status-dropdown-num",o.textContent=s+1+".",a.appendChild(o);let l=document.createElement("span");l.className="status-dropdown-label",l.textContent=i.title,a.appendChild(l);let r=document.createElement("span");r.className="status-dropdown-arrow",r.textContent="\u2197",a.appendChild(r),this._dropdown.appendChild(a)})}},_r=null;function vr(){let n={btn:document.querySelector('[data-mount="status-badge-btn"]'),dropdown:document.querySelector('[data-mount="status-dropdown"]'),wrap:document.querySelector('[data-mount="status-badge-wrap"]')};n.btn&&(_r=new Ke({els:n,bus:X}))}typeof document<"u"&&vr();var On=null;function es(){if(!On)throw new Error("[storage] No adapter registered. Call storage.register() at app startup.")}async function ts(n){return es(),On.getItem(n)}async function ns(n,t){return es(),On.setItem(n,t)}var ss="tooltips-enabled",ue=!0,is=!1,ne=null;function xr(n){ue=!!n,ns(ss,ue?"true":"false"),ue||xe();let t=document.getElementById("tooltipsOffBadge");t&&(t.style.display=ue?"none":"")}function Ft(){if(!ne){ne=document.createElement("div"),ne.className="rich-tooltip",ne.setAttribute("aria-hidden","true");let n=document.createElement("button");n.className="rich-tooltip__close",n.textContent="\xD7",n.setAttribute("aria-label","Close"),n.addEventListener("click",t=>{t.stopPropagation(),xe()}),ne.appendChild(n),document.body.appendChild(ne)}return ne}function rs(n){let{tipTitle:t,tipBody:e,tipFhir:i,tipSpec:s}=n.dataset;if(!t&&!e)return!1;let a=Ft();if([...a.children].forEach(o=>{o.classList.contains("rich-tooltip__close")||o.remove()}),t){let o=document.createElement("div");o.className="rich-tooltip__title",o.textContent=t,a.appendChild(o)}if(e){let o=document.createElement("div");o.className="rich-tooltip__body",o.textContent=e,a.appendChild(o)}if(i){let o=document.createElement("div");o.className="rich-tooltip__fhir";let l=document.createElement("span");l.className="rich-tooltip__fhir-badge",l.textContent="FHIR",o.appendChild(l);let r=document.createElement("code");if(r.textContent=i,o.appendChild(r),s){let c=document.createElement("span");c.className="rich-tooltip__spec",c.textContent=s,o.appendChild(c)}a.appendChild(o)}return!0}function br(n){let t=Ft(),e=n.getBoundingClientRect(),i=t.offsetWidth||260,s=t.offsetHeight||100,a=e.left+e.width/2-i/2;a=Math.max(8,Math.min(a,window.innerWidth-i-8));let l=window.innerHeight-e.bottom<s+12;t.classList.toggle("rich-tooltip--above",l);let r=l?e.top-s-10:e.bottom+10;t.style.left=a+"px",t.style.top=r+"px"}function Er(n){ue&&rs(n)&&(Ft().style.display="block",requestAnimationFrame(()=>br(n)))}function xe(){ne&&(ne.style.display="none",ne.classList.remove("rich-tooltip--sheet"),Ze=!1,Dn=null)}var qt=()=>window.innerWidth<1024,Ze=!1,Dn=null;function Cr(n){if(!ue||!rs(n))return;let t=Ft();t.classList.add("rich-tooltip--sheet"),t.style.left="",t.style.top="",t.style.display="block",Ze=!0,Dn=n}async function as(){if(is)return;is=!0;try{ue=await ts(ss)!=="false"}catch{ue=!0}let n=document.getElementById("tooltipsOffBadge");n&&(n.style.display=ue?"none":""),document.addEventListener("mouseover",t=>{if(qt())return;let e=t.target.closest("[data-tip-title],[data-tip-body]");e&&Er(e)}),document.addEventListener("mouseout",t=>{if(qt())return;t.target.closest("[data-tip-title],[data-tip-body]")&&xe()}),document.addEventListener("click",t=>{if(!qt())return;let e=t.target.closest("[data-tip-title],[data-tip-body]");if(!e){Ze&&ne&&!ne.contains(t.target)&&xe();return}e.closest('button, a, [role="button"], .calc-badge--explain, .preview-condition-hint--explain, .preview-calc-value--explain, .status-dropdown-row, .support-link-patient-btn, .preview-nav-btn')||Ze&&(xe(),e===Dn)||Cr(e)},{capture:!0}),document.addEventListener("click",t=>{qt()||Ze&&ne&&!ne.contains(t.target)&&xe()}),window.addEventListener("scroll",xe,!0),window.addEventListener("resize",xe),document.dispatchEvent(new CustomEvent(w.TIPS_INIT_DONE,{detail:{enabled:ue}}))}typeof document<"u"&&document.addEventListener(w.TIPS_TOGGLED,n=>xr(n.detail?.enabled));var Ut=Object.freeze({search:Object.freeze({refresh(){}}),statusBadge:Object.freeze({update(){}}),languageMenu:Object.freeze({rebuild(){}})}),kn=class{constructor(){this._map=new Map}on(t,e){return(this._map.get(t)??this._map.set(t,new Set).get(t)).add(e),this}off(t,e){return this._map.get(t)?.delete(e),this}emit(t,e){for(let i of this._map.get(t)??[])i(e)}},os=class{constructor(t,{questionnaire:e=null,response:i=null,config:s={}}={}){this.mountEl=t,this._config=s,this._emitter=new kn,this._session=qn(s);let a=this._session.bus;this._terminology=new Ge(new Ve({[Z.TERMINOLOGY_SERVER]:s.terminology?.server,[Z.CORS_PROXY]:s.terminology?.corsProxy,[Z.NLM_API_BASE]:s.terminology?.nlmApiBase}));let o=s.onProgress?{show:c=>s.onProgress(c),hide:()=>s.onProgress(null)}:{show(){},hide(){}};t.innerHTML="",this._lformEl=document.createElement("div"),this._lformEl.className="preview-card",this._jsonEl=document.createElement("pre"),this._jsonEl.className="fhir-json-view",this._jsonEl.style.display="none",s.tooltips&&as();let l=this._buildChrome(s,a);this._chrome=l,t.append(this._lformEl,this._jsonEl);let r=Wt();r.showNavBtn=!!s.navButton,r.showExplain=!!s.explain,this._renderer=new Bt({session:this._session,rc:r,chrome:l,progress:o,mountEl:this._lformEl,jsonEl:this._jsonEl,previewMode:s.previewMode,viewPrefs:s.viewPrefs}),this._offs=[a.on(w.RESPONSE_CHANGED,()=>this._emitter.emit("response-changed",this.getResponse())),a.on(w.PREVIEW_RENDER_DONE,()=>this._emitter.emit("render")),a.on(w.LANGUAGE_CHANGED,c=>this._emitter.emit("language-changed",c.detail?.lang??""))],this._renderer.mount(),e&&this._loadQuestionnaire(e),i&&this.setResponse(i),s.language&&this.setLanguage(s.language),Promise.resolve().then(()=>this._emitter.emit("ready"))}_loadQuestionnaire(t){Li(t,{questDoc:this._session.questDoc,bus:this._session.bus}),this._expandValueSets()}async _expandValueSets(){await this._terminology.expandAll(this._session.questDoc.tree,this._session.questDoc.meta),this._session.bus.dispatch(w.REINIT_FORM,{silent:!0})}_buildChrome(t,e){let i=!!t.search,s=!!t.validation;if(!i&&!s)return Ut;let a=document.createElement("div");a.className="fhir-toolbar";let o=Ut.search;if(i){let c=document.createElement("div");c.className="search-wrap";let d=document.createElement("input");d.type="search",d.className="search-input",d.placeholder="\u{1F50D} Search\u2026",d.autocomplete="off",d.setAttribute("data-testid","preview-search-input");let u=document.createElement("button");u.type="button",u.className="search-nav-btn",u.textContent="\u2191";let f=document.createElement("button");f.type="button",f.className="search-nav-btn",f.textContent="\u2193";let h=document.createElement("span");h.className="search-counter",c.append(d,u,f,h),a.appendChild(c),o=new Xe({els:{input:d,prevBtn:u,nextBtn:f,counter:h,lform:this._lformEl,fhirJsonView:this._jsonEl,searchWrap:c},bus:e,previewMode:t.previewMode})}let l=document.createElement("span");l.className="fhir-toolbar-sep",a.appendChild(l);let r=Ut.statusBadge;if(s){let c=document.createElement("span");c.className="status-badge-wrap",c.style.display="none";let d=document.createElement("button");d.type="button",d.className="status-badge",d.setAttribute("data-testid","status-badge-btn");let u=document.createElement("div");u.className="status-dropdown",u.style.display="none",c.append(d,u),a.appendChild(c),r=new Ke({els:{btn:d,dropdown:u,wrap:c},bus:e,getStore:()=>this._session.answerStore})}return this.mountEl.appendChild(a),{search:o,statusBadge:r,languageMenu:Ut.languageMenu}}on(t,e){return this._emitter.on(t,e),this}off(t,e){return this._emitter.off(t,e),this}getResponse(){let t=this._session.questDoc.rawFhir||{resourceType:"Questionnaire",item:[]};return Je(t,this._session.answerStore.toValueMap())}setResponse(t){let e=this._session.answerStore.toValueMap();Lt(t,e,this._session.questDoc.tree),this._session.answerStore.replaceAll(e),this._session.bus.dispatch(w.QR_LOADED,{}),this._session.bus.dispatch(w.RESPONSE_CHANGED)}setLanguage(t){this._session.bus.dispatch(w.LANGUAGE_CHANGED,{lang:t})}setConfig(t){Object.assign(this._config,t),t.language!==void 0&&this.setLanguage(t.language)}destroy(){this._offs?.forEach(e=>e()),this._offs=null;let t=e=>{for(let i of e||[])i.destroy?.(),t(i.children)};t(this._session?.questDoc?.tree),this._chrome?.search?.destroy?.(),this._chrome?.statusBadge?.destroy?.(),this._renderer?.destroy?.(),this.mountEl&&(this.mountEl.innerHTML=""),this._renderer=null,this._session=null,this._chrome=null,this._emitter=null}};export{os as QuestionnaireRenderer};
39
+ `}var $n=class{constructor(){this._validators=[]}register(e){this._validators.push(e)}getAll(){return[...this._validators]}async runAll(e,t,i={}){return Promise.all(this._validators.map(r=>r.run(e,t,i).then(s=>({validator:r,issues:s,error:null})).catch(s=>({validator:r,issues:[],error:s}))))}},br=new $n;var Gt=class{constructor(){this.enabled=!0,typeof document<"u"&&document.addEventListener(E.VALIDATOR_TOGGLE,e=>{e.detail?.id===this.id&&(this.enabled=e.detail.enabled)})}get id(){return""}get name(){throw new Error("Validator.name must be implemented")}get type(){return"local"}async run(e,t,i){return this.enabled?this._run(e,t,i):[]}async _run(e,t,i){return[]}};var Md=h.itemControl,Ca=re.redcapNs,wa=new Set([h.answerExpression,h.initialExpression,h.choiceColumn,h.itemContext,h.constraint,h.variable]);function Cr(n,e,t=0){for(let i of n||[])e(i,t),i.item&&Cr(i.item,e,t+1)}function xe(n){return(n.extension||[]).some(e=>e.url.startsWith(Ca))}var Qt=class extends Gt{constructor(){super(),this.enabled=!1}get id(){return"redcap-compat"}get name(){return"REDCap Compatibility"}get type(){return"local"}async _run(e,t,i){if(!e)return[];let r=[],s=0;return Cr(e.item,(o,l)=>{let a=o.linkId||"(unknown)";if(o.type==="group"&&(l>s&&(s=l),l>=2&&!xe(o)&&r.push({severity:"warning",nodeId:a,message:`Group "${o.text||a}" is nested at depth ${l+1}. REDCap supports at most 2 levels (Form \u2192 Section). It will be flattened into its parent section.`})),o.type!=="group"){if(o.answerValueSet&&!xe(o)&&r.push({severity:"error",nodeId:a,message:`"${o.text||a}": answerValueSet by URL ("${o.answerValueSet}") cannot be represented in REDCap \u2014 choices must be inline. The field will be exported with empty choices.`}),o.code&&o.code.length>0&&!xe(o)&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": item.code (FHIR Coding) has no REDCap equivalent and will be dropped.`}),o.enableWhenExpression&&!xe(o)&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": FHIRPath-based enableWhenExpression cannot be translated to REDCap branching logic. The branching condition will be lost.`}),!xe(o)&&o.enableWhen&&o.enableWhen.length>1){let c=o.enableBehavior==="all"||!o.enableBehavior,u=o.enableBehavior==="any";!c&&!u&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": enableBehavior "${o.enableBehavior}" is not supported in REDCap. Branching logic may be incorrect.`})}if(!xe(o)){for(let c of o.extension||[])if(wa.has(c.url)){let u=c.url.split("/").pop();r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": extension "${u}" has no REDCap equivalent and will be dropped.`})}}xe(o)||(o.type==="reference"&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": type "reference" (FHIR resource reference) has no REDCap equivalent \u2014 will be exported as a text field.`}),o.type==="quantity"&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": type "quantity" (value + unit) has no direct REDCap equivalent \u2014 will be exported as a text field. Consider splitting into two fields.`})),xe(o)||(o.extension||[]).find(u=>u.url===h.calculatedExpression)&&r.push({severity:"warning",nodeId:a,message:`"${o.text||a}": calculatedExpression uses FHIRPath \u2014 stored as a REDCap calc formula annotation. Manual adjustment in REDCap will be required.`})}}),r}};var st=new Qt;br.register(st);me.register({id:"redcap",label:"REDCap CSV \u2014 Data Dictionary (.csv)",isBuilderVersion:!1,metaVersion:null,ext:"csv",mimeType:"text/csv;charset=utf-8;",reportTitle:"REDCap Export \u2014 Compatibility Report",validatorFilter:n=>n.type!=="external",build(n){return Fn(n)},onBeforeReport(){st.enabled=!0},onAfterExport(){st.enabled=!1},onCancel(){st.enabled=!1}});var wr="http://unitsofmeasure.org",Hn={system:wr,valueSet:wr+"/vs"};var Sa="http://www.w3.org",Sr={xhtml:Sa+"/1999/xhtml"};function ge(n){return String(n||"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ra(n){let e=[];e.push(`<tr><td><b>Status</b></td><td>${ge(n.status)}</td></tr>`),n.date&&e.push(`<tr><td><b>Date</b></td><td>${ge(n.date)}</td></tr>`),n.version&&e.push(`<tr><td><b>Version</b></td><td>${ge(n.version)}</td></tr>`),n.publisher&&e.push(`<tr><td><b>Publisher</b></td><td>${ge(n.publisher)}</td></tr>`),n.description&&e.push(`<tr><td><b>Description</b></td><td>${ge(n.description)}</td></tr>`);let t=[];function i(s,o){for(let l of s||[]){let a="\xA0\xA0\xA0\xA0".repeat(o);t.push(`<tr><td>${ge(l.linkId)}</td><td>${a}${ge(l.text)}</td><td>${ge(l.type)}</td></tr>`),l.item&&i(l.item,o+1)}}i(n.item,0);let r=['<div xmlns="'+Sr.xhtml+'">',`<h2>${ge(n.title||n.id||"Questionnaire")}</h2>`,`<table><tbody>${e.join("")}</tbody></table>`];return t.length&&r.push(`<table><thead><tr><th>LinkId</th><th>Text</th><th>Type</th></tr></thead><tbody>${t.join("")}</tbody></table>`),r.push("</div>"),r.join("")}function Rr(n){return n==="checkbox"?"boolean":n==="integer"?"integer":n==="decimal"||n==="number"?"decimal":n==="quantity"?"quantity":n==="select"||n==="radio"||n==="checklist"?"choice":n==="open-choice"?"open-choice":n==="display"?"display":n==="date"?"date":n==="dateTime"?"dateTime":n==="time"?"time":n==="url"?"url":n==="attachment"?"attachment":n==="reference"?"reference":"string"}function Ta(n){return!n||!n.length?[]:n.filter(e=>e.expression).map(e=>({url:h.constraint,extension:[...e.key?[{url:"key",valueId:e.key}]:[],...e.severity?[{url:"severity",valueCode:e.severity}]:[],{url:"expression",valueString:e.expression},...e.human?[{url:"human",valueString:e.human}]:[]]}))}function Gn(n){let e={linkId:n.id,text:n.title,type:n.type==="group"?"group":Rr(n.itemType)};n._prefix&&(e.prefix=n._prefix),n._definition&&(e.definition=n._definition),n._baseType&&(e.extension=e.extension||[],e.extension.push({url:h.baseType,valueCode:n._baseType})),n._fhirType&&(e.extension=e.extension||[],e.extension.push({url:h.fhirType,valueString:n._fhirType})),n._codes&&n._codes.length&&n.itemType!=="display"&&(e.code=n._codes),n.mandatory===!0&&n.itemType!=="display"&&(e.required=!0);let t=n.type==="item"&&(n.options||n._rawAnswerOptions||n._answerValueSet||n._answerExpression||n._candidateExpression);if(n.type==="item"&&n.itemType!=="display"&&!t){let a=Rr(n.itemType),c=u=>{if(a==="boolean")return{valueBoolean:typeof u=="boolean"?u:u==="true"};if(a==="decimal"){let d=parseFloat(u);return isFinite(d)?{valueDecimal:d}:null}if(a==="integer"){let d=parseInt(u,10);return isFinite(d)?{valueInteger:d}:null}if(a==="date")return{valueDate:String(u)};if(a==="dateTime")return{valueDateTime:String(u)};if(a==="time")return{valueTime:String(u)};if(a==="url")return{valueUri:String(u)};if(a==="reference"){let d=u&&typeof u=="object"?u.reference:typeof u=="string"?u:"";return d?{valueReference:{reference:d}}:null}return a==="choice"?{valueCoding:{code:String(u),display:String(u)}}:{valueString:String(u)}};if(n.repeats&&n._initialValues&&n._initialValues.length>1){let u=n._initialValues.map(c).filter(Boolean);u.length&&(e.initial=u)}else if(n._initialValue!==void 0&&n._initialValue!==""){let u=c(n._initialValue);u&&(e.initial=[u])}}n.enableWhen&&n.enableWhen.length&&(e.enableWhen=n.enableWhen.map(a=>({...a})),(n.enableWhen.length>1||n.enableBehavior==="any")&&(e.enableBehavior=n.enableBehavior==="any"?"any":"all"));let i=[];n.enableWhenExpression&&i.push({url:h.enableWhenExpression,valueExpression:{language:"text/fhirpath",expression:n.enableWhenExpression}});let r=(n.constraint||[]).filter(a=>a.key!==He);if(i.push(...Ta(r)),n.type==="group"&&n.logicWithParent==="OR"&&n.children.length>0){let a=n.children.map(c=>`%resource.item.where(linkId='${c.id.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}').answer.exists()`).join(" or ");i.push({url:h.constraint,extension:[{url:"key",valueId:He},{url:"severity",valueCode:"error"},{url:"human",valueString:"At least one item in this group must be completed"},{url:"expression",valueString:a}]})}if(n.itemType==="reference"&&n.referenceResource&&i.push({url:h.referenceResource,valueCode:n.referenceResource}),n.itemType==="reference"&&n._referenceFilter&&i.push({url:h.referenceFilter,valueString:n._referenceFilter}),n.itemType==="reference"&&n._referenceProfiles?.length)for(let a of n._referenceProfiles)i.push({url:h.referenceProfile,valueCanonical:a});if((n.itemType==="integer"||n.itemType==="decimal")&&n.quantityUnit&&i.push({url:h.unit,valueCoding:{system:Hn.system,code:n.quantityUnit}}),n.itemType==="quantity"&&n.quantityUnit&&!n._unitOptions?.length&&i.push({url:h.unitOption,valueCoding:{system:Hn.system,code:n.quantityUnit}}),n.itemType==="quantity"&&n._unitValueSet&&i.push({url:h.unitValueSet,valueCanonical:n._unitValueSet}),n.itemType==="quantity"&&n._unitOptions&&n._unitOptions.length)for(let a of n._unitOptions){let c={};a.system&&(c.system=a.system),a.code&&(c.code=a.code),a.display&&(c.display=a.display),i.push({url:h.unitOption,valueCoding:c})}n._calculatedExpr&&i.push({url:h.calculatedExpression,valueExpression:{language:"text/fhirpath",expression:n._calculatedExpr}}),n._initialExpr&&i.push({url:h.initialExpression,valueExpression:{language:"text/fhirpath",expression:n._initialExpr}});for(let{url:a,prop:c}of _t)n[c]&&i.push({url:a,valueExpression:{language:"text/fhirpath",expression:n[c]}});n.itemType==="radio"?i.push({url:h.itemControl,valueCodeableConcept:{coding:[{system:h.itemControlCS,code:n._itemControl==="atable"?"atable":"radio-button"}]}}):n.itemType==="checklist"?i.push({url:h.itemControl,valueCodeableConcept:{coding:[{system:h.itemControlCS,code:n._itemControl==="atable"?"atable":"check-box"}]}}):n._itemControl&&i.push({url:h.itemControl,valueCodeableConcept:{coding:[{system:h.itemControlCS,code:n._itemControl}]}});let s=[];n._renderStyle&&s.push({url:h.renderingStyle,valueString:n._renderStyle}),n._renderXhtml&&s.push({url:h.renderingXhtml,valueString:n._renderXhtml}),n._renderMarkdown&&s.push({url:h.renderingMarkdown,valueMarkdown:n._renderMarkdown}),s.length&&(e._text={extension:s}),n.type==="group"?e.item=n.children.map(Gn):(n.itemType==="select"||n.itemType==="radio"||n.itemType==="open-choice"||n.itemType==="checklist")&&(n.options||n._rawAnswerOptions)&&!n._answerValueSet&&!n._answerExpression&&!n._candidateExpression&&(n._rawAnswerOptions?e.answerOption=n._rawAnswerOptions.map(a=>{let c=a.valueCoding?a.valueCoding.code||a.valueCoding.display||"":a.valueString!==void 0?a.valueString:a.valueInteger!==void 0?String(a.valueInteger):a.valueDate!==void 0?a.valueDate:a.valueTime!==void 0?a.valueTime:a.valueReference?typeof a.valueReference=="string"?a.valueReference:a.valueReference.reference||"":"",u={...a},d=new Set([h.ordinalValue,h.optionPrefix,h.optionExclusive,h.itemWeight,h.answerMedia]),p=(a.extension||[]).filter(f=>!d.has(f.url));return n._optionOrdinals?.[c]!==void 0&&p.push({url:h.ordinalValue,valueDecimal:n._optionOrdinals[c]}),n._optionPrefixes?.[c]&&p.push({url:h.optionPrefix,valueString:n._optionPrefixes[c]}),n._optionExclusives?.[c]&&p.push({url:h.optionExclusive,valueBoolean:!0}),n._optionWeights?.[c]!==void 0&&p.push({url:h.itemWeight,valueDecimal:n._optionWeights[c]}),n._answerMedias?.[c]&&p.push({url:h.answerMedia,valueAttachment:n._answerMedias[c]}),p.length&&(u.extension=p),n._initialSelected===c&&(u.initialSelected=!0),u}):e.answerOption=pt(n.options).map(({code:a,display:c})=>{let d={valueCoding:{...n._optionSystems?.[a]?{system:n._optionSystems[a]}:{},code:a,display:c}},p=[];return n._optionOrdinals&&n._optionOrdinals[a]!==void 0&&p.push({url:h.ordinalValue,valueDecimal:n._optionOrdinals[a]}),n._optionPrefixes&&n._optionPrefixes[a]!==void 0&&p.push({url:h.optionPrefix,valueString:n._optionPrefixes[a]}),n._optionExclusives&&n._optionExclusives[a]&&p.push({url:h.optionExclusive,valueBoolean:!0}),n._optionWeights&&n._optionWeights[a]!==void 0&&p.push({url:h.itemWeight,valueDecimal:n._optionWeights[a]}),n._answerMedias&&n._answerMedias[a]&&p.push({url:h.answerMedia,valueAttachment:n._answerMedias[a]}),p.length&&(d.extension=p),n._initialSelected===a&&(d.initialSelected=!0),d}));let o=new Set(["checkbox","decimal","integer","number","text","url","open-choice"]);if(n._maxLength!==void 0&&n._maxLength!==null&&o.has(n.itemType)&&(e.maxLength=n._maxLength),n.type==="item"&&n.children?.length>0&&(e.item=n.children.map(Gn)),n._answerConstraint&&(e.answerConstraint=n._answerConstraint),n._minLength!==void 0&&n._minLength!==null&&i.push({url:h.minLength,valueInteger:n._minLength}),n._regex&&i.push({url:h.regex,valueString:n._regex}),n._maxFileSizeMB!==void 0&&n._maxFileSizeMB!==null&&i.push({url:h.maxSize,valueDecimal:n._maxFileSizeMB}),n._mimeTypes&&n._mimeTypes.length)for(let a of n._mimeTypes)a&&i.push({url:h.mimeType,valueCode:a});if(n._entryFormat&&i.push({url:h.entryFormatSdc,valueString:n._entryFormat}),n._choiceOrientation&&i.push({url:h.choiceOrientation,valueCode:n._choiceOrientation}),Number.isInteger(n._columnCount)&&n._columnCount>1&&i.push({url:h.columnCount,valueInteger:n._columnCount}),n._choiceColumns&&n._choiceColumns.length)for(let a of n._choiceColumns){let c=[];a.path&&c.push({url:"path",valueString:a.path}),a.label&&c.push({url:"label",valueString:a.label}),a.width&&c.push({url:"width",valueQuantity:a.width}),a.forDisplay!==void 0&&c.push({url:"forDisplay",valueBoolean:a.forDisplay}),i.push({url:h.choiceColumn,extension:c})}if(n._supportLinks&&n._supportLinks.length)for(let a of n._supportLinks)a&&i.push({url:h.supportLink,valueUri:a});if(n._hidden&&i.push({url:h.hiddenSdc,valueBoolean:!0}),n._isSubject&&n.type==="item"&&n.itemType!=="display"&&i.push({url:h.isSubject,valueBoolean:!0}),n._observationExtract!=null&&n.itemType!=="display"&&i.push({url:h.observationExtract,valueBoolean:n._observationExtract!==!1}),n.type==="group"&&n._collapsible&&i.push({url:h.collapsible,valueCode:n._collapsible}),n.itemType==="open-choice"&&n._openLabel&&i.push({url:h.openLabel,valueString:n._openLabel}),n._preferredTermServer&&i.push({url:h.preferredTerminologyServer,valueUrl:n._preferredTermServer}),n._shortText&&i.push({url:h.shortText,valueString:n._shortText}),n._designNote&&i.push({url:h.designNote,valueMarkdown:n._designNote}),n._usageMode&&i.push({url:h.usageMode,valueCode:n._usageMode}),n._signatureRequired?.length)for(let a of n._signatureRequired)i.push({url:h.signatureRequired,valueCodeableConcept:{coding:[{system:a.system,code:a.code,display:a.display}]}});if(n._itemMedia&&i.push({url:h.itemMedia,valueAttachment:n._itemMedia}),n._displayCategory&&n.itemType!=="display"&&i.push({url:h.displayCategory,valueCodeableConcept:{coding:[{system:h.displayCategoryCS,code:n._displayCategory}]}}),n._minValue!==void 0){let a=Number.isInteger(n._minValue);i.push({url:h.minValue,[a?"valueInteger":"valueDecimal"]:n._minValue})}if(n._maxValue!==void 0){let a=Number.isInteger(n._maxValue);i.push({url:h.maxValue,[a?"valueInteger":"valueDecimal"]:n._maxValue})}let l=new Set(["select","radio","checklist","open-choice","decimal","integer","number","text","date","dateTime","time","quantity"]);if(n.type==="item"&&n._answerValueSet&&l.has(n.itemType)&&(e.answerValueSet=n._answerValueSet),n._readOnly&&n.itemType!=="display"&&(e.readOnly=!0),n._disabledDisplay&&(e.disabledDisplay=n._disabledDisplay),(n.repeats||n.itemType==="checklist")&&n.itemType!=="display"&&(e.repeats=!0),n.repeats&&n._minOccurs!==void 0&&n.itemType!=="display"&&n.required&&i.push({url:h.minOccurs,valueInteger:n._minOccurs}),n.repeats&&n._maxOccurs!==void 0&&i.push({url:h.maxOccurs,valueInteger:n._maxOccurs}),n._maxDecimalPlaces!==void 0&&i.push({url:h.maxDecimalPlaces,valueInteger:n._maxDecimalPlaces}),n._sliderStep!==void 0){let c=Number.isInteger(n._sliderStep)?n._sliderStep:Math.round(n._sliderStep);i.push({url:h.sliderStepValue,valueInteger:c})}return n._unknownExtensions&&n._unknownExtensions.length&&i.push(...n._unknownExtensions.map(a=>JSON.parse(JSON.stringify(a)))),i.length&&(e.extension=i),e}function at(n=fe.get(E.APP_CONTEXT_READY)?.questDoc){let{tree:e,meta:t,rawFhir:i,variables:r,contained:s,translations:o}=n,l=h.variable,a={resourceType:"Questionnaire",id:t.id||"logic-builder-export",status:t.status||"draft",item:e.map(Gn)};if(t.url&&(a.url=t.url),t.version&&(a.version=t.version),a.title=t.title||i&&i.title||"Untitled Questionnaire",t.name&&(a.name=t.name),t.publisher&&(a.publisher=t.publisher),t.description&&(a.description=t.description),t.experimental!==null&&(a.experimental=t.experimental),t._implicitRules&&(a.implicitRules=t._implicitRules),t.language&&(a.language=t.language),t.purpose&&(a.purpose=t.purpose),t.copyright&&(a.copyright=t.copyright),t.copyrightLabel&&(a.copyrightLabel=t.copyrightLabel),t._versionAlgorithmString?a.versionAlgorithmString=t._versionAlgorithmString:t._versionAlgorithmCoding&&(a.versionAlgorithmCoding=JSON.parse(JSON.stringify(t._versionAlgorithmCoding))),t.approvalDate&&(a.approvalDate=t.approvalDate),t.lastReviewDate&&(a.lastReviewDate=t.lastReviewDate),a.date=t.date||new Date().toISOString().split("T")[0],t.subjectType?.length&&(a.subjectType=[...t.subjectType]),t._rawIdentifier?.length&&(a.identifier=JSON.parse(JSON.stringify(t._rawIdentifier))),a.text=t._rawText?{status:t._rawText.status,div:t._rawText.div}:{status:"generated",div:Ra(a)},t._rawContact&&(a.contact=t._rawContact),t._rawUseContext&&(a.useContext=t._rawUseContext),t._rawJurisdiction&&(a.jurisdiction=t._rawJurisdiction),t._rawCode&&(a.code=t._rawCode),t._rawModifierExtension?.length&&(a.modifierExtension=JSON.parse(JSON.stringify(t._rawModifierExtension))),t.derivedFrom?.length&&(a.derivedFrom=t.derivedFrom),t.effectivePeriodStart||t.effectivePeriodEnd){let f={};t.effectivePeriodStart&&(f.start=t.effectivePeriodStart),t.effectivePeriodEnd&&(f.end=t.effectivePeriodEnd),a.effectivePeriod=f}let c=r.filter(f=>f.name&&f.expression),u=h.replaces,d=[...c.map(f=>({url:l,valueExpression:{name:f.name,language:"text/fhirpath",expression:f.expression}})),...(t.replaces||[]).filter(f=>f.trim()).map(f=>({url:u,valueCanonical:f.trim()})),...t.preferredTermServer?.trim()?[{url:h.preferredTerminologyServer,valueUrl:t.preferredTermServer.trim()}]:[],...t.targetStructureMap?.trim()?[{url:h.targetStructureMap,valueCanonical:t.targetStructureMap.trim()}]:[],...t.sourceStructureMap?.trim()?[{url:h.sourceStructureMap,valueCanonical:t.sourceStructureMap.trim()}]:[],...(t._signatureRequired||[]).map(f=>({url:h.signatureRequired,valueCodeableConcept:{coding:[{system:f.system,code:f.code,display:f.display}]}})),...(t.launchContexts||[]).filter(f=>f.name.trim()).map(f=>({url:h.launchContext,extension:[{url:"name",valueCoding:{system:h.launchContextCS,code:f.name.trim()}},...f.type.trim()?[{url:"type",valueCode:f.type.trim()}]:[],...f.description.trim()?[{url:"description",valueString:f.description.trim()}]:[]]})),...(t._rawQuestExtensions||[]).map(f=>JSON.parse(JSON.stringify(f)))];return d.length&&(a.extension=d),s.length&&(a.contained=s.map(f=>JSON.parse(JSON.stringify(f)))),(t._metaVersionId||t._metaSource||t._metaLastUpdated||t._rawMetaProfile?.length||t._rawMetaTag?.length||t._rawMetaSecurity?.length)&&(a.meta={lastUpdated:new Date().toISOString()},t._metaVersionId&&(a.meta.versionId=t._metaVersionId),t._metaSource&&(a.meta.source=t._metaSource),t._rawMetaProfile?.length&&(a.meta.profile=t._rawMetaProfile),t._rawMetaTag?.length&&(a.meta.tag=t._rawMetaTag),t._rawMetaSecurity?.length&&(a.meta.security=t._rawMetaSecurity)),Na(a,o),a}var Tr=h.translation;function Na(n,e){if(!e||!Object.keys(e).length)return;let t=Object.keys(e),i=t.filter(a=>e[a].title).map(a=>Wn(a,e[a].title));i.length&&(n._title=n._title||{},n._title.extension=jn(n._title.extension||[],i));function r(a){for(let c of a||[]){let u=t.filter(d=>e[d].items[c.linkId]!=null).map(d=>Wn(d,e[d].items[c.linkId]));u.length&&(c._text=c._text||{},c._text.extension=jn(c._text.extension||[],u));for(let d of c.answerOption||[]){let p=d.valueCoding?.code||d.valueString||d.valueInteger?.toString();if(!p)continue;let f=c.linkId+"__"+p,_=t.filter(v=>e[v].opts[f]!=null).map(v=>Wn(v,e[v].opts[f]));_.length&&d.valueCoding&&(d._valueCoding=d._valueCoding||{},d._valueCoding._display=d._valueCoding._display||{},d._valueCoding._display.extension=jn(d._valueCoding._display.extension||[],_))}r(c.item)}}r(n.item);let s=re.uiTranslations;n.extension=(n.extension||[]).filter(a=>a.url!==s);for(let a of t){let c=e[a].ui;!c||!Object.keys(c).length||n.extension.push({url:s,extension:[{url:"lang",valueCode:a},{url:"strings",valueString:JSON.stringify(c)}]})}n.extension.length||delete n.extension;let o=re.xhtmlTranslations;n.extension=(n.extension||[]).filter(a=>a.url!==o);for(let a of t){let c=e[a].xhtml;!c||!Object.keys(c).length||n.extension.push({url:o,extension:[{url:"lang",valueCode:a},{url:"strings",valueString:JSON.stringify(c)}]})}let l=re.markdownTranslations;n.extension=(n.extension||[]).filter(a=>a.url!==l);for(let a of t){let c=e[a].markdown;!c||!Object.keys(c).length||n.extension.push({url:l,extension:[{url:"lang",valueCode:a},{url:"strings",valueString:JSON.stringify(c)}]})}n.extension.length||delete n.extension}function Wn(n,e){return{url:Tr,extension:[{url:"lang",valueCode:n},{url:"content",valueString:e}]}}function jn(n,e){return[...(n||[]).filter(i=>i.url!==Tr),...e]}async function Ar(n,e,t,i={}){let r=te.get(J.SDC_SERVER),l=`${(r||n).replace(/\/$/,"")}/Questionnaire/$populate`,a=Mt(l),c=r?"SDC_SERVER":"FHIR_BASE",u=JSON.stringify({resourceType:"Parameters",parameter:[{name:"questionnaire",resource:e},{name:"subject",valueReference:{reference:t}}]}),d=await Nr(a,l,c,u,!1,i.authHeader);return d.status===401&&!i.authHeader&&(d=await Nr(a,l,c,u,!0)),Aa(d)}async function Nr(n,e,t,i,r=!1,s=null){let o=s??(r?await Pt(e,t):await tt(e,t));return fetch(n,{method:"POST",headers:{"Content-Type":"application/fhir+json",Accept:"application/fhir+json",...o},body:i,signal:AbortSignal.timeout(3e4)})}async function Aa(n){if(!n.ok){let t=await n.text().catch(()=>""),i=t.substring(0,150);try{let o=JSON.parse(t)?.issue?.[0];i=o?.diagnostics||o?.details?.text||i}catch{}let r=n.status===400||n.status===404?" (This server may not support the SDC $populate operation.)":"";throw new Error(`$populate: HTTP ${n.status}${i?" \u2014 "+i:""}${r}`)}let e=await n.json();if(e.resourceType==="QuestionnaireResponse")return e;if(e.resourceType==="Parameters"){let t=e.parameter?.find(i=>i.name==="questionnaire-response"||i.name==="response"||i.name==="return");if(t?.resource?.resourceType==="QuestionnaireResponse")return t.resource;throw new Error("$populate Parameters response did not contain a QuestionnaireResponse")}throw new Error(`$populate returned unexpected resourceType: ${e.resourceType}`)}function ne(n,e,t){let i=n?.[e];if(i==null)throw new Error(`${t}: missing required field "${e}"`);return i}var Oa=class Mr{constructor({url:e,mode:t,alias:i,documentation:r}){this.url=e,this.mode=t,this.alias=i,this.documentation=r}static fromJSON(e){let t=ne(e,"url","StructureDefRef"),i=ne(e,"mode","StructureDefRef");return new Mr({url:t,mode:i,alias:e.alias,documentation:e.documentation})}},La=class Pr{constructor({name:e,value:t}){this.name=e,this.value=t}static fromJSON(e){let t=ne(e,"name","ConstDef"),i=ne(e,"value","ConstDef");return new Pr({name:t,value:i})}},Ia=class Vr{constructor({name:e,type:t,mode:i,documentation:r}){this.name=e,this.type=t,this.mode=i,this.documentation=r}static fromJSON(e){let t=ne(e,"name","GroupInput"),i=ne(e,"mode","GroupInput");return new Vr({name:t,type:e.type,mode:i,documentation:e.documentation})}},Da=class Br{constructor({context:e,min:t,max:i,type:r,defaultValue:s,element:o,listMode:l,variable:a,condition:c,check:u,logMessage:d}){this.context=e,this.min=t,this.max=i,this.type=r,this.defaultValue=s,this.element=o,this.listMode=l,this.variable=a,this.condition=c,this.check=u,this.logMessage=d}static fromJSON(e){let t=ne(e,"context","RuleSource");return new Br({context:t,min:e.min,max:e.max,type:e.type,defaultValue:e.defaultValue,element:e.element,listMode:e.listMode,variable:e.variable,condition:e.condition,check:e.check,logMessage:e.logMessage})}},ka=["valueId","valueString","valueBoolean","valueInteger","valueDecimal","valueDate","valueTime","valueDateTime"],Ur=class qr{constructor(e,t){this.kind=e,this.value=t}static fromJSON(e){for(let t of ka)if(e[t]!==void 0){let i=t.slice(5,6).toLowerCase()+t.slice(6);return new qr(i,e[t])}throw new Error("Parameter: no recognized value[x] present")}},Ma=class Fr{constructor({context:e,element:t,variable:i,listMode:r,listRuleId:s,transform:o,parameter:l}){if(t!=null&&e==null)throw new Error('RuleTarget: "element" requires "context" (constraint smp-1)');this.context=e,this.element=t,this.variable=i,this.listMode=r??[],this.listRuleId=s,this.transform=o,this.parameter=l??[]}static fromJSON(e){return new Fr({context:e.context,element:e.element,variable:e.variable,listMode:e.listMode,listRuleId:e.listRuleId,transform:e.transform,parameter:(e.parameter??[]).map(Ur.fromJSON)})}},Pa=class $r{constructor({name:e,parameter:t}){this.name=e,this.parameter=t}static fromJSON(e){let t=ne(e,"name","DependentInvocation"),i=ne(e,"parameter","DependentInvocation");return new $r({name:t,parameter:i.map(Ur.fromJSON)})}},Va=class Jn{constructor({name:e,source:t,target:i,rule:r,dependent:s}){this.name=e,this.source=t,this.target=i,this.rule=r,this.dependent=s}static fromJSON(e){let t=ne(e,"source","Rule");if(t.length===0)throw new Error('Rule: "source" must have at least one entry');return new Jn({name:e.name,source:t.map(Da.fromJSON),target:(e.target??[]).map(Ma.fromJSON),rule:(e.rule??[]).map(Jn.fromJSON),dependent:(e.dependent??[]).map(Pa.fromJSON)})}},Ba=class Hr{constructor({name:e,extends:t,typeMode:i,input:r,rule:s,documentation:o}){this.name=e,this.extends=t,this.typeMode=i??"none",this.input=r,this.rule=s,this.documentation=o}static fromJSON(e){let t=ne(e,"name","Group"),i=ne(e,"input","Group");if(i.length===0)throw new Error('Group: "input" must have at least one entry');return new Hr({name:t,extends:e.extends,typeMode:e.typeMode,input:i.map(Ia.fromJSON),rule:(e.rule??[]).map(Va.fromJSON),documentation:e.documentation})}},Wr=class jr{constructor({url:e,name:t,status:i,structure:r,import:s,const:o,group:l}){this.url=e,this.name=t,this.status=i,this.structure=r,this.import=s,this.const=o,this.group=l,this._groupsByName=new Map(l.map(a=>[a.name,a]))}getGroup(e){return this._groupsByName.get(e)}get defaultGroup(){return this.group[0]}static fromJSON(e){if(e.resourceType!==void 0&&e.resourceType!=="StructureMap")throw new Error(`StructureMapDocument: expected resourceType "StructureMap", got "${e.resourceType}"`);let t=ne(e,"url","StructureMapDocument"),i=ne(e,"name","StructureMapDocument"),r=ne(e,"status","StructureMapDocument"),s=ne(e,"group","StructureMapDocument");if(s.length===0)throw new Error('StructureMapDocument: "group" must have at least one entry');return new jr({url:t,name:i,status:r,structure:(e.structure??[]).map(Oa.fromJSON),import:e.import??[],const:(e.const??[]).map(La.fromJSON),group:s.map(Ba.fromJSON)})}},Ua=Object.freeze(["create","copy","truncate","escape","cast","append","translate","reference","dateOp","uuid","pointer","evaluate","cc","c","qty","id","cp"]);function qa(n,e){let[t]=e;return n.createInstance?n.createInstance(t):{}}function Fa(n,e){return e[0]}var $=class extends Error{constructor(n){super(n),this.name="EngineError"}};function $a(n,e){let[t,i]=e;if(t==null)return t;if(typeof i!="number")throw new $('truncate: "length" parameter must be a number');return String(t).substring(0,i)}var Gr=[["&","&amp;"],["<","&lt;"],[">","&gt;"],['"',"&quot;"],["'","&apos;"]];function Ha(n){return Gr.reduce((e,[t,i])=>e.split(t).join(i),n)}function Wa(n){return Gr.reduceRight((e,[t,i])=>e.split(i).join(t),n)}function ja(n,e){let[t,i,r]=e;if(t==null)return t;let s=String(t);if(i==="string"&&r==="xml")return Ha(s);if(i==="xml"&&r==="string")return Wa(s);if(i===r)return s;throw new $(`escape: unsupported format conversion "${i}" -> "${r}"`)}var Ga=new Map([["string",n=>String(n)],["integer",n=>{let e=parseInt(n,10);if(Number.isNaN(e))throw new $(`cast: "${n}" is not a valid integer`);return e}],["decimal",n=>{let e=Number(n);if(Number.isNaN(e))throw new $(`cast: "${n}" is not a valid decimal`);return e}],["boolean",n=>{if(typeof n=="boolean")return n;if(n==="true")return!0;if(n==="false")return!1;throw new $(`cast: "${n}" is not a valid boolean`)}],["Reference",n=>({reference:n})]]);function Qa(n,e){let[t,i]=e;if(!i)throw new $("cast: an explicit type is required (implicit inference needs Phase 6's StructureDefinition resolver)");let r=Ga.get(i);if(!r)throw new $(`cast: unsupported target type "${i}"`);return r(t)}function Ja(n,e){return e.map(t=>t==null?"":String(t)).join("")}var za=new Set(["code","system","display","Coding","CodeableConcept"]);function Ya(n,e){let[t,i,r]=e;if(!n.translate)throw new $("translate: no translate() callback was injected (Mapping Support API)");if(!za.has(r))throw new $(`translate: unknown output kind "${r}"`);let s=n.translate(t,i);if(s)return r==="code"?s.code:r==="system"?s.system:r==="display"?s.display:r==="Coding"?{system:s.system,code:s.code,display:s.display}:{coding:[{system:s.system,code:s.code,display:s.display}]}}function Qr(n,e){let[t]=e;if(!t||typeof t.resourceType!="string"||!t.id)throw new $("reference: source must have resourceType and id");return`${t.resourceType}/${t.id}`}function zn(n,e,t,i){return n.evaluate(e,t,i)}function Or(n,e,t,i){let r=zn(n,e,t,i);return r.length===1&&r[0]===!0}function Jt(n,e,t,i){return zn(n,e,t,i)[0]}var Xa=new Set(["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"]),Ka=new Set(["wk","d","h","min","s","ms"]),Za=/^@?\d{4}(-\d{2}(-\d{2}(T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})?)?)?)?$/;function eo(n,e){let[t,i,r,s]=e;if(i!=="+"&&i!=="-")throw new $(`dateOp: unsupported operation "${i}" (expected "+" or "-")`);if(typeof t!="string"||!Za.test(t))throw new $(`dateOp: "${t}" is not a valid date/dateTime literal`);let o;if(Xa.has(s))o=s;else if(Ka.has(s))o=`'${s}'`;else throw new $(`dateOp: unsupported unit "${s}"`);let l=t.startsWith("@")?t:`@${t}`;return Jt(n.evaluator,void 0,`${l} ${i} ${r} ${o}`,n.env)}function to(n){return(n.uuidFactory?n.uuidFactory():crypto.randomUUID()).toLowerCase()}function no(n,e){return Qr(n,e)}function io(n,e){let[t,i]=e.length===1?[void 0,e[0]]:e;return zn(n.evaluator,t,i,n.env)}function ro(n,e){if(e.length===1)return{text:e[0]};let[t,i,r]=e,s={system:t,code:i};return r!==void 0&&(s.display=r),{coding:[s]}}function so(n,e){let[t,i,r]=e,s={system:t,code:i};return r!==void 0&&(s.display=r),s}var ao=/^\s*(<=|>=|<|>)?\s*(-?\d+(?:\.\d+)?)\s*(\S.*)?$/;function oo(n,e){if(e.length===1){let l=ao.exec(String(e[0]));if(!l)throw new $(`qty: could not parse natural-text quantity "${e[0]}"`);let[,a,c,u]=l,d={value:Number(c)};return a&&(d.comparator=a),u&&(d.unit=u),d}let[t,i,r,s]=e,o={value:Number(t),unit:i};return r!==void 0&&(o.system=r),s!==void 0&&(o.code=s),o}function lo(n,e){let[t,i,r]=e,s={system:t,value:i};return r!==void 0&&(s.type={coding:[{code:r}]}),s}function co(n){let e=String(n);return e.includes("@")?"email":/^[a-z][a-z0-9+.-]*:\/\//i.test(e)?"url":/^\+?[0-9()\s-]+$/.test(e)?"phone":"other"}function uo(n,e){if(e.length===1){let[r]=e;return{system:co(r),value:r}}let[t,i]=e;return{system:t,value:i}}var po=class{#e=new Map;register(n,e){if(this.#e.has(n))throw new Error(`TransformRegistry: "${n}" is already registered`);this.#e.set(n,e)}override(n,e){if(!this.#e.has(n))throw new Error(`TransformRegistry: cannot override unregistered "${n}"`);this.#e.set(n,e)}get(n){let e=this.#e.get(n);if(!e)throw new Error(`TransformRegistry: no handler registered for "${n}"`);return e}has(n){return this.#e.has(n)}get names(){return[...this.#e.keys()]}},ho={create:qa,copy:Fa,truncate:$a,escape:ja,cast:Qa,append:Ja,translate:Ya,reference:Qr,dateOp:eo,uuid:to,pointer:no,evaluate:io,cc:ro,c:so,qty:oo,id:lo,cp:uo};function fo(){let n=new po;for(let e of Ua)n.register(e,ho[e]);return n}var Jr=class zr{#e;#t=new Map;#n=new Map;#i;constructor(e=null,t=null){this.#e=e,this.#i=t}set(e,t){return this.#t.set(e,t),this}has(e){return this.#t.has(e)?!0:this.#e?this.#e.has(e):this.#i?this.#i.has(e):!1}get(e){return this.#t.has(e)?this.#t.get(e):this.#e?this.#e.get(e):this.#i?this.#i.resolve(e):void 0}setType(e,t){return t&&this.#n.set(e,t),this}getType(e){return this.#n.has(e)?this.#n.get(e):this.#e?this.#e.getType(e):void 0}child(){return new zr(this)}};function Lr(n,e,t=null){let i=new Jr(null,t);for(let r of n.input){if(!(r.name in e))throw new $(`Group "${n.name}": missing required input "${r.name}"`);i.set(r.name,e[r.name]),i.setType(r.name,r.type)}return i}function Yr(n){return n?.snapshot?.element??n?.differential?.element??[]}function mo(n){let e=n?.type;if(!e)return[];let t=`${e}.`,i=new Set;for(let r of Yr(n)){if(!r.path?.startsWith(t))continue;let s=r.path.slice(t.length);s.includes(".")||i.add(s.replace(/\[x]$/,""))}return[...i]}function go(n,e){let t=n?.type;if(!t)return;let i=`${t}.${e}`,r=Yr(n).find(s=>s.path===i)?.type;if(!(!r||r.length!==1))return r[0].code}function _o(n,e){let t=n?.[e];return t==null?[]:Array.isArray(t)?t:[t]}var vo={string:"string",boolean:"boolean",integer:"number",decimal:"number"};function yo(n,e,t){if(n==null)return!1;if(typeof n=="object"&&typeof n.resourceType=="string")return n.resourceType===e;let i=vo[e];if(i)return typeof n===i;if(t&&typeof n=="object"){let r=t(e);if(r){let s=mo(r);return Object.keys(n).every(o=>s.includes(o))}}return!0}var xo=new Map([["first",n=>n.slice(0,1)],["not_first",n=>n.slice(1)],["last",n=>n.slice(-1)],["not_last",n=>n.slice(0,-1)],["only_one",n=>n.length===1?n:[]]]);function Eo(n,e){if(!e)return n;let t=xo.get(e);if(!t)throw new $(`Unknown source listMode "${e}"`);return t(n)}function bo(n,e){let{min:t,max:i}=e;if(t===void 0&&i===void 0)return;let r=n.length,s=`${e.context}${e.element?"."+e.element:""}`;if(t!==void 0&&r<t)throw new $(`RuleSource "${s}": expected at least ${t} element(s), found ${r}`);if(i!==void 0&&i!=="*"&&r>Number(i))throw new $(`RuleSource "${s}": expected at most ${i} element(s), found ${r}`)}function Ir(n,e,t){if(!e.has(n.context))throw new $(`RuleSource: context variable "${n.context}" is not bound`);let i=e.get(n.context),r=n.element?_o(i,n.element):[i];n.element&&n.type&&(r=r.filter(o=>yo(o,n.type,t.structureDefinitionResolver))),bo(r,n),r=Eo(r,n.listMode),r.length===0&&n.defaultValue!==void 0&&(r=[Jt(t.evaluator,i,n.defaultValue,t.env)]);let s=[];for(let o of r)if(!(n.condition&&!Or(t.evaluator,o,n.condition,t.env))){if(n.check&&!Or(t.evaluator,o,n.check,t.env))throw new $(`RuleSource "${n.context}" check failed: ${n.check}`);n.logMessage&&t.onLog&&t.onLog(Jt(t.evaluator,o,n.logMessage,t.env)),s.push(o)}return s}function Co(n){return n.reduce((e,t)=>e.flatMap(i=>t.map(r=>[...i,r])),[[]])}function Xr(n,e,t){let i=[];for(let r of n.source){let s=i.find(l=>l.ruleSource.variable===r.context),o;if(s)o=s.candidates.flatMap(l=>{let a=e.child().set(r.context,l);return Ir(r,a,t)});else if(e.has(r.context))o=Ir(r,e,t);else throw new $(`RuleSource: context variable "${r.context}" is not bound`);i.push({ruleSource:r,candidates:o})}return i.some(r=>r.candidates.length===0)?[]:Co(i.map(r=>r.candidates)).map(r=>{let s=e.child();return i.forEach(({ruleSource:o},l)=>{o.variable&&(s.set(o.variable,r[l]),s.setType(o.variable,o.type))}),s})}function Yn(n,e,t=new Set){if(t.has(e.name))throw new $(`Group "${e.name}": circular "extends" chain`);if(t.add(e.name),!e.extends)return e.rule;let i=n.getGroup(e.extends);if(!i)throw new $(`Group "${e.name}" extends unknown group "${e.extends}"`);return[...Yn(n,i,t),...e.rule]}function wo(n,e){return n.kind==="id"?e.get(n.value):n.value}function Kr(n,e){return n.map(t=>wo(t,e))}function So(n,e,t){if(!n.transform)return t.createInstance?[t.createInstance(void 0)]:[{}];let i=Kr(n.parameter,e),r=t.registry.get(n.transform)(t,i);return n.transform==="evaluate"?r:[r]}function Qn(n,e,t){return n.transform==="create"&&n.parameter[0]?.kind==="string"&&e.setType(n.variable,n.parameter[0].value),t}function Ro(n,e,t,i,r){if(!e.has(n.context))throw new $(`RuleTarget: context variable "${n.context}" is not bound`);let s=e.get(n.context);if(!n.transform&&n.element&&s[n.element]!==void 0){let a=s[n.element];return n.variable&&e.set(n.variable,a),a}let o=So(n,e,t);if(o.length===0)return;if(!n.element){let a=o[o.length-1];return n.variable&&Qn(n,e,e.set(n.variable,a)),a}if(n.listMode.length>0||Array.isArray(s[n.element])){Array.isArray(s[n.element])||(s[n.element]=[]);let a=s[n.element],c;for(let u of o)c=i.add(a,u,n.listMode,n.listRuleId,r);return n.variable&&Qn(n,e,e.set(n.variable,c)),c}if(o.length>1)throw new $(`RuleTarget "${n.context}.${n.element}": evaluate() produced multiple values for a non-repeating target`);let l=o[0];return s[n.element]=l,n.variable&&Qn(n,e,e.set(n.variable,l)),l}function To(n,e,t){for(let i of n.group){if(i.typeMode!=="types"&&i.typeMode!=="type-and-types")continue;let[r,s]=i.input;if(!(!r||!s||r.type!==e)&&!(i.typeMode==="types"&&s.type!==t)&&!(i.typeMode==="type-and-types"&&t&&s.type!==t))return i}}function Dr(n,e,t,i){let r=n.getType(e);if(!t)return r;if(!r||!i)return;let s=i(r);return s?go(s,t):void 0}function No(n){return n.dependent.length===0&&n.rule.length===0}function Ao(n,e,t,i,r){if(!e.element||!i.structureDefinitionResolver||!i.invokeGroup||!i.doc)return!1;let s=n.source[0],o=s.type??Dr(t,s.context,s.element,i.structureDefinitionResolver),l=Dr(t,e.context,e.element,i.structureDefinitionResolver);if(!o||!l)return!1;let a=To(i.doc,o,l);if(!a)return!1;let c=t.get(e.context),u=i.createInstance?i.createInstance(l):{};c[e.element]=u,e.variable&&(t.set(e.variable,u),t.setType(e.variable,l));let d=s.element?t.get(s.variable):t.get(s.context);return i.invokeGroup(a.name,[d,u],r),!0}function Xn(n,e,t,i){let r=Xr(n,e,t),s=No(n);for(let o of r){for(let l of n.target)s&&!l.transform&&Ao(n,l,o,t,i)||Ro(l,o,t,i,n);for(let l of n.rule)Xn(l,o,t,i);for(let l of n.dependent){let a=Kr(l.parameter,o);t.invokeGroup(l.name,a,i)}}}function Zr(n,e,t,i=new Set){if(i.has(n))return;i.add(n);let r=n.getGroup(e);if(r)return{doc:n,group:r};if(t.structureMapResolver)for(let s of n.import){let o=t.structureMapResolver(s)??[];for(let l of o){let a=Zr(l,e,t,i);if(a)return a}}}function Oo(n,e,t){if(e.length!==n.input.length)throw new $(`Group "${n.name}": expected ${n.input.length} argument(s), got ${e.length}`);let i=new Jr(null,t);return n.input.forEach((r,s)=>{i.set(r.name,e[s]),i.setType(r.name,r.type)}),i}function Lo(n,e,t,i,r){let s=Zr(n,e,i);if(!s)throw new $(`invokeGroup: unknown group "${e}"`);let{doc:o,group:l}=s,a=i.forDoc?i.forDoc(o):i,c=Oo(l,t,a.constants);for(let u of Yn(o,l))Xn(u,c,a,r)}var Io=class{first=[];middle=[];last=[];firstClaimedBy=null;lastClaimedBy=null;shareCursors=new Map;flatten(){return[...this.first,...this.middle,...this.last]}},Do=class{#e=new Map;#t(n){let e=this.#e.get(n);return e||(e=new Io,this.#e.set(n,e)),e}add(n,e,t,i,r){let s=this.#t(n),o=t??[];if(o.includes("share")||o.includes("single")){let l=s.shareCursors.get(i)??0,a=s.middle[l];return a===void 0?(a=e,s.middle[l]=e):e&&typeof e=="object"&&Object.assign(a,e),s.shareCursors.set(i,l+1),a}if(o.includes("first")){if(s.firstClaimedBy&&s.firstClaimedBy!==r)throw new $('ListPlan: more than one rule claims "first" for the same target list');return s.firstClaimedBy=r,s.first.push(e),e}if(o.includes("last")){if(s.lastClaimedBy&&s.lastClaimedBy!==r)throw new $('ListPlan: more than one rule claims "last" for the same target list');return s.lastClaimedBy=r,s.last.push(e),e}return s.middle.push(e),e}flush(){for(let[n,e]of this.#e){let t=e.flatten();n.length=0,n.push(...t)}}},kr=class{#e;#t;#n;#i=new Map;#r=new Set;constructor(n,e,t={}){this.#e=n,this.#t=e,this.#n=t}has(n){return this.#e.const.some(e=>e.name===n)}resolve(n){if(this.#i.has(n))return this.#i.get(n);if(this.#r.has(n))throw new $(`Constant "${n}": circular reference`);let e=this.#e.const.find(t=>t.name===n);if(!e)throw new $(`Constant "${n}" is not defined`);this.#r.add(n);try{let t=Jt(this.#t,void 0,e.value,this.asEnv());return this.#i.set(n,t),t}finally{this.#r.delete(n)}}asEnv(){let n=this;return new Proxy({...this.#n},{get(e,t){return typeof t=="string"&&!(t in e)&&n.has(t)?n.resolve(t):e[t]},has(e,t){return t in e||typeof t=="string"&&n.has(t)}})}},es=class{#e;constructor({evaluator:n,env:e,onLog:t,registry:i,createInstance:r,translate:s,uuidFactory:o,structureMapResolver:l,structureDefinitionResolver:a,queryInstances:c,produceInstance:u}={}){this.evaluator=n,this.env=e,this.onLog=t,this.registry=i??fo(),this.createInstance=r,this.translate=s,this.uuidFactory=o,this.structureMapResolver=l,this.structureDefinitionResolver=a,this.queryInstances=c,this.produceInstance=u,this.#e=new WeakMap}#t(n){return n?(this.#e.has(n)||this.#e.set(n,new kr(n,this.evaluator,this.env)),this.#e.get(n)):new kr(n,this.evaluator,this.env)}#n(n){let e=this.#t(n),t={doc:n,evaluator:this.evaluator,env:e.asEnv(),onLog:this.onLog,registry:this.registry,createInstance:this.createInstance,translate:this.translate,uuidFactory:this.uuidFactory,structureMapResolver:this.structureMapResolver,structureDefinitionResolver:this.structureDefinitionResolver,queryInstances:this.queryInstances,produceInstance:this.produceInstance,constants:e};return t.invokeGroup=(i,r,s)=>Lo(n,i,r,t,s),t.forDoc=i=>this.#n(i),t}bindGroupInputs(n,e){return Lr(n,e)}matchRule(n,e,t){return Xr(n,e,this.#n(t))}run(n,e,t){let i=t?n.getGroup(t):n.defaultGroup;if(!i)throw new $(`run: group "${t}" not found`);let r=this.#n(n),s=Lr(i,e,r.constants),o=new Do;for(let a of Yn(n,i))Xn(a,s,r,o);o.flush();let l={};for(let a of i.input)a.mode==="target"&&(l[a.name]=s.get(a.name));return l}};var ko=typeof window<"u"?window.fhirpath:null;function ts(n={}){return new es({evaluator:{evaluate:(e,t,i)=>ko.evaluate(e,t,i,se())},...n})}function Mo(n,e){if(!e||!e.startsWith("#"))return null;let t=e.slice(1);return(n||[]).find(i=>i.resourceType==="StructureMap"&&i.id===t)||null}function ns(n,e,{engine:t=ts()}={}){if(!e||typeof e!="object")return{qr:null,warnings:["No source resource provided."]};let r=(n.extension||[]).find(p=>p.url===h.sourceStructureMap)?.valueCanonical;if(!r)return{qr:null,warnings:["Questionnaire has no sdc-questionnaire-sourceStructureMap extension. Set it in Properties."]};let s=Mo(n.contained,r);if(!s)return{qr:null,warnings:[`Referenced StructureMap "${r}" was not found in contained[]. Add it via the Contained Resources panel.`]};let o;try{o=Wr.fromJSON(s)}catch(p){return{qr:null,warnings:[`Could not parse StructureMap: ${p.message}`]}}let l=o.defaultGroup;if(!l)return{qr:null,warnings:["StructureMap has no usable group."]};let a={},c=null;for(let p of l.input)p.mode==="source"?a[p.name]=e:(a[p.name]={item:[]},c=c||p.name);let u;try{u=t.run(o,a)}catch(p){return{qr:null,warnings:[`StructureMap execution failed: ${p.message}`]}}let d=c?u[c]:null;return!d||typeof d!="object"||!Object.keys(d).length?{qr:null,warnings:["StructureMap produced no output."]}:(d.resourceType||(d.resourceType="QuestionnaireResponse"),{qr:d,warnings:[]})}var Kn=300*1e3,is=5*1e3,rs={};function Zn(n,e){clearTimeout(rs[n]),rs[n]=setTimeout(()=>ss(n),Math.max(0,e))}async function ss(n){let e=Ue(n);if(!e)return;let t=e.expiresAt-Date.now();if(t>Kn){Zn(n,Kn);return}if(t>is){Zn(n,t-is);return}if(!e.refreshToken){qe(n),document.dispatchEvent(new CustomEvent(E.OAUTH_LOGIN_REQUIRED,{detail:{serverKey:n}}));return}try{await et(n),Zn(n,Kn)}catch{qe(n),document.dispatchEvent(new CustomEvent(E.OAUTH_LOGIN_REQUIRED,{detail:{serverKey:n}}))}}function ei(n){!Sn(n)||!Ue(n)||ss(n)}var _e=window.fhirpath;function $e(){return typeof document<"u"&&document.hidden?new Promise(n=>setTimeout(n,0)):new Promise(n=>requestAnimationFrame(()=>requestAnimationFrame(n)))}var zt=class{constructor(e={}){this._session=e.session||Le,this._bus=this._session.bus,this._rc=e.rc||di,this._rc.bus=this._bus,this._progress=e.progress||{show(){},hide(){}},this._notify=e.notify||{error(){},info(){}},this._chrome={search:{refresh(){}},statusBadge:{update(){}},languageMenu:{rebuild(){}},...e.chrome||{}},this._mountEl=e.mountEl||null,this._jsonEl=e.jsonEl||null;let t=this._rc;this._tree=null,this._answerStore=null,this._rawFhir=null,this._questVariables=null,this._calcFormOk=null,this._viewPrefs=e.viewPrefs||{showLinkId:!0,showPrefix:!0,showBadges:!0,showHiddenItems:!0},this._previewMode=e.previewMode||"preview",this._lastCtx={fp:null,qr:null,env:{}},this._preQR=null,this._preEnvVars=null,this._renderVersion=0,this._renderTimer=null,this._calcCache=null,this._pendingCtx=null,this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._els={},t.viewPrefs=this._viewPrefs,t.lastCtx=this._lastCtx,t.buildControl=(r,s,o)=>this._buildControl(r,s,o),t.isMandatory=ce,t.evalConstraints=nt,t.CHECKABLE_TYPES=Vt;let i=({questDoc:r,answerStore:s})=>{this._tree=r.tree,this._answerStore=s,this._rawFhir=r,this._questVariables=r.variables,this._calcFormOk=(o,l)=>Ne(o,s,l),t.instancePath=[],t.translations=r.translations,t.calcFormOk=o=>this._calcFormOk(o,t.instancePath),t.updateGroupIcons=()=>pe.updateAll(t),t.getValue=o=>s.get(o,t.instancePath),t.getAll=o=>s.getAll(o,t.instancePath),t.set=(o,l)=>s.set(o,l,t.instancePath),t.remove=o=>s.remove(o,t.instancePath),t.instanceCount=(o,l)=>s.instanceCount(o,l),t.addInstance=(o,l)=>s.addInstance(o,l),t.removeInstance=(o,l,a)=>s.removeInstance(o,l,a),t.evalChildren=(o,l)=>{let a=[];for(let c of o)Pe(c,t.ctx,a,!1,l);return a}};if(e.session)i({questDoc:this._session.questDoc,answerStore:this._session.answerStore});else{let r=fe.get(E.APP_CONTEXT_READY);r?.questDoc?i(r):this._bus.on(E.APP_CONTEXT_READY,s=>i(s.detail),{once:!0})}this._bus.on(E.VIEW_PREF_CHANGE,r=>this._onViewPrefChange(r)),this._bus.on(E.PREVIEW_MODE_CHANGE,r=>this._onPreviewModeChange(r)),this._bus.on(E.REINIT_FORM,r=>this.reinitForm({silent:r.detail?.silent})),this._bus.on(E.QUESTIONNAIRE_LOADED,()=>{this._els.lform?.closest(".right-panel-body")?.scrollTo({top:0}),this._chrome.languageMenu.rebuild(this._rawFhir?.translations)}),this._bus.on(E.BUILDER_NAVIGATE,r=>{this._bus.dispatch(E.PREVIEW_NAVIGATE_TO,{id:r.detail.id})}),this._bus.on(E.RESPONSE_CHANGED,()=>{++this._renderVersion,clearTimeout(this._renderTimer),this._renderTimer=setTimeout(()=>this._asyncRender(this._renderVersion),30)}),this._bus.on(E.CALC_RECALC_REQUESTED,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._calcCache=null}),this._bus.on(E.QR_LOADED,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null}),this._bus.on(E.EXPAND_ALL_PREVIEW,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),this._bus.on(E.COLLAPSE_ALL_PREVIEW,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),this._bus.on(E.SDC_POPULATE_REQUESTED,r=>this._populate(r.detail.patientRef)),this._bus.on(E.STRUCTUREMAP_POPULATE_REQUESTED,r=>this._structureMapPopulate(r.detail.patientRef)),this._bus.on(E.LANGUAGE_CHANGED,r=>{t.activeLanguage=r.detail?.lang??"",t.translations=this._rawFhir?.translations??{},this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)}),e.session||(fe.get(E.APP_CONTEXT_READY)?this.mount():this._bus.on(E.APP_CONTEXT_READY,()=>this.mount(),{once:!0}))}getLastCtx(){return this._lastCtx}collapseAll(){this._bus.dispatch(E.COLLAPSE_ALL_PREVIEW)}expandAll(){this._bus.dispatch(E.EXPAND_ALL_PREVIEW)}destroy(){clearTimeout(this._renderTimer)}mount(){let e={lform:this._mountEl||document.querySelector('[data-mount="preview-lform"]'),fhirJsonView:this._jsonEl||document.querySelector('[data-mount="fhir-json-view"]'),leftPanelBody:document.querySelector('[data-mount="left-panel-body"]'),viewOptionsWrap:document.querySelector('[data-mount="viewOptionsWrap"]'),previewModeWrap:document.querySelector('[data-mount="previewModeWrap"]'),searchWrap:document.querySelector('[data-mount="search-wrap"]')};this._els=e;let t=()=>{let r=this._tree.length>0?"":"none";e.viewOptionsWrap&&(e.viewOptionsWrap.style.display=r),e.searchWrap&&(e.searchWrap.style.display=r),e.previewModeWrap&&(e.previewModeWrap.style.display=r)};t(),this._bus.on(E.QUESTIONNAIRE_LOADED,t),this._bus.on(E.QUESTIONNAIRE_NEW,t),this._bus.on(E.QUESTIONNAIRE_CLEARED,t),this._bus.on(E.QUESTIONNAIRE_CLEARED,()=>{this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,this._asyncRender(++this._renderVersion)});let i=e.lform;i&&(i.classList.toggle("preview--no-badges",!this._viewPrefs.showBadges),i.classList.toggle("preview--no-linkid",!this._viewPrefs.showLinkId),i.classList.toggle("preview--no-prefix",!this._viewPrefs.showPrefix),i.classList.toggle("preview--no-hidden",!this._viewPrefs.showHiddenItems),i.classList.toggle("patient-view",this._previewMode==="patient"),i.style.display=this._previewMode==="json"?"none":""),e.fhirJsonView&&(e.fhirJsonView.style.display=this._previewMode==="json"?"":"none"),this._asyncRender(++this._renderVersion)}async reinitForm({silent:e=!1}={}){if(!_e)return;let t=this._progress;this._calcCache=null,this._pendingCtx=null,this._lastVisibleSig=null,this._lastRepCounts=null,this._lastRepDataSz=null,e||t.show("Building questionnaire response\u2026"),await $e();let r=rt({resourceType:"Questionnaire",item:[]},this._answerStore.toValueMap());e||t.show("Evaluating variables\u2026"),await $e();let s=Bn(this._questVariables,r,_e);e||t.show("Applying initial values\u2026"),await $e();let o=this._answerStore.toValueMap();qn(this._tree,r,_e,o,s),this._answerStore.merge(o),this._preQR=r,this._preEnvVars=s,e||t.show("Refreshing preview\u2026"),await $e(),this._asyncRender(++this._renderVersion)}_onViewPrefChange(e){this._viewPrefs[e.detail.key]=e.detail.value;let t=this._els.lform;if(!t)return;let i={showBadges:"preview--no-badges",showLinkId:"preview--no-linkid",showPrefix:"preview--no-prefix",showHiddenItems:"preview--no-hidden"}[e.detail.key];i&&t.classList.toggle(i,!e.detail.value),this._lastVisibleSig=null,this._lastRepCounts=null,this._asyncRender(++this._renderVersion)}_onPreviewModeChange(e){this._previewMode=e.detail.mode;let t=this._els.lform;if(t?.classList.toggle("patient-view",this._previewMode==="patient"),t){let i=this._previewMode==="json";t.style.display=i?"none":"",this._els.fhirJsonView&&(this._els.fhirJsonView.style.display=i?"":"none")}this._lastVisibleSig=null,this._lastRepCounts=null,this._asyncRender(++this._renderVersion)}_reCalc(){if(_e){let e,t,i=at(this._session.questDoc);this._preQR?(e=this._preQR,t=this._preEnvVars,this._preQR=null,this._preEnvVars=null):(e=rt(i,this._answerStore.toValueMap()),t=Bn(this._questVariables,e,_e));let r=this._answerStore.toValueMap();this._calcCache||(this._calcCache=cr(this._tree,this._questVariables)),ur(this._tree,e,_e,r,t,i,this._calcCache),this._answerStore.merge(r);let s={resource:e,...t};this._lastCtx.fp=_e,this._lastCtx.qr=e,this._lastCtx.env=s,this._bus.dispatch(E.FHIRPATH_CTX_UPDATED,{fp:_e,qr:e,env:s}),this._bus.dispatch(E.REFRESH_EXPR_ICONS);let o={fp:_e,qr:e,envVars:t};return this._pendingCtx=o,o}return{fp:null,qr:null,envVars:{}}}_buildControl(e,t,i){let r=this._rc,s=this._previewMode==="patient",o=r.instancePath&&r.instancePath.length?r.instancePath.slice():void 0,l=()=>{let p=this._calcFormOk(e,o);t&&(t.className=p?"icon-ok":"icon-fail",t.textContent=p?"\u2713":"\u2717"),s&&e._previewEl&&e._previewEl.classList.toggle("lform-item--invalid",!p)},u={getValue:p=>this._answerStore.get(p,o),setValue:(p,f)=>this._bus.dispatch(E.ANSWER_SET,{id:p,value:f,path:o}),onChange:()=>{l(),i&&i()},_reCalc:()=>{this._reCalc(),this._bus.dispatch(E.REFRESH_CALC_BADGES)},bus:this._bus,fhirBase:this._fhirBase(),corsProxy:this._session.config?.corsProxy??te.get(J.CORS_PROXY),_fpCtx:this._lastCtx},d=e.buildControl(u);return this._applyA11yLabels(d,e),d&&typeof d.querySelectorAll=="function"&&d.querySelectorAll(".ctrl-err").forEach(p=>{p.setAttribute("role","alert"),p.setAttribute("aria-live","assertive")}),d}_applyA11yLabels(e,t){if(!e||typeof e.querySelectorAll!="function")return;let i=String(t.title||"").replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();i&&e.querySelectorAll("input, select, textarea").forEach(r=>{r.type!=="hidden"&&(r.getAttribute("aria-label")||r.getAttribute("aria-labelledby")||r.id&&e.querySelector(`label[for="${r.id}"]`)||typeof r.closest=="function"&&r.closest("label")||r.setAttribute("aria-label",i))})}async _asyncRender(e){let t=this._rc,i=this._progress,{search:r,statusBadge:s,languageMenu:o}=this._chrome,l=this._pendingCtx||this._reCalc();if(this._pendingCtx=null,await $e(),e!==this._renderVersion){i.hide();return}if(this._tree.length===0){let m=this._els.lform;if(m){m.innerHTML="";let b=document.createElement("div");b.className="preview-placeholder",b.dataset.testid="preview-placeholder",b.innerHTML='<div class="preview-placeholder-icon">\u{1F4CB}</div><div class="preview-placeholder-title">No questionnaire loaded</div><div class="preview-placeholder-hint">Use <strong>Questionnaires \u25BE</strong> in the toolbar to load a questionnaire:<br><strong>From file\u2026</strong> \u2014 upload a FHIR R4 or STU3 JSON file from your computer,<br><strong>From Library\u2026</strong> \u2014 pick one of the built-in samples,<br><strong>From Cloud\u2026</strong> \u2014 access your saved questionnaires (sign in required).<br>Or start from scratch: click <strong>+ Add Root Group</strong> in the left panel.</div>',m.appendChild(b)}s.update({visible:[],ctx:null}),i.hide();return}let a=[];for(let m of this._tree)Pe(m,l,a);let c=a.filter(m=>m.visible),u=new Map(a.map(m=>[m.node.id,m])),d=l.envVars||{};if(await $e(),e!==this._renderVersion){i.hide();return}let p=this._els.lform;if(!p){i.hide();return}let f=c.map(m=>{let b=m.node;return`${b.id}|${b.title??""}|${b.itemType??""}|${b.mandatory??""}|${b.logicWithParent??""}|${b._prefix??""}|${b._choiceOrientation??""}|${b._previewCollapsed?"c":"e"}`}).join("\0"),_=a.filter(m=>m.visible&&m.node.repeats),v=new Map(_.map(m=>[m.node.id,this._answerStore.data[m.node.id]?.length??1])),w=m=>{let b=this._answerStore.data[m];return b?JSON.stringify(b).length:0},S=new Map(_.map(m=>[m.node.id,w(m.node.id)])),N=_.map(m=>`${v.get(m.node.id)}:${S.get(m.node.id)}`).join(","),L=f+" "+N,[A="",T=""]=(this._lastVisibleSig??" ").split(" "),I=p.children.length>0;if(f===A&&I){if(t.ctx=l,t.resultMap=u,t.cEnv=d,t.visible=c,N===T){for(let m of a){if(!m.visible)continue;let b=m.node._iconEl;if(!b||!document.contains(b))continue;let{displayOk:M}=m.node._evalCondition?.(m,t)??{displayOk:!0};b.className=M?"icon-ok":"icon-fail",b.textContent=M?"\u2713":"\u2717"}pe.updateAll(t),s.update({visible:c,ctx:l}),r.refresh(),this._updateJsonView(),i.hide(),this._bus.dispatch(E.PREVIEW_RENDER_DONE);return}t.previewMode=this._previewMode,t.translations=this._rawFhir?.translations??{},t.instancePath=[];for(let m of _){let b=v.get(m.node.id),M=this._lastRepCounts?.get(m.node.id)??1,K=S.get(m.node.id),W=this._lastRepDataSz?.get(m.node.id)??0;if(b===M&&K===W)continue;let Z=m.node._previewEl;if(!Z||!document.contains(Z))continue;let ee=Z.nextElementSibling,F=document.createDocumentFragment();D.dispatch(m,F,t),Z.replaceWith(F),ee&&(ee.dataset.rgGroup===m.node.id||ee.dataset.gtableId===m.node.id)&&ee.remove()}this._lastVisibleSig=L,this._lastRepCounts=v,this._lastRepDataSz=S;for(let m of a){if(!m.visible)continue;let b=m.node._iconEl;if(!b||!document.contains(b))continue;let{displayOk:M}=m.node._evalCondition?.(m,t)??{displayOk:!0};b.className=M?"icon-ok":"icon-fail",b.textContent=M?"\u2713":"\u2717"}pe.updateAll(t),s.update({visible:c,ctx:l}),r.refresh(),this._updateJsonView(),i.hide(),this._bus.dispatch(E.PREVIEW_RENDER_DONE);return}this._lastVisibleSig=L,this._lastRepCounts=v;let B=p.closest(".right-panel-body"),x=B?B.scrollTop:0,R=document.activeElement,y=null;if(R&&p.contains(R)){let m=R.closest("[data-preview-id]");if(m){let b=Array.from(m.querySelectorAll("input, textarea, select"));y={previewId:m.dataset.previewId,inputIndex:b.indexOf(R),selStart:R.selectionStart,selEnd:R.selectionEnd}}}p.innerHTML="";let O=new Map;t.ctx=l,t.resultMap=u,t.cEnv=d,t.visible=c,t.groupIconMap=O,t.previewMode=this._previewMode,t.translations=this._rawFhir?.translations??{},t.instancePath=[];let U=document.createDocumentFragment();for(let m of this._tree){let b=u.get(m.id);b&&D.dispatch(b,U,t)}if(p.appendChild(U),B&&x&&(B.scrollTop=x),y){let m=p.querySelector('[data-preview-id="'+CSS.escape(y.previewId)+'"]');if(m){let M=Array.from(m.querySelectorAll("input, textarea, select"))[y.inputIndex];if(M){M.focus();try{M.setSelectionRange(y.selStart,y.selEnd)}catch{}}}}pe.updateAll(t),s.update({visible:c,ctx:l}),r.refresh(),this._updateJsonView(),o.rebuild(this._rawFhir?.translations),i.hide(),this._bus.dispatch(E.PREVIEW_RENDER_DONE)}_fhirBase(){let e=this._session.config?.fhirBaseUrl;return e||(this._session===Le?te.get(J.FHIR_BASE):"")}async _resolveAuthHeader(){if(this._session===Le)return null;let e=this._session.config?.getAuthToken;if(typeof e!="function")return null;let t=await e();return t?{Authorization:`Bearer ${t}`}:{}}async _populate(e){let t=this._progress,i=this._fhirBase();if(!i){this._notify.error("FHIR Base Server not configured.");return}if(this._session===Le){let r=te.get(J.SDC_SERVER)?"SDC_SERVER":"FHIR_BASE";try{await Tn(r),ei(r)}catch(s){s.message!=="login-cancelled"&&this._notify.error(`Login failed: ${s.message}`);return}}t.show("Populating from server\u2026");try{let r=at(this._session.questDoc),s=await this._resolveAuthHeader(),o=await Ar(i,r,e,{authHeader:s}),l=this._answerStore.toValueMap(),{loaded:a}=it(o,l,this._tree);this._answerStore.replaceAll(l),this._bus.dispatch(E.REINIT_FORM),this._notify.info(`Pre-filled ${a} answer${a!==1?"s":""} from server.`)}catch(r){this._notify.error(r.message)}finally{t.hide()}}async _structureMapPopulate(e){let t=this._progress,i=this._fhirBase();if(!i){this._notify.error("FHIR Base Server not configured.");return}if(this._session===Le)try{await Tn("FHIR_BASE"),ei("FHIR_BASE")}catch(r){r.message!=="login-cancelled"&&this._notify.error(`Login failed: ${r.message}`);return}t.show("Running StructureMap population\u2026");try{let r=at(this._session.questDoc),s=await this._resolveAuthHeader(),o=await Ki(e,{fhirBase:i,authHeader:s}),{qr:l,warnings:a}=ns(r,o);if(!l){this._notify.error(a.join(" ")||"StructureMap produced no output.");return}let c=this._answerStore.toValueMap(),{loaded:u}=it(l,c,this._tree);this._answerStore.replaceAll(c),this._bus.dispatch(E.REINIT_FORM),this._notify.info(`Pre-filled ${u} answer${u!==1?"s":""} via StructureMap.`)}catch(r){this._notify.error(r.message)}finally{t.hide()}}_updateJsonView(){if(this._previewMode!=="json"||!this._els.fhirJsonView)return;let e=at(this._session.questDoc);this._els.fhirJsonView.innerHTML=Ce(JSON.stringify(e,null,2)),this._chrome.search.refresh()}};var ot=class{constructor({els:e,bus:t=X,previewMode:i="preview"}){this._el=e,this._bus=t,this._matches=[],this._idx=-1,this._previewMode=i,this._ac=new AbortController,this._bus.on(E.PREVIEW_MODE_CHANGE,r=>{this._previewMode=r.detail.mode},{signal:this._ac.signal}),this._wire()}_wire(){let e=this._el,t={signal:this._ac.signal};e.input.addEventListener("input",()=>this._onInput(),t),e.input.addEventListener("keydown",i=>{(i.key==="ArrowDown"||i.key==="Enter")&&(i.preventDefault(),this._navigate(1)),i.key==="ArrowUp"&&(i.preventDefault(),this._navigate(-1)),i.key==="Escape"&&(e.input.value="",this._clear())},t),e.nextBtn.addEventListener("click",()=>this._navigate(1),t),e.prevBtn.addEventListener("click",()=>this._navigate(-1),t),document.addEventListener("keydown",i=>{if((i.ctrlKey||i.metaKey)&&i.key==="f"){if(e.searchWrap&&e.searchWrap.style.display==="none")return;i.preventDefault(),e.input.focus(),e.input.select()}},t)}destroy(){this._ac.abort()}refresh(){this._el.input.value.trim()&&this._onInput()}_onInput(){let e=this._el.input.value.trim().toLowerCase();if(this._clearHighlights(),!e){this._clear();return}this._previewMode==="json"?this._onInputJson(e):this._onInputRows(e)}_onInputRows(e){let t=[...this._el.lform.querySelectorAll("[data-preview-id]")];if(this._matches=t.filter(i=>i.textContent.toLowerCase().includes(e)),this._matches.length===0){this._idx=-1,this._el.counter.textContent="No results",this._el.counter.classList.add("search-counter--empty"),this._el.input.classList.add("search-input--empty");return}this._el.input.classList.remove("search-input--empty"),this._el.counter.classList.remove("search-counter--empty"),this._matches.forEach(i=>i.classList.add("search-match")),this._idx=0,this._activate()}_onInputJson(e){let t=this._el.fhirJsonView.textContent,{html:i,count:r}=oi(t,e);if(this._el.fhirJsonView.innerHTML=i,r===0){this._idx=-1,this._el.counter.textContent="No results",this._el.counter.classList.add("search-counter--empty"),this._el.input.classList.add("search-input--empty");return}this._el.input.classList.remove("search-input--empty"),this._el.counter.classList.remove("search-counter--empty"),this._matches=[...this._el.fhirJsonView.querySelectorAll("mark.search-match")],this._idx=0,this._activateJson()}_navigate(e){this._matches.length!==0&&(this._idx>=0&&this._idx<this._matches.length&&this._matches[this._idx].classList.remove("search-match--active"),this._idx=(this._idx+e+this._matches.length)%this._matches.length,this._previewMode==="json"?this._activateJson():this._activate())}_activate(){let e=this._matches[this._idx];e.classList.add("search-match--active"),e.scrollIntoView({behavior:"smooth",block:"center"}),this._el.counter.textContent=this._idx+1+" / "+this._matches.length,this._el.counter.classList.remove("search-counter--empty")}_activateJson(){this._matches.forEach((e,t)=>e.classList.toggle("search-match--active",t===this._idx)),this._matches[this._idx].scrollIntoView({behavior:"smooth",block:"center"}),this._el.counter.textContent=this._idx+1+" / "+this._matches.length,this._el.counter.classList.remove("search-counter--empty")}_clearHighlights(){if(this._previewMode==="json"&&this._el.fhirJsonView.querySelector("mark.search-match")){let e=this._el.fhirJsonView.textContent;this._el.fhirJsonView.innerHTML=Ce(e)}else this._matches.forEach(e=>{e.classList.remove("search-match"),e.classList.remove("search-match--active")});this._matches=[],this._idx=-1}_clear(){this._clearHighlights(),this._el.counter.textContent="",this._el.counter.classList.remove("search-counter--empty"),this._el.input.classList.remove("search-input--empty")}},Po=null;function Vo(){let n={input:document.querySelector('[data-mount="search-input"]'),prevBtn:document.querySelector('[data-mount="search-prev-btn"]'),nextBtn:document.querySelector('[data-mount="search-next-btn"]'),counter:document.querySelector('[data-mount="search-counter"]'),lform:document.querySelector('[data-mount="preview-lform"]'),fhirJsonView:document.querySelector('[data-mount="fhir-json-view"]'),searchWrap:document.querySelector('[data-mount="search-wrap"]')};n.input&&(Po=new ot({els:n,bus:X}))}typeof document<"u"&&Vo();var lt=class{constructor({els:e,bus:t=X,getStore:i}={}){this._btn=e.btn,this._dropdown=e.dropdown,this._wrap=e.wrap,this._bus=t,this._getStore=i||(()=>fe.get(E.APP_CONTEXT_READY)?.answerStore),this._open=!1,this._ac=new AbortController,this._btn.setAttribute("aria-live","polite"),this._btn.setAttribute("aria-atomic","true"),this._btn.addEventListener("click",r=>{r.stopPropagation(),this._open=!this._open,this._dropdown.style.display=this._open?"block":"none"},{signal:this._ac.signal}),document.addEventListener("click",()=>{this._open&&this._close()},{signal:this._ac.signal})}destroy(){this._ac.abort()}update({visible:e,ctx:t}){if(!this._btn)return;let i=this._getStore();if(!i)return;let r=e.length>0,s=t?.fp??null,o=t?.qr??null,l=t?.envVars??{},a=e.filter(x=>!x.disabled&&!x.hidden&&x.node.type==="item"),c=a.filter(x=>ce(x.node)&&Vt.has(x.node.itemType)),u=c.length>0,d=a.filter(x=>x.node._calculatedExpr&&x.node._readOnly&&x.node.itemType==="checkbox"),p=d.length>0,f=d.every(x=>i?.get(x.node.id)===!0),_=a.filter(x=>x.node.constraint?.length),v=_.length>0,w=_.every(x=>nt(x.node,s,o,l)),S=a.filter(x=>!ce(x.node)&&(x.node._minValue!==void 0||x.node._maxValue!==void 0)),N=S.length>0,L=S.every(x=>Ne(x.node,i)),A=u||p||v||N;if(!r||!A){this._wrap.style.display="none",this._close();return}let T=e.filter(x=>!x.disabled&&!x.hidden).every(x=>x.node.type==="item"?x.ok&&Ne(x.node,i):x.ok),I=(u?T:!0)&&(p?f:!0)&&(!v||w)&&(!N||L)&&A,B=[...c.filter(x=>!x.ok||!Ne(x.node,i)).map(x=>({title:x.node.title,id:x.node.id})),...d.filter(x=>i?.get(x.node.id)!==!0).map(x=>({title:x.node.title,id:x.node.id})),..._.filter(x=>!nt(x.node,s,o,l)).map(x=>({title:x.node.title,id:x.node.id})),...S.filter(x=>!Ne(x.node,i)).map(x=>({title:x.node.title,id:x.node.id}))];if(this._wrap.style.display="inline-flex",I)this._btn.className="status-badge status-badge--pass",this._btn.textContent="\u2713 PASS";else{let x=B.length;this._btn.className="status-badge status-badge--fail",this._btn.textContent="\u2717 FAIL \xB7 "+x+" issue"+(x!==1?"s":"")}this._renderList(B)}_close(){this._open=!1,this._dropdown&&(this._dropdown.style.display="none")}_renderList(e){if(!this._dropdown)return;if(this._dropdown.innerHTML="",e.length===0){let i=document.createElement("div");i.className="status-dropdown-msg",i.textContent="All criteria met",this._dropdown.appendChild(i);return}let t=document.createElement("div");t.className="status-dropdown-header",t.textContent=e.length+" issue"+(e.length!==1?"s":"")+" to resolve",this._dropdown.appendChild(t),e.forEach((i,r)=>{let s=document.createElement("div");s.className="status-dropdown-row",s.dataset.tipTitle="Click to navigate",s.addEventListener("click",c=>{c.stopPropagation(),this._close(),this._bus.dispatch(E.BUILDER_NAVIGATE,{id:i.id})});let o=document.createElement("span");o.className="status-dropdown-num",o.textContent=r+1+".",s.appendChild(o);let l=document.createElement("span");l.className="status-dropdown-label",l.textContent=i.title,s.appendChild(l);let a=document.createElement("span");a.className="status-dropdown-arrow",a.textContent="\u2197",s.appendChild(a),this._dropdown.appendChild(s)})}},Bo=null;function Uo(){let n={btn:document.querySelector('[data-mount="status-badge-btn"]'),dropdown:document.querySelector('[data-mount="status-dropdown"]'),wrap:document.querySelector('[data-mount="status-badge-wrap"]')};n.btn&&(Bo=new lt({els:n,bus:X}))}typeof document<"u"&&Uo();var ti=null;function as(){if(!ti)throw new Error("[storage] No adapter registered. Call storage.register() at app startup.")}async function os(n){return as(),ti.getItem(n)}async function ls(n,e){return as(),ti.setItem(n,e)}var us="tooltips-enabled",he=!0,cs=!1,ae=null;function Fo(n){he=!!n,ls(us,he?"true":"false"),he||Ee();let e=document.getElementById("tooltipsOffBadge");e&&(e.style.display=he?"none":"")}function Xt(){if(!ae){ae=document.createElement("div"),ae.className="rich-tooltip",ae.setAttribute("aria-hidden","true");let n=document.createElement("button");n.className="rich-tooltip__close",n.textContent="\xD7",n.setAttribute("aria-label","Close"),n.addEventListener("click",e=>{e.stopPropagation(),Ee()}),ae.appendChild(n),document.body.appendChild(ae)}return ae}function ds(n){let{tipTitle:e,tipBody:t,tipFhir:i,tipSpec:r}=n.dataset;if(!e&&!t)return!1;let s=Xt();if([...s.children].forEach(o=>{o.classList.contains("rich-tooltip__close")||o.remove()}),e){let o=document.createElement("div");o.className="rich-tooltip__title",o.textContent=e,s.appendChild(o)}if(t){let o=document.createElement("div");o.className="rich-tooltip__body",o.textContent=t,s.appendChild(o)}if(i){let o=document.createElement("div");o.className="rich-tooltip__fhir";let l=document.createElement("span");l.className="rich-tooltip__fhir-badge",l.textContent="FHIR",o.appendChild(l);let a=document.createElement("code");if(a.textContent=i,o.appendChild(a),r){let c=document.createElement("span");c.className="rich-tooltip__spec",c.textContent=r,o.appendChild(c)}s.appendChild(o)}return!0}function $o(n){let e=Xt(),t=n.getBoundingClientRect(),i=e.offsetWidth||260,r=e.offsetHeight||100,s=t.left+t.width/2-i/2;s=Math.max(8,Math.min(s,window.innerWidth-i-8));let l=window.innerHeight-t.bottom<r+12;e.classList.toggle("rich-tooltip--above",l);let a=l?t.top-r-10:t.bottom+10;e.style.left=s+"px",e.style.top=a+"px"}function Ho(n){he&&ds(n)&&(Xt().style.display="block",requestAnimationFrame(()=>$o(n)))}function Ee(){ae&&(ae.style.display="none",ae.classList.remove("rich-tooltip--sheet"),ct=!1,ni=null)}var Yt=()=>window.innerWidth<1024,ct=!1,ni=null;function Wo(n){if(!he||!ds(n))return;let e=Xt();e.classList.add("rich-tooltip--sheet"),e.style.left="",e.style.top="",e.style.display="block",ct=!0,ni=n}async function ps(){if(cs)return;cs=!0;try{he=await os(us)!=="false"}catch{he=!0}let n=document.getElementById("tooltipsOffBadge");n&&(n.style.display=he?"none":""),document.addEventListener("mouseover",e=>{if(Yt())return;let t=e.target.closest("[data-tip-title],[data-tip-body]");t&&Ho(t)}),document.addEventListener("mouseout",e=>{if(Yt())return;e.target.closest("[data-tip-title],[data-tip-body]")&&Ee()}),document.addEventListener("click",e=>{if(!Yt())return;let t=e.target.closest("[data-tip-title],[data-tip-body]");if(!t){ct&&ae&&!ae.contains(e.target)&&Ee();return}t.closest('button, a, [role="button"], .calc-badge--explain, .preview-condition-hint--explain, .preview-calc-value--explain, .status-dropdown-row, .support-link-patient-btn, .preview-nav-btn')||ct&&(Ee(),t===ni)||Wo(t)},{capture:!0}),document.addEventListener("click",e=>{Yt()||ct&&ae&&!ae.contains(e.target)&&Ee()}),window.addEventListener("scroll",Ee,!0),window.addEventListener("resize",Ee),document.dispatchEvent(new CustomEvent(E.TIPS_INIT_DONE,{detail:{enabled:he}}))}typeof document<"u"&&document.addEventListener(E.TIPS_TOGGLED,n=>Fo(n.detail?.enabled));var Kt=Object.freeze({search:Object.freeze({refresh(){}}),statusBadge:Object.freeze({update(){}}),languageMenu:Object.freeze({rebuild(){}})}),ii=class{constructor(){this._map=new Map}on(e,t){return(this._map.get(e)??this._map.set(e,new Set).get(e)).add(t),this}off(e,t){return this._map.get(e)?.delete(t),this}emit(e,t){for(let i of this._map.get(e)??[])i(t)}},hs=class{constructor(e,{questionnaire:t=null,response:i=null,config:r={}}={}){this.mountEl=e,this._config=r,this._emitter=new ii,this._session=ci(r);let s=this._session.bus;this._terminology=new Ke(new Be({[J.TERMINOLOGY_SERVER]:r.terminology?.server,[J.CORS_PROXY]:r.terminology?.corsProxy,[J.NLM_API_BASE]:r.terminology?.nlmApiBase}));let o=r.onProgress?{show:c=>r.onProgress(c),hide:()=>r.onProgress(null)}:{show(){},hide(){}};e.innerHTML="",this._lformEl=document.createElement("div"),this._lformEl.className="preview-card",this._jsonEl=document.createElement("pre"),this._jsonEl.className="fhir-json-view",this._jsonEl.style.display="none",r.tooltips&&ps();let l=this._buildChrome(r,s);this._chrome=l,e.append(this._lformEl,this._jsonEl);let a=Zt();a.showNavBtn=!!r.navButton,a.showExplain=!!r.explain,this._renderer=new zt({session:this._session,rc:a,chrome:l,progress:o,notify:{error:c=>this._emitter.emit("error",c),info:c=>this._emitter.emit("info",c)},mountEl:this._lformEl,jsonEl:this._jsonEl,previewMode:r.previewMode,viewPrefs:r.viewPrefs}),this._offs=[s.on(E.RESPONSE_CHANGED,()=>this._emitter.emit("response-changed",this.getResponse())),s.on(E.PREVIEW_RENDER_DONE,()=>this._emitter.emit("render")),s.on(E.LANGUAGE_CHANGED,c=>this._emitter.emit("language-changed",c.detail?.lang??""))],this._renderer.mount(),t&&this._loadQuestionnaire(t),i&&this.setResponse(i),r.language&&this.setLanguage(r.language),Promise.resolve().then(()=>this._emitter.emit("ready"))}_loadQuestionnaire(e){sr(e,{questDoc:this._session.questDoc,bus:this._session.bus}),this._expandValueSets()}async _expandValueSets(){await this._terminology.expandAll(this._session.questDoc.tree,this._session.questDoc.meta),this._session.bus.dispatch(E.REINIT_FORM,{silent:!0})}_buildChrome(e,t){let i=!!e.search,r=!!e.validation;if(!i&&!r)return Kt;let s=document.createElement("div");s.className="fhir-toolbar";let o=Kt.search;if(i){let c=document.createElement("div");c.className="search-wrap";let u=document.createElement("input");u.type="search",u.className="search-input",u.placeholder="\u{1F50D} Search\u2026",u.autocomplete="off",u.setAttribute("data-testid","preview-search-input");let d=document.createElement("button");d.type="button",d.className="search-nav-btn",d.textContent="\u2191";let p=document.createElement("button");p.type="button",p.className="search-nav-btn",p.textContent="\u2193";let f=document.createElement("span");f.className="search-counter",c.append(u,d,p,f),s.appendChild(c),o=new ot({els:{input:u,prevBtn:d,nextBtn:p,counter:f,lform:this._lformEl,fhirJsonView:this._jsonEl,searchWrap:c},bus:t,previewMode:e.previewMode})}let l=document.createElement("span");l.className="fhir-toolbar-sep",s.appendChild(l);let a=Kt.statusBadge;if(r){let c=document.createElement("span");c.className="status-badge-wrap",c.style.display="none";let u=document.createElement("button");u.type="button",u.className="status-badge",u.setAttribute("data-testid","status-badge-btn");let d=document.createElement("div");d.className="status-dropdown",d.style.display="none",c.append(u,d),s.appendChild(c),a=new lt({els:{btn:u,dropdown:d,wrap:c},bus:t,getStore:()=>this._session.answerStore})}return this.mountEl.appendChild(s),{search:o,statusBadge:a,languageMenu:Kt.languageMenu}}on(e,t){return this._emitter.on(e,t),this}off(e,t){return this._emitter.off(e,t),this}getResponse(){let e=this._session.questDoc.rawFhir||{resourceType:"Questionnaire",item:[]};return rt(e,this._session.answerStore.toValueMap())}setResponse(e){let t=this._session.answerStore.toValueMap();it(e,t,this._session.questDoc.tree),this._session.answerStore.replaceAll(t),this._session.bus.dispatch(E.QR_LOADED,{}),this._session.bus.dispatch(E.RESPONSE_CHANGED)}setLanguage(e){this._session.bus.dispatch(E.LANGUAGE_CHANGED,{lang:e})}populate(e){this._session.bus.dispatch(E.SDC_POPULATE_REQUESTED,{patientRef:e})}structureMapPopulate(e){this._session.bus.dispatch(E.STRUCTUREMAP_POPULATE_REQUESTED,{patientRef:e})}setConfig(e){Object.assign(this._config,e),e.language!==void 0&&this.setLanguage(e.language)}destroy(){this._offs?.forEach(t=>t()),this._offs=null;let e=t=>{for(let i of t||[])i.destroy?.(),e(i.children)};e(this._session?.questDoc?.tree),this._chrome?.search?.destroy?.(),this._chrome?.statusBadge?.destroy?.(),this._renderer?.destroy?.(),this.mountEl&&(this.mountEl.innerHTML=""),this._renderer=null,this._session=null,this._chrome=null,this._emitter=null}};export{hs as QuestionnaireRenderer};