{"version":3,"sources":["webpack:///./src/views/dashboard/components/points/WeeklyProgress.vue?42df","webpack:///src/views/dashboard/components/points/WeeklyProgress.vue","webpack:///./src/views/dashboard/components/points/WeeklyProgress.vue?ef49","webpack:///./src/views/dashboard/components/points/WeeklyProgress.vue","webpack:///../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack:///./node_modules/core-js/internals/string-pad.js","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///./node_modules/core-js/modules/es.set.constructor.js","webpack:///./src/helpers/date-utils.js","webpack:///../../../src/components/VTooltip/VTooltip.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack:///./node_modules/core-js/modules/es.string.pad-start.js","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./src/views/dashboard/reviews/list/ClinicReviewLogs.vue?a185","webpack:///./src/views/dashboard/reviews/list/ClinicReviewLogs.store.js","webpack:///./src/views/dashboard/components/lists/ClinicReviewLogList.vue?bd55","webpack:///src/views/dashboard/components/lists/ClinicReviewLogList.vue","webpack:///./src/views/dashboard/components/lists/ClinicReviewLogList.vue?b529","webpack:///./src/views/dashboard/components/lists/ClinicReviewLogList.vue","webpack:///src/views/dashboard/reviews/list/ClinicReviewLogs.vue","webpack:///./src/views/dashboard/reviews/list/ClinicReviewLogs.vue?759d","webpack:///./src/views/dashboard/reviews/list/ClinicReviewLogs.vue","webpack:///./src/store/static/PatientDocumentOptions.js","webpack:///./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VCheckbox/VCheckbox.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanel.ts","webpack:///./src/views/dashboard/image-consultations/components/ErrorMessage.vue?7268","webpack:///src/views/dashboard/image-consultations/components/ErrorMessage.vue","webpack:///./src/views/dashboard/image-consultations/components/ErrorMessage.vue?97c9","webpack:///./src/views/dashboard/image-consultations/components/ErrorMessage.vue","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts","webpack:///./src/views/dashboard/components/lists/utils/parserUtils.js","webpack:///../../../src/mixins/selectable/index.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","organization","directives","name","rawName","value","onboardingLevel","expression","key","componentKey","attrs","on","confirmExpandOrClose","staticClass","_v","_s","titleText","subtitleText","displayImage","thisWeekPoints","thisWeekSentTreatmentCount","thisWeekScannedTreatmentCount","changeExpand","progress","_e","model","callback","$$v","confirmExpandDialog","$event","showExpand","staticRenderFns","data","expand","cardDisplayImage0","cardDisplayImage1","cardDisplayImage2","computed","isCompleted","text","created","mounted","methods","mapActions","mapMutations","closeExpand","refresh","hardRefresh","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VChip","VCol","VDialog","VDivider","VExpandTransition","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VExpansionPanels","VListItem","VListItemAction","VListItemAvatar","VListItemContent","VList","VListItemSubtitle","VListItemTitle","VProgressLinear","VRow","VSpacer","BaseItemGroup","extend","provide","expansionPanels","props","accordion","Boolean","disabled","flat","hover","focusable","inset","popout","readonly","tile","classes","options","call","$attrs","hasOwnProperty","breaking","Array","isArray","length","updateItem","item","index","getValue","nextValue","isActive","toggleMethod","nextIsActive","uncurryThis","toLength","toString","$repeat","requireObjectCoercible","repeat","stringSlice","slice","ceil","Math","createMethod","IS_END","$this","maxLength","fillString","fillLen","stringFiller","S","intMaxLength","stringLength","fillStr","undefined","module","exports","start","end","baseMixins","mixins","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","ClickOutside","dark","fullscreen","light","maxWidth","String","Number","noClickAnimation","origin","type","default","persistent","retainFocus","scrollable","transition","width","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClass","trim","contentClasses","hasActivator","$slots","activator","$scopedSlots","watch","val","show","hideScroll","removeOverlay","unbind","focus","showScroll","genOverlay","removed","beforeMount","$nextTick","isBooted","beforeDestroy","window","animateClick","clearTimeout","setTimeout","closeConditional","e","target","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","getMaxZIndex","document","documentElement","classList","add","hideOverlay","activeElement","bind","addEventListener","onFocusin","removeEventListener","onClickOutside","$emit","onKeydown","keyCode","keyCodes","esc","getOpenDependents","getActivator","includes","getOpenDependentElements","some","el","querySelectorAll","find","hasAttribute","genContent","showLazyContent","VThemeProvider","root","class","role","tabindex","getScopeIdAttrs","keydown","style","zIndex","ref","genTransition","genInnerContent","appear","handler","include","transformOrigin","convertToUnit","getContentSlot","h","attach","genActivator","collection","collectionStrong","init","arguments","dateUtils","isToday","date","today","Date","getDate","getMonth","getFullYear","isThisIsoWeek","todayIsoWeek","_getWeek","todayIsoYear","_getWeekYear","dateIsoWeek","dateIsoYear","someDate","getTime","setHours","setDate","getDay","week1","round","subtractDaysFromToday","dateObj","days","includeToday","Error","offsetDays","daysBetweenDatesForRange","date0","date1","ONE_DAY","utc0","UTC","utc1","floor","abs","formatDateToYYYYMMDD","dateString","delimiter","day","month","year","padStart","formatDateToDDMMYYYY","formatDateToDDMMYYYYTime","hour","getHours","minute","getMinutes","isValidDate","d","isNaN","Colorable","Delayable","Menuable","closeDelay","openDelay","openOnHover","openOnFocus","tag","calculatedMinWidth","closeDependents","calculatedLeft","dimensions","unknown","bottom","left","top","right","activatorLeft","offsetLeft","nudgeLeft","parseInt","nudgeRight","calcXOverflow","calculatedTop","activatorTop","offsetTop","height","nudgeTop","nudgeBottom","pageYOffset","calcYOverflow","computedTransition","offsetY","offsetX","styles","minWidth","callActivate","getSlotType","consoleError","activate","updateDimensions","requestAnimationFrame","startTransition","deactivate","runDelay","genActivatorListeners","listeners","blur","genActivatorAttributes","setBackgroundColor","color","activatorFixed","isContentActive","Bootable","RegistrableInject","parentIsActive","expansionPanel","immediate","oldVal","registerContent","unregisterContent","getSlot","$","$padStart","WEBKIT_BUG","proto","forced","Vue","ripple","Object","genRipple","push","center","itemList","isLoading","isDownloading","maxLimit","includeNotCompleted","markAsIsJournalized","markAsBookmarked","markAsSent","markAsOpened","markAsResolved","pushToDetail","updateLimit","addNote","updateIncludeNotCompleted","errorMessage","_b","snackbarColor","snackbar","snackbarText","getters","state","initialState","mutations","setListData","payload","setErrorMessage","clear","assign","actions","getList","commit","endpoint","params","max_limit","include_not_completed","axios","get","process","response","defaultText","statusText","items","parserUtils","parseReviewLogList","_updateApi","id","isJournalized","isBookmarked","isResolved","isSent","isOpened","clinicNote","submitData","attributes","uuid","is_journalized","is_bookmarked","is_resolved","is_sent","is_opened","is_completed","clinic_note","post","markAsIsJournalizedApi","dispatch","markAsIsBookmarkedApi","shouldUpdateLocal","newList","i","markAsSentApi","markAsOpenedApi","markAsCompletedApi","markAsResolvedApi","addNoteApi","namespaced","staticStyle","totalFilters","onChangeFilters","selectedFilters","scopedSlots","_u","fn","_g","onUpdateMaxLimit","search","headers","filteredItems","sortBy","sortDesc","itemsPerPage","expanded","rowClick","_l","header","tooltip","createdAtDate","updatedAtDate","patientPhoneNumber","patientEmail","patientNote","patientNoteTruncated","sentAtDate","openedAtDate","clickIsResolved","$set","clickIsBookmarked","noteLog","bookmarkedAtDate","score","scoreRaw","clickAddNote","row0","prettyCreatedAt","body","proxy","showAddNoteForm","selected","newNote","$t","confirmAddNote","required","title","filterIsBookmarked","filterWithInternalNote","nonCommittedNoteMap","anyFilter","filtered","sortable","align","context","clickSelect","clickIsSent","clickIsOpened","clickIsCompleted","getRandomEmoji","usedIndex","onUpdateIncludeNotCompleted","conosole","_resetNewNote","_selectCollection","getAppendCount","VCheckbox","VContainer","VDataTable","VIcon","VMenu","VSelect","VSimpleTable","VTextField","VTextarea","VToolbar","VToolbarTitle","VTooltip","components","ClinicReviewLogList","ErrorMessage","WeeklyProgress","snackbarDuration","successShowDuration","errorShowDuration","mapState","mapGetters","showLoading","refreshPoints","reloadData","event","errorCaptured","err","vm","info","format","userAgent","test","autoGrow","noResize","rowHeight","validator","v","parseFloat","rows","noResizeHandle","calculateInputHeight","input","_this$$refs$input","removeProperty","lazyValue","scrollHeight","minHeight","max","genInput","onInput","onKeyDown","isFocused","stopPropagation","Selectable","indeterminate","indeterminateIcon","offIcon","onIcon","inputIndeterminate","VInput","computedIcon","validationState","isDisabled","hasError","shouldValidate","hasSuccess","hasColor","computedColor","genCheckbox","attrs$","checkboxAttrs","setTextColor","dense","rippleState","genDefaultSlot","genLabel","disableIconRotate","expandIcon","hideActions","hasMousedown","isReadonly","registerHeader","unregisterHeader","onClick","genIcon","icon","VFadeTransition","$listeners","click","mousedown","mouseup","open","GroupableFactory","RegistrableProvide","groupClasses","$on","detail","toggle","domProps","Themeable","Toggleable","absolute","opacity","__scrim","computedOpacity","themeClasses","children","VOverlay","overlayColor","overlayOpacity","animationFrame","createOverlay","propsData","$mount","parent","parentNode","querySelector","insertBefore","firstChild","getZIndex","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","up","pageup","down","pagedown","deltaY","checkPath","preventDefault","hasScrollbar","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","clientHeight","overflowX","scrollWidth","clientWidth","shouldScroll","alreadyAtStart","alreadyAtEnd","dir","shiftKey","deltaX","delta","scrollTop","scrollLeft","scrollingUp","scrollingDown","isInside","path","composedPath","dialog","getSelection","anchorNode","$vuetify","breakpoint","smAndDown","addPassiveEventListener","passive","remove","TREATMENT_TYPE__PLANNED","TREATMENT_TYPE__COMPLETED","parseApiPayloadToAssessmentDataTableList","dateOptions","dataTableItems","resource","attribs","relationships","relatedImageAsJsonApi","uploaded_images","status","isPending","is_pending","isAnamnesisQuestionnaire","is_anamnesis_questionnaire","is_journalized_by_clinic","imageUrls","guiUrls","thumbnailUrls","j","imageResource","url","guiUrl","gui_url","thumbnailUrl","thumbnail_url","_createdAt","created_at","createdAt","toLocaleDateString","now","diffInMs","diffInHours","roundedDiffInHours","toFixed","isUserVerifiedByClinic","is_user_verified_by_clinic","isFromAdentAssessmentWidget","is_from_adent_assessment_widget","parseApiPayloadToMedicalHistoryDataTableList","patient","patientFullname","full_name","phone_number","supportId","cognito_id","_updatedAt","updated_at","updatedAt","_completedAt","completed_at","completedAt","completedAtDate","sortableAt","isJournalizedByConnector","is_journalized_by_connector","parseApiPayloadToInstallmentDataTableList","cognitoId","_sentAt","sent_at","_confirmedAt","confirmed_at","confirmedAtDate","_initialPaymentReceivedAt","initial_payment_received_at","initialPaymentReceivedAtDate","isConfirmed","is_confirmed","confirmedAt","isInitialPaymentReceived","is_initial_payment_received","initialPaymentReceivedAt","groupByDocumentType","fallbackTitle","allowSubgroup","primarySubgroupKey","groupDict","categoryUuid","documentType","categoryTitle","documentTitle","categoryPrecedence","precedence","_addToGroupDocumentDict","asList0","asList1","elem","groupBySystemInitial","byInitial","sort","a","b","parseDocumentList","_rejectedAt","rejected_at","rejectedAtDate","document_type","documentText","getDocumentText","documentPrecedence","isRejected","is_rejected","rejectedAt","amountTotal","amount_total","systemInitial","system_user_initials","parseInstructionList","dateOptionsShort","instructionCard","instruction_card","imageListJson","images","imageList","_parseImageList","imagePovList","_parseimagePovList","shareLogListJson","share_logs","shareLogList","_parseShareLogList","digitalConsultListJson","digital_consult_logs","digitalConsultList","_parseDigitalConsultList","patientFirstname","first_name","instructionCardUuid","instructionCardTitle","title_da","createdAtDateShort","updatedAtDateShort","sentAt","_openedAt","opened_at","openedAt","_bookmarkedAt","bookmarked_at","bookmarkedAt","_nextDigitalConsultAt","next_digital_consult_at","nextDigitalConsultAt","nextDigitalConsultAtDate","nextDigitalConsultAtDateShort","_latestDigitalConsultAt","latest_digital_consult_at","latestDigitalConsultAt","latestDigitalConsultAtDate","latestDigitalConsultAtDateShort","_latestImageReceivedAt","latest_image_received_at","latestImageReceivedAt","latestImageReceivedAtDate","latestImageReceivedAtDateShort","_journalizedAt","journalized_at","journalizedAt","journalizedAtDate","_beforeScanCompletedAt","before_scan_completed_at","beforeScanCompleted_at","beforeScanCompletedAt","beforeScanCompletedAtDate","_afterScanCompletedAt","after_scan_completed_at","afterScanCompleted_at","afterScanCompletedAt","afterScanCompletedAtDate","_latestScanCompletedAt","latest_scan_completed_at","latestScanCompletedAt","latestScanCompletedAtDate","latestMessageToPatientSentAtRaw","latest_message_to_patient_sent_at_raw","latestMessageToPatientSentAtTitle","latest_message_to_patient_sent_at_title","_latestMessageToPatientSentAt","latest_message_to_patient_sent_at","latestMessageToPatientSentAt","latestMessageToPatientSentAtDate","hasAnyImageReady","has_any_image_ready","completedScanCount","completed_scan_count","isAutomaticallyUpdatedSinceViewed","is_automatically_updated_since_viewed","automaticallyUpdatedSinceViewedRaw","automatically_updated_since_viewed_raw","automaticallyUpdatedSinceViewedTitle","automatically_updated_since_viewed_title","_automaticallyUpdatedSinceViewedAt","automatically_updated_since_viewed_at","automaticallyUpdatedSinceViewedAt","automaticallyUpdatedSinceViewedAtDate","_noteLog","note_log","_parseNoteLog","_clinic","clinic","clinicAttribs","clinicRels","instructionSmsTemplates","instruction_sms_templates","instructionInternalMessageTemplates","instruction_internal_message_templates","clinicEmail","email","_recipientEmails","organizationAttribs","recipient_emails","recipientEmails","Set","firstname","isStarted","is_started","isBeforeScanCompleted","is_before_scan_completed","isAfterScanCompleted","is_after_scan_completed","isLatestScanCompleted","is_latest_scan_completed","isMessageToPatientSentToday","is_message_to_patient_sent_today","isMessageToPatientSentThisWeek","is_message_to_patient_sent_this_week","isPendingDigitalConsult","is_pending_digital_consult","latestMessageToPatientSentAtTs","isDigitalConsultCompletedToday","is_digital_consult_completed_today","isDigitalConsultCompletedThisWeek","is_digital_consult_completed_this_week","nextDigitalConsultAtTs","latestDigitalConsultAtTs","latestImageReceivedAtTs","scanWeekday","scan_weekday","scanIntervalDays","scan_interval_days","createdAtTs","messageType","message_type","messageBodyTrunc","message_body_trunc","ts","description","timestamp","note","tagList","uniqueList","pointOfView","point_of_view","meta","_getPointOfViewMeta","isFacePov","image","rawCroppedUrl","raw_cropped_url","hueCroppedUrl","hue_color_cropped_url","pointOfViewTitle","pointOfViewPrecedence","_sortListByDateAndPrecedence","dateA","dateB","condition0","condition1","povClean","_capitalize","arr","split","capital","map","charAt","toUpperCase","toLowerCase","capitalString","join","patAttribs","contact_email","_resolvedAt","resolved_at","resolvedAt","resolvedAtDate","patient_note","maxNoteLength","score_raw","_dataList","parseClinicalPhotoList","patient_phone_number","patient_full_name","patientCognitoId","patient_cognito_id","nameList","hasAnyImagePending","has_any_image_pending","parseConnectorLogList","requestType","requestTypeName","isRequested","is_requested","isDownloaded","is_downloaded","isImported","is_imported","isProcessed","is_processed","shouldDownload","should_download","shouldImport","should_import","parseDentistList","locales","dentistList","parseDentist","dentist","dentistListSorted","localeCompare","parseSystemInitialList","systemInitialList","last_name","label","systemInitialListSorted","parseTreatmentItemCollectionMeta","dentistListJson","dentist_list","systemInitialListJson","system_initials_list","primaryTreatmentGroupList","primary_treatment_group_list","isNumber","parseTreatmentItemCollectionList","resources","parseTreatmentItemCollection","patient_first_name","lastname","patient_last_name","birthdate","patient_birthdate","phonenumber","patient_email","_parseLog","dataList","_billedAtLog","billed_at_log","billedAtLog","_journalChangeLog","journal_change_log","journalChangeLog","_parseJournalChangeLog","_pipelineChangeLog","pipeline_status_log","pipelineChangeLog","excludeTooSimilar","bookedAt","booked_at","billedAt","billed_at","smsSentAt","reminder_sms_sent_at","emailSentAt","reminder_email_sent_at","anySentAt","autoUpdateAt","pipeline_status_auto_updated_at","hostedPatientLink","deeplink_to_web","prettyDate","displayName","_documents","documents","parsePatientDocumentList","docs","documentList","_treatments","treatment_items","groupTreatmentItemListByType","groupedTreatmentItemList","clinicTitle","treatmentSmsTemplates","treatment_sms_templates","reminderSmsTemplates","reminder_sms_templates","reminderEmailTemplates","reminder_email_templates","_dentist","dentistUuid","dentistName","dentistAttribs","dentistNameRaw","dentist_first_name_raw","dentist_last_name_raw","prettySentAt","prettyOpenedAt","prettyBookmarkedAt","prettyConfirmedAt","prettyCompletedAt","prettyBookedAt","prettyBilledAt","prettySmsSentAt","prettyEmailSentAt","prettyAnySentAt","prettyAutoUpdateAt","isSmsSentToday","isEmailSentToday","isSmsSentThisWeek","isEmailSentThisWeek","isAnySentToday","isAnySentThisWeek","daysAgo","_action","automated_action","action","_parseAutomatedAction","commonList","sortedCommonList","searchtext","isReminderCallAny","is_reminder_call_any","isReminderMessageAny","is_reminder_message_any","isReminderAny","isReceived","is_received","openedCount","opened_count","isBooked","is_booked","isBilled","is_billed","uuidSms","uuidEmail","uuidCall","amountTotalPlanned","amount_total_planned","amountTotalCompleted","amount_total_completed","pipeline_status","systemUserInitials","didChangeThisWeek","did_pipeline_status_change_this_week","includeAutoReminderToPatient","include_auto_reminder_message_to_patient","parseTreatmentItemList","_treatment","treatment","_document","parseTreatmentOption","option","parseTreatmentGroupFromOption","treatmentGroup","parsePatientDocument","doc","group","price","isPaid","is_paid","then","timeDifference","daysDifference","groupedDict","uuidPrefix","itemType","documentUuid","coveragePublic","coverage_public","coverageDanmark","coverage_danmark","coverageDanmarkMax","coverage_danmark_max","titleLookup","recapDescriptionLookup","treatmentAttribs","display_image","recap_description_da","current","currentList","planned","completed","isScanned","_total","plannedPriceTotal","completedPriceTotal","issuedAt","issued_at","is_opened_list","_options","PatientDocumentOptions","_option","readableDocumentType","i18n","t","isPendingAnyAmount","is_pending_any_amount","isPrevThisWeek","is_prev_this_week","isBelowAmount","is_below_amount","actionType","action_type","prevRegisteredAt","prev_registered_at","prevScheduledAt","prev_scheduled_at","nextScheduledAt","next_scheduled_at","prettyPrevRegisteredAt","prettyPrevScheduledAt","prettyNextScheduledAt","groupData","parseTreatmentGroup","parseTreatmentGroupList","groupList","groupByTreatmentOption","category","_addToGroupTreatmentDict","asList","groupByDate","groupByTotalSumTreatment","groupByTotalSumDocument","groupByDateFlattenValue","groupByDateFlattenLabel","isFirst","isLast","groupByTreatmentGroup","groupByDentist","byDentist","newGroupDict","amount","curr","amountTotalBilled","amountTotalPaid","countPlanned","countCompleted","countBilled","countPaid","entry","amountNew","count","precedenceOrFallback","byGroup","_similarityStrList","subtitle","recap_description","similarityStr","prevent","Rippleable","Comparable","prop","inputValue","falseValue","trueValue","multiple","isDark","appIsDark","isMultiple","internalValue","valueComparator","isDirty","computedId","checked","onBlur","change","onChange","onFocus","isInteractive","filter","validate"],"mappings":"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","file":"js/chunk-923d4390.0bdd8c0c.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!!_vm.organization)?_c('v-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.organization.onboardingLevel !== '' &&\n _vm.organization.onboardingLevel !== null\n ),expression:\"\\n organization.onboardingLevel !== '' &&\\n organization.onboardingLevel !== null\\n \"}],key:_vm.componentKey,attrs:{\"outlined\":\"\"}},[_c('v-list-item',{attrs:{\"two-line\":\"\"},on:{\"click\":_vm.confirmExpandOrClose}},[_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"text-h5 mb-1\"},[_vm._v(\" \"+_vm._s(_vm.titleText)+\" \")]),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.subtitleText)+\" \")])],1),_c('v-list-item-action',[_c('v-chip',{attrs:{\"color\":\"orange\"}},[_vm._v(\" ONBOARDING-KAMPAGNE \")])],1),_c('v-list-item-avatar',{attrs:{\"tile\":\"\",\"size\":\"80\"}},[_c('img',{attrs:{\"src\":_vm.displayImage}})])],1),_c('v-expand-transition',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.expand),expression:\"expand\"}]},[_c('v-divider'),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card',{attrs:{\"elevation\":\"0\",\"color\":\"grey lighten-4\"}},[_c('v-card-text',[(_vm.organization.thisWeekPoints !== 0)?_c('span',[_vm._v(\" Godt gået! I har optjent point til ugens præmie. \")]):_c('span',[_vm._v(\" Kom godt i gang med ugen: Send behandlingsoverslag og del helbredsskemaet for at optjene point. \")])]),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.organization.thisWeekPoints)+\" points •  \"),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(\" optjent denne uge \")])]),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.organization.thisWeekSentTreatmentCount)+\" sendt •  \"),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(\" behandlingsoverslag \")])]),_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.organization.thisWeekScannedTreatmentCount)+\" scannet •  \"),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(\" behandlingsoverslag \")])]),_c('v-card-text',[_c('span',{staticClass:\"text-caption\"},[_vm._v(\" *Optjen point ved at dele behandlingsoverslag, modtage helbredsskemaer, sende reminders og følge op med patienter. \")])]),_c('v-card-text',[_c('v-expansion-panels',{attrs:{\"flat\":\"\",\"inset\":\"\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\" Om point og niveauer \")]),_c('v-expansion-panel-content',[_c('v-divider'),_c('v-card-title',[_vm._v(\" Ekspert-niveau: 1000 point pr. uge   \"),_c('v-chip',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.organization.onboardingLevel ===\n 'level_expert'\n ),expression:\"\\n organization.onboardingLevel ===\\n 'level_expert'\\n \"}],attrs:{\"color\":\"success\"}},[_vm._v(\" Klinikkens nuværende niveau \")])],1),_c('v-card-text',[_vm._v(\" Klinikken sender dagligt pædagogiske behandlingsoverslag til patienter og følger systematisk op på større og mellemstore behandlinger. Klinikken samler derudover andre dokumenter (regninger, vejledninger, røntgen, m.m.) i klinikkens egen patient-app, så patienter har adgang til deres dokumenter ét samlet sted. \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Intermediate-niveau: 500 point pr. uge   \"),_c('v-chip',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.organization.onboardingLevel ===\n 'level_intermediate'\n ),expression:\"\\n organization.onboardingLevel ===\\n 'level_intermediate'\\n \"}],attrs:{\"color\":\"success\"}},[_vm._v(\" Klinikkens nuværende niveau \")])],1),_c('v-card-text',[_vm._v(\" Klinikken sender dagligt pædagogiske behandlingsoverslag til patienter og følger systematisk op på større og mellemstore behandlinger. \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Begynder-niveau: 200 point pr. uge   \"),_c('v-chip',{directives:[{name:\"show\",rawName:\"v-show\",value:(\n _vm.organization.onboardingLevel ===\n 'level_novice'\n ),expression:\"\\n organization.onboardingLevel ===\\n 'level_novice'\\n \"}],attrs:{\"color\":\"success\"}},[_vm._v(\" Klinikkens nuværende niveau \")])],1),_c('v-card-text',[_vm._v(\" Er kommet godt i gang med pædagogiske behandlingsoverslag, digitale helbredsskemaer og den digitale patient-rejse. \")]),_c('v-divider'),_c('v-card-text',{staticClass:\"grey--text\"},[_c('div',[_vm._v(\"Del et behandlingsoverslag: 20 point\")]),_c('div',[_vm._v(\"Send en 'Følg op'-SMS: 10 point\")]),_c('div',[_vm._v(\"Send en 'Følg op'-email: 10 point\")]),_c('div',[_vm._v(\" Send og journalisér et helbredsskema: 10 point \")])])],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\" FAQ: Ofte stillede spørgsmål \")]),_c('v-expansion-panel-content',[_c('v-divider'),_c('v-card-title',[_vm._v(\" Hvor længe varer onboarding-kampagnen? \")]),_c('v-card-text',[_vm._v(\" Kampagnen varer indtil d. 1. juni 2024 og I kan vinde ugens kage op til 3x, når I går op i niveau. Onboarding-kampagnen er en hjælpende hånd til at komme godt i gang med Adent og den digitale patientrejse. \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Hvordan går man op i niveau? \")]),_c('v-card-text',[_vm._v(\" Når I rammer jeres ugentlige mål, så stiger I til næste niveau ugen efter. Når man går op i niveau vinder man ugens kage! 🎂🤗 \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Ugens kage: Hvor og hvornår? \")]),_c('v-card-text',[_vm._v(\" I det, at I når ugens point-mål, modtager vores system en notifikation. Ugens kage sendes med udbringingsbud til klinikkens addresse fredagen efter til mellem kl. 10-12. Hvis I ønsker at modtage ugens kage en anden ugedag eller tidspunkt, så skriv til vores support på info@adent.dk så sørger vi for at registrere det. \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Hvornår starter en ny uge? \")]),_c('v-card-text',[_vm._v(\" Ugens point nulstilles mandag morgen til en ny uge. \")]),_c('v-divider'),_c('v-card-title',[_vm._v(\" Har du andre spørgsmål? \")]),_c('v-card-text',[_vm._v(\" Hvis du har andre spørgsmål, så skriv endelig til info@adent.dk \")])],1)],1)],1)],1)],1)],1)],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.changeExpand}},[_vm._v(\"Vis mindre\")])],1)],1)]),_c('v-progress-linear',{attrs:{\"height\":\"5\",\"value\":_vm.progress}})],1):_vm._e(),_c('v-dialog',{attrs:{\"max-width\":\"400\"},model:{value:(_vm.confirmExpandDialog),callback:function ($$v) {_vm.confirmExpandDialog=$$v},expression:\"confirmExpandDialog\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\" Optjen point og vind Ugens kage! 😍 🍰 \")]),_c('v-divider',{staticClass:\"mb-4 mt-4\"}),_c('v-card-actions',[_c('v-btn',{attrs:{\"color\":\"default\",\"text\":\"\"},on:{\"click\":function($event){_vm.confirmExpandDialog = false}}},[_vm._v(\" Luk \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"default\"},on:{\"click\":function($event){_vm.showExpand(), (_vm.confirmExpandDialog = false)}}},[_vm._v(\" Læs mere \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WeeklyProgress.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WeeklyProgress.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WeeklyProgress.vue?vue&type=template&id=cf8ab6f2&\"\nimport script from \"./WeeklyProgress.vue?vue&type=script&lang=js&\"\nexport * from \"./WeeklyProgress.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpandTransition } from 'vuetify/lib/components/transitions';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VChip,VCol,VDialog,VDivider,VExpandTransition,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VListItem,VListItemAction,VListItemAvatar,VListItemContent,VListItemSubtitle,VListItemTitle,VProgressLinear,VRow,VSpacer})\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var intMaxLength = toLength(maxLength);\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","const dateUtils = {\n isToday(date) {\n if (!date) {\n return false\n }\n const today = new Date()\n return date.getDate() == today.getDate() &&\n date.getMonth() == today.getMonth() &&\n date.getFullYear() == today.getFullYear()\n },\n\n isThisIsoWeek(date) {\n if (!date) {\n return false;\n }\n const today = new Date();\n const todayIsoWeek = this._getWeek(today);\n const todayIsoYear = this._getWeekYear(today);\n const dateIsoWeek = this._getWeek(date);\n const dateIsoYear = this._getWeekYear(date);\n return dateIsoWeek === todayIsoWeek && dateIsoYear === todayIsoYear;\n },\n\n _getWeek(someDate) {\n var date = new Date(someDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n var week1 = new Date(date.getFullYear(), 0, 4);\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n },\n\n _getWeekYear(someDate) {\n var date = new Date(someDate.getTime());\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n return date.getFullYear();\n },\n\n subtractDaysFromToday({ date, days, includeToday = true }) {\n let dateObj;\n if (typeof date === \"string\") {\n dateObj = new Date(date);\n } else if (date instanceof Date) {\n dateObj = date;\n } else {\n throw new Error(\n \"Invalid date format. Expected either a Date object or a valid date string.\"\n );\n }\n let offsetDays = days;\n if (includeToday) {\n offsetDays = days - 1;\n }\n return new Date(dateObj.getTime() - offsetDays * 24 * 60 * 60 * 1000);\n },\n\n daysBetweenDatesForRange({ date0, date1, includeToday = true }) {\n const ONE_DAY = 1000 * 60 * 60 * 24;\n\n // Convert dates to UTC timestamps\n const utc0 = Date.UTC(\n date0.getFullYear(),\n date0.getMonth(),\n date0.getDate()\n );\n const utc1 = Date.UTC(\n date1.getFullYear(),\n date1.getMonth(),\n date1.getDate()\n );\n\n // Calculate difference in days\n let days = Math.floor(Math.abs(utc1 - utc0) / ONE_DAY);\n if (includeToday) {\n days = days + 1\n }\n\n return days;\n },\n\n formatDateToYYYYMMDD({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString)\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n return `${year}${delimiter}${month}${delimiter}${day}`;\n },\n\n formatDateToDDMMYYYY({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString);\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n return `${day}${delimiter}${month}${delimiter}${year}`;\n },\n\n formatDateToDDMMYYYYTime({ date, dateString, delimiter = '-' }) {\n if (!date && !dateString) return;\n let date0 = date\n if (!date0) {\n date0 = new Date(dateString);\n }\n let day = date0.getDate().toString();\n let month = (date0.getMonth() + 1).toString();\n let year = date0.getFullYear().toString().slice(-4);\n let hour = date0.getHours().toString();\n let minute = date0.getMinutes().toString();\n day = day.padStart(2, '0');\n month = month.padStart(2, '0');\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n return `${day}${delimiter}${month}${delimiter}${year}, ${hour}:${minute}`;\n },\n\n isValidDate(d) {\n return d instanceof Date && !isNaN(d);\n }\n}\n\nexport default dateUtils\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '\n\n \n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClinicReviewLogList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClinicReviewLogList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClinicReviewLogList.vue?vue&type=template&id=be7a7646&\"\nimport script from \"./ClinicReviewLogList.vue?vue&type=script&lang=js&\"\nexport * from \"./ClinicReviewLogList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCheckbox,VCol,VContainer,VDataTable,VDialog,VDivider,VIcon,VList,VListItem,VListItemTitle,VMenu,VRow,VSelect,VSimpleTable,VSpacer,VTextField,VTextarea,VToolbar,VToolbarTitle,VTooltip})\n","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClinicReviewLogs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClinicReviewLogs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClinicReviewLogs.vue?vue&type=template&id=2fcf1855&\"\nimport script from \"./ClinicReviewLogs.vue?vue&type=script&lang=js&\"\nexport * from \"./ClinicReviewLogs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer})\n","export default [\n // NOTE: `value` and `format` is aligned with API\n {\n title: \"DOCUMENT_TYPE_TREATMENT_SUGGESTION_TITLE\",\n color: \"black\",\n value: \"treatment\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_BILL_TITLE\",\n color: \"black\",\n value: \"bill\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_INSTRUCTIONS_TITLE\",\n color: \"black\",\n value: \"instruction\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_JOURNAL_TITLE\",\n color: \"black\",\n value: \"journal_item\",\n format: \"pdf\",\n },\n {\n title: \"DOCUMENT_TYPE_OTHER_PDF_TITLE\",\n color: \"black\",\n value: \"other_pdf\",\n format: \"pdf\",\n },\n // {\n // title: 'Røntgenbillede (JPG)',\n // value: '',\n // format: 'jpg',\n // },\n {\n title: \"No attachment\",\n color: \"red\",\n value: \"\",\n format: \"\",\n },\n]","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions') ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n 'aria-expanded': this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"id\":\"dashboard\",\"fluid\":\"\",\"tag\":\"section\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\"}},[_c('span',{staticClass:\"error--text\",domProps:{\"textContent\":_vm._s(_vm.errorMessage)}})])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ErrorMessage.vue?vue&type=template&id=8ce2a30a&\"\nimport script from \"./ErrorMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./ErrorMessage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VRow})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n","import PatientDocumentOptions from \"@/store/static/PatientDocumentOptions\";\nimport dateUtils from '@/helpers/date-utils';\nimport i18n from '@/i18n'\n\nconst TREATMENT_TYPE__PLANNED = \"planned\"\nconst TREATMENT_TYPE__COMPLETED = \"completed\"\n\nconst parserUtils = {\n parseApiPayloadToAssessmentDataTableList(payload) {\n /** Converts a *standardized* API payload to a *standardized* assessment\n *\n * DEVELOPER NOTE:\n * This is a SUPER coupled implementation. Break it as soon as it\n * becomes constraining, but the intention is to help keep\n * assessment lists aligned and avoid regression (i.e. forgetting\n * to update one place when others are updated):\n *\n * - Assessment list for all patients\n * - Assessment list for individual patients\n *\n * Typical use case: When updating one place, we are 'forced' to come\n * here (probably why you are reading it now), and please search the\n * repo for the above function name to get reminded where similar lists\n * might need to be updated.\n */\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const relatedImageAsJsonApi = relationships.uploaded_images.data\n\n let color = 'warning'\n let status = 'Pending Consult'\n const isPending = attribs.is_pending\n const isAnamnesisQuestionnaire = attribs.is_anamnesis_questionnaire\n const isJournalized = attribs.is_journalized ?? attribs.is_journalized_by_clinic;\n if (isAnamnesisQuestionnaire) {\n color = 'grey'\n status = 'No action needed'\n } else if (isJournalized) {\n color = 'success'\n status = 'Journalized'\n } else if (!isPending) {\n color = 'success'\n status = 'Handled'\n }\n\n const imageUrls = []\n const guiUrls = []\n const thumbnailUrls = []\n let j = 0\n for (j in relatedImageAsJsonApi) {\n const imageResource = relatedImageAsJsonApi[j]\n const url = imageResource.attributes.url\n const guiUrl = imageResource.attributes.gui_url\n const thumbnailUrl = imageResource.attributes.thumbnail_url\n imageUrls.push(url)\n guiUrls.push(guiUrl)\n thumbnailUrls.push(thumbnailUrl)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const now = new Date();\n const diffInMs = !!_createdAt ? now - _createdAt : 0;\n const diffInHours = diffInMs / 3600000;\n const roundedDiffInHours = diffInHours.toFixed(1)\n\n const item = {\n uuid: attribs.uuid,\n name: attribs.name,\n createdAt: createdAt,\n date: createdAtDate,\n diffInHours: roundedDiffInHours,\n status: status,\n color: color,\n isUserVerifiedByClinic: attribs.is_user_verified_by_clinic,\n isFromAdentAssessmentWidget: attribs.is_from_adent_assessment_widget,\n isAnamnesisQuestionnaire: isAnamnesisQuestionnaire,\n isJournalized: isJournalized,\n imageUrls: imageUrls,\n guiUrls: guiUrls,\n thumbnailUrls: thumbnailUrls,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseApiPayloadToMedicalHistoryDataTableList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patient.attributes.phone_number\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = patient.attributes.cognito_id.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAt = _updatedAt.getTime()\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _completedAt = new Date(attribs.completed_at)\n const completedAt = _completedAt.getTime()\n const completedAtDate = _completedAt.toLocaleDateString('da-DK', dateOptions);\n\n let sortableAt = completedAt;\n if (!isValidDate(_completedAt)) {\n sortableAt = createdAt;\n }\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n createdAt: createdAt,\n updatedAt: updatedAt,\n completedAt: completedAt,\n date: completedAtDate,\n sortableAt: sortableAt,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n isJournalizedByConnector: attribs.is_journalized_by_connector,\n updatedAtDate: updatedAtDate,\n createdAtDate: createdAtDate,\n completedAtDate: completedAtDate,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseApiPayloadToInstallmentDataTableList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n const supportId = attribs.uuid.slice(0, 8);\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patient.attributes.phone_number\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const cognitoId = patient.attributes.cognito_id.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${cognitoId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _sentAt = new Date(attribs.sent_at)\n const sentAtDate = _sentAt.toLocaleDateString('da-DK', dateOptions);\n\n const _confirmedAt = attribs.confirmed_at == null ? null : new Date(attribs.confirmed_at)\n const confirmedAtDate = _confirmedAt == null ? null : _confirmedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _initialPaymentReceivedAt = attribs.initial_payment_received_at == null ? null : new Date(attribs.initial_payment_received_at)\n const initialPaymentReceivedAtDate = _initialPaymentReceivedAt == null ? null : _initialPaymentReceivedAt.toLocaleDateString('da-DK', dateOptions);\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n createdAt: createdAt,\n date: createdAtDate,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: confirmedAtDate,\n isInitialPaymentReceived: attribs.is_initial_payment_received,\n initialPaymentReceivedAt: initialPaymentReceivedAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n sentAtDate: sentAtDate,\n supportId: supportId,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n async groupByDocumentType({\n items,\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // @sortprefix: Note the arabic prefix for alphatic sort\n allowSubgroup = false,\n primarySubgroupKey = 'byInitial',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const categoryUuid = item.documentType\n const categoryTitle = item.documentTitle ?? fallbackTitle\n const categoryPrecedence = !item ? 0 : (item.precedence ?? 0)\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byInitial = await this.groupBySystemInitial({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byInitial'] = byInitial\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n return asList1.sort((a, b) => (b.precedence ?? 0) - (a.precedence ?? 0))\n },\n\n parseDocumentList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n const supportId = attribs.uuid.slice(0, 8);\n\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = !!patient ? patient.attributes.phone_number : null\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const cognitoId = !!patient ? patient.attributes.cognito_id.slice(0, 8) : null\n patientFullname = `Navn mangler (Support id: ${cognitoId})`\n }\n\n const _createdAt = new Date(attribs.created_at)\n const createdAt = _createdAt.getTime()\n const createdAtDate = _createdAt.toLocaleDateString('da-DK', dateOptions);\n\n const _updatedAt = new Date(attribs.updated_at)\n const updatedAtDate = _updatedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _sentAt = new Date(attribs.sent_at)\n const sentAtDate = _sentAt.toLocaleDateString('da-DK', dateOptions);\n\n const _confirmedAt = attribs.confirmed_at == null ? null : new Date(attribs.confirmed_at)\n const confirmedAtDate = _confirmedAt == null ? null : _confirmedAt.toLocaleDateString('da-DK', dateOptions);\n\n const _rejectedAt = attribs.rejected_at == null ? null : new Date(attribs.rejected_at)\n const rejectedAtDate = _rejectedAt == null ? null : _rejectedAt.toLocaleDateString('da-DK', dateOptions);\n\n const documentType = attribs.document_type;\n const documentText = this.getDocumentText({ documentType: documentType });\n const documentTitle = documentText.title\n const documentPrecedence = documentText.precedence\n\n const item = {\n uuid: attribs.uuid,\n name: patientFullname,\n documentType: documentType,\n documentTitle: documentTitle,\n precedence: documentPrecedence,\n createdAt: createdAt,\n date: createdAtDate,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: confirmedAtDate,\n isRejected: attribs.is_rejected,\n rejectedAt: rejectedAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n sentAtDate: sentAtDate,\n amountTotal: attribs.amount_total,\n url: attribs.url,\n supportId: supportId,\n systemInitial: attribs.system_user_initials,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n\n parseInstructionList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n const dateOptionsShort = { month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n const instructionCard = relationships.instruction_card.data\n\n const imageListJson = relationships.images.data\n const imageList = this._parseImageList({ payload: imageListJson })\n const imagePovList = this._parseimagePovList({ payload: imageListJson })\n\n const shareLogListJson = !relationships.share_logs ? [] : relationships.share_logs.data\n const shareLogList = this._parseShareLogList({ payload: shareLogListJson })\n\n const digitalConsultListJson = relationships.digital_consult_logs.data\n const digitalConsultList = this._parseDigitalConsultList({ payload: digitalConsultListJson })\n\n const cognitoId = !!patient ? patient.attributes.cognito_id : null\n\n let patientFirstname = !!patient ? patient.attributes.first_name : null\n let patientFullname = !!patient ? patient.attributes.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = !!patient ? patient.attributes.phone_number : null\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = cognitoId.slice(0, 8)\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n let instructionCardUuid = null\n let instructionCardTitle = null\n if (!!instructionCard) {\n instructionCardUuid = instructionCard.attributes.uuid\n instructionCardTitle = instructionCard.attributes.title_da\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n const createdAtDateShort = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _updatedAt = !!attribs.updated_at ? new Date(attribs.updated_at) : null;\n const updatedAt = !!_updatedAt ? _updatedAt.getTime() : null;\n const updatedAtDate = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptions) : null;\n const updatedAtDateShort = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _sentAt = !!attribs.sent_at ? new Date(attribs.sent_at) : null;\n const sentAt = !!_sentAt ? _sentAt.getTime() : null;\n const sentAtDate = !!_sentAt ? _sentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _completedAt = !!attribs.completed_at ? new Date(attribs.completed_at) : null;\n const completedAt = !!_completedAt ? _completedAt.getTime() : null;\n const completedAtDate = !!_completedAt ? _completedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _confirmedAt = !!attribs.confirmed_at ? new Date(attribs.confirmed_at) : null;\n const confirmedAt = !!_confirmedAt ? _confirmedAt.getTime() : null;\n const confirmedAtDate = !!_confirmedAt ? _confirmedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _openedAt = !!attribs.opened_at ? new Date(attribs.opened_at) : null;\n const openedAt = !!_openedAt ? _openedAt.getTime() : null;\n const openedAtDate = !!_openedAt ? _openedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _bookmarkedAt = !!attribs.bookmarked_at ? new Date(attribs.bookmarked_at) : null;\n const bookmarkedAt = !!_bookmarkedAt ? _bookmarkedAt.getTime() : null;\n const bookmarkedAtDate = !!_bookmarkedAt ? _bookmarkedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _nextDigitalConsultAt = !!attribs.next_digital_consult_at ? new Date(attribs.next_digital_consult_at) : null;\n const nextDigitalConsultAt = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.getTime() : null;\n const nextDigitalConsultAtDate = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.toLocaleDateString('da-DK', dateOptions) : null;\n const nextDigitalConsultAtDateShort = !!_nextDigitalConsultAt ? _nextDigitalConsultAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _latestDigitalConsultAt = !!attribs.latest_digital_consult_at ? new Date(attribs.latest_digital_consult_at) : null;\n const latestDigitalConsultAt = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.getTime() : null;\n const latestDigitalConsultAtDate = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.toLocaleDateString('da-DK', dateOptions) : null;\n const latestDigitalConsultAtDateShort = !!_latestDigitalConsultAt ? _latestDigitalConsultAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _latestImageReceivedAt = !!attribs.latest_image_received_at ? new Date(attribs.latest_image_received_at) : null;\n const latestImageReceivedAt = !!_latestImageReceivedAt ? _latestImageReceivedAt.getTime() : null;\n const latestImageReceivedAtDate = !!_latestImageReceivedAt ? _latestImageReceivedAt.toLocaleDateString('da-DK', dateOptions) : null;\n const latestImageReceivedAtDateShort = !!_latestImageReceivedAt ? _latestImageReceivedAt.toLocaleDateString('da-DK', dateOptionsShort) : null;\n\n const _journalizedAt = !!attribs.journalized_at ? new Date(attribs.journalized_at) : null;\n const journalizedAt = !!_journalizedAt ? _journalizedAt.getTime() : null;\n const journalizedAtDate = !!_journalizedAt ? _journalizedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _beforeScanCompletedAt = !!attribs.before_scan_completed_at ? new Date(attribs.beforeScanCompleted_at) : null;\n const beforeScanCompletedAt = !!_beforeScanCompletedAt ? _beforeScanCompletedAt.getTime() : null;\n const beforeScanCompletedAtDate = !!_beforeScanCompletedAt ? _beforeScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _afterScanCompletedAt = !!attribs.after_scan_completed_at ? new Date(attribs.afterScanCompleted_at) : null;\n const afterScanCompletedAt = !!_afterScanCompletedAt ? _afterScanCompletedAt.getTime() : null;\n const afterScanCompletedAtDate = !!_afterScanCompletedAt ? _afterScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _latestScanCompletedAt = !!attribs.latest_scan_completed_at ? new Date(attribs.latest_scan_completed_at) : null;\n const latestScanCompletedAt = !!_latestScanCompletedAt ? _latestScanCompletedAt.getTime() : null;\n const latestScanCompletedAtDate = !!_latestScanCompletedAt ? _latestScanCompletedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const latestMessageToPatientSentAtRaw = attribs.latest_message_to_patient_sent_at_raw;\n const latestMessageToPatientSentAtTitle = attribs.latest_message_to_patient_sent_at_title;\n const _latestMessageToPatientSentAt = !!attribs.latest_scan_completed_at ? new Date(attribs.latest_message_to_patient_sent_at) : null;\n const latestMessageToPatientSentAt = !!_latestMessageToPatientSentAt ? _latestMessageToPatientSentAt.getTime() : null;\n const latestMessageToPatientSentAtDate = !!_latestMessageToPatientSentAt ? _latestMessageToPatientSentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const hasAnyImageReady = attribs.has_any_image_ready\n const completedScanCount = attribs.completed_scan_count\n\n const isAutomaticallyUpdatedSinceViewed = attribs.is_automatically_updated_since_viewed;\n const automaticallyUpdatedSinceViewedRaw = attribs.automatically_updated_since_viewed_raw;\n const automaticallyUpdatedSinceViewedTitle = attribs.automatically_updated_since_viewed_title;\n const _automaticallyUpdatedSinceViewedAt = !!attribs.automatically_updated_since_viewed_at ? new Date(attribs.automatically_updated_since_viewed_at) : null;\n const automaticallyUpdatedSinceViewedAt = !!_automaticallyUpdatedSinceViewedAt ? _automaticallyUpdatedSinceViewedAt.getTime() : null;\n const automaticallyUpdatedSinceViewedAtDate = !!_automaticallyUpdatedSinceViewedAt ? _automaticallyUpdatedSinceViewedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseNoteLog(_noteLog);\n\n const _clinic = relationships.clinic.data\n const clinicAttribs = _clinic.attributes\n const clinicRels = _clinic.relationships\n const instructionSmsTemplates = clinicAttribs.instruction_sms_templates ?? []\n const instructionInternalMessageTemplates = clinicAttribs.instruction_internal_message_templates ?? []\n const clinicEmail = clinicAttribs.email\n\n let _recipientEmails = [];\n if (!!clinicRels && !!clinicRels.organization && !!clinicRels.organization.data) {\n const organizationAttribs = clinicRels.organization.data.attributes\n _recipientEmails = organizationAttribs.recipient_emails ?? [];\n }\n _recipientEmails.push(clinicEmail);\n const recipientEmails = [...new Set(_recipientEmails)];\n\n const item = {\n uuid: attribs.uuid,\n title: instructionCardTitle,\n name: patientFullname,\n firstname: patientFirstname,\n cognitoId: cognitoId,\n isSent: attribs.is_sent,\n isConfirmed: attribs.is_confirmed,\n isOpened: attribs.is_opened,\n isStarted: attribs.is_started,\n isCompleted: attribs.is_completed,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n isBeforeScanCompleted: attribs.is_before_scan_completed,\n isAfterScanCompleted: attribs.is_after_scan_completed,\n isLatestScanCompleted: attribs.is_latest_scan_completed,\n completedScanCount: completedScanCount,\n createdAt: createdAt,\n updatedAt: updatedAt,\n createdAtDate: createdAtDate,\n createdAtDateShort: createdAtDateShort,\n updatedAtDate: updatedAtDate,\n updatedAtDateShort: updatedAtDateShort,\n sentAt: sentAt,\n sentAtDate: sentAtDate,\n journalizedAt: journalizedAt,\n journalizedAtDate: journalizedAtDate,\n completedAt: completedAt,\n completedAtDate: completedAtDate,\n confirmedAt: confirmedAt,\n confirmedAtDate: confirmedAtDate,\n openedAt: openedAt,\n openedAtDate: openedAtDate,\n bookmarkedAt: bookmarkedAt,\n bookmarkedAtDate: bookmarkedAtDate,\n isMessageToPatientSentToday: attribs.is_message_to_patient_sent_today,\n isMessageToPatientSentThisWeek: attribs.is_message_to_patient_sent_this_week,\n isPendingDigitalConsult: attribs.is_pending_digital_consult,\n latestMessageToPatientSentAt: latestMessageToPatientSentAt,\n latestMessageToPatientSentAtTs: _latestMessageToPatientSentAt,\n latestMessageToPatientSentAtDate: latestMessageToPatientSentAtDate,\n latestMessageToPatientSentAtRaw: latestMessageToPatientSentAtRaw,\n latestMessageToPatientSentAtTitle: latestMessageToPatientSentAtTitle,\n isDigitalConsultCompletedToday: attribs.is_digital_consult_completed_today,\n isDigitalConsultCompletedThisWeek: attribs.is_digital_consult_completed_this_week,\n nextDigitalConsultAt: nextDigitalConsultAt,\n nextDigitalConsultAtTs: _nextDigitalConsultAt,\n nextDigitalConsultAtDate: nextDigitalConsultAtDate,\n nextDigitalConsultAtDateShort: nextDigitalConsultAtDateShort,\n latestDigitalConsultAt: latestDigitalConsultAt,\n latestDigitalConsultAtTs: _latestDigitalConsultAt,\n latestDigitalConsultAtDate: latestDigitalConsultAtDate,\n latestDigitalConsultAtDateShort: latestDigitalConsultAtDateShort,\n latestImageReceivedAt: latestImageReceivedAt,\n latestImageReceivedAtTs: _latestImageReceivedAt,\n latestImageReceivedAtDate: latestImageReceivedAtDate,\n latestImageReceivedAtDateShort: latestImageReceivedAtDateShort,\n hasAnyImageReady: hasAnyImageReady,\n noteLog: noteLog,\n beforeScanCompletedAt: beforeScanCompletedAt,\n beforeScanCompletedAtDate: beforeScanCompletedAtDate,\n afterScanCompletedAt: afterScanCompletedAt,\n afterScanCompletedAtDate: afterScanCompletedAtDate,\n latestScanCompletedAt: latestScanCompletedAt,\n latestScanCompletedAtDate: latestScanCompletedAtDate,\n isAutomaticallyUpdatedSinceViewed: isAutomaticallyUpdatedSinceViewed,\n automaticallyUpdatedSinceViewedRaw: automaticallyUpdatedSinceViewedRaw,\n automaticallyUpdatedSinceViewedTitle: automaticallyUpdatedSinceViewedTitle,\n automaticallyUpdatedSinceViewedAt: automaticallyUpdatedSinceViewedAt,\n automaticallyUpdatedSinceViewedAtDate: automaticallyUpdatedSinceViewedAtDate,\n instructionCardUuid: instructionCardUuid,\n images: imageList,\n imagePovList: imagePovList,\n shareLogList: shareLogList,\n digitalConsultList: digitalConsultList,\n recipientEmails: recipientEmails,\n instructionSmsTemplates: instructionSmsTemplates,\n instructionInternalMessageTemplates: instructionInternalMessageTemplates,\n scanWeekday: attribs.scan_weekday,\n scanIntervalDays: attribs.scan_interval_days,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n _parseShareLogList({ payload }) {\n let itemList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.created_at);\n const createdAtTs = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const messageType = attribs.message_type\n const messageBodyTrunc = attribs.message_body_trunc\n const elem = {\n uuid: attribs.uuid,\n body: attribs.title,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n ts: createdAtTs,\n type: messageType,\n description: messageBodyTrunc,\n }\n itemList.push(elem)\n }\n return itemList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseDigitalConsultList({ payload }) {\n let itemList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.timestamp);\n const createdAtTs = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const elem = {\n uuid: attribs.uuid,\n body: attribs.note,\n type: 'consult',\n description: null,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n ts: createdAtTs,\n }\n itemList.push(elem)\n }\n return itemList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseimagePovList({ payload }) {\n let tagList = []\n let uniqueList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const pointOfView = attribs.point_of_view\n if (uniqueList.includes(pointOfView)) {\n continue;\n }\n uniqueList.push(pointOfView)\n const meta = this._getPointOfViewMeta({ pointOfView: pointOfView })\n const tag = {\n id: pointOfView,\n title: meta.title,\n precedence: meta.precedence,\n isFacePov: meta.isFacePov,\n }\n tagList.push(tag)\n }\n tagList.sort((a, b) => a.precedence - b.precedence);\n return tagList;\n },\n\n _parseImageList({ payload }) {\n let imageList = []\n for (let i in payload) {\n const item = payload[i];\n const attribs = item.attributes\n const createdAt = new Date(attribs.created_at);\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n const pointOfView = attribs.point_of_view\n const meta = this._getPointOfViewMeta({ pointOfView: pointOfView })\n const image = {\n uuid: attribs.uuid,\n url: attribs.url,\n rawCroppedUrl: attribs.raw_cropped_url,\n hueCroppedUrl: attribs.hue_color_cropped_url,\n createdAt: createdAt,\n prettyCreatedAt: prettyCreatedAt,\n pointOfView: pointOfView,\n pointOfViewTitle: meta.title,\n pointOfViewPrecedence: meta.precedence,\n isFacePov: meta.isFacePov,\n }\n imageList.push(image)\n }\n return this._sortListByDateAndPrecedence({ items: imageList });\n },\n\n _sortListByDateAndPrecedence({ items }) {\n return items.sort((a, b) => {\n const dateA = a.createdAt;\n const dateB = b.createdAt;\n const condition0 = dateA.getDate() !== dateB.getDate();\n const condition1 = a.pointOfViewPrecedence - b.pointOfViewPrecedence;\n // Compare dates\n if (dateA.getDate() !== dateB.getDate()) {\n return condition0;\n } else {\n // If dates are the same, compare precedence\n return condition1;\n }\n });\n },\n\n getDocumentText({ documentType }) {\n let title = 'Andet' // this._capitalize({ value: documentType })\n let precedence = 0\n if (documentType == 'instruction') {\n title = 'Vejledning'\n precedence = 17\n } else if (documentType == 'receipt') {\n title = 'Kvittering'\n precedence = 19\n } else if (documentType == 'giro') {\n title = 'Afdragsordning'\n precedence = 15\n } else if (documentType == 'bill') {\n title = 'Regning'\n precedence = 18\n } else if (documentType == 'overdue_bill') {\n title = 'Rykker (regning)'\n precedence = 16\n } else if (documentType == 'medical_history') {\n title = 'Helbredsskema'\n precedence = 10\n } else if (documentType == 'treatment') {\n title = 'Overslag'\n precedence = 20\n } else if (documentType == 'journal_item') {\n title = 'Journal'\n precedence = 10\n } else if (documentType == 'other_pdf') {\n title = 'PDF'\n precedence = 9\n } else if (documentType == 'other_jpg') {\n title = 'Billede eller røntgen'\n precedence = 5\n } else if (documentType == 'standalone_free_text') {\n title = 'Fritekst'\n precedence = 11\n }\n return { title: title, precedence: precedence };\n },\n\n _getPointOfViewMeta({ pointOfView }) {\n const povClean = !!pointOfView ? pointOfView.trim('.jpg') : '';\n let title = this._capitalize({ value: pointOfView })\n let precedence = 20;\n if (povClean == 'face-smile') {\n title = 'Naturligt smil (på afstand)';\n precedence = 15;\n } else if (povClean == 'face-smile-front') {\n title = 'Naturligt smil (på afstand)';\n precedence = 15;\n } else if (povClean == 'bite-front') {\n title = 'Tænder (tæt på)';\n precedence = 1;\n } else if (povClean == 'bite-left') {\n title = 'Tænder (tæt på, venstre)';\n precedence = 5;\n } else if (povClean == 'bite-right') {\n title = 'Tænder (tæt på, højre)';\n precedence = 6;\n } else if (povClean == 'upper-arch') {\n title = 'Øvre kæbe';\n precedence = 12;\n } else if (povClean == 'bottom-arch') {\n title = 'Nedre kæbe';\n precedence = 11;\n } else if (povClean == 'closed-bite-front') {\n title = 'Sammenbid med skinne forfra'\n precedence = 3;\n } else if (povClean == 'closed-bite-left') {\n title = 'Sammenbid fra venstre'\n precedence = 5;\n } else if (povClean == 'closed-bite-right') {\n title = 'Sammenbid fra højre'\n precedence = 7;\n } else if (povClean == 'closed-bite-front-excl-aligners') {\n title = 'Sammenbid u. skinne og forfra'\n precedence = 1;\n } else if (povClean == 'closed-bite-front-incl-aligners') {\n title = 'Sammenbid med skinne og forfra'\n precedence = 2;\n } else if (povClean == 'closed-bite-left-incl-aligners') {\n title = 'Sammenbid med skinne fra venstre'\n precedence = 6;\n } else if (povClean == 'closed-bite-right-incl-aligners') {\n title = 'Sammenbid med skinne fra højre'\n precedence = 8;\n } else if (povClean == 'open-bite-front-incl-aligners') {\n title = 'Let åben mund med skinne og forfra'\n precedence = 10;\n }\n const isFacePov = povClean.includes('face');\n return { title: title, precedence: precedence, isFacePov: isFacePov }\n },\n\n _capitalize({ value }) {\n let arr = value.split('-');\n let capital = arr.map(item => item.charAt(0).toUpperCase() + item.slice(1).toLowerCase());\n let capitalString = capital.join(\" \");\n return capitalString\n },\n\n parseReviewLogList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n const patAttribs = !!patient ? patient.attributes : null\n\n const patientPhoneNumber = !!patAttribs ? patAttribs.phone_number : null\n const patientEmail = !!patAttribs ? patAttribs.contact_email : null\n\n let patientFullname = !!patAttribs ? patAttribs.full_name : null\n if (patientFullname == null || patientFullname.length == 0) {\n patientFullname = patientPhoneNumber\n }\n if (patientFullname == null || patientFullname.length == 0) {\n const supportId = !!patAttribs ? patAttribs.cognito_id.slice(0, 8) : null\n patientFullname = `Navn mangler (Support id: ${supportId})`\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _updatedAt = !!attribs.updated_at ? new Date(attribs.updated_at) : null;\n const updatedAt = !!_updatedAt ? _updatedAt.getTime() : null;\n const updatedAtDate = !!_updatedAt ? _updatedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _sentAt = !!attribs.sent_at ? new Date(attribs.sent_at) : null;\n const sentAt = !!_sentAt ? _sentAt.getTime() : null;\n const sentAtDate = !!_sentAt ? _sentAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _completedAt = !!attribs.completed_at ? new Date(attribs.completed_at) : null;\n const completedAt = !!_completedAt ? _completedAt.getTime() : null;\n const completedAtDate = !!_completedAt ? _completedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _resolvedAt = !!attribs.resolved_at ? new Date(attribs.resolved_at) : null;\n const resolvedAt = !!_resolvedAt ? _resolvedAt.getTime() : null;\n const resolvedAtDate = !!_resolvedAt ? _resolvedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _openedAt = !!attribs.opened_at ? new Date(attribs.opened_at) : null;\n const openedAt = !!_openedAt ? _openedAt.getTime() : null;\n const openedAtDate = !!_openedAt ? _openedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _bookmarkedAt = !!attribs.bookmarked_at ? new Date(attribs.bookmarked_at) : null;\n const bookmarkedAt = !!_bookmarkedAt ? _bookmarkedAt.getTime() : null;\n const bookmarkedAtDate = !!_bookmarkedAt ? _bookmarkedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _journalizedAt = !!attribs.journalized_at ? new Date(attribs.journalized_at) : null;\n const journalizedAt = !!_journalizedAt ? _journalizedAt.getTime() : null;\n const journalizedAtDate = !!_journalizedAt ? _journalizedAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseNoteLog(_noteLog);\n\n const patientNote = attribs.patient_note ?? '';\n const maxNoteLength = 25;\n let patientNoteTruncated = patientNote.length > maxNoteLength ? `${patientNote.slice(0, maxNoteLength)}...` : patientNote;\n\n const item = {\n uuid: attribs.uuid,\n score: attribs.score,\n scoreRaw: attribs.score_raw,\n patientNote: patientNote,\n patientNoteTruncated: patientNoteTruncated,\n name: patientFullname,\n patientPhoneNumber: patientPhoneNumber,\n patientEmail: patientEmail,\n createdAt: createdAt,\n updatedAt: updatedAt,\n date: updatedAtDate,\n timestamp: updatedAt,\n isSent: attribs.is_sent,\n isOpened: attribs.is_opened,\n isCompleted: attribs.is_completed,\n isResolved: attribs.is_resolved,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n createdAtDate: createdAtDate,\n updatedAtDate: updatedAtDate,\n sentAt: sentAt,\n sentAtDate: sentAtDate,\n journalizedAt: journalizedAt,\n journalizedAtDate: journalizedAtDate,\n completedAt: completedAt,\n completedAtDate: completedAtDate,\n resolvedAt: resolvedAt,\n resolvedAtDate: resolvedAtDate,\n openedAt: openedAt,\n openedAtDate: openedAtDate,\n bookmarkedAt: bookmarkedAt,\n bookmarkedAtDate: bookmarkedAtDate,\n noteLog: noteLog,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n _parseNoteLog(payload) {\n if (!payload) {\n return []\n }\n let _dataList = []\n for (let item of payload) {\n if (!item) {\n continue\n }\n const createdAt = new Date(item.timestamp)\n const ts = createdAt.getTime();\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: createdAt })\n _dataList.push({\n uuid: item.uuid,\n ts: ts,\n createdAt: createdAt,\n body: item.note,\n type: 'note',\n description: null,\n prettyCreatedAt: prettyCreatedAt,\n })\n }\n // NOTE: If you update sorting, also check (latest) note in list is as expected.\n return _dataList.sort((a, b) => b.ts - a.ts);\n },\n\n\n parseClinicalPhotoList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let patientPhoneNumber = attribs.patient_phone_number\n let patientFullname = attribs.patient_full_name\n let patientCognitoId = attribs.patient_cognito_id\n\n if (patient != null && patient.attributes != null) {\n let patAttribs = patient.attributes\n patientPhoneNumber = patAttribs.phone_number\n patientFullname = patAttribs.full_name\n patientCognitoId = patAttribs.cognito_id\n }\n\n let nameList = []\n if (patientFullname != null && patientFullname.length > 0) {\n nameList.push(patientFullname)\n } else if (patientPhoneNumber != null && patientPhoneNumber.length > 0) {\n nameList.push(patientPhoneNumber)\n } else if (patientCognitoId != null && patientCognitoId.length > 0) {\n nameList.push(patientCognitoId)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n const hasAnyImageReady = attribs.has_any_image_ready\n const hasAnyImagePending = attribs.has_any_image_pending\n\n let name = nameList.join(' • ')\n\n const item = {\n uuid: attribs.uuid,\n name: name,\n createdAt: createdAt,\n date: createdAtDate,\n isBookmarked: attribs.is_bookmarked,\n isJournalized: attribs.is_journalized,\n hasAnyImageReady: hasAnyImageReady,\n hasAnyImagePending: hasAnyImagePending,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n parseConnectorLogList(payload) {\n const dateOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\n const dataTableItems = []\n let i = 0\n for (i in payload) {\n const resource = payload[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const patient = relationships.patient.data\n\n let requestType = attribs.type\n let requestTypeName = '-'\n if (requestType == 'medical_history_completed') {\n requestTypeName = 'Helbredsskema'\n } else if (requestType = 'treatment_sent') {\n requestTypeName = 'Sendt overslag'\n } else if (requestType = 'treatment_comfirmed') {\n requestTypeName = 'Informeret samtykke'\n } else if (requestType = 'treatment_billed') {\n requestTypeName = 'Informeret samtykke (faktureret)'\n } else if (requestType = 'instruction_sent') {\n requestTypeName = 'Sendt patientbrev/-vejledning'\n } else if (requestType = 'instruction_sent_by_receipt') {\n requestTypeName = 'Sendt patientbrev/-vejledning via regning'\n }\n\n let patientFullname = null\n let patientCognitoId = null\n\n if (patient != null && patient.attributes != null) {\n let patAttribs = patient.attributes\n patientFullname = patAttribs.full_name\n patientCognitoId = patAttribs.cognito_id\n }\n\n let nameList = []\n if (patientFullname != null && patientFullname.length > 0) {\n nameList.push(patientFullname)\n } else if (patientCognitoId != null && patientCognitoId.length > 0) {\n nameList.push(patientCognitoId)\n }\n\n const _createdAt = !!attribs.created_at ? new Date(attribs.created_at) : null;\n const createdAt = !!_createdAt ? _createdAt.getTime() : null;\n const createdAtDate = !!_createdAt ? _createdAt.toLocaleDateString('da-DK', dateOptions) : null;\n\n let name = nameList.join(' • ')\n\n const item = {\n uuid: attribs.uuid,\n name: name,\n requestType: requestType,\n requestTypeName: requestTypeName,\n createdAt: createdAt,\n date: createdAtDate,\n isBookmarked: attribs.is_bookmarked,\n isRequested: attribs.is_requested,\n isDownloaded: attribs.is_downloaded,\n isImported: attribs.is_imported,\n isProcessed: attribs.is_processed,\n shouldDownload: attribs.should_download,\n shouldImport: attribs.should_import,\n }\n dataTableItems.push(item)\n }\n return dataTableItems\n },\n\n async parseDentistList({ items }) {\n const locales = \"da-DK\";\n let dentistList = []\n for (const i in items) {\n const item = items[i]\n const dentist = await this.parseDentist({ dentist: item })\n dentistList.push(dentist)\n }\n\n const dentistListSorted = dentistList.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase(), locales))\n return dentistListSorted\n },\n\n async parseSystemInitialList({ items }) {\n const locales = \"da-DK\";\n let systemInitialList = []\n for (const i in items) {\n const item = items[i]\n const attribs = item.attributes\n const value = attribs.value\n if (!value) {\n continue\n }\n const firstname = attribs.first_name\n const name = `${firstname} ${attribs.last_name}`\n const label = !firstname ? value : `${value} (${firstname})`\n const elem = {\n value: value,\n uuid: attribs.uuid,\n name: name,\n label: label,\n }\n systemInitialList.push(elem)\n }\n const systemInitialListSorted = systemInitialList.sort((a, b) => a.value.toLowerCase().localeCompare(b.value.toLowerCase(), locales))\n return systemInitialListSorted;\n },\n\n async parseTreatmentItemCollectionMeta(meta) {\n if (!meta) {\n return null;\n }\n\n const dentistListJson = meta.dentist_list ?? []\n const dentistList = await this.parseDentistList({ items: dentistListJson })\n\n const systemInitialListJson = meta.system_initials_list ?? []\n const systemInitialList = await this.parseSystemInitialList({ items: systemInitialListJson })\n\n const primaryTreatmentGroupList = meta.primary_treatment_group_list;\n\n return {\n dentistList: dentistList,\n systemInitialList: systemInitialList,\n primaryTreatmentGroupList: primaryTreatmentGroupList,\n }\n },\n\n isNumber(value) {\n return typeof value == 'number'\n },\n\n async parseTreatmentItemCollectionList(resources) {\n const items = []\n let i = 0\n for (i in resources) {\n const resource = resources[i]\n const item = await this.parseTreatmentItemCollection(resource)\n items.push(item)\n }\n return items\n },\n\n async parseTreatmentItemCollection(resource) {\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n\n const attribs = resource.attributes\n const relationships = resource.relationships\n\n const uuid = attribs.uuid\n const cognitoId = attribs.cognito_id\n const firstname = attribs.patient_first_name\n const lastname = attribs.patient_last_name\n const birthdate = attribs.patient_birthdate\n const phonenumber = attribs.patient_phone_number\n const email = attribs.patient_email\n\n const _noteLog = attribs.note_log\n const noteLog = this._parseLog({ dataList: _noteLog, type: 'note' })\n\n const _billedAtLog = attribs.billed_at_log\n const billedAtLog = this._parseLog({ dataList: _billedAtLog, type: 'billed_at' })\n\n const _journalChangeLog = attribs.journal_change_log\n const journalChangeLog = this._parseJournalChangeLog({ dataList: _journalChangeLog })\n\n const _pipelineChangeLog = attribs.pipeline_status_log\n const pipelineChangeLog = this._parseLog({\n dataList: _pipelineChangeLog,\n type: 'change_log',\n excludeTooSimilar: true,\n })\n\n let createdAt = null\n if (!!attribs.created_at) {\n createdAt = new Date(attribs.created_at)\n }\n let bookmarkedAt = null\n if (!!attribs.bookmarked_at) {\n bookmarkedAt = new Date(attribs.bookmarked_at)\n }\n let sentAt = null\n if (!!attribs.sent_at) {\n sentAt = new Date(attribs.sent_at)\n }\n let openedAt = null\n if (!!attribs.opened_at) {\n openedAt = new Date(attribs.opened_at)\n }\n let bookedAt = null\n if (!!attribs.booked_at) {\n bookedAt = new Date(attribs.booked_at)\n }\n let confirmedAt = null\n if (!!attribs.confirmed_at) {\n confirmedAt = new Date(attribs.confirmed_at)\n }\n let completedAt = null\n if (!!attribs.completed_at) {\n completedAt = new Date(attribs.completed_at)\n }\n let billedAt = null\n if (!!attribs.billed_at) {\n billedAt = new Date(attribs.billed_at)\n }\n let smsSentAt = null\n if (!!attribs.reminder_sms_sent_at) {\n smsSentAt = new Date(attribs.reminder_sms_sent_at)\n }\n let emailSentAt = null\n if (!!attribs.reminder_email_sent_at) {\n emailSentAt = new Date(attribs.reminder_email_sent_at)\n }\n let anySentAt = emailSentAt ?? smsSentAt;\n let autoUpdateAt = null\n if (!!attribs.pipeline_status_auto_updated_at) {\n autoUpdateAt = new Date(attribs.pipeline_status_auto_updated_at)\n }\n\n const hostedPatientLink = attribs.deeplink_to_web\n const prettyDate = createdAt.toLocaleDateString('da-DK', options);\n const displayName = `${firstname} ${lastname}`\n\n const _documents = relationships.documents.data\n const documentList = await this.parsePatientDocumentList({ docs: _documents })\n\n const _treatments = relationships.treatment_items.data\n const groupedTreatmentItemList = await this.groupTreatmentItemListByType({ data: _treatments })\n\n const _clinic = relationships.clinic.data\n const clinicAttribs = _clinic.attributes\n const clinicTitle = clinicAttribs.title\n const treatmentSmsTemplates = clinicAttribs.treatment_sms_templates ?? []\n const reminderSmsTemplates = clinicAttribs.reminder_sms_templates ?? []\n const reminderEmailTemplates = clinicAttribs.reminder_email_templates ?? []\n\n const _dentist = relationships.dentist.data\n let dentistUuid = null;\n let dentistName = ''\n if (!!_dentist) {\n const dentistAttribs = _dentist.attributes\n dentistUuid = dentistAttribs.uuid;\n dentistName = `${dentistAttribs.first_name} ${dentistAttribs.last_name}`\n }\n let dentistNameRaw = ''\n if (attribs.dentist_first_name_raw) {\n dentistNameRaw += attribs.dentist_first_name_raw\n }\n if (attribs.dentist_last_name_raw) {\n dentistNameRaw += ` ${attribs.dentist_last_name_raw}`\n }\n\n const prettySentAt = dateUtils.formatDateToDDMMYYYY({ date: sentAt });\n const prettyOpenedAt = dateUtils.formatDateToDDMMYYYY({ date: openedAt });\n const prettyBookmarkedAt = dateUtils.formatDateToDDMMYYYY({ date: bookmarkedAt });\n const prettyConfirmedAt = dateUtils.formatDateToDDMMYYYY({ date: confirmedAt });\n const prettyCompletedAt = dateUtils.formatDateToDDMMYYYY({ date: completedAt });\n const prettyBookedAt = dateUtils.formatDateToDDMMYYYY({ date: bookedAt });\n const prettyBilledAt = dateUtils.formatDateToDDMMYYYY({ date: billedAt });\n const prettySmsSentAt = dateUtils.formatDateToDDMMYYYY({ date: smsSentAt });\n const prettyEmailSentAt = dateUtils.formatDateToDDMMYYYY({ date: emailSentAt });\n const prettyAnySentAt = dateUtils.formatDateToDDMMYYYY({ date: anySentAt });\n const prettyAutoUpdateAt = dateUtils.formatDateToDDMMYYYY({ date: autoUpdateAt });\n const isSmsSentToday = dateUtils.isToday(smsSentAt)\n const isEmailSentToday = dateUtils.isToday(emailSentAt)\n const isSmsSentThisWeek = dateUtils.isThisIsoWeek(smsSentAt)\n const isEmailSentThisWeek = dateUtils.isThisIsoWeek(emailSentAt)\n const isAnySentToday = isSmsSentToday || isEmailSentToday;\n const isAnySentThisWeek = isSmsSentThisWeek || isEmailSentThisWeek;\n const daysAgo = this.daysAgo(createdAt);\n\n const _action = !relationships.automated_action ? null : relationships.automated_action.data;\n const action = _action == null ? null : this._parseAutomatedAction({ item: _action })\n\n const shareLogListJson = !relationships.share_logs ? [] : relationships.share_logs.data;\n const shareLogList = this._parseShareLogList({ payload: shareLogListJson })\n\n let commonList = [];\n if (shareLogList?.length) commonList.push(...shareLogList);\n if (noteLog?.length) commonList.push(...noteLog);\n\n const sortedCommonList = commonList.sort((a, b) => (b.ts ?? 0) - (a.ts ?? 0))\n\n const searchtext = `${displayName} ${dentistName} ${dentistNameRaw} ${birthdate}`.toLowerCase()\n\n const isReminderCallAny = attribs.is_reminder_call_any\n const isReminderMessageAny = attribs.is_reminder_message_any\n const isReminderAny = isReminderCallAny || isReminderMessageAny\n\n const item = {\n date: prettyDate,\n createdAt: createdAt,\n uuid: uuid,\n cognitoId: cognitoId,\n name: displayName,\n searchtext: searchtext,\n firstname: firstname,\n lastname: lastname,\n birthdate: birthdate,\n email: email,\n phonenumber: phonenumber,\n isSent: attribs.is_sent,\n sentAt: prettySentAt,\n isReceived: attribs.is_received,\n isOpened: attribs.is_opened,\n openedAt: prettyOpenedAt,\n openedCount: attribs.opened_count,\n isBooked: attribs.is_booked,\n bookedAt: prettyBookedAt,\n isConfirmed: attribs.is_confirmed,\n confirmedAt: prettyConfirmedAt,\n isCompleted: attribs.is_completed,\n completedAt: prettyCompletedAt,\n isBilled: attribs.is_billed,\n billedAt: prettyBilledAt,\n isBookmarked: attribs.is_bookmarked,\n isReminderAny: isReminderAny,\n isReminderCallAny: isReminderCallAny,\n isReminderMessageAny: isReminderMessageAny,\n bookmarkedAt: prettyBookmarkedAt,\n isAnySentToday: isAnySentToday,\n isAnySentThisWeek: isAnySentThisWeek,\n anySentAt: prettyAnySentAt,\n isSmsSentToday: isSmsSentToday,\n smsSentAt: prettySmsSentAt,\n isEmailSentToday: isEmailSentToday,\n emailSentAt: prettyEmailSentAt,\n hostedPatientLink: hostedPatientLink,\n documentList: documentList,\n groupedTreatmentItemList: groupedTreatmentItemList,\n uuidSms: uuid,\n uuidEmail: uuid,\n uuidCall: uuid,\n amountTotal: attribs.amount_total,\n amountTotalPlanned: attribs.amount_total_planned,\n amountTotalCompleted: attribs.amount_total_completed,\n status: attribs.pipeline_status,\n daysAgo: daysAgo,\n noteLog: noteLog,\n billedAtLog: billedAtLog,\n shareLogList: shareLogList,\n commonList: sortedCommonList,\n treatmentSmsTemplates: treatmentSmsTemplates,\n reminderSmsTemplates: reminderSmsTemplates,\n reminderEmailTemplates: reminderEmailTemplates,\n dentistUuid: dentistUuid,\n dentistName: dentistName,\n clinicTitle: clinicTitle,\n systemUserInitials: attribs.system_user_initials,\n action: action,\n journalChangeLog: journalChangeLog,\n pipelineChangeLog: pipelineChangeLog,\n autoUpdateAt: prettyAutoUpdateAt,\n didChangeThisWeek: attribs.did_pipeline_status_change_this_week,\n includeAutoReminderToPatient: attribs.include_auto_reminder_message_to_patient,\n }\n return item\n },\n\n async parseTreatmentItemList(resources) {\n const items = []\n let i = 0\n for (i in resources) {\n const resource = resources[i]\n const attribs = resource.attributes\n const relationships = resource.relationships\n const _treatment = !!relationships.treatment ? relationships.treatment.data : null\n const _document = !!relationships.document ? relationships.document.data : null\n const _dentist = !!relationships.dentist ? relationships.dentist.data : null\n\n const uuid = attribs.uuid\n let createdAt = null\n if (!!attribs.created_at) {\n createdAt = new Date(attribs.created_at)\n }\n\n const treatment = await this.parseTreatmentOption({ option: _treatment })\n const treatmentGroup = await this.parseTreatmentGroupFromOption({ option: _treatment })\n const document = await this.parsePatientDocument({ doc: _document })\n const dentist = await this.parseDentist({ dentist: _dentist })\n\n const item = {\n createdAt: createdAt,\n uuid: uuid,\n title: attribs.title_da,\n document: document,\n treatment: treatment,\n group: treatmentGroup,\n dentist: dentist,\n price: attribs.price,\n type: attribs.type,\n isCompleted: attribs.is_completed,\n isBilled: attribs.is_billed,\n isPaid: attribs.is_paid,\n }\n items.push(item)\n }\n return items\n },\n\n daysAgo(date) {\n if (!date) {\n return null;\n }\n const now = new Date();\n const then = new Date(date);\n // Set both dates to midnight\n now.setHours(0, 0, 0, 0);\n then.setHours(0, 0, 0, 0);\n const timeDifference = Math.abs(now.getTime() - then.getTime());\n const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24));\n return daysDifference;\n },\n\n async groupTreatmentItemListByType({ items }) {\n // Output:\n // {\n // 'documentUuid: str': {\n // precedence: int,\n // documentUuid: str\n // planned: List[Dict[str, Any]],\n // completed: List[Dict[str, Any]],\n // plannedPriceTotal: float,\n // completedPriceTotal: float,\n // },\n // ...\n // }\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n let groupedDict = {}\n for (let i in items) {\n const item = items[i]\n const attribs = item.attributes\n const relationships = item.relationships\n const treatment = relationships.treatment.data\n const document = relationships.document.data\n const uuid = attribs.uuid\n const uuidPrefix = uuid.slice(0, 6)\n const createdAt = new Date(attribs.created_at)\n const prettyDate = createdAt.toLocaleDateString('da-DK', options);\n const itemType = attribs.type;\n const documentUuid = document?.attributes.uuid ?? ''\n\n let price = attribs.price\n if (!this.isNumber(price)) {\n price = 0\n }\n let coveragePublic = attribs.coverage_public\n if (!this.isNumber(coveragePublic)) {\n coveragePublic = 0\n }\n let coverageDanmark = attribs.coverage_danmark\n if (!this.isNumber(coverageDanmark)) {\n coverageDanmark = 0\n }\n let coverageDanmarkMax = attribs.coverage_danmark_max\n if (!this.isNumber(coverageDanmarkMax)) {\n coverageDanmarkMax = 0\n }\n\n let displayImage = null\n let titleLookup = null\n let recapDescriptionLookup = null\n if (treatment !== null) {\n const treatmentAttribs = treatment.attributes\n displayImage = treatmentAttribs.display_image\n // IMPORTANT: Using raw strings during development here.\n // TODO: Use `title_lookup` etc.\n titleLookup = treatmentAttribs.title_da\n recapDescriptionLookup = treatmentAttribs.recap_description_da\n }\n let current = groupedDict[documentUuid] ?? {}\n current.documentUuid = documentUuid\n current.precedence = 0 // TODO: update\n let currentList\n if (itemType === TREATMENT_TYPE__PLANNED) {\n currentList = current.planned ?? []\n } else if (itemType === TREATMENT_TYPE__COMPLETED) {\n currentList = current.completed ?? []\n }\n currentList.push({\n uuid: uuid,\n uuidPrefix: uuidPrefix,\n date: prettyDate,\n createdAt: createdAt,\n itemType: itemType,\n isScanned: true, // NOTE: Currently hardcoded\n title: attribs.title,\n price: price,\n coveragePublic: coveragePublic,\n coverageDanmark: coverageDanmark,\n coverageDanmarkMax: coverageDanmarkMax,\n precedence: attribs.precedence,\n displayImage: displayImage,\n titleLookup: titleLookup,\n recapDescriptionLookup: recapDescriptionLookup,\n })\n if (itemType === TREATMENT_TYPE__PLANNED) {\n current.planned = currentList\n let _total = current.plannedPriceTotal ?? 0\n current.plannedPriceTotal = _total + price\n } else if (itemType === TREATMENT_TYPE__COMPLETED) {\n current.completed = currentList\n let _total = current.completedPriceTotal ?? 0\n current.completedPriceTotal = _total + price\n }\n if (current.planned === undefined) {\n current.planned = []\n }\n if (current.completed === undefined) {\n current.completed = []\n }\n if (current.plannedPriceTotal === undefined) {\n current.plannedPriceTotal = 0\n }\n if (current.completedPriceTotal === undefined) {\n current.completedPriceTotal = 0\n }\n groupedDict[documentUuid] = current\n }\n return groupedDict\n },\n\n async parsePatientDocumentList({ docs }) {\n let _documents = []\n for (let i in docs) {\n const doc = docs[i]\n const resource = await this.parsePatientDocument({ doc: doc })\n _documents.push(resource)\n }\n return _documents\n },\n\n async parsePatientDocument({ doc }) {\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n const attribs = doc.attributes\n const uuid = attribs.uuid\n const uuidPrefix = uuid.slice(0, 6)\n const issuedAt = new Date(attribs.issued_at)\n const prettyDate = issuedAt.toLocaleDateString('da-DK', options);\n const isOpened = attribs.is_opened_list\n const documentType = attribs.document_type\n const url = attribs.url\n const _options = [...PatientDocumentOptions]\n let option = _options[0]\n for (let i in _options) {\n const _option = _options[i]\n if (_option.value === documentType) {\n option = _option\n break\n }\n }\n let readableDocumentType = i18n.t(option.title)\n let resource = {\n uuid: uuid,\n uuidPrefix: uuidPrefix,\n url: url,\n date: prettyDate,\n issuedAt: issuedAt,\n isSent: true, // NOTE: Currently hardcoded on this list\n isReceived: true,\n isOpened: isOpened,\n documentType: documentType,\n readableDocumentType: readableDocumentType,\n }\n return resource\n },\n\n _parseAutomatedAction({ item }) {\n const attribs = item.attributes\n const isPending = attribs.is_pending ?? false\n const isPendingAnyAmount = attribs.is_pending_any_amount ?? isPending\n const isPrevThisWeek = attribs.is_prev_this_week\n const isBelowAmount = attribs.is_below_amount\n const actionType = attribs.action_type\n let prevRegisteredAt = null\n if (!!attribs.prev_registered_at) {\n prevRegisteredAt = new Date(attribs.prev_registered_at)\n }\n let prevScheduledAt = null\n if (!!attribs.prev_scheduled_at) {\n prevScheduledAt = new Date(attribs.prev_scheduled_at)\n }\n let nextScheduledAt = null\n if (!!attribs.next_scheduled_at) {\n nextScheduledAt = new Date(attribs.next_scheduled_at)\n }\n\n const prettyPrevRegisteredAt = dateUtils.formatDateToDDMMYYYY({ date: prevRegisteredAt });\n const prettyPrevScheduledAt = dateUtils.formatDateToDDMMYYYY({ date: prevScheduledAt });\n const prettyNextScheduledAt = dateUtils.formatDateToDDMMYYYY({ date: nextScheduledAt });\n\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title,\n description: attribs.description,\n isPending: isPending,\n isPendingAnyAmount: isPendingAnyAmount,\n isPrevThisWeek: isPrevThisWeek,\n actionType: actionType,\n isBelowAmount: isBelowAmount,\n prevRegisteredAt: prettyPrevRegisteredAt,\n prevScheduledAt: prettyPrevScheduledAt,\n nextScheduledAt: prettyNextScheduledAt,\n }\n\n return resource\n },\n\n async parseTreatmentOption({ option }) {\n if (!option) {\n return null\n }\n const attribs = option.attributes\n let group = await this.parseTreatmentGroupFromOption({ option })\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title_da,\n precedence: attribs.precedence ?? 0,\n group: group,\n }\n return resource\n },\n\n async parseDentist({ dentist }) {\n if (!dentist) {\n return null\n }\n const attribs = dentist.attributes\n const firstname = attribs.first_name\n const lastname = attribs.last_name\n let resource = {\n uuid: attribs.uuid,\n name: `${firstname} ${lastname}`,\n firstname: firstname,\n lastname: lastname,\n title: attribs.title,\n email: attribs.email,\n }\n return resource\n },\n\n async parseTreatmentGroupFromOption({ option }) {\n if (!option) {\n return null\n }\n const relationships = option.relationships\n const groupData = !!relationships.group ? relationships.group.data : null\n const group = await this.parseTreatmentGroup({ group: groupData })\n return group\n },\n\n async parseTreatmentGroup({ group }) {\n if (!group) {\n return null;\n }\n const attribs = group.attributes\n let resource = {\n uuid: attribs.uuid,\n title: attribs.title_da,\n precedence: attribs.precedence ?? 0,\n }\n return resource\n },\n\n async parseTreatmentGroupList({ items }) {\n if (!items) {\n return null\n }\n let groupList = []\n for (let i in items) {\n const item = items[i]\n groupList.push(this.parseTreatmentGroup({ group: item }))\n }\n return groupList\n },\n\n async groupByTreatmentOption({\n items,\n key = 'treatment',\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // NOTE: See @sortprefix\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : category.title\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n const locales = \"da-DK\";\n return asList.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async groupByDate({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = dateUtils.formatDateToYYYYMMDD({ date: createdAt })\n const categoryTitle = dateUtils.formatDateToDDMMYYYY({ date: createdAt })\n const categoryPrecedence = 0 // TODO: Add if needed\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n const locales = \"da-DK\";\n return asList.sort((a, b) => a.uuid.toLowerCase().localeCompare(b.uuid.toLowerCase(), locales))\n },\n\n async groupByTotalSumTreatment({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = 'total'\n const categoryTitle = 'I alt'\n const categoryPrecedence = 0\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n return asList\n },\n\n async groupByTotalSumDocument({ items }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const createdAt = item.createdAt\n if (!createdAt) {\n continue;\n }\n const categoryUuid = 'total'\n const categoryTitle = 'I alt'\n const categoryPrecedence = 0\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList = []\n for (let uuid in groupDict) {\n asList.push(groupDict[uuid])\n }\n return asList\n },\n\n async groupByDateFlattenValue({ items }) {\n let newList = []\n for (let i in items) {\n const item = items[i]\n newList.push(item.amountTotalPlanned)\n }\n return newList\n },\n\n async groupByDateFlattenLabel({ items }) {\n let newList = []\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const isFirst = i === 0\n const isLast = i === items.length - 1\n if (isFirst || isLast) {\n newList.push(item.uuid)\n } else {\n newList.push('-')\n }\n }\n return newList\n },\n\n async groupByTreatmentGroup({\n items,\n key = 'group',\n fallbackTitle = 'ٴ Øvrig: Uden kategori', // NOTE: See @sortprefix\n allowSubgroup = false,\n primarySubgroupKey = 'byDentist',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : category.title\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byDentist = await this.groupByDentist({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byDentist'] = byDentist\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n const locales = \"da-DK\";\n return asList1.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async _addToGroupTreatmentDict({\n item,\n groupDict,\n categoryUuid,\n categoryTitle,\n categoryPrecedence,\n }) {\n let newGroupDict = groupDict\n\n const isCompleted = item.isCompleted ?? false;\n const isBilled = item.isBilled ?? false;\n const isPaid = item.isPaid ?? false;\n const amount = item.price ?? 0\n\n const curr = newGroupDict[categoryUuid] ?? {}\n let amountTotalPlanned = curr.amountTotalPlanned ?? 0\n let amountTotalCompleted = curr.amountTotalCompleted ?? 0\n let amountTotalBilled = curr.amountTotalBilled ?? 0\n let amountTotalPaid = curr.amountTotalPaid ?? 0\n\n let countPlanned = curr.countPlanned ?? 0\n let countCompleted = curr.countCompleted ?? 0\n let countBilled = curr.countBilled ?? 0\n let countPaid = curr.countPaid ?? 0\n\n amountTotalPlanned += amount;\n countPlanned += 1\n if (isCompleted === true) {\n countCompleted += 1\n amountTotalCompleted += amount\n }\n if (isBilled === true) {\n countBilled += 1\n amountTotalBilled += amount\n }\n if (isPaid === true) {\n countPaid += 1\n amountTotalPaid += amount\n }\n\n let items = curr.items ?? []\n items.push(item) // NOTE: Adds reference to components used\n\n const entry = {\n title: categoryTitle,\n uuid: categoryUuid,\n amountTotalPlanned: amountTotalPlanned,\n amountTotalCompleted: amountTotalCompleted,\n amountTotalBilled: amountTotalBilled,\n amountTotalPaid: amountTotalPaid,\n countPlanned: countPlanned,\n countCompleted: countCompleted,\n countBilled: countBilled,\n countPaid: countPaid,\n precedence: categoryPrecedence,\n items: items,\n }\n newGroupDict[categoryUuid] = entry\n return newGroupDict\n },\n\n async _addToGroupDocumentDict({\n item,\n groupDict,\n categoryUuid,\n categoryTitle,\n categoryPrecedence,\n }) {\n let newGroupDict = groupDict\n\n const curr = newGroupDict[categoryUuid] ?? {}\n let amountNew = item.amountTotal ?? 0\n let amountTotal = curr.amountTotal ?? 0\n\n let count = curr.count ?? 0\n\n amountTotal += amountNew;\n count += 1\n\n let items = curr.items ?? []\n items.push(item) // NOTE: Adds reference to components used\n\n let precedenceOrFallback = categoryPrecedence\n if (categoryPrecedence === null) {\n precedenceOrFallback = amountTotal + count\n }\n\n const entry = {\n title: categoryTitle,\n uuid: categoryUuid,\n amountTotal: amountTotal,\n count: count,\n precedence: Math.ceil(precedenceOrFallback),\n items: items,\n }\n newGroupDict[categoryUuid] = entry\n return newGroupDict\n },\n\n async groupBySystemInitial({\n items,\n allowSubgroup = false,\n fallbackTitle = 'ٴ Ukendt', // NOTE: See @sortprefix\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const categoryUuid = !item.systemInitial ? 'fallback' : item.systemInitial\n const categoryTitle = !item.systemInitial ? fallbackTitle : item.systemInitial\n const categoryPrecedence = null // NOTE: Infers in function below\n\n groupDict = await this._addToGroupDocumentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n const locales = \"da-DK\";\n return asList0.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n async groupByDentist({\n items,\n key = 'dentist',\n fallbackTitle = 'ٴ Øvrig/Ukendt', // NOTE: See @sortprefix\n allowSubgroup = false,\n primarySubgroupKey = 'byGroup',\n }) {\n let groupDict = {}\n for (let i in items) {\n const item = items[i]\n const category = item[key]\n const categoryUuid = !category ? 'fallback' : category.uuid\n const categoryTitle = !category ? fallbackTitle : (category.name ?? '')\n const categoryPrecedence = !category ? 0 : (category.precedence ?? 0)\n\n groupDict = await this._addToGroupTreatmentDict({\n item: item,\n groupDict: groupDict,\n categoryUuid: categoryUuid,\n categoryTitle: categoryTitle,\n categoryPrecedence: categoryPrecedence,\n })\n }\n let asList0 = []\n for (let uuid in groupDict) {\n asList0.push(groupDict[uuid])\n }\n\n let asList1 = []\n for (let j in asList0) {\n const elem = asList0[j]\n if (allowSubgroup) {\n const byGroup = await this.groupByTreatmentGroup({\n items: elem.items,\n allowSubgroup: false,\n })\n elem['byGroup'] = byGroup\n elem['subgroup'] = elem[primarySubgroupKey]\n }\n asList1.push(elem)\n }\n\n const locales = \"da-DK\";\n return asList1.sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase(), locales))\n },\n\n _parseLog({ dataList, type, excludeTooSimilar = false }) {\n if (!dataList) {\n return []\n }\n let newList = []\n let _similarityStrList = []\n for (let item of dataList) {\n if (!item) {\n continue\n }\n if (!item.timestamp) {\n continue\n }\n const timestamp = new Date(item.timestamp)\n const ts = timestamp.getTime()\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: timestamp });\n const title = item.title\n const subtitle = item.subtitle\n const description = item.recap_description\n const body = item.note\n const similarityStr = `${prettyCreatedAt}:${title}:${subtitle}:${description}`\n if (excludeTooSimilar && _similarityStrList.includes(similarityStr)) {\n continue\n }\n const elem = {\n uuid: item.uuid,\n timestamp: timestamp,\n ts: ts,\n type: type,\n body: body,\n prettyCreatedAt: prettyCreatedAt,\n title: title,\n subtitle: subtitle,\n description: description,\n }\n newList.push(elem)\n _similarityStrList.push(similarityStr)\n }\n return newList.sort((a, b) => b.ts - a.ts);\n },\n\n _parseJournalChangeLog({ dataList, excludeTooSimilar = true }) {\n if (!dataList) {\n return []\n }\n let newList = []\n let _similarityStrList = []\n for (let item of dataList) {\n if (!item) {\n continue\n }\n if (!item.timestamp) {\n continue\n }\n const timestamp = new Date(item.timestamp)\n const ts = timestamp.getTime()\n const prettyCreatedAt = dateUtils.formatDateToDDMMYYYYTime({ date: timestamp });\n const title = item.title\n const subtitle = item.subtitle\n const description = item.recap_description\n const similarityStr = `${prettyCreatedAt}:${title}:${subtitle}:${description}`\n if (excludeTooSimilar && _similarityStrList.includes(similarityStr)) {\n continue\n }\n const elem = {\n uuid: item.uuid,\n timestamp: timestamp,\n ts: ts,\n type: item.type,\n prettyCreatedAt: prettyCreatedAt,\n title: title,\n subtitle: subtitle,\n description: description,\n }\n newList.push(elem)\n _similarityStrList.push(similarityStr)\n }\n return newList.sort((a, b) => b.ts - a.ts);\n },\n}\n\nexport default parserUtils\n\nfunction isValidDate(d) {\n return d instanceof Date && !isNaN(d);\n}","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n"],"sourceRoot":""}