1var N=Object.defineProperty,k=Object.defineProperties;var M=Object.getOwnPropertyDescriptors;var C=Object.getOwnPropertySymbols;var q=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var F=(e,t,i)=>t in e?N(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,g=(e,t)=>{for(var i in t||(t={}))q.call(t,i)&&F(e,i,t[i]);if(C)for(var i of C(t))A.call(t,i)&&F(e,i,t[i]);return e},V=(e,t)=>k(e,M(t));import{_ as P,X as B,L as f,r as l,o,i as u,j as r,w as p,t as c,y,g as I,k as b,c as x,F as O,d as E,f as T,Z as H,U as w,Q as j,l as L,s as S,m as U,a as R}from"./index-d9d2400b.js";import{P as G}from"./PatientHeader-7e4992a6.js";import{C as $}from"./Card-7755553c.js";import{C as z}from"./Caps-0094676e.js";import"./ProfileIcon-83eecc20.js";import"./ScalableText-7a6b346a.js";import"./ConfirmPatientStatusModal-71b71424.js";import"./Img-3e0f4e46.js";const Y={name:"PatientInfoItem",components:{Caps:z},props:{label:{type:String,required:!0},name:{type:String,required:!0},type:{type:String,default:"TextInput"},required:{type:Boolean,default:!1},props:{type:Object,default(){return{}}},isEditing:{type:Boolean,default:!1},modelValue:{type:Object,default(){return{}}}},emits:["update:modelValue"],computed:{value(){if(this.type=="CustomDateInput")return this.modelValue[this.name]?B(this.modelValue[this.name]).format("MMM D, YYYY"):"";if(this.props.options)if(this.props.multiSelect){const e=this.modelValue[this.name]?this.modelValue[this.name].split(",").map(i=>i.trim()):[];return this.props.options.reduce((i,n,s)=>{const a=this.getOptionValue(this.props.options[s]);return e.includes(a)&&(i.push(s),e.splice(e.indexOf(a),1)),i},[]).map(i=>this.getOptionText(this.props.options[i])).concat(e).join(", ")}else{const e=this.props.options.findIndex(t=>this.getOptionValue(t)==this.modelValue[this.name]);return e>=0?this.getOptionText(this.props.options[e]):this.modelValue[this.name]}return this.modelValue[this.name]},formData:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},fieldData(){return{fieldName:this.name,type:this.type,label:this.label,required:this.required,props:this.props}}},methods:{validate(){return this.$refs.field.validate()},getOptionValue(e){return f.isObject(e)&&f.has(e,"value")?e.value:e},getOptionText(e){return f.isObject(e)&&f.has(e,"label")?e.label:e}}},Q={class:"patient-info-item"},X={key:0},Z={key:0,class:"required"};function J(e,t,i,n,s,a){const h=l("Caps"),d=l("FormField");return o(),u("div",Q,[i.isEditing?(o(),x(d,{key:1,ref:"field",modelValue:a.formData,"onUpdate:modelValue":t[0]||(t[0]=m=>a.formData=m),"field-name":i.name,"field-data":a.fieldData,size:"sm"},null,8,["modelValue","field-name","field-data"])):(o(),u("div",X,[r(h,null,{default:p(()=>[c(y(i.label),1),i.required?(o(),u("span",Z,"*")):I("",!0)]),_:1}
1),b("div",null,y(a.value||"Â "),1)]))])}const K=P(Y,[["render",J]]);const W={name:"PatientInfoCard",components:{Card:$,PatientInfoItem:K},props:{fields:{type:Array,default(){return[]}},editActive:{type:Boolean,default:!1},modelValue:{type:Object,default(){return{}}}},emits:["update:modelValue"],data(){return{isValid:!0}},computed:{formData:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{validate(){return this.isValid=!0,this.$refs.fields.forEach(e=>{e.validate()||(this.isValid=!1)}),this.isValid}}},ee={class:"patient-info-wrapper"};function te(e,t,i,n,s,a){const h=l("PatientInfoItem"),d=l("Card");return o(),x(d,{class:"patient-info-card"},{default:p(()=>[b("div",ee,[(o(!0),u(O,null,E(i.fields,m=>(o(),x(h,T({ref_for:!0,ref:"fields",key:m.name},m,{modelValue:a.formData,"onUpdate:modelValue":t[0]||(t[0]=v=>a.formData=v),"is-editing":i.editActive}),null,16,["modelValue","is-editing"]))),128))])]),_:1})}const ie=P(W,[["render",te]]),ae=["Brain Tumor","Dementia","L Stroke","Parkinson's","R Stroke","TBI","Unknown"],se=["He/Him/His","She/Her/Hers","They/Them/Theirs"];const ne={name:"PatientProfile",components:{PatientHeader:G,Heading:H,PatientInfoCard:ie,BaseButton:w,Icon:j},mixins:[L({service:"profiles",id:"profileId",afterFetch:(e,t)=>{const i={};e.patientDetailsFields.forEach(n=>{i[n.name]=t[n.name]}),e.patientDiagnosisFields.forEach(n=>{i[n.name]=t[n.name]}),e.isEnterprise&&e.patientGroupAccessFields.forEach(n=>{i[n.name]=t[n.name]}),e.originalFormData=g({},i),e.formData=g({},i)},watch:!0}),S({service:"sites",params:e=>e.isEnterprise?{query:{organizationId:e.user.profile.clinicianOrganizationId}}:null}),S({service:"speech-diagnoses",as:"speechDiagnoses",params:()=>({query:{}})})],emits:["content-change"],data(){return{editActive:!0,originalFormData:{},formData:{},isValid:!0,errorMessage:void 0}},computed:V(g({},U("auth",["user"])),{profileId(){return parseInt(this.$route.params.profileId)},isEnterprise(){return this.user.profile.clinicianOrganizationId},siteOptions(){return this.sites.map(e=>({label:e.name,value:e.id}))},speechDiagnosisOptions(){return this.speechDiagnoses.map(e=>e.displayName)},patientDetailsFields(){return[{name:"patientFirstName",type:"TextInput",label:"First Name",required:!0},{name:"patientLastName",type:"TextInput",label:"Last Name",required:!0},{name:"patientDisplayName",type:"TextInput",label:"Display Name",required:!0},{name:"patientReportsName",type:"CustomSelectInput",label:"Name for Report",props:{options:["Patient","Client","Resident",{label:this.profile.patientFirstName,value:"[firstName]"},{label:"Mr. "+this.profile.patientLastName,value:"Mr. [lastName]"},{label:"Ms. "+this.profile.patientLastName,value:"Ms. [lastName]"}],otherOption:!0}},{name:"patientPronouns",type:"CustomSelectInput",label:"Pronouns For Report",props:{options:se,otherOption:!0,otherText:"Sub/Obj/Possessive",validators:["isRegex:^\\w{1,32}\\/\\w{1,32}\\/\\w{1,32}$"]}}]},patientDiagnosisFields(){return[{name:"patientMedicalDiagnosis",type:"CustomSelectInput",label:"Medical Diagnosis",props:{options:ae,multiSelect:!0,otherOption:!0}},{name:"patientSpeechDiagnosis",type:"CustomSelectInput",label:"Speech Diagnosis",props:{options:this.speechDiagnosisOptions,multiSelect:!0,otherOption:!0}}]},patientGroupAccessFields(){return[{name:"patientSiteId",type:"CustomSelectInput",label:"Site",required:!0,props:{options:this.siteOptions}}]},hasChanges(){return!f.isEqual(this.formData,this.originalFormData)}}),mounted(){this.$watch("formData",e=>{f.isEqual(e,this.originalFormData)?this.$emit("content-change",!1):this.$emit("content-change",!0)},{deep:!0})},methods:V(g({},R("profiles",["patch"])),{handleSave(){this.isValid=!0,this.errorMessage=void 0,this.$refs.details.validate()||(this.isValid=!1),this.$refs.diagnosis.validate()||(this.isValid=!1),this.$refs.groupAccess&&!this.$refs.groupAccess.validate()&&(this.isValid=!1),this.isValid&&this.patch(this.profile.id,this.formData).then(()=>{this.originalFormData=this.formData,this.$emit("content-change",!1)}).catch(e=>{this.errorMessage=e.message})}})},re={id:"patient_profile"},oe={class:"profile-save-header"},le={key:0,class:"error-message"};function de(e,t,i,n,s,a){const h=l("PatientHeader"),d=l("Heading"),m=l("Icon"),v=l("BaseButton"),D=l("PatientInfoCard");return o(),u("div",re,[r(h,null,{default:p(()=>[c("Profile")]),_:1}),b("div",oe,[r(d,{class:"profile-heading",level:6},{default:p(()=>[c("Details")]),_:1}),r(v,{color:"secondary",disabled:!a.hasChanges,onClick:a.handleSave},{default:p(()=>[r(m,{icon:"check"}),c(" Save")]),_:1},8,["disabled","onClick"])]),s.errorMessage?(o(),u("div",le,y(s.errorMessage),1)):I("",!0),r(D,{ref:"details",modelValue:s.formData,"onUpdate:modelValue":t[0]||(t[0]=_=>s.formData=_),class:"patient-details",fields:a.patientDetailsFields,"edit-active":s.editActive}
1,null,8,["modelValue","fields","edit-active"]),r(d,{class:"profile-heading",level:6},{default:p(()=>[c("Diagnosis")]),_:1}),r(D,{ref:"diagnosis",modelValue:s.formData,"onUpdate:modelValue":t[1]||(t[1]=_=>s.formData=_),class:"patient-diagnosis",fields:a.patientDiagnosisFields,"edit-active":s.editActive},null,8,["modelValue","fields","edit-active"]),a.isEnterprise?(o(),u(O,{key:1},[r(d,{class:"profile-heading",level:6},{default:p(()=>[c("Group Access")]),_:1}),r(D,{ref:"groupAccess",modelValue:s.formData,"onUpdate:modelValue":t[2]||(t[2]=_=>s.formData=_),class:"patient-group-access",fields:a.patientGroupAccessFields,"edit-active":s.editActive},null,8,["modelValue","fields","edit-active"])],64)):I("",!0)])}const De=P(ne,[["render",de]]);export{De as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.