@medicus.ai/medicus-report-pdf-generator 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/wellbeing_report_generator.js +1998 -1993
- package/package.json +1 -1
- package/test.js +6 -3
- package/testing-reports/pha/ex1.js +485 -0
- package/testing-reports/pha/ex2.js +116 -0
- package/testing-reports/pha/with-wellbeing-full-data.js +10 -6
- package/testing-reports/pha/with-wellbeing.js +5 -1
|
@@ -1,1994 +1,1999 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const { promisify } = require('util');
|
|
4
|
-
const { JSDOM } = require("jsdom");
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const LocaleService = require('../app/services/localeService.js');
|
|
7
|
-
const i18n = require('../app/i18n_wellbeing.config.js');
|
|
8
|
-
const puppeteer = require("puppeteer");
|
|
9
|
-
const { renderReportItems, find, renderSummary, renderReportSummary, renderHTMLTemplate, renderAllergyClasses } = require("./template.js");
|
|
10
|
-
const { cli } = require("webpack");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var localeService = new LocaleService(i18n);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let OUT_FILE = 'output/nasco-pdf.html';
|
|
17
|
-
let Pdf_file = '';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let debug = true;
|
|
21
|
-
|
|
22
|
-
let debugLog = (val1, val2 = "") => {
|
|
23
|
-
if (debug) {
|
|
24
|
-
console.log(val1, val2);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
// Config object to hold all configuration values
|
|
30
|
-
let config = {
|
|
31
|
-
logo: "",
|
|
32
|
-
title: "",
|
|
33
|
-
bulbIcon: "",
|
|
34
|
-
bulb_icon_font_color: "",
|
|
35
|
-
first_level_color: "",
|
|
36
|
-
second_level_color: "",
|
|
37
|
-
third_level_color: "",
|
|
38
|
-
forth_level_color: "",
|
|
39
|
-
fifth_level_color: "",
|
|
40
|
-
general_font_color: "",
|
|
41
|
-
disclaimer_text_color: "",
|
|
42
|
-
top_box_background: "",
|
|
43
|
-
footer_background: "",
|
|
44
|
-
lifestyleImage: path.resolve(__dirname + '/../assets/wellbeing/images/lifestyle-section.png'),
|
|
45
|
-
mindImage: path.resolve(__dirname + '/../assets/wellbeing/images/mind-section.png'),
|
|
46
|
-
bodyImage: path.resolve(__dirname + '/../assets/wellbeing/images/body-section.png'),
|
|
47
|
-
body_font_color: "",
|
|
48
|
-
list_icons_font_color: "",
|
|
49
|
-
insights_font_color: "",
|
|
50
|
-
section_title_border_color: ""
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Load color theme based on client name
|
|
54
|
-
* @param {string} clientName - Client name (mediclinic, pha, nasco, etc.)
|
|
55
|
-
* @returns {object} Color theme object
|
|
56
|
-
*/
|
|
57
|
-
const loadColorTheme = (clientName = 'default') => {
|
|
58
|
-
if (clientName.toLowerCase() == 'pha') {
|
|
59
|
-
clientName = 'pha';
|
|
60
|
-
}
|
|
61
|
-
const themes = {
|
|
62
|
-
mediclinic: {
|
|
63
|
-
headerText: '#3B3B3B',
|
|
64
|
-
headerBackground: '#f2f5f8',
|
|
65
|
-
headerDivider: '#0092D2',
|
|
66
|
-
footerText: '#B5B5B5',
|
|
67
|
-
listIcon: '#8b8ba7',
|
|
68
|
-
insightPrimary: '#124374',
|
|
69
|
-
insightSecondary: '#000000',
|
|
70
|
-
warningIcon: '#ffc107'
|
|
71
|
-
},
|
|
72
|
-
pha: {
|
|
73
|
-
headerText: '#2C3E50',
|
|
74
|
-
headerBackground: '#ECF0F1',
|
|
75
|
-
headerDivider: '#0F2062',
|
|
76
|
-
footerText: '#95A5A6',
|
|
77
|
-
listIcon: '#7F8C8D',
|
|
78
|
-
insightPrimary: '#0F2062',
|
|
79
|
-
insightSecondary: '#2C3E50',
|
|
80
|
-
warningIcon: '#F39C12'
|
|
81
|
-
},
|
|
82
|
-
nasco: {
|
|
83
|
-
headerText: '#34495E',
|
|
84
|
-
headerBackground: '#EBF5FB',
|
|
85
|
-
headerDivider: '#5DADE2',
|
|
86
|
-
footerText: '#AAB7B8',
|
|
87
|
-
listIcon: '#85929E',
|
|
88
|
-
insightPrimary: '#1F618D',
|
|
89
|
-
insightSecondary: '#1C2833',
|
|
90
|
-
warningIcon: '#F4D03F'
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
};
|
|
94
|
-
return themes[clientName?.toLowerCase()] || themes.mediclinic;
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Load and apply configuration for a specific client
|
|
98
|
-
* @param {string} clientName - The client name to load config for
|
|
99
|
-
* @returns {object} The loaded configuration
|
|
100
|
-
*/
|
|
101
|
-
const loadClientConfig = (clientName = 'default') => {
|
|
102
|
-
if (clientName.toLowerCase() == 'pha') {
|
|
103
|
-
clientName = 'Pha';
|
|
104
|
-
}
|
|
105
|
-
const pathFile = path.resolve(__dirname + '/../config/' + clientName + '.json');
|
|
106
|
-
let clientConfig = require('../config/default.json');
|
|
107
|
-
|
|
108
|
-
if (fs.existsSync(pathFile) && clientName !== 'default') {
|
|
109
|
-
clientConfig = require('../config/' + clientName + '.json');
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Map config values with defaults
|
|
113
|
-
config.logo = clientConfig['logo'] || "";
|
|
114
|
-
config.labs_logos = clientConfig['labs-logo'] || [];
|
|
115
|
-
config.title = clientConfig['title'] || "";
|
|
116
|
-
config.bulbIcon = clientConfig['bulb_icon'] || "";
|
|
117
|
-
config.bulb_icon_font_color = clientConfig['bulb_icon_font_color'] || "";
|
|
118
|
-
config.first_level_color = clientConfig['first-level-color'] || "";
|
|
119
|
-
config.second_level_color = clientConfig['second-level-color'] || "";
|
|
120
|
-
config.third_level_color = clientConfig['third-level-color'] || "";
|
|
121
|
-
config.forth_level_color = clientConfig['forth-level-color'] || "";
|
|
122
|
-
config.fifth_level_color = clientConfig['fifth-level-color'] || "";
|
|
123
|
-
config.general_font_color = clientConfig['general-font-color'] || "";
|
|
124
|
-
config.disclaimer_text_color = clientConfig['disclaimer-text-color'] || "";
|
|
125
|
-
config.top_box_background = clientConfig['top-box-background'] || "";
|
|
126
|
-
config.footer_background = clientConfig['footer-background'] || "";
|
|
127
|
-
config.footer_border_color = clientConfig['footer-border-color'] || clientConfig['section-title-border-color'] || "";
|
|
128
|
-
|
|
129
|
-
// Handle image paths with fallbacks
|
|
130
|
-
config.lifestyleImage = clientConfig['lifestyle_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/lifestyle-section.png');
|
|
131
|
-
config.mindImage = clientConfig['mind_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/mind-section.png');
|
|
132
|
-
config.bodyImage = clientConfig['body_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/body-section.png');
|
|
133
|
-
config.body_font_color = clientConfig['body_font_color'] || "";
|
|
134
|
-
config.list_icons_font_color = clientConfig['list_icons_font_color'] || "";
|
|
135
|
-
config.insights_font_color = clientConfig['insights_font_color'] || "";
|
|
136
|
-
|
|
137
|
-
config.score_header_color = clientConfig['score-header-color'] || clientConfig['first-level-color'] || "";
|
|
138
|
-
config.score_description_color = clientConfig['score-description-color'] || clientConfig['first-level-color'] || "";
|
|
139
|
-
config.svg_icon_color = clientConfig['svg-icon-color'] || clientConfig['first-level-color'] || "";
|
|
140
|
-
config.low_score_text_color = clientConfig['low-score-text-color'] || clientConfig['first-level-color'] || "";
|
|
141
|
-
config.section_title_border_color =
|
|
142
|
-
clientConfig['section-title-border-color'] ||
|
|
143
|
-
(clientConfig['corporate_report'] ?
|
|
144
|
-
clientConfig['corporate_report']['section_title_border_color'] : null) ||
|
|
145
|
-
clientConfig['forth-level-color'] ||
|
|
146
|
-
"";
|
|
147
|
-
config.first_section_scores_border_color = clientConfig['first-section-scores-border-color'] || clientConfig['fifth-level-color'] || "";
|
|
148
|
-
|
|
149
|
-
config.colors = loadColorTheme(clientName);
|
|
150
|
-
|
|
151
|
-
return config;
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
const icons = {
|
|
155
|
-
"wellbeing_element_alcohol": "M 10.667969 5.144531 L 19.332031 5.144531 C 19.5 5.144531 19.65625 5.238281 19.710938 5.375 C 21.007812 8.671875 21.394531 10.714844 21.394531 12.316406 C 21.394531 15.285156 18.53125 17.695312 15 17.695312 C 11.46875 17.695312 8.605469 15.285156 8.605469 12.316406 C 8.605469 10.714844 8.988281 8.671875 10.289062 5.375 C 10.34375 5.238281 10.5 5.144531 10.667969 5.144531 Z M 9.804688 12.316406 C 9.804688 14.648438 11.785156 16.09375 15 16.339844 C 17.796875 16.550781 20.195312 14.71875 20.195312 12.316406 L 20.195312 11.929688 L 9.804688 11.929688 Z M 9.804688 12.316406 M 17.796875 24.140625 L 17.398438 24.140625 C 16.296875 24.140625 15.398438 23.378906 15.398438 22.445312 L 15.394531 18.28125 C 15.394531 17.945312 15.6875 17.667969 16.078125 17.613281 C 17.324219 17.433594 18.445312 16.953125 19.332031 16.261719 C 19.332031 16.261719 18.003906 17.015625 15 17.015625 C 11.996094 17.015625 10.667969 16.261719 10.667969 16.261719 C 11.558594 16.953125 12.675781 17.433594 13.921875 17.613281 C 14.3125 17.667969 14.605469 17.945312 14.601562 18.28125 L 14.601562 22.445312 C 14.601562 23.378906 13.703125 24.140625 12.601562 24.140625 L 12.203125 24.140625 C 11.980469 24.140625 11.804688 24.292969 11.804688 24.480469 C 11.804688 24.667969 11.980469 24.820312 12.203125 24.820312 L 17.796875 24.820312 C 18.019531 24.820312 18.195312 24.667969 18.195312 24.480469 C 18.195312 24.292969 18.019531 24.140625 17.796875 24.140625 Z M 17.796875 24.140625",
|
|
156
|
-
"wellbeing_element_blue_mood": "M 19.351562 7.859375 C 19.640625 6.664062 20.308594 5.144531 21.085938 5.144531 C 22.121094 5.144531 22.972656 7.855469 22.972656 8.882812 C 22.972656 9.371094 22.78125 9.8125 22.472656 10.148438 C 24.007812 11.851562 24.859375 14.066406 24.855469 16.363281 C 24.855469 21.527344 20.636719 25.714844 15.429688 25.714844 C 10.222656 25.714844 6 21.527344 6 16.363281 C 6 11.199219 10.222656 7.011719 15.429688 7.011719 C 16.828125 7.011719 18.15625 7.316406 19.351562 7.859375 Z M 12.191406 15.734375 C 12.636719 15.734375 13 15.375 13 14.933594 C 13 14.488281 12.636719 14.128906 12.191406 14.128906 C 11.75 14.128906 11.386719 14.488281 11.382812 14.933594 C 11.382812 15.375 11.746094 15.734375 12.191406 15.734375 Z M 18.835938 15.734375 C 19.28125 15.734375 19.644531 15.375 19.644531 14.933594 C 19.644531 14.488281 19.28125 14.128906 18.835938 14.128906 C 18.394531 14.128906 18.03125 14.488281 18.027344 14.933594 C 18.027344 15.375 18.390625 15.734375 18.835938 15.734375 Z M 12.929688 20.742188 C 13.726562 20.632812 14.59375 20.574219 15.53125 20.574219 C 16.464844 20.574219 17.3125 20.628906 18.066406 20.742188 C 17.785156 20.328125 17.5 20.023438 17.207031 19.835938 C 16.765625 19.550781 16.429688 19.3125 15.601562 19.3125 C 14.773438 19.3125 14.234375 19.554688 13.777344 19.835938 C 13.472656 20.019531 13.1875 20.324219 12.929688 20.742188 Z M 19.351562 7.859375 C 19.253906 8.257812 19.199219 8.625 19.199219 8.882812 C 19.199219 9.910156 20.046875 10.753906 21.085938 10.753906 C 21.632812 10.753906 22.128906 10.519531 22.472656 10.148438 C 21.601562 9.175781 20.539062 8.398438 19.351562 7.859375 Z M 9.941406 13.4375 L 10.421875 14.148438 L 12.554688 12.710938 L 12.074219 12 Z M 18.355469 12.832031 L 20.488281 14.269531 L 20.96875 13.558594 L 18.835938 12.121094 Z M 18.355469 12.832031",
|
|
157
|
-
"wellbeing_element_bodymeasurements": "M 14.019531 15.1875 L 16.433594 14.402344 L 15.875 12.6875 C 15.589844 13.550781 14.96875 14.398438 14.074219 15.144531 Z M 14.019531 15.1875 M 12.808594 23.019531 L 13.878906 22.667969 L 13.476562 21.433594 C 13.378906 21.125 13.546875 20.796875 13.851562 20.699219 C 14.15625 20.601562 14.484375 20.765625 14.582031 21.070312 L 14.984375 22.3125 L 16.023438 21.972656 L 16.171875 21.925781 L 15.347656 19.390625 C 15.246094 19.085938 15.414062 18.757812 15.71875 18.65625 C 16.023438 18.558594 16.351562 18.722656 16.453125 19.03125 L 17.277344 21.566406 L 17.949219 21.347656 L 18.460938 21.179688 L 18.058594 19.941406 C 17.960938 19.636719 18.128906 19.308594 18.433594 19.210938 C 18.738281 19.109375 19.066406 19.277344 19.164062 19.582031 L 19.566406 20.820312 L 20.753906 20.4375 L 19.929688 17.902344 C 19.859375 17.703125 19.902344 17.480469 20.042969 17.320312 C 20.183594 17.160156 20.398438 17.089844 20.605469 17.136719 C 20.808594 17.183594 20.976562 17.339844 21.035156 17.542969 L 21.859375 20.078125 L 23.042969 19.691406 L 22.640625 18.453125 C 22.542969 18.148438 22.710938 17.820312 23.015625 17.722656 C 23.320312 17.621094 23.648438 17.789062 23.746094 18.09375 L 24.148438 19.332031 L 25.203125 18.988281 C 25.644531 18.84375 25.890625 18.367188 25.746094 17.925781 L 24.292969 13.460938 C 24.226562 13.246094 24.074219 13.070312 23.875 12.96875 C 23.675781 12.867188 23.441406 12.847656 23.230469 12.917969 L 11.238281 16.8125 L 10.835938 16.945312 L 10.433594 17.074219 C 8.917969 17.503906 7.394531 17.578125 6.101562 17.289062 C 5.386719 17.125 4.773438 16.859375 4.285156 16.492188 L 4.261719 16.476562 L 5.410156 20.011719 L 5.875 21.445312 C 6.496094 23.355469 9.601562 24.058594 12.808594 23.019531 Z M 12.808594 23.019531 M 10.375 16.367188 C 10.457031 16.34375 10.539062 16.320312 10.625 16.292969 C 13.015625 15.515625 14.792969 13.984375 15.28125 12.464844 C 15.449219 11.949219 15.464844 11.429688 15.308594 10.945312 C 14.6875 9.035156 11.582031 8.332031 8.375 9.375 C 5.164062 10.417969 3.066406 12.8125 3.6875 14.722656 C 3.847656 15.207031 4.164062 15.613281 4.601562 15.933594 C 5.851562 16.84375 8.066406 17.054688 10.375 16.367188 Z M 9 11.289062 C 10.425781 10.824219 11.8125 11.136719 12.085938 11.988281 C 12.132812 12.128906 12.148438 12.273438 12.128906 12.417969 C 12.121094 12.5 12.101562 12.582031 12.078125 12.664062 C 11.859375 13.34375 11.066406 14.027344 10 14.371094 C 9.914062 14.398438 9.832031 14.425781 9.75 14.445312 C 8.773438 14.703125 7.847656 14.597656 7.320312 14.210938 C 7.128906 14.078125 6.988281 13.886719 6.910156 13.667969 C 6.632812 12.820312 7.566406 11.753906 9 11.289062 Z M 9 11.289062",
|
|
158
|
-
"wellbeing_element_caffinated_beverages": "M9 14.596h12.686c-.028 4.273-.266 7.221-.713 8.844-.447 1.623-1.51 3.396-3.19 5.32H12.93c-1.668-1.702-2.712-3.307-3.13-4.816-.42-1.51-.685-4.625-.799-9.348z M16.603 12.53c-.172-.568-.003-1.138.506-1.709.764-.856.48-.428.807-.819.217-.26.36-.857.43-1.79M13.965 11.984c-.274-.878-.156-1.602.353-2.173.764-.857 1.71-1.596 2.036-1.987.218-.26.277-.869.177-1.824 M21.301 18.507c.904-.801 1.639-1.144 2.206-1.028.851.172 1.268 1.028 1.17 1.862-.097.834-.059 1.142-.982 1.952-.615.54-1.688 1.27-3.22 2.194 M10.504 25.592l9.622-.114a33.97 33.97 0 0 1-.92 1.508c-.215.323-.659.95-1.332 1.88h-5.01c-.647-.735-1.112-1.3-1.396-1.694a15.104 15.104 0 0 1-.964-1.58z",
|
|
159
|
-
"wellbeing_element_cognitive_functions": "M 20.410156 24.855469 L 13.023438 24.855469 L 13.023438 21.65625 L 11.386719 21.957031 C 10.527344 21.917969 9.972656 21.820312 9.734375 21.65625 C 9.496094 21.492188 9.375 20.324219 9.375 18.148438 C 9.054688 18.164062 8.804688 18.164062 8.632812 18.148438 C 8.226562 18.109375 7.734375 18.035156 7.734375 17.613281 C 7.734375 16.921875 8.28125 15.347656 9.375 12.890625 C 9.375 9.363281 12.019531 6.453125 15.429688 6.050781 C 15.695312 6.015625 15.96875 6 16.246094 6 C 20.042969 6 23.121094 9.085938 23.121094 12.890625 C 23.121094 15.128906 22.058594 17.117188 20.410156 18.375 Z M 16.871094 14.574219 L 17.582031 14.992188 C 19.117188 15.898438 21.082031 14.835938 21.140625 13.050781 C 21.140625 13.011719 21.140625 12.96875 21.140625 12.929688 C 21.160156 10.433594 19.289062 8.335938 16.871094 8.027344 C 15.785156 7.886719 14.683594 8.113281 13.742188 8.675781 C 12.207031 9.597656 12.226562 11.839844 13.769531 12.746094 Z M 16.871094 14.574219",
|
|
160
|
-
"wellbeing_element_diet": "M 15.421875 19.214844 C 12.25 19.214844 9.382812 17.863281 7.285156 15.652344 L 5.144531 17.90625 C 7.753906 20.660156 11.394531 22.375 15.421875 22.375 C 19.445312 22.375 23.082031 20.660156 25.695312 17.90625 L 23.554688 15.652344 C 21.457031 17.863281 18.585938 19.214844 15.417969 19.214844 Z M 15.421875 19.214844 M 21.585938 17.128906 C 19.765625 18.363281 17.617188 19.019531 15.417969 19.023438 C 13.105469 19.023438 10.949219 18.300781 9.136719 17.046875 C 9.105469 17.097656 9.054688 17.132812 9.007812 17.132812 C 8.921875 17.132812 8.839844 17.03125 8.839844 16.929688 L 8.839844 16.835938 C 8.28125 16.421875 7.761719 15.960938 7.285156 15.457031 L 15.417969 6.886719 L 23.554688 15.457031 C 23.011719 16.03125 22.414062 16.546875 21.769531 17 C 21.742188 17.074219 21.679688 17.132812 21.617188 17.132812 C 21.605469 17.132812 21.59375 17.128906 21.585938 17.128906 Z M 9.140625 17.046875 C 9.164062 17.011719 9.175781 16.96875 9.175781 16.925781 L 9.175781 16.316406 C 9.175781 16.214844 9.089844 16.113281 9.007812 16.113281 C 8.882812 16.164062 8.839844 16.214844 8.839844 16.316406 L 8.839844 16.835938 C 8.9375 16.90625 9.035156 16.976562 9.136719 17.046875 Z M 11.945312 16.316406 L 11.945312 16.929688 C 11.945312 17.03125 12.03125 17.132812 12.113281 17.132812 C 12.199219 17.132812 12.28125 17.03125 12.28125 16.929688 L 12.28125 16.316406 C 12.28125 16.214844 12.199219 16.113281 12.113281 16.113281 C 12.03125 16.164062 11.945312 16.214844 11.945312 16.316406 Z M 15.113281 16.316406 L 15.113281 16.929688 C 15.113281 17.03125 15.199219 17.132812 15.28125 17.132812 C 15.367188 17.132812 15.449219 17.03125 15.449219 16.929688 L 15.449219 16.316406 C 15.449219 16.214844 15.367188 16.113281 15.28125 16.113281 C 15.199219 16.164062 15.113281 16.214844 15.113281 16.316406 Z M 18.28125 16.316406 L 18.28125 16.929688 C 18.28125 17.03125 18.363281 17.132812 18.449219 17.132812 C 18.53125 17.132812 18.617188 17.03125 18.617188 16.929688 L 18.617188 16.316406 C 18.617188 16.214844 18.53125 16.113281 18.449219 16.113281 C 18.363281 16.164062 18.28125 16.214844 18.28125 16.316406 Z M 21.585938 17.128906 L 21.769531 17 C 21.78125 16.976562 21.785156 16.953125 21.785156 16.929688 L 21.785156 16.316406 C 21.785156 16.214844 21.699219 16.113281 21.617188 16.113281 C 21.53125 16.164062 21.449219 16.214844 21.449219 16.316406 L 21.449219 16.929688 C 21.449219 17.019531 21.511719 17.105469 21.585938 17.128906 Z M 10.394531 14.476562 L 10.394531 15.035156 C 10.394531 15.136719 10.476562 15.238281 10.5625 15.238281 C 10.644531 15.238281 10.730469 15.136719 10.730469 15.035156 L 10.730469 14.425781 C 10.730469 14.320312 10.644531 14.21875 10.5625 14.21875 C 10.476562 14.269531 10.394531 14.375 10.394531 14.476562 Z M 13.558594 14.476562 L 13.558594 15.035156 C 13.558594 15.136719 13.644531 15.238281 13.726562 15.238281 C 13.8125 15.238281 13.894531 15.136719 13.894531 15.035156 L 13.894531 14.425781 C 13.894531 14.320312 13.8125 14.21875 13.726562 14.21875 C 13.621094 14.257812 13.554688 14.363281 13.558594 14.476562 Z M 16.726562 14.476562 L 16.726562 15.035156 C 16.726562 15.136719 16.8125 15.238281 16.894531 15.238281 C 16.980469 15.238281 17.0625 15.136719 17.0625 15.035156 L 17.0625 14.425781 C 17.0625 14.320312 16.980469 14.21875 16.894531 14.21875 C 16.789062 14.257812 16.722656 14.363281 16.726562 14.476562 Z M 19.894531 14.476562 L 19.894531 15.035156 C 19.894531 15.136719 19.976562 15.238281 20.0625 15.238281 C 20.144531 15.238281 20.230469 15.136719 20.230469 15.035156 L 20.230469 14.425781 C 20.230469 14.320312 20.144531 14.21875 20.0625 14.21875 C 19.976562 14.21875 19.894531 14.375 19.894531 14.476562 Z M 11.945312 12.585938 L 11.945312 13.195312 C 11.945312 13.296875 12.03125 13.402344 12.113281 13.402344 C 12.199219 13.402344 12.28125 13.296875 12.28125 13.195312 L 12.28125 12.585938 C 12.28125 12.484375 12.199219 12.382812 12.113281 12.382812 C 12.03125 12.433594 11.945312 12.484375 11.945312 12.585938 Z M 15.113281 12.585938 L 15.113281 13.195312 C 15.113281 13.296875 15.199219 13.402344 15.28125 13.402344 C 15.367188 13.402344 15.449219 13.296875 15.449219 13.195312 L 15.449219 12.585938 C 15.449219 12.484375 15.367188 12.382812 15.28125 12.382812 C 15.199219 12.433594 15.113281 12.484375 15.113281 12.585938 Z M 18.28125 12.585938 L 18.28125 13.195312 C 18.28125 13.296875 18.363281 13.402344 18.449219 13.402344 C 18.53125 13.402344 18.617188 13.296875 18.617188 13.195312 L 18.617188 12.585938 C 18.617188 12.484375 18.53125 12.382812 18.449219 12.382812 C 18.363281 12.433594 18.28125 12.484375 18.28125 12.585938 Z M 13.558594 10.746094 L 13.558594 11.359375 C 13.558594 11.460938 13.644531 11.5625 13.726562 11.5625 C 13.8125 11.5625 13.894531 11.460938 13.894531 11.359375 L 13.894531 10.746094 C 13.894531 10.644531 13.8125 10.542969 13.726562 10.542969 C 13.601562 10.542969 13.558594 10.644531 13.558594 10.746094 Z M 16.726562 10.746094 L 16.726562 11.359375 C 16.726562 11.460938 16.8125 11.5625 16.894531 11.5625 C 16.980469 11.5625 17.0625 11.460938 17.0625 11.359375 L 17.0625 10.746094 C 17.0625 10.644531 16.980469 10.542969 16.894531 10.542969 C 16.769531 10.542969 16.726562 10.644531 16.726562 10.746094 Z M 16.726562 10.746094",
|
|
161
|
-
"wellbeing_element_energy_drinks": "M 19.925781 8.023438 L 19.925781 19.921875 L 9.429688 19.921875 L 9.429688 8.023438 Z M 19.925781 5.644531 L 9.429688 5.644531 L 9.429688 5.472656 C 9.429688 4.816406 9.960938 4.285156 10.613281 4.285156 L 18.742188 4.285156 C 19.394531 4.285156 19.925781 4.816406 19.925781 5.472656 Z M 19.925781 22.128906 L 19.925781 22.304688 C 19.925781 22.957031 19.394531 23.488281 18.742188 23.488281 L 10.613281 23.488281 C 9.960938 23.488281 9.429688 22.957031 9.429688 22.304688 L 9.429688 22.128906 Z M 13.484375 18.050781 C 13.300781 18.050781 13.152344 18.199219 13.152344 18.378906 L 13.152344 18.566406 C 13.152344 18.746094 13.300781 18.894531 13.484375 18.894531 L 16.210938 18.894531 C 16.394531 18.894531 16.539062 18.746094 16.539062 18.566406 L 16.539062 18.378906 C 16.539062 18.199219 16.394531 18.050781 16.210938 18.050781 Z M 14.761719 16.863281 C 16.773438 16.863281 18.402344 15.261719 18.402344 13.292969 C 18.402344 11.320312 16.773438 9.722656 14.761719 9.722656 C 12.75 9.722656 11.121094 11.320312 11.121094 13.292969 C 11.121094 15.265625 12.75 16.863281 14.761719 16.863281 Z M 14.761719 16.863281 M 12.644531 13.917969 L 14.90625 13.917969 L 14.199219 15.839844 L 17.046875 12.742188 L 14.847656 12.742188 L 15.445312 10.402344 Z M 12.644531 13.917969",
|
|
162
|
-
"wellbeing_element_heart_health": "M 1.000781 17.860937 L 7.4375 17.860937 L 8.629687 15.711719 L 11.347656 24.325 L 12.966406 10.483594 L 15.678906 17.860937 L 23.220312 17.860937 M 17.332031 7.757812 C 17.332031 7.757812 17.804688 7.277344 18.070312 7.117188 C 18.441406 6.882812 18.859375 6.730469 19.292969 6.664062 C 19.75 6.601562 20.21875 6.636719 20.660156 6.765625 C 21.113281 6.894531 21.53125 7.117188 21.886719 7.421875 C 22.410156 7.828125 22.808594 8.371094 23.035156 8.988281 C 23.359375 10.257812 23.144531 11.601562 22.445312 12.703125 C 22.132812 13.191406 21.765625 13.636719 21.347656 14.039062 L 17.300781 18.195312 L 12.808594 13.488281 C 12.28125 12.917969 11.894531 12.234375 11.675781 11.488281 C 11.515625 10.988281 11.453125 10.457031 11.488281 9.929688 C 11.503906 9.367188 11.675781 8.816406 11.988281 8.34375 C 12.242188 7.914062 12.589844 7.542969 13.003906 7.253906 C 13.398438 6.953125 13.867188 6.765625 14.359375 6.703125 C 14.847656 6.609375 15.351562 6.632812 15.832031 6.765625 C 16.230469 6.894531 16.601562 7.109375 16.914062 7.390625 C 16.925781 7.402344 17.332031 7.757812 17.332031 7.757812 Z M 17.332031 7.757812",
|
|
163
|
-
"wellbeing_element_hobbies": "M 13.855469 14 L 22.285156 6.855469 L 23.125 7.695312 L 23.964844 8.539062 L 16.824219 16.96875 Z M 13.441406 14.410156 L 13.390625 14.464844 L 13.429688 14.398438 Z M 13.136719 14.859375 L 14.550781 16.273438 L 15.9375 17.664062 L 12.550781 19.828125 L 10.972656 18.25 Z M 8.199219 20.105469 C 9.089844 19.214844 10.605469 18.640625 10.605469 18.640625 L 11.394531 19.429688 L 6.859375 23.964844 L 8.601562 21.171875 L 11.394531 19.429688 L 12.183594 20.21875 C 12.183594 20.21875 11.609375 21.734375 10.71875 22.625 C 9.269531 24.074219 6.859375 23.964844 6.859375 23.964844 C 6.859375 23.964844 6.75 21.554688 8.199219 20.105469 Z M 8.199219 20.105469",
|
|
164
|
-
"wellbeing_element_hydration_level": "M 13.71875 6.765625 L 15.96875 6.765625 L 15.96875 7.625 L 13.71875 7.625 Z M 11.792969 15.535156 L 17.894531 15.535156 C 18.253906 15.535156 18.542969 15.828125 18.542969 16.1875 L 18.542969 25.0625 C 18.542969 25.421875 18.253906 25.714844 17.894531 25.714844 L 11.792969 25.714844 C 11.433594 25.714844 11.144531 25.421875 11.144531 25.0625 L 11.144531 16.1875 C 11.144531 15.828125 11.433594 15.535156 11.792969 15.535156 Z M 11.789062 14.238281 L 17.84375 14.238281 C 18.113281 14.238281 18.328125 14.457031 18.328125 14.722656 C 18.328125 14.992188 18.113281 15.210938 17.84375 15.210938 L 11.789062 15.210938 C 11.523438 15.210938 11.304688 14.992188 11.304688 14.722656 C 11.304688 14.457031 11.523438 14.238281 11.789062 14.238281 Z M 11.789062 14.238281 M 13.613281 6.875 L 16.074219 6.875 C 16.136719 6.875 16.183594 6.925781 16.183594 6.984375 L 16.183594 7.09375 C 16.183594 7.15625 16.136719 7.203125 16.074219 7.203125 L 13.609375 7.203125 C 13.582031 7.203125 13.554688 7.191406 13.535156 7.171875 C 13.511719 7.152344 13.503906 7.125 13.503906 7.09375 L 13.503906 6.984375 C 13.503906 6.925781 13.550781 6.875 13.609375 6.875 Z M 15.660156 12.578125 L 14.996094 11.355469 L 14.335938 12.523438 C 14.214844 12.675781 14.144531 12.863281 14.144531 13.058594 C 14.144531 13.523438 14.519531 13.898438 14.976562 13.898438 C 15.4375 13.898438 15.808594 13.523438 15.808594 13.058594 C 15.808594 12.886719 15.757812 12.71875 15.660156 12.578125 Z M 11.507812 10.628906 L 18.21875 10.628906 C 18.265625 10.777344 18.296875 10.894531 18.308594 10.976562 C 18.324219 11.058594 18.34375 11.207031 18.363281 11.425781 L 18.363281 14.886719 L 11.25 14.886719 L 11.25 11.425781 C 11.277344 11.273438 11.3125 11.125 11.355469 10.976562 C 11.382812 10.898438 11.433594 10.78125 11.507812 10.628906 Z M 13.828125 5.144531 L 15.859375 5.144531 C 16.039062 5.144531 16.183594 5.289062 16.183594 5.46875 L 16.183594 6.765625 L 13.5 6.765625 L 13.5 5.46875 C 13.5 5.289062 13.648438 5.144531 13.828125 5.144531 Z M 13.707031 7.417969 C 13.066406 7.96875 12.621094 8.410156 12.375 8.734375 C 12.128906 9.058594 11.824219 9.601562 11.464844 10.371094 L 18.207031 10.371094 C 17.855469 9.628906 17.550781 9.082031 17.28125 8.734375 C 17.011719 8.382812 16.566406 7.945312 15.945312 7.417969 Z M 13.707031 7.417969",
|
|
165
|
-
"wellbeing_element_kidney_health": "M 16.621094 10.972656 C 17.847656 10.933594 18.714844 10.628906 19.226562 10.058594 C 19.984375 9.203125 19.824219 7.226562 19.59375 6.820312 C 19.363281 6.414062 17.742188 4.015625 15.476562 4.3125 C 13.210938 4.609375 10.972656 6.042969 10.121094 7.226562 C 9.273438 8.414062 8.019531 9.214844 7.777344 12.003906 C 7.539062 14.792969 8.019531 17.359375 8.476562 18.035156 C 8.933594 18.710938 10.3125 21.984375 13.359375 21.984375 C 15.007812 21.984375 17.183594 20.71875 17.355469 19.3125 C 17.527344 17.902344 17.476562 18.082031 17.183594 17.261719 C 16.984375 16.707031 16.550781 16.160156 15.886719 15.621094 C 16.671875 14.5625 17.101562 13.84375 17.183594 13.46875 C 17.230469 13.246094 17.328125 12.808594 17.183594 12.253906 C 17.117188 12.007812 16.929688 11.582031 16.621094 10.972656 Z M 16.621094 10.972656 M 24.458984 26.965495 L 22.595052 26.965495 C 23.40625 23.319661 23.625 20.890625 23.255859 19.678385 C 22.891276 18.466146 21.770182 17.481771 19.901693 16.711589 C 20.047526 16.410807 20.152344 16.192057 20.207031 16.050781 C 20.266276 15.909505 20.302734 15.772786 20.316406 15.64974 L 20.352865 15.102865 C 21.296224 15.426432 21.947917 15.686198 22.317057 15.886719 C 23.424479 16.492839 24.135417 17.290365 24.454427 18.147135 C 24.741536 18.908203 24.946615 20.270833 24.891927 22.21224 C 24.864583 23.091797 24.71875 24.673177 24.458984 26.965495 Z M 19.445964 13.316406 C 19.582682 13.580729 19.678385 13.772135 19.728516 13.886068 C 19.80599 14.054688 19.924479 14.33724 19.947266 14.455729 C 19.992839 14.697266 20.02474 14.911458 20.042969 15.102865 C 21.127604 15.011719 21.938802 14.902344 22.476562 14.779297 C 23.283203 14.597005 25.730469 13.804036 25.776042 13.667318 C 25.817057 13.535156 25.871745 13.083984 25.534505 12.774089 C 25.306641 12.564453 25.087891 12.464193 24.878255 12.46875 C 23.880208 12.769531 23.046224 12.988281 22.371745 13.115885 C 21.701823 13.248047 20.726562 13.316406 19.445964 13.316406 Z M 19.445964 13.316406",
|
|
166
|
-
"wellbeing_element_liver_health": "M 4.766927 26.792318 C 4.078776 26.382161 3.609375 25.315755 3.367839 23.602214 C 3.007812 21.027344 2.761719 18.580078 3.367839 15.759115 C 3.978516 12.942708 3.796224 11.566406 6.166016 10.290365 C 8.535807 9.014323 12.546224 8.371745 13.753906 8.421875 C 14.966146 8.467448 20.00651 8.877604 19.938151 8.96875 C 19.869792 9.06901 20.07487 11.753255 19.550781 14.282552 C 19.022135 16.811849 18.370443 19.85612 17.253906 20.749349 C 16.511068 21.346354 15.14388 21.829427 13.147786 22.198568 C 11.420573 22.731771 10.272135 23.201172 9.702474 23.602214 C 8.854818 24.203776 6.507812 26.03125 6.166016 26.409505 C 5.938151 26.664714 5.46875 26.792318 4.766927 26.792318 Z M 20.498698 8.836589 C 20.722005 10.185547 20.722005 11.671224 20.498698 13.289062 C 20.166016 15.718099 19.085938 18.370443 19.095052 18.566406 C 19.099609 18.76237 21.323568 18.566406 21.988932 18.370443 C 22.658854 18.169922 24.568359 17.253906 25.365885 16.360677 C 26.163411 15.467448 28.369141 14.241536 28.861328 13.990885 C 29.353516 13.740234 31.171875 13.07487 31.363281 12.167969 C 31.554688 11.261068 28.856771 10.404297 28.432943 10.326823 C 28.004557 10.249349 24.791667 9.35612 24.294922 9.337891 C 23.966797 9.324219 22.69987 9.155599 20.498698 8.836589 Z M 20.498698 8.836589 M 15.644531 15.996094 L 15.644531 16.730469 C 15.644531 17.1875 15.683594 17.6875 15.855469 17.582031 C 16.023438 17.472656 16.242188 16.875 16.335938 15.996094 C 16.429688 15.121094 17.550781 12.644531 17.6875 10.984375 C 17.78125 9.894531 17.78125 8.796875 17.6875 7.707031 C 20.664062 8.046875 22.53125 8.335938 23.28125 8.574219 C 24.410156 8.929688 19.304688 7.113281 17.6875 6.988281 C 16.464844 6.898438 13.789062 6.808594 12.058594 6.890625 C 11.507812 6.917969 10.710938 7.113281 10.453125 7.199219 C 9.675781 7.449219 13.367188 7.214844 15.339844 7.472656 C 16.449219 7.617188 16.859375 7.472656 16.953125 7.632812 C 17.042969 7.796875 16.988281 8.421875 16.953125 9.085938 C 16.910156 9.816406 16.949219 10.585938 16.839844 10.984375 C 16.757812 11.277344 16.785156 12.078125 16.496094 13.175781 C 16.363281 13.695312 16.078125 14.632812 15.644531 15.996094 Z M 7.652344 20.660156 C 7.949219 20.964844 8.214844 21.191406 8.445312 21.339844 C 8.792969 21.5625 9.652344 21.625 9.988281 21.339844 C 10.324219 21.054688 10.820312 20.269531 10.726562 19.738281 C 10.664062 19.382812 10.582031 19.207031 10.476562 19.207031 C 9.738281 19.398438 9.230469 19.574219 8.964844 19.738281 C 8.695312 19.898438 8.257812 20.207031 7.652344 20.660156 Z M 7.652344 20.660156",
|
|
167
|
-
"wellbeing_element_lungs_health": "M 17.804688 16.601562 C 18.042969 20.695312 18.066406 22.429688 17.871094 21.804688 C 17.675781 21.179688 17.335938 18.4375 16.859375 13.585938 L 16.941406 12.019531 C 16.980469 11.402344 16.996094 11.027344 17 10.894531 C 17 10.695312 17.460938 10.246094 17.867188 10.246094 C 20.769531 10.246094 23.761719 13.402344 23.609375 16.316406 C 23.507812 19.042969 23.433594 20.492188 23.382812 20.664062 C 23.257812 21.0625 23.144531 22.21875 22.484375 22.808594 C 21.695312 23.519531 20.617188 23.652344 20.40625 23.640625 C 19.824219 23.609375 18.949219 23.5625 17.78125 23.503906 C 16.84375 23.453125 16.125 22.652344 16.171875 21.714844 L 16.542969 14.609375 C 17.34375 14.941406 17.847656 15.738281 17.804688 16.601562 Z M 13.484375 16.625 C 13.230469 20.703125 13.203125 22.429688 13.40625 21.808594 C 13.605469 21.183594 13.957031 18.457031 14.457031 13.617188 L 14.375 12.0625 C 14.347656 11.6875 14.328125 11.3125 14.316406 10.941406 C 14.316406 10.742188 13.84375 10.296875 13.425781 10.296875 C 10.453125 10.300781 7.386719 13.445312 7.539062 16.347656 C 7.636719 19.066406 7.710938 20.507812 7.765625 20.679688 C 7.890625 21.078125 8.007812 22.226562 8.679688 22.816406 C 9.484375 23.523438 10.589844 23.652344 10.808594 23.640625 L 13.492188 23.5 C 14.449219 23.449219 15.195312 22.648438 15.144531 21.71875 L 14.773438 14.640625 C 13.980469 14.960938 13.4375 15.742188 13.484375 16.625 Z M 13.484375 16.625 M 8.96875 16.15625 L 8.96875 22.253906 L 13.5 22.253906 L 13.5 20.5625 L 12.105469 19.207031 L 12.105469 17.851562 L 12.113281 16.496094 C 12.191406 15.511719 12.699219 14.613281 13.5 14.035156 L 13.5 11.753906 C 11 11.753906 8.96875 13.726562 8.96875 16.15625 Z M 14.890625 6.855469 L 16.285156 6.855469 L 16.285156 9.972656 L 14.890625 9.972656 Z M 14.890625 6.855469 M 15.589844 13.359375 C 14.835938 13.355469 14.105469 13.59375 13.5 14.039062 C 12.699219 14.613281 12.195312 15.511719 12.113281 16.496094 L 12.105469 17.851562 L 12.105469 19.207031 C 12.273438 19.496094 12.453125 19.730469 12.636719 19.910156 C 12.824219 20.089844 13.109375 20.304688 13.5 20.5625 L 13.5 16.746094 C 13.5 15.863281 14.082031 15.109375 14.890625 14.828125 C 15.109375 14.753906 15.34375 14.710938 15.589844 14.710938 Z M 15.589844 13.359375 M 19.0625 16.496094 C 18.984375 15.511719 18.480469 14.613281 17.679688 14.035156 C 17.265625 13.734375 16.789062 13.523438 16.285156 13.425781 L 16.285156 9.382812 L 14.890625 9.382812 L 14.890625 13.425781 C 15.117188 13.378906 15.058594 13.730469 15.296875 13.730469 L 15.589844 14.710938 C 15.832031 14.710938 16.066406 14.753906 16.285156 14.828125 C 17.097656 15.109375 17.679688 15.863281 17.679688 16.746094 L 17.679688 20.5625 C 18.132812 20.292969 18.445312 20.078125 18.617188 19.910156 C 18.789062 19.742188 18.941406 19.507812 19.074219 19.207031 L 19.074219 17.851562 Z M 19.0625 16.496094",
|
|
168
|
-
"wellbeing_element_physical_activity": "M18.593 19.85c-.759 0-1.373-.641-1.373-1.432 0-.79.614-1.432 1.373-1.432v2.864z M1.407 19.85c-.758 0-1.373-.641-1.373-1.432 0-.79.615-1.432 1.373-1.432v2.864zM6.816 19.037c-.445 0-.814-.366-.833-.834a4.832 4.832 0 0 0-1.473-3.316 4.44 4.44 0 0 0-3.29-1.258c-.462.02-.85-.353-.868-.833-.02-.48.338-.886.799-.906 1.667-.071 3.261.538 4.489 1.716 1.227 1.18 1.942 2.786 2.01 4.525.02.48-.338.885-.799.905h-.035z M4.001 14.463a4.41 4.41 0 0 0-2.781-.834c-.462.02-.85-.353-.868-.833-.02-.48.338-.886.799-.906A6.003 6.003 0 0 1 4 12.47v1.994z M19.409 18.227L15.637.708c-.1-.469-.547-.764-.997-.658-.45.105-.732.57-.631 1.04l2.198 10.21-4.469 6.248H1.676c-.461 0-.835.39-.835.87s.374.87.835.87h10.48c.264 0 .512-.13.67-.35l3.863-5.4 1.091 5.07c.087.405.432.68.814.68.06 0 .122-.007.183-.021.45-.105.733-.57.632-1.04z M9.39 19.288H1.677c-.461 0-.835-.39-.835-.87s.374-.87.835-.87H9.39v1.74zM12.44 3.424a.825.825 0 0 1-.696-.388.893.893 0 0 1 .232-1.206L14.361.174a.814.814 0 0 1 1.157.243c.255.4.151.94-.233 1.206L12.901 3.28a.806.806 0 0 1-.462.145z",
|
|
169
|
-
"wellbeing_element_quality_of_life": "M 18.15625 10.476562 C 18.1875 10.660156 18.199219 10.84375 18.1875 11.03125 C 19.199219 11.144531 20.421875 11.503906 20.65625 12.535156 L 20.65625 12.203125 C 20.421875 11.179688 19.164062 10.597656 18.15625 10.476562 Z M 10.164062 14.996094 C 10.171875 14.988281 10.175781 14.980469 10.175781 14.980469 C 9.785156 14.046875 9.488281 12.808594 10.234375 12.085938 L 9.960938 12.25 C 9.226562 12.960938 9.382812 14.335938 9.757812 15.265625 C 9.886719 15.164062 10.019531 15.074219 10.164062 14.996094 Z M 18.636719 20.640625 C 18.472656 20.605469 18.308594 20.550781 18.15625 20.480469 C 17.679688 21.378906 16.90625 22.390625 15.859375 22.234375 L 16.164062 22.355469 C 17.203125 22.507812 18.15625 21.535156 18.636719 20.640625 Z M 15.425781 24.855469 C 10.21875 24.855469 6 20.632812 6 15.425781 C 6 10.21875 10.21875 6 15.425781 6 C 20.632812 6 24.855469 10.21875 24.855469 15.425781 C 24.855469 20.632812 20.632812 24.855469 15.425781 24.855469 Z M 18.636719 20.640625 C 19.878906 20.925781 21.144531 20.253906 21.609375 19.066406 C 22.5625 16.621094 20.980469 13.582031 20.980469 13.582031 C 19.195312 15.449219 17.496094 15.421875 16.808594 17.191406 C 16.308594 18.472656 16.902344 19.917969 18.15625 20.480469 L 18.15625 20.476562 C 18.167969 20.460938 18.648438 20.613281 18.648438 20.613281 Z M 10.164062 14.996094 C 10.097656 15.0625 9.777344 15.3125 9.777344 15.3125 C 9.773438 15.296875 9.765625 15.28125 9.757812 15.265625 C 8.777344 16.066406 8.523438 17.460938 9.15625 18.558594 C 10.472656 20.828125 13.835938 21.488281 13.835938 21.488281 C 13.488281 18.925781 14.570312 17.617188 13.617188 15.972656 C 12.917969 14.765625 11.390625 14.335938 10.164062 14.996094 Z M 18.15625 10.476562 C 17.949219 9.234375 16.875 8.328125 15.613281 8.328125 C 12.988281 8.328125 10.734375 10.90625 10.734375 10.90625 C 13.121094 11.886719 13.714844 13.480469 15.613281 13.480469 C 16.988281 13.480469 18.121094 12.402344 18.1875 11.03125 L 18.183594 11.03125 C 18.164062 11.027344 18.128906 10.472656 18.128906 10.472656 Z M 18.15625 10.476562",
|
|
170
|
-
"wellbeing_element_self_satisifaction": "M18.1,12.9l-1.8,1.7l0.6,0.6l1.3-1.2l1.3,1.2l0.6-0.6l-1.8-1.7H18.1L18.1,12.9L18.1,12.9L18.1,12.9z M12.9,12.9 l-1.8,1.7l0.6,0.6L13,14l1.3,1.2l0.6-0.6l-1.8-1.7H12.9L12.9,12.9L12.9,12.9L12.9,12.9z M15.4,24.9c-4.7,0-8.6-3.7-8.6-8.3 s3.8-8.3,8.6-8.3S24,12,24,16.6S20.2,24.9,15.4,24.9z M11,18.6c0.6,1.3,1.2,2.2,1.8,2.6c1,0.6,2,1,3.5,0.9s2.2-0.9,2.8-1.4 c0.4-0.4,0.8-1.1,1.2-2.1H11z M20.7,5.5c0,0-4.7-2.1-10,0C10.8,5.5,15.9,7.7,20.7,5.5z",
|
|
171
|
-
"wellbeing_element_sex_life": "M 15.429688 9.210938 C 15.429688 9.210938 16.050781 8.574219 16.402344 8.355469 C 16.890625 8.046875 17.441406 7.84375 18.011719 7.753906 C 18.617188 7.671875 19.234375 7.714844 19.816406 7.886719 C 20.414062 8.0625 20.964844 8.359375 21.433594 8.765625 C 22.125 9.304688 22.648438 10.03125 22.945312 10.855469 C 23.375 12.546875 23.09375 14.335938 22.167969 15.8125 C 21.753906 16.460938 21.269531 17.0625 20.722656 17.597656 L 15.386719 23.144531 L 9.464844 16.863281 C 8.773438 16.097656 8.261719 15.183594 7.972656 14.195312 C 7.761719 13.523438 7.679688 12.816406 7.726562 12.113281 C 7.75 11.363281 7.976562 10.628906 8.382812 9.996094 C 8.722656 9.421875 9.179688 8.925781 9.722656 8.542969 C 10.242188 8.140625 10.859375 7.886719 11.511719 7.804688 C 12.15625 7.679688 12.820312 7.710938 13.449219 7.886719 C 13.980469 8.0625 14.464844 8.347656 14.875 8.726562 C 14.890625 8.742188 15.429688 9.214844 15.429688 9.214844 Z M 15.429688 9.210938",
|
|
172
|
-
"wellbeing_element_sleep": "M 4.148438 10.558594 C 5.484375 9.734375 7.019531 9.011719 8.753906 8.378906 C 11.359375 7.429688 13.519531 7.605469 14.230469 6.886719 C 14.945312 6.164062 15.949219 5.761719 16.453125 5.578125 C 16.789062 5.453125 16.839844 6.121094 16.613281 7.582031 C 17.769531 8.960938 18.414062 9.835938 18.554688 10.214844 C 18.761719 10.78125 18.925781 13.890625 19.617188 14.273438 C 20.3125 14.65625 20.878906 15.472656 20.636719 15.933594 C 20.472656 16.242188 19.664062 16.410156 18.210938 16.441406 C 16.101562 18.136719 14.695312 19.128906 14 19.417969 C 12.957031 19.847656 8.859375 20.40625 8.703125 20.5625 C 8.546875 20.714844 7.175781 21.683594 6.464844 21.65625 C 5.753906 21.632812 6.175781 19.816406 5.953125 19.246094 C 5.734375 18.679688 5.007812 17.65625 4.71875 16.859375 C 4.425781 16.0625 3.457031 12.675781 3.023438 12.207031 C 2.589844 11.738281 2.238281 11.253906 2.269531 10.738281 C 2.292969 10.394531 2.917969 10.335938 4.148438 10.558594 Z M 4.746094 12.972656 C 4.855469 13.792969 5.074219 14.65625 5.402344 15.5625 C 5.730469 16.464844 6.183594 17.441406 6.753906 18.488281 C 6.410156 16.910156 6.136719 15.867188 5.933594 15.367188 C 5.730469 14.863281 5.335938 14.066406 4.746094 12.972656 Z M 4.746094 12.972656 M21.44 5.379l2.793-1.857-.249 4.26 2.704-1.95M26.46 7.457l2.002-.172-1.312 2.113 1.98-.246M27.163 2.921l1.498-.963-.175 2.148 1.453-1.01",
|
|
173
|
-
"wellbeing_element_smoking": "M 8.707031 20.0625 L 21.835938 22.195312 C 22.027344 22.226562 22.15625 22.402344 22.125 22.589844 L 21.832031 24.488281 C 21.816406 24.582031 21.769531 24.664062 21.691406 24.71875 C 21.617188 24.773438 21.523438 24.792969 21.433594 24.777344 L 8.300781 22.648438 C 8.113281 22.617188 7.984375 22.4375 8.011719 22.25 L 8.304688 20.351562 C 8.320312 20.261719 8.371094 20.179688 8.445312 20.125 C 8.519531 20.070312 8.613281 20.046875 8.707031 20.0625 Z M 8.707031 20.0625 M 14.446615 21.966146 C 14.009115 20.448568 14.4375 18.926432 15.740885 17.39974 C 17.695964 15.111979 16.966797 16.255859 17.800781 15.21224 C 18.356771 14.514974 18.725911 12.919922 18.899089 10.427083 M 10.664062 20.608073 C 10.007812 18.315755 10.290365 16.429036 11.511719 14.938802 C 13.339193 12.705729 15.604167 10.777995 16.383464 9.757161 C 16.907552 9.078125 17.048828 7.492188 16.807292 4.999349",
|
|
174
|
-
"wellbeing_element_social_life": "M 13.6875 16.097656 C 13.6875 18.359375 11.773438 20.195312 9.414062 20.195312 C 7.054688 20.195312 5.144531 18.359375 5.144531 16.097656 C 5.144531 13.835938 7.054688 12 9.414062 12 C 11.773438 12 13.6875 13.835938 13.6875 16.097656 Z M 25.710938 8.570312 C 25.710938 10.460938 24.113281 11.996094 22.140625 11.996094 C 20.164062 11.996094 18.566406 10.460938 18.566406 8.570312 C 18.566406 6.675781 20.164062 5.144531 22.140625 5.144531 C 24.113281 5.144531 25.710938 6.675781 25.710938 8.570312 Z M 23.925781 22.273438 C 23.925781 24.164062 22.324219 25.699219 20.355469 25.699219 C 18.378906 25.699219 16.78125 24.164062 16.78125 22.273438 C 16.78125 20.378906 18.378906 18.847656 20.355469 18.847656 C 22.324219 18.847656 23.925781 20.378906 23.925781 22.273438 Z M 23.925781 22.273438 M 20.078125 22.609375 L 10.253906 15.25 L 10.804688 14.578125 L 20.628906 21.933594 Z M 20.078125 22.609375 M 10.75 15.285156 L 10.308594 14.542969 L 21.917969 8.195312 L 22.359375 8.941406 Z M 10.75 15.285156 M 21.847656 22.105469 C 21.847656 23.035156 20.921875 23.890625 20.355469 23.890625 C 19.785156 23.890625 18.859375 23.035156 18.859375 22.105469 C 18.859375 21.171875 19.527344 20.558594 20.355469 20.558594 C 21.175781 20.558594 21.847656 21.171875 21.847656 22.105469 Z M 21.847656 22.105469 M 20.796875 22.324219 L 19.910156 22.21875 L 21.695312 8.515625 L 22.582031 8.621094 Z M 20.796875 22.324219 ",
|
|
175
|
-
"wellbeing_element_sugar_balance": "M 14.53125 13.074219 L 9.785156 12.410156 C 9.632812 12.386719 9.492188 12.484375 9.472656 12.628906 L 8.847656 17.082031 C 8.828125 17.222656 8.933594 17.355469 9.085938 17.378906 L 13.835938 18.046875 C 13.988281 18.066406 14.125 17.96875 14.148438 17.824219 L 14.773438 13.375 C 14.792969 13.230469 14.683594 13.097656 14.53125 13.074219 Z M 19.957031 12.238281 L 15.328125 13.476562 C 15.179688 13.519531 15.085938 13.664062 15.125 13.804688 L 16.289062 18.144531 C 16.324219 18.285156 16.476562 18.363281 16.625 18.324219 L 21.257812 17.085938 C 21.40625 17.046875 21.496094 16.898438 21.457031 16.757812 L 20.292969 12.417969 C 20.257812 12.277344 20.105469 12.195312 19.957031 12.238281 Z M 19.957031 12.238281 M 18.402344 9.933594 L 14.023438 7.984375 C 13.882812 7.921875 13.71875 7.976562 13.660156 8.109375 L 11.832031 12.21875 C 11.773438 12.351562 11.839844 12.507812 11.980469 12.570312 L 16.359375 14.523438 C 16.5 14.585938 16.664062 14.527344 16.722656 14.394531 L 18.550781 10.289062 C 18.609375 10.15625 18.542969 9.996094 18.402344 9.933594 Z M 6.875 15.113281 C 7.15625 20.132812 9.972656 22.644531 15.324219 22.644531 C 20.679688 22.644531 23.355469 20.132812 23.355469 15.113281 Z M 6.875 15.113281",
|
|
176
|
-
"wellbeing_element_cardiovascular_disease_health_risk": "M16.9492185,14.9913917 C17.1368969,14.9079666 17.3369082,14.9094338 17.510824,14.9786458 C17.6828343,15.0470995 17.830365,15.1824471 17.9131408,15.3718018 C17.9957035,15.5603468 17.9958836,15.7607846 17.930594,15.934663 C17.864581,16.1104681 17.7315119,16.2600223 17.5451494,16.3437079 C17.4471913,16.3877445 17.345493,16.4084738 17.2458648,16.4084738 C17.1033483,16.4084738 16.9649053,16.3659995 16.8468215,16.2870952 C16.7343356,16.2119315 16.6400684,16.1036292 16.5790431,15.9655078 C16.4964361,15.7751293 16.4966755,15.5744594 16.5618209,15.4009737 C16.6281514,15.2243322 16.7619555,15.0747763 16.9492185,14.9913917 Z M8.29674049,0 C8.49843716,0 8.68113261,0.0824228901 8.81332984,0.216040201 C8.93367766,0.337680824 9.01211836,0.501814358 9.02435606,0.684364824 L9.02603397,0.734589844 L9.02603397,1.08062346 C9.07314831,1.0787916 9.12036435,1.07785456 9.1676556,1.07785456 C9.31251039,1.07785456 9.4562695,1.08647633 9.59859096,1.1030612 L9.70505715,1.11698265 L10.1201287,0.490598405 C10.2322538,0.321395952 10.4017096,0.214458134 10.5847444,0.177885144 C10.7683247,0.141203169 10.9657683,0.175223838 11.1332947,0.288732989 C11.3000792,0.401499669 11.4060851,0.571820057 11.442216,0.756285508 C11.4749699,0.923509452 11.4502403,1.10220521 11.3617545,1.25964916 L11.3332898,1.30621207 L11.1272487,1.61709958 C11.8990684,2.06458199 12.5762542,2.77891407 13.0826019,3.71165649 C14.2292571,3.58753698 15.0938397,3.654613 15.1720661,3.66109087 C15.3613986,3.67694198 15.528955,3.76460895 15.6491044,3.89649216 C15.7576356,4.01562252 15.8274386,4.17087606 15.8392331,4.34148311 L15.8410119,4.39310506 L15.8410119,6.2914684 C15.8410119,6.49040875 15.761039,6.68058435 15.619408,6.81885968 C15.4765519,6.95805229 15.2838165,7.03300025 15.086832,7.02552899 C14.3255506,6.99931354 13.6683619,7.13095887 13.1255745,7.42347756 C13.3473881,7.49324999 13.5598766,7.58454301 13.7606411,7.69494899 L13.8600352,7.75173357 L13.9847338,7.62569546 C14.1274018,7.48163911 14.3143548,7.40983657 14.5011919,7.40983657 C14.688029,7.40983657 14.874982,7.48163911 15.0177331,7.62577944 C15.1594306,7.76899908 15.2304854,7.95663592 15.2304854,8.14437775 C15.2304854,8.33211957 15.1594306,8.51975641 15.0177331,8.66297605 C15.0758073,8.91315585 15.1800394,9.11284695 15.2730764,9.31578838 L15.3073284,9.39214874 L15.7062595,9.39214874 C15.9078461,9.39214874 16.0905825,9.47457472 16.222824,9.60823679 C16.3541127,9.74093586 16.435553,9.92418952 16.435553,10.1267386 C16.435553,10.3292876 16.3541127,10.5125413 16.222824,10.6452404 C16.1016026,10.767764 15.9379515,10.847235 15.7562451,10.8596293 L15.7062595,10.8613284 L15.6064388,10.8611212 L15.6052644,10.9403609 C15.5982898,11.1660708 15.5704213,11.3895864 15.5220162,11.6084688 L15.496104,11.7175126 C16.2545351,12.2216294 16.8647281,12.9384088 17.2370433,13.7799785 C17.3185588,13.9646434 17.318408,14.165261 17.2521859,14.3403338 C17.1856644,14.516198 17.0526011,14.6661647 16.8691486,14.7490378 C16.6847165,14.8323535 16.4843584,14.8321927 16.3095005,14.7646232 C16.1354568,14.6973683 15.9865425,14.5631995 15.9044635,14.3775802 C15.5937284,13.6748668 15.0581788,13.1251262 14.4160409,12.79019 C13.7757797,12.4562325 13.0292742,12.335777 12.2940793,12.4917693 C12.2548006,12.5000876 12.2153349,12.5087848 12.1756925,12.5178142 C11.9243718,12.5752848 11.6837743,12.5119629 11.5065692,12.3294192 C11.412862,12.2522566 10.6786201,11.7065392 8.71129835,11.4081487 C8.30504987,12.1942257 7.30509129,13.7162105 5.31646935,14.6311724 C4.39378281,15.0556951 3.78933296,15.5541357 3.39656761,16.0390636 C2.77832024,16.8023831 2.69398445,17.5243046 2.69062884,17.8212798 C2.70275332,17.9987583 2.69951578,18.0961625 2.68850296,18.1658429 C2.93274062,18.7783345 3.25767488,19.3813459 3.94668912,20.2001123 C5.54053393,22.0937699 7.74394608,23.4659536 10.1641987,24.0755528 L10.3068137,24.1105302 L11.6133758,24.4223812 C11.8800937,24.4860378 12.1545715,24.5183203 12.4288686,24.5183203 C13.1538522,24.5183203 13.84775,24.2997338 14.4424038,23.8852247 L14.5228714,23.8274884 L14.856206,23.5814682 C16.1283297,22.6420755 16.922308,21.1923822 17.0352473,19.6041334 C17.084831,18.9068708 17.055153,18.203154 16.9473593,17.5128098 C16.9160636,17.3128562 16.9680364,17.1191149 17.077084,16.9674602 C17.1869016,16.8147346 17.354484,16.7046851 17.553144,16.6730415 C17.7526141,16.6410028 17.9460003,16.693667 18.0973662,16.8048578 C18.2478017,16.9153652 18.3567213,17.0838095 18.3879406,17.2840386 C18.5131822,18.0847604 18.547641,18.900609 18.4901406,19.7090863 C18.3492032,21.6915353 17.3732244,23.5036698 15.8075362,24.6995089 L15.7182842,24.7665368 L15.3849465,25.0125592 C14.5211732,25.6503859 13.4988605,25.9875 12.4288686,25.9875 C12.0898456,25.9875 11.7508226,25.9526033 11.4188254,25.8836266 L11.2769915,25.8519811 L9.97063354,25.5401328 C7.19307526,24.8772729 4.65875344,23.3181543 2.83406498,21.1500688 C1.77886737,19.8962793 1.42492872,19.007035 1.10894911,18.1015777 L1.08339923,18.0281192 L1.03365703,17.8842143 C0.969083119,17.6969289 0.905811453,17.5133689 0.835926474,17.3236283 C0.333600157,16.4440653 0.0118654964,15.0837748 0.000393803101,13.7475597 C-0.00982361714,12.551023 0.221426086,10.8561047 1.34432162,9.56158128 C1.5254193,9.35280742 1.71281216,9.1653371 1.90570367,8.99818379 L2.00260396,8.91629565 L2.00260396,3.93525533 C2.00260396,3.55817129 2.15446046,3.21628655 2.39947716,2.96863783 C2.63093733,2.73469127 2.94539922,2.58485161 3.29368444,2.56803292 L3.35937228,2.5664502 L4.69771568,2.5664502 C4.95783657,2.5664502 5.20108612,2.64077166 5.40784545,2.76947715 C5.51470964,2.83599898 5.61180056,2.91709588 5.69639447,3.00991852 C5.8927248,2.74148185 6.10771348,2.49510177 6.33987397,2.27433042 C6.68832976,1.94280918 7.06426015,1.67865496 7.45925484,1.48349757 L7.56744701,1.43198472 L7.56744701,0.734589844 C7.56744701,0.532008 7.64886261,0.348739062 7.78015114,0.216040201 C7.91234837,0.0824228901 8.09504382,0 8.29674049,0 Z M4.4717034,9.44778353 L4.39465723,9.44996762 C3.68357636,9.48199866 3.02972999,9.85153015 2.44275734,10.5283583 C1.8383879,11.2250761 1.56200587,12.1529647 1.48620149,13.0819775 C1.40538816,14.0723771 1.55284968,15.0679391 1.79556651,15.8036833 C2.24568266,15.0017358 3.09531329,14.0378151 4.71049301,13.2947864 C6.2146739,12.6026956 7.01632243,11.4556589 7.36260998,10.8270884 C6.30776424,9.89592152 5.29005797,9.40945232 4.39465723,9.44996762 L4.4717034,9.44778353 Z M12.0771899,8.7315096 C12.0054344,8.7315096 11.9336069,8.7354052 11.8623805,8.74288239 C11.5124273,9.40704144 11.3768721,10.1135556 11.3238324,10.5727394 C11.7210622,10.734382 12.0018172,10.8921612 12.1911642,11.0167131 C12.8364537,10.9094399 13.4983547,10.9427172 14.1294837,11.1101022 C14.1420631,11.016896 14.1484219,10.9225364 14.1484219,10.827529 C14.1484219,10.2493945 13.9158094,9.72507438 13.5400931,9.34532203 C13.1652865,8.96648921 12.6479153,8.7315096 12.0771899,8.7315096 Z M14.3824249,5.10976485 C13.2284354,5.1209326 10.8513175,5.30871994 9.40193981,6.65991044 C8.62555171,7.38373758 8.22794611,8.37005824 8.2047277,9.61764595 C8.30954342,9.70764854 8.41464826,9.80124304 8.52003356,9.89866967 C9.0457513,9.96455873 9.50681504,10.0474121 9.91033781,10.1393109 C10.0485981,9.23566185 10.4286922,7.86798574 11.4519152,6.8560141 C12.2155546,6.10112668 13.1978522,5.66889872 14.3824249,5.57345052 L14.3824249,5.57345052 L14.3824249,5.10976485 Z M9.1676556,2.54703425 C8.5003389,2.54703425 7.86131421,2.84923254 7.32252748,3.37226327 C6.77128548,3.90738503 6.32504312,4.67230802 6.05448405,5.59584335 L6.05448405,5.59584335 L6.05448405,8.27809478 L6.182032,8.3284943 C6.39491356,8.41577449 6.60928709,8.51945743 6.82490905,8.63951188 C7.01426278,7.41131045 7.54753895,6.38537578 8.41428157,5.57872382 C9.31069318,4.74431818 10.4490824,4.25980232 11.5384923,3.98447047 C11.0724295,3.30549494 10.4799248,2.83646785 9.82818866,2.64404043 C9.61311749,2.58059335 9.39206231,2.54703425 9.1676556,2.54703425 Z M4.46919637,4.05771595 L3.46119092,4.15071265 L3.46119092,8.12572687 L3.58233421,8.09263454 C3.82560245,8.03062375 4.07474439,7.99368037 4.32946712,7.98224061 C4.41541875,7.97833842 4.50165132,7.97738263 4.5882006,7.97930704 L4.5882006,7.97930704 L4.46919637,4.05771595 Z M6.10642436,19.9300312 C6.29265474,19.9124873 6.48555069,19.9665839 6.64082355,20.096839 C7.83022896,21.0939979 9.25463921,21.8112384 10.7601932,22.1705113 C10.9560976,22.2172794 11.1149122,22.339665 11.2130115,22.5001439 C11.31051,22.6596402 11.3479077,22.8567271 11.3019057,23.0535851 C11.2628407,23.2208977 11.1698436,23.3610748 11.0461613,23.4601192 C10.9191675,23.5618155 10.7597242,23.6199964 10.5924742,23.6199964 C8.69971972,23.1888457 7.06917431,22.3677429 5.707713,21.2259389 C5.55342467,21.096653 5.46537484,20.9164401 5.44812209,20.7293959 C5.4308925,20.5426029 5.48431707,20.3492193 5.61215522,20.1933634 C5.74090949,20.0365644 5.92045223,19.9475507 6.10642436,19.9300312 Z M4.89737927,18.6481301 L4.94420371,18.6500918 C5.13083058,18.6639119 5.31253707,18.7494456 5.4444858,18.9034071 C5.5802432,19.067802 5.63564497,19.2616634 5.62185524,19.4467945 C5.60761586,19.6379624 5.51963362,19.8205074 5.36428952,19.9513514 C5.22774469,20.0665535 5.06175471,20.1224683 4.89666646,20.1224683 C4.68745399,20.1224683 4.47980647,20.0325232 4.3352281,19.8573436 C4.20605987,19.7048182 4.14981243,19.5144336 4.16330713,19.3289858 C4.17689823,19.1422132 4.26127127,18.9605295 4.41277633,18.8278815 C4.56521054,18.694295 4.75722182,18.6362454 4.94420371,18.6500918 L4.89737927,18.6481301 Z",
|
|
177
|
-
"wellbeing_element_hypertension_health_risk": "M8.84116558,0 C9.06481853,0 9.27271794,0.0780959838 9.43374499,0.203497025 C9.60621554,0.337809786 9.72333901,0.525160072 9.76070272,0.726878563 C10.0125776,1.76355652 10.6393396,3.82350861 12.0938304,6.08890031 C12.2065496,6.27485044 12.2289026,6.46937848 12.1901447,6.64864723 C12.1491387,6.83831422 12.0368962,7.00994094 11.8852519,7.1226672 C11.6768958,7.24886212 11.4828872,7.26973707 11.3043436,7.23181649 C11.1136166,7.19130828 10.9412974,7.08010313 10.8279982,6.93037512 C9.88427758,5.39654335 9.26184593,3.98753056 8.8472111,2.85404805 C8.09269331,4.97369913 6.65260139,7.85618184 3.93963325,10.6614459 L3.80736474,10.7971207 L3.80124957,10.803371 C3.69370717,10.9145583 2.27904373,12.4185719 1.73258686,14.5735224 C1.47455441,15.5910723 1.41134752,16.755784 1.77914687,17.9883609 L1.81737224,18.1118419 L2.51589646,18.1345368 L3.50395917,15.7842416 C3.58198618,15.6259649 3.68473598,15.5133531 3.81359269,15.4372541 C3.93048982,15.368218 4.07251443,15.3274343 4.25225896,15.3274343 C4.41358714,15.3274343 4.57615996,15.3848444 4.7072098,15.4851703 C4.82085236,15.57217 4.90924743,15.6899941 4.9569107,15.8232477 L4.97284488,15.873911 L6.07531139,19.3393645 L6.39484017,18.5426119 C6.44072731,18.3872396 6.5379415,18.2658741 6.66629889,18.1816472 C6.7784911,18.1080277 6.9164222,18.0642931 7.05822325,18.0554832 L7.11153733,18.0538264 L9.6677618,18.0538781 C8.71166522,16.8505625 8.14006999,15.3350465 8.14006999,13.6937563 C8.14006999,11.7498941 8.94183769,9.98241884 10.2345786,8.70112378 C11.5264147,7.42072544 13.3083093,6.62618319 15.268285,6.62618319 C17.2282607,6.62618319 19.0101552,7.42072544 20.3019914,8.70112378 C21.5947323,9.98241884 22.3965,11.7498941 22.3965,13.6937563 C22.3965,15.6376185 21.5947323,17.4050937 20.3019914,18.6863888 C19.0101552,19.9667871 17.2282607,20.7613294 15.268285,20.7613294 C13.8719637,20.7613294 12.5660645,20.3580312 11.4633077,19.6631549 L11.3572272,19.5950023 L7.64828467,19.5955263 L6.70700407,21.9318899 C6.66356682,22.0515146 6.56885988,22.1761337 6.43630965,22.2674427 C6.31937988,22.3479913 6.17620694,22.4011427 6.03229071,22.4088746 C5.82556991,22.4098207 5.67859601,22.3584791 5.55865126,22.2794906 C5.43540231,22.198326 5.33955611,22.0837798 5.26579486,21.9468224 L5.23915924,21.8944342 L4.11949921,18.3393847 L3.74987469,19.2261865 C3.67481788,19.3786759 3.57641182,19.4884872 3.46264725,19.5631384 C3.35848798,19.6314868 3.23965603,19.672375 3.1047562,19.6815291 L3.04595417,19.6834969 L2.62587404,19.6834343 C3.15668432,20.4927424 3.98754641,21.4947575 5.17514574,22.2162248 C6.14451554,22.8051175 7.35306311,23.2051352 8.83029166,23.1567336 C10.7116999,23.1967869 12.3733739,22.5957096 13.7529198,21.2686129 C13.9153321,21.1157232 14.0981187,21.0514141 14.2784691,21.0514141 C14.4673121,21.0514141 14.6577115,21.1234764 14.8094085,21.2738302 C14.9621128,21.4251824 15.034844,21.6152786 15.034844,21.8035629 C15.034844,21.9918473 14.9621128,22.1819434 14.8094085,22.3332956 C13.1987988,23.843529 11.3390069,24.6290913 9.22573964,24.6599097 L9.09603918,24.6608532 L8.8459938,24.6608532 C6.86534931,24.7179208 5.27857297,24.100502 4.04040396,23.2480583 C2.14541961,21.9434162 1.07359127,20.0831581 0.662849991,19.2697344 C0.566780648,19.0762483 0.526220866,18.9889041 0.500712402,18.9339719 C-0.146745657,17.1491562 -0.0921225379,15.5704069 0.24931144,14.2167631 C0.88691284,11.6889386 2.53313299,9.95271821 2.72982913,9.7533691 C6.29321158,6.13857051 7.54841845,2.24747313 7.92440525,0.715435339 C7.99226385,0.478992336 8.10952761,0.308434892 8.26124313,0.190285279 C8.41660039,0.0692996271 8.61143101,0 8.84116558,0 Z M15.268285,8.13048091 C13.7237487,8.13048091 12.3197232,8.75690911 11.3017674,9.76585205 C10.2847162,10.7738983 9.65281995,12.1641351 9.65281995,13.6937563 C9.65281995,15.2233774 10.2847162,16.6136143 11.3017674,17.6216605 C12.3197232,18.6306034 13.7237487,19.2570316 15.268285,19.2570316 C16.8128213,19.2570316 18.2168468,18.6306034 19.2348026,17.6216605 C20.2518537,16.6136143 20.88375,15.2233774 20.88375,13.6937563 C20.88375,12.1641351 20.2518537,10.7738983 19.2348026,9.76585205 C18.2168468,8.75690911 16.8128213,8.13048091 15.268285,8.13048091 L15.268285,8.13048091 Z M18.3487819,9.73377289 C18.5537448,9.73377289 18.7585996,9.8114564 18.9149397,9.9664002 C19.0722636,10.1223189 19.1507069,10.3267315 19.1507069,10.5310319 C19.1507069,10.7183073 19.0847928,10.9056769 18.9526276,11.0557018 L18.9149397,11.0956636 L15.7793441,14.2032533 C15.6230039,14.3581971 15.4181491,14.4358806 15.2131863,14.4358806 C15.0082234,14.4358806 14.8033686,14.3581971 14.6470284,14.2032533 C14.4897045,14.0473346 14.4112613,13.842922 14.4112613,13.6386216 C14.4112613,13.4513463 14.4771754,13.2639766 14.6093405,13.1139517 L14.6470284,13.0739899 L17.7826241,9.9664002 C17.9389642,9.8114564 18.143819,9.73377289 18.3487819,9.73377289 Z",
|
|
178
|
-
"wellbeing_element_diabetes_health_risk": "M12.710223,0 C12.8219384,0 12.9336614,0.0291903391 13.0336716,0.0876424677 C13.0338358,0.0877385191 14.2777775,0.815163202 15.636204,1.60954975 L15.7821363,1.69488875 C15.8065142,1.70914459 15.8309158,1.72341427 15.8553346,1.73769401 L16.0250265,1.83692744 L16.1099304,1.88657813 L16.1099304,1.88657813 L16.2795557,1.98577284 C17.4370134,2.66263993 18.5495201,3.31323255 18.9308936,3.53629779 L18.9574842,3.55185083 L19.0056489,3.58002422 L19.0709642,3.61824995 L19.106091,3.64061398 L19.106091,3.64061398 L19.1398559,3.66535503 L19.1454609,3.66999989 L19.1706468,3.69136442 L19.1706468,3.69136442 L19.1961701,3.7154497 L19.2058446,3.72522342 L19.2271844,3.74853011 L19.2271844,3.74853011 L19.2466373,3.77200147 L19.2555447,3.78314115 C19.2667412,3.79800469 19.2774253,3.8132026 19.2878925,3.82987039 L19.3034675,3.8561164 L19.3068283,3.86266495 L19.3221446,3.89243898 L19.3221446,3.89243898 L19.3357617,3.9226647 L19.3419364,3.93840641 L19.3520374,3.96615994 L19.3520374,3.96615994 L19.3609122,3.99451409 L19.3650373,4.00897246 C19.3736131,4.04187237 19.3795347,4.07507255 19.3828458,4.10833439 L19.3858599,4.15824356 L19.3862567,4.16429782 L19.3862567,10.8597033 L21.9605918,12.3651516 L22.1408198,12.4705486 L22.2966007,12.5616511 L22.4521042,12.6525948 C23.6939775,13.3788989 24.8716173,14.0679615 25.0827858,14.19156 C25.09038,14.1956547 25.0978822,14.1998968 25.1052924,14.2042856 L25.1401571,14.2264784 L25.1401571,14.2264784 L25.173718,14.2509983 L25.1804015,14.256555 L25.2054315,14.2778009 L25.2054315,14.2778009 L25.2294667,14.300439 L25.240529,14.311681 L25.2615011,14.334603 L25.2615011,14.334603 L25.280319,14.3572783 L25.2898617,14.3691377 C25.3009981,14.3839891 25.3116608,14.399168 25.3221196,14.4157984 L25.3376887,14.4419729 L25.3411257,14.44867 L25.356442,14.478444 L25.356442,14.478444 L25.370059,14.5086697 L25.3762338,14.5244114 L25.3863348,14.5521649 L25.3863348,14.5521649 L25.3952096,14.5805191 L25.3993346,14.5949773 C25.4083634,14.6296146 25.4144478,14.6645853 25.4177094,14.6996107 L25.4205,14.7521548 L25.4205,21.8154276 C25.4205,22.0290286 25.314745,22.2275819 25.1404379,22.3468317 L25.1020507,22.371148 L19.0607022,25.904003 L19.052145,25.90812 L19.0274725,25.921385 L18.9905864,25.938248 L18.9539249,25.9520573 L18.9539249,25.9520573 L18.9162396,25.9636844 L18.9034263,25.9670546 L18.8997537,25.9679693 L18.8711417,25.9744001 L18.8711417,25.9744001 L18.8420964,25.9795306 L18.8379956,25.9801949 L18.8249914,25.9821309 C18.7985081,25.9854918 18.7717485,25.9875 18.7444392,25.9875 L18.7040493,25.9860656 L18.7040493,25.9860656 L18.6642771,25.9821889 L18.6508827,25.9801949 L18.646846,25.979541 L18.6174402,25.9743289 L18.6174402,25.9743289 L18.5868873,25.9673987 L18.5729594,25.9637741 C18.5476891,25.9567065 18.5230702,25.9485325 18.497631,25.9379898 L18.4649195,25.923126 L18.4649195,25.923126 L18.4332596,25.906515 L18.428176,25.9040029 L12.7102506,22.5602666 L6.99237848,25.9040027 L6.98142719,25.9094145 L6.9593323,25.9213255 L6.92203217,25.9383662 L6.88503557,25.9522506 L6.88503557,25.9522506 L6.84699677,25.9639238 L6.83142934,25.967915 L6.80216677,25.9744782 L6.80216677,25.9744782 L6.77283755,25.9796106 L6.75726882,25.9819991 C6.7306938,25.985397 6.70363433,25.9875 6.67611488,25.9875 L6.63570066,25.9860347 L6.63570066,25.9860347 L6.59590387,25.982129 L6.58258318,25.9801389 L6.57850195,25.9794754 L6.54920392,25.9742924 L6.54920392,25.9742924 L6.51930447,25.9675361 L6.50518482,25.9639105 C6.47957351,25.9567826 6.45461482,25.9485147 6.42930671,25.9379898 L6.3965804,25.9231295 L6.3965804,25.9231295 L6.36489546,25.9065221 L6.35979781,25.904003 L0.318477405,22.3711645 C0.134589739,22.2636648 0.0165298434,22.0721858 0.00160580254,21.8609638 L4.33362146e-11,21.8154231 L4.33362146e-11,14.7547544 C0.000659431039,14.7002958 0.00739860769,14.6489513 0.0199830606,14.5998579 C0.0217010964,14.5929598 0.0236152065,14.5862196 0.0256117182,14.5794512 L0.0340105746,14.5526085 L0.0340105746,14.5526085 L0.0438881197,14.525436 C0.0468008623,14.5177295 0.0494260142,14.5110146 0.0519658496,14.5051222 L0.0648499392,14.4768611 L0.0648499392,14.4768611 L0.0792271202,14.4489932 L0.0835215491,14.4405772 L0.106069006,14.4039031 L0.106069006,14.4039031 L0.130605115,14.3693043 L0.138723321,14.3591626 C0.15138446,14.3431047 0.164666107,14.3277531 0.177469995,14.3143573 C0.182294643,14.3092351 0.187285215,14.3041865 0.19256231,14.298988 L0.215852244,14.2771763 L0.215852244,14.2771763 L0.240091838,14.2566204 L0.246677583,14.2511683 C0.261016983,14.2399349 0.275649244,14.2294335 0.291758885,14.218914 L0.317179447,14.2030272 L6.0341892,10.8599175 L6.0341892,4.1644064 L6.03453375,4.15823625 L6.0342975,4.1641425 L6.03695948,4.11473548 C6.03999054,4.08060973 6.0457504,4.04676201 6.05417226,4.01390717 C6.0558903,4.00700906 6.05780441,4.00026885 6.05980092,3.9935005 L6.06819977,3.96665776 L6.06819977,3.96665776 L6.07807732,3.93948526 C6.08099006,3.93177881 6.08361521,3.92506384 6.08615505,3.91917143 L6.09903914,3.89091038 L6.09903914,3.89091038 L6.11341632,3.86304248 L6.11762701,3.85479056 L6.1403917,3.81770774 L6.1403917,3.81770774 L6.16524566,3.78272204 L6.1725732,3.77365393 L6.1929324,3.74899667 L6.1929324,3.74899667 L6.21431486,3.7255758 L6.22469022,3.71502511 L6.24908067,3.69199868 L6.24908067,3.69199868 L6.27451418,3.67039123 L12.3868218,0.087614736 C12.4867845,0.0291903391 12.5985075,0 12.710223,0 Z M12.0683784,15.8783173 L7.3179324,18.6562632 L7.3179324,24.2238116 L12.0683784,21.4458163 L12.0683784,15.8783173 Z M13.3521216,15.8782631 L13.3521216,21.4458151 L18.1025676,24.223761 L18.1025676,18.6562089 L13.3521216,15.8782631 Z M1.2837432,15.8782631 L1.2837432,21.445762 L6.0341892,24.2237573 L6.0341892,18.6562089 L1.2837432,15.8782631 Z M24.1367568,15.8783173 L19.3863108,18.6562632 L19.3863108,24.2238153 L24.1367568,21.4458694 L24.1367568,15.8783173 Z M18.7444392,11.9742608 L13.9840372,14.7580367 L18.7444392,17.5418125 L23.5048412,14.7580367 L18.7444392,11.9742608 Z M6.6760608,11.9742608 L1.91565877,14.7580367 L6.6760608,17.5418125 L11.4364628,14.7580367 L6.6760608,11.9742608 Z M18.1025676,5.29231233 L13.3521216,8.07025821 L13.3521216,13.6378066 L18.1025676,10.8598113 L18.1025676,5.29231233 Z M7.3179324,5.29225804 L7.3179324,10.8598101 L12.0683784,13.637756 L12.0683784,8.07020393 L7.3179324,5.29225804 Z M12.71025,1.38825582 L7.94984797,4.17203166 L12.71025,6.9558075 L17.470652,4.17203166 L12.71025,1.38825582 Z",
|
|
179
|
-
"wellbeing_aspect_cardiovascular_disease_health_risk": "M16.9492185,14.9913917 C17.1368969,14.9079666 17.3369082,14.9094338 17.510824,14.9786458 C17.6828343,15.0470995 17.830365,15.1824471 17.9131408,15.3718018 C17.9957035,15.5603468 17.9958836,15.7607846 17.930594,15.934663 C17.864581,16.1104681 17.7315119,16.2600223 17.5451494,16.3437079 C17.4471913,16.3877445 17.345493,16.4084738 17.2458648,16.4084738 C17.1033483,16.4084738 16.9649053,16.3659995 16.8468215,16.2870952 C16.7343356,16.2119315 16.6400684,16.1036292 16.5790431,15.9655078 C16.4964361,15.7751293 16.4966755,15.5744594 16.5618209,15.4009737 C16.6281514,15.2243322 16.7619555,15.0747763 16.9492185,14.9913917 Z M8.29674049,0 C8.49843716,0 8.68113261,0.0824228901 8.81332984,0.216040201 C8.93367766,0.337680824 9.01211836,0.501814358 9.02435606,0.684364824 L9.02603397,0.734589844 L9.02603397,1.08062346 C9.07314831,1.0787916 9.12036435,1.07785456 9.1676556,1.07785456 C9.31251039,1.07785456 9.4562695,1.08647633 9.59859096,1.1030612 L9.70505715,1.11698265 L10.1201287,0.490598405 C10.2322538,0.321395952 10.4017096,0.214458134 10.5847444,0.177885144 C10.7683247,0.141203169 10.9657683,0.175223838 11.1332947,0.288732989 C11.3000792,0.401499669 11.4060851,0.571820057 11.442216,0.756285508 C11.4749699,0.923509452 11.4502403,1.10220521 11.3617545,1.25964916 L11.3332898,1.30621207 L11.1272487,1.61709958 C11.8990684,2.06458199 12.5762542,2.77891407 13.0826019,3.71165649 C14.2292571,3.58753698 15.0938397,3.654613 15.1720661,3.66109087 C15.3613986,3.67694198 15.528955,3.76460895 15.6491044,3.89649216 C15.7576356,4.01562252 15.8274386,4.17087606 15.8392331,4.34148311 L15.8410119,4.39310506 L15.8410119,6.2914684 C15.8410119,6.49040875 15.761039,6.68058435 15.619408,6.81885968 C15.4765519,6.95805229 15.2838165,7.03300025 15.086832,7.02552899 C14.3255506,6.99931354 13.6683619,7.13095887 13.1255745,7.42347756 C13.3473881,7.49324999 13.5598766,7.58454301 13.7606411,7.69494899 L13.8600352,7.75173357 L13.9847338,7.62569546 C14.1274018,7.48163911 14.3143548,7.40983657 14.5011919,7.40983657 C14.688029,7.40983657 14.874982,7.48163911 15.0177331,7.62577944 C15.1594306,7.76899908 15.2304854,7.95663592 15.2304854,8.14437775 C15.2304854,8.33211957 15.1594306,8.51975641 15.0177331,8.66297605 C15.0758073,8.91315585 15.1800394,9.11284695 15.2730764,9.31578838 L15.3073284,9.39214874 L15.7062595,9.39214874 C15.9078461,9.39214874 16.0905825,9.47457472 16.222824,9.60823679 C16.3541127,9.74093586 16.435553,9.92418952 16.435553,10.1267386 C16.435553,10.3292876 16.3541127,10.5125413 16.222824,10.6452404 C16.1016026,10.767764 15.9379515,10.847235 15.7562451,10.8596293 L15.7062595,10.8613284 L15.6064388,10.8611212 L15.6052644,10.9403609 C15.5982898,11.1660708 15.5704213,11.3895864 15.5220162,11.6084688 L15.496104,11.7175126 C16.2545351,12.2216294 16.8647281,12.9384088 17.2370433,13.7799785 C17.3185588,13.9646434 17.318408,14.165261 17.2521859,14.3403338 C17.1856644,14.516198 17.0526011,14.6661647 16.8691486,14.7490378 C16.6847165,14.8323535 16.4843584,14.8321927 16.3095005,14.7646232 C16.1354568,14.6973683 15.9865425,14.5631995 15.9044635,14.3775802 C15.5937284,13.6748668 15.0581788,13.1251262 14.4160409,12.79019 C13.7757797,12.4562325 13.0292742,12.335777 12.2940793,12.4917693 C12.2548006,12.5000876 12.2153349,12.5087848 12.1756925,12.5178142 C11.9243718,12.5752848 11.6837743,12.5119629 11.5065692,12.3294192 C11.412862,12.2522566 10.6786201,11.7065392 8.71129835,11.4081487 C8.30504987,12.1942257 7.30509129,13.7162105 5.31646935,14.6311724 C4.39378281,15.0556951 3.78933296,15.5541357 3.39656761,16.0390636 C2.77832024,16.8023831 2.69398445,17.5243046 2.69062884,17.8212798 C2.70275332,17.9987583 2.69951578,18.0961625 2.68850296,18.1658429 C2.93274062,18.7783345 3.25767488,19.3813459 3.94668912,20.2001123 C5.54053393,22.0937699 7.74394608,23.4659536 10.1641987,24.0755528 L10.3068137,24.1105302 L11.6133758,24.4223812 C11.8800937,24.4860378 12.1545715,24.5183203 12.4288686,24.5183203 C13.1538522,24.5183203 13.84775,24.2997338 14.4424038,23.8852247 L14.5228714,23.8274884 L14.856206,23.5814682 C16.1283297,22.6420755 16.922308,21.1923822 17.0352473,19.6041334 C17.084831,18.9068708 17.055153,18.203154 16.9473593,17.5128098 C16.9160636,17.3128562 16.9680364,17.1191149 17.077084,16.9674602 C17.1869016,16.8147346 17.354484,16.7046851 17.553144,16.6730415 C17.7526141,16.6410028 17.9460003,16.693667 18.0973662,16.8048578 C18.2478017,16.9153652 18.3567213,17.0838095 18.3879406,17.2840386 C18.5131822,18.0847604 18.547641,18.900609 18.4901406,19.7090863 C18.3492032,21.6915353 17.3732244,23.5036698 15.8075362,24.6995089 L15.7182842,24.7665368 L15.3849465,25.0125592 C14.5211732,25.6503859 13.4988605,25.9875 12.4288686,25.9875 C12.0898456,25.9875 11.7508226,25.9526033 11.4188254,25.8836266 L11.2769915,25.8519811 L9.97063354,25.5401328 C7.19307526,24.8772729 4.65875344,23.3181543 2.83406498,21.1500688 C1.77886737,19.8962793 1.42492872,19.007035 1.10894911,18.1015777 L1.08339923,18.0281192 L1.03365703,17.8842143 C0.969083119,17.6969289 0.905811453,17.5133689 0.835926474,17.3236283 C0.333600157,16.4440653 0.0118654964,15.0837748 0.000393803101,13.7475597 C-0.00982361714,12.551023 0.221426086,10.8561047 1.34432162,9.56158128 C1.5254193,9.35280742 1.71281216,9.1653371 1.90570367,8.99818379 L2.00260396,8.91629565 L2.00260396,3.93525533 C2.00260396,3.55817129 2.15446046,3.21628655 2.39947716,2.96863783 C2.63093733,2.73469127 2.94539922,2.58485161 3.29368444,2.56803292 L3.35937228,2.5664502 L4.69771568,2.5664502 C4.95783657,2.5664502 5.20108612,2.64077166 5.40784545,2.76947715 C5.51470964,2.83599898 5.61180056,2.91709588 5.69639447,3.00991852 C5.8927248,2.74148185 6.10771348,2.49510177 6.33987397,2.27433042 C6.68832976,1.94280918 7.06426015,1.67865496 7.45925484,1.48349757 L7.56744701,1.43198472 L7.56744701,0.734589844 C7.56744701,0.532008 7.64886261,0.348739062 7.78015114,0.216040201 C7.91234837,0.0824228901 8.09504382,0 8.29674049,0 Z M4.4717034,9.44778353 L4.39465723,9.44996762 C3.68357636,9.48199866 3.02972999,9.85153015 2.44275734,10.5283583 C1.8383879,11.2250761 1.56200587,12.1529647 1.48620149,13.0819775 C1.40538816,14.0723771 1.55284968,15.0679391 1.79556651,15.8036833 C2.24568266,15.0017358 3.09531329,14.0378151 4.71049301,13.2947864 C6.2146739,12.6026956 7.01632243,11.4556589 7.36260998,10.8270884 C6.30776424,9.89592152 5.29005797,9.40945232 4.39465723,9.44996762 L4.4717034,9.44778353 Z M12.0771899,8.7315096 C12.0054344,8.7315096 11.9336069,8.7354052 11.8623805,8.74288239 C11.5124273,9.40704144 11.3768721,10.1135556 11.3238324,10.5727394 C11.7210622,10.734382 12.0018172,10.8921612 12.1911642,11.0167131 C12.8364537,10.9094399 13.4983547,10.9427172 14.1294837,11.1101022 C14.1420631,11.016896 14.1484219,10.9225364 14.1484219,10.827529 C14.1484219,10.2493945 13.9158094,9.72507438 13.5400931,9.34532203 C13.1652865,8.96648921 12.6479153,8.7315096 12.0771899,8.7315096 Z M14.3824249,5.10976485 C13.2284354,5.1209326 10.8513175,5.30871994 9.40193981,6.65991044 C8.62555171,7.38373758 8.22794611,8.37005824 8.2047277,9.61764595 C8.30954342,9.70764854 8.41464826,9.80124304 8.52003356,9.89866967 C9.0457513,9.96455873 9.50681504,10.0474121 9.91033781,10.1393109 C10.0485981,9.23566185 10.4286922,7.86798574 11.4519152,6.8560141 C12.2155546,6.10112668 13.1978522,5.66889872 14.3824249,5.57345052 L14.3824249,5.57345052 L14.3824249,5.10976485 Z M9.1676556,2.54703425 C8.5003389,2.54703425 7.86131421,2.84923254 7.32252748,3.37226327 C6.77128548,3.90738503 6.32504312,4.67230802 6.05448405,5.59584335 L6.05448405,5.59584335 L6.05448405,8.27809478 L6.182032,8.3284943 C6.39491356,8.41577449 6.60928709,8.51945743 6.82490905,8.63951188 C7.01426278,7.41131045 7.54753895,6.38537578 8.41428157,5.57872382 C9.31069318,4.74431818 10.4490824,4.25980232 11.5384923,3.98447047 C11.0724295,3.30549494 10.4799248,2.83646785 9.82818866,2.64404043 C9.61311749,2.58059335 9.39206231,2.54703425 9.1676556,2.54703425 Z M4.46919637,4.05771595 L3.46119092,4.15071265 L3.46119092,8.12572687 L3.58233421,8.09263454 C3.82560245,8.03062375 4.07474439,7.99368037 4.32946712,7.98224061 C4.41541875,7.97833842 4.50165132,7.97738263 4.5882006,7.97930704 L4.5882006,7.97930704 L4.46919637,4.05771595 Z M6.10642436,19.9300312 C6.29265474,19.9124873 6.48555069,19.9665839 6.64082355,20.096839 C7.83022896,21.0939979 9.25463921,21.8112384 10.7601932,22.1705113 C10.9560976,22.2172794 11.1149122,22.339665 11.2130115,22.5001439 C11.31051,22.6596402 11.3479077,22.8567271 11.3019057,23.0535851 C11.2628407,23.2208977 11.1698436,23.3610748 11.0461613,23.4601192 C10.9191675,23.5618155 10.7597242,23.6199964 10.5924742,23.6199964 C8.69971972,23.1888457 7.06917431,22.3677429 5.707713,21.2259389 C5.55342467,21.096653 5.46537484,20.9164401 5.44812209,20.7293959 C5.4308925,20.5426029 5.48431707,20.3492193 5.61215522,20.1933634 C5.74090949,20.0365644 5.92045223,19.9475507 6.10642436,19.9300312 Z M4.89737927,18.6481301 L4.94420371,18.6500918 C5.13083058,18.6639119 5.31253707,18.7494456 5.4444858,18.9034071 C5.5802432,19.067802 5.63564497,19.2616634 5.62185524,19.4467945 C5.60761586,19.6379624 5.51963362,19.8205074 5.36428952,19.9513514 C5.22774469,20.0665535 5.06175471,20.1224683 4.89666646,20.1224683 C4.68745399,20.1224683 4.47980647,20.0325232 4.3352281,19.8573436 C4.20605987,19.7048182 4.14981243,19.5144336 4.16330713,19.3289858 C4.17689823,19.1422132 4.26127127,18.9605295 4.41277633,18.8278815 C4.56521054,18.694295 4.75722182,18.6362454 4.94420371,18.6500918 L4.89737927,18.6481301 Z",
|
|
180
|
-
"wellbeing_aspect_hypertension_health_risk": "M8.84116558,0 C9.06481853,0 9.27271794,0.0780959838 9.43374499,0.203497025 C9.60621554,0.337809786 9.72333901,0.525160072 9.76070272,0.726878563 C10.0125776,1.76355652 10.6393396,3.82350861 12.0938304,6.08890031 C12.2065496,6.27485044 12.2289026,6.46937848 12.1901447,6.64864723 C12.1491387,6.83831422 12.0368962,7.00994094 11.8852519,7.1226672 C11.6768958,7.24886212 11.4828872,7.26973707 11.3043436,7.23181649 C11.1136166,7.19130828 10.9412974,7.08010313 10.8279982,6.93037512 C9.88427758,5.39654335 9.26184593,3.98753056 8.8472111,2.85404805 C8.09269331,4.97369913 6.65260139,7.85618184 3.93963325,10.6614459 L3.80736474,10.7971207 L3.80124957,10.803371 C3.69370717,10.9145583 2.27904373,12.4185719 1.73258686,14.5735224 C1.47455441,15.5910723 1.41134752,16.755784 1.77914687,17.9883609 L1.81737224,18.1118419 L2.51589646,18.1345368 L3.50395917,15.7842416 C3.58198618,15.6259649 3.68473598,15.5133531 3.81359269,15.4372541 C3.93048982,15.368218 4.07251443,15.3274343 4.25225896,15.3274343 C4.41358714,15.3274343 4.57615996,15.3848444 4.7072098,15.4851703 C4.82085236,15.57217 4.90924743,15.6899941 4.9569107,15.8232477 L4.97284488,15.873911 L6.07531139,19.3393645 L6.39484017,18.5426119 C6.44072731,18.3872396 6.5379415,18.2658741 6.66629889,18.1816472 C6.7784911,18.1080277 6.9164222,18.0642931 7.05822325,18.0554832 L7.11153733,18.0538264 L9.6677618,18.0538781 C8.71166522,16.8505625 8.14006999,15.3350465 8.14006999,13.6937563 C8.14006999,11.7498941 8.94183769,9.98241884 10.2345786,8.70112378 C11.5264147,7.42072544 13.3083093,6.62618319 15.268285,6.62618319 C17.2282607,6.62618319 19.0101552,7.42072544 20.3019914,8.70112378 C21.5947323,9.98241884 22.3965,11.7498941 22.3965,13.6937563 C22.3965,15.6376185 21.5947323,17.4050937 20.3019914,18.6863888 C19.0101552,19.9667871 17.2282607,20.7613294 15.268285,20.7613294 C13.8719637,20.7613294 12.5660645,20.3580312 11.4633077,19.6631549 L11.3572272,19.5950023 L7.64828467,19.5955263 L6.70700407,21.9318899 C6.66356682,22.0515146 6.56885988,22.1761337 6.43630965,22.2674427 C6.31937988,22.3479913 6.17620694,22.4011427 6.03229071,22.4088746 C5.82556991,22.4098207 5.67859601,22.3584791 5.55865126,22.2794906 C5.43540231,22.198326 5.33955611,22.0837798 5.26579486,21.9468224 L5.23915924,21.8944342 L4.11949921,18.3393847 L3.74987469,19.2261865 C3.67481788,19.3786759 3.57641182,19.4884872 3.46264725,19.5631384 C3.35848798,19.6314868 3.23965603,19.672375 3.1047562,19.6815291 L3.04595417,19.6834969 L2.62587404,19.6834343 C3.15668432,20.4927424 3.98754641,21.4947575 5.17514574,22.2162248 C6.14451554,22.8051175 7.35306311,23.2051352 8.83029166,23.1567336 C10.7116999,23.1967869 12.3733739,22.5957096 13.7529198,21.2686129 C13.9153321,21.1157232 14.0981187,21.0514141 14.2784691,21.0514141 C14.4673121,21.0514141 14.6577115,21.1234764 14.8094085,21.2738302 C14.9621128,21.4251824 15.034844,21.6152786 15.034844,21.8035629 C15.034844,21.9918473 14.9621128,22.1819434 14.8094085,22.3332956 C13.1987988,23.843529 11.3390069,24.6290913 9.22573964,24.6599097 L9.09603918,24.6608532 L8.8459938,24.6608532 C6.86534931,24.7179208 5.27857297,24.100502 4.04040396,23.2480583 C2.14541961,21.9434162 1.07359127,20.0831581 0.662849991,19.2697344 C0.566780648,19.0762483 0.526220866,18.9889041 0.500712402,18.9339719 C-0.146745657,17.1491562 -0.0921225379,15.5704069 0.24931144,14.2167631 C0.88691284,11.6889386 2.53313299,9.95271821 2.72982913,9.7533691 C6.29321158,6.13857051 7.54841845,2.24747313 7.92440525,0.715435339 C7.99226385,0.478992336 8.10952761,0.308434892 8.26124313,0.190285279 C8.41660039,0.0692996271 8.61143101,0 8.84116558,0 Z M15.268285,8.13048091 C13.7237487,8.13048091 12.3197232,8.75690911 11.3017674,9.76585205 C10.2847162,10.7738983 9.65281995,12.1641351 9.65281995,13.6937563 C9.65281995,15.2233774 10.2847162,16.6136143 11.3017674,17.6216605 C12.3197232,18.6306034 13.7237487,19.2570316 15.268285,19.2570316 C16.8128213,19.2570316 18.2168468,18.6306034 19.2348026,17.6216605 C20.2518537,16.6136143 20.88375,15.2233774 20.88375,13.6937563 C20.88375,12.1641351 20.2518537,10.7738983 19.2348026,9.76585205 C18.2168468,8.75690911 16.8128213,8.13048091 15.268285,8.13048091 L15.268285,8.13048091 Z M18.3487819,9.73377289 C18.5537448,9.73377289 18.7585996,9.8114564 18.9149397,9.9664002 C19.0722636,10.1223189 19.1507069,10.3267315 19.1507069,10.5310319 C19.1507069,10.7183073 19.0847928,10.9056769 18.9526276,11.0557018 L18.9149397,11.0956636 L15.7793441,14.2032533 C15.6230039,14.3581971 15.4181491,14.4358806 15.2131863,14.4358806 C15.0082234,14.4358806 14.8033686,14.3581971 14.6470284,14.2032533 C14.4897045,14.0473346 14.4112613,13.842922 14.4112613,13.6386216 C14.4112613,13.4513463 14.4771754,13.2639766 14.6093405,13.1139517 L14.6470284,13.0739899 L17.7826241,9.9664002 C17.9389642,9.8114564 18.143819,9.73377289 18.3487819,9.73377289 Z",
|
|
181
|
-
"wellbeing_aspect_diabetes_health_risk": "M12.710223,0 C12.8219384,0 12.9336614,0.0291903391 13.0336716,0.0876424677 C13.0338358,0.0877385191 14.2777775,0.815163202 15.636204,1.60954975 L15.7821363,1.69488875 C15.8065142,1.70914459 15.8309158,1.72341427 15.8553346,1.73769401 L16.0250265,1.83692744 L16.1099304,1.88657813 L16.1099304,1.88657813 L16.2795557,1.98577284 C17.4370134,2.66263993 18.5495201,3.31323255 18.9308936,3.53629779 L18.9574842,3.55185083 L19.0056489,3.58002422 L19.0709642,3.61824995 L19.106091,3.64061398 L19.106091,3.64061398 L19.1398559,3.66535503 L19.1454609,3.66999989 L19.1706468,3.69136442 L19.1706468,3.69136442 L19.1961701,3.7154497 L19.2058446,3.72522342 L19.2271844,3.74853011 L19.2271844,3.74853011 L19.2466373,3.77200147 L19.2555447,3.78314115 C19.2667412,3.79800469 19.2774253,3.8132026 19.2878925,3.82987039 L19.3034675,3.8561164 L19.3068283,3.86266495 L19.3221446,3.89243898 L19.3221446,3.89243898 L19.3357617,3.9226647 L19.3419364,3.93840641 L19.3520374,3.96615994 L19.3520374,3.96615994 L19.3609122,3.99451409 L19.3650373,4.00897246 C19.3736131,4.04187237 19.3795347,4.07507255 19.3828458,4.10833439 L19.3858599,4.15824356 L19.3862567,4.16429782 L19.3862567,10.8597033 L21.9605918,12.3651516 L22.1408198,12.4705486 L22.2966007,12.5616511 L22.4521042,12.6525948 C23.6939775,13.3788989 24.8716173,14.0679615 25.0827858,14.19156 C25.09038,14.1956547 25.0978822,14.1998968 25.1052924,14.2042856 L25.1401571,14.2264784 L25.1401571,14.2264784 L25.173718,14.2509983 L25.1804015,14.256555 L25.2054315,14.2778009 L25.2054315,14.2778009 L25.2294667,14.300439 L25.240529,14.311681 L25.2615011,14.334603 L25.2615011,14.334603 L25.280319,14.3572783 L25.2898617,14.3691377 C25.3009981,14.3839891 25.3116608,14.399168 25.3221196,14.4157984 L25.3376887,14.4419729 L25.3411257,14.44867 L25.356442,14.478444 L25.356442,14.478444 L25.370059,14.5086697 L25.3762338,14.5244114 L25.3863348,14.5521649 L25.3863348,14.5521649 L25.3952096,14.5805191 L25.3993346,14.5949773 C25.4083634,14.6296146 25.4144478,14.6645853 25.4177094,14.6996107 L25.4205,14.7521548 L25.4205,21.8154276 C25.4205,22.0290286 25.314745,22.2275819 25.1404379,22.3468317 L25.1020507,22.371148 L19.0607022,25.904003 L19.052145,25.90812 L19.0274725,25.921385 L18.9905864,25.938248 L18.9539249,25.9520573 L18.9539249,25.9520573 L18.9162396,25.9636844 L18.9034263,25.9670546 L18.8997537,25.9679693 L18.8711417,25.9744001 L18.8711417,25.9744001 L18.8420964,25.9795306 L18.8379956,25.9801949 L18.8249914,25.9821309 C18.7985081,25.9854918 18.7717485,25.9875 18.7444392,25.9875 L18.7040493,25.9860656 L18.7040493,25.9860656 L18.6642771,25.9821889 L18.6508827,25.9801949 L18.646846,25.979541 L18.6174402,25.9743289 L18.6174402,25.9743289 L18.5868873,25.9673987 L18.5729594,25.9637741 C18.5476891,25.9567065 18.5230702,25.9485325 18.497631,25.9379898 L18.4649195,25.923126 L18.4649195,25.923126 L18.4332596,25.906515 L18.428176,25.9040029 L12.7102506,22.5602666 L6.99237848,25.9040027 L6.98142719,25.9094145 L6.9593323,25.9213255 L6.92203217,25.9383662 L6.88503557,25.9522506 L6.88503557,25.9522506 L6.84699677,25.9639238 L6.83142934,25.967915 L6.80216677,25.9744782 L6.80216677,25.9744782 L6.77283755,25.9796106 L6.75726882,25.9819991 C6.7306938,25.985397 6.70363433,25.9875 6.67611488,25.9875 L6.63570066,25.9860347 L6.63570066,25.9860347 L6.59590387,25.982129 L6.58258318,25.9801389 L6.57850195,25.9794754 L6.54920392,25.9742924 L6.54920392,25.9742924 L6.51930447,25.9675361 L6.50518482,25.9639105 C6.47957351,25.9567826 6.45461482,25.9485147 6.42930671,25.9379898 L6.3965804,25.9231295 L6.3965804,25.9231295 L6.36489546,25.9065221 L6.35979781,25.904003 L0.318477405,22.3711645 C0.134589739,22.2636648 0.0165298434,22.0721858 0.00160580254,21.8609638 L4.33362146e-11,21.8154231 L4.33362146e-11,14.7547544 C0.000659431039,14.7002958 0.00739860769,14.6489513 0.0199830606,14.5998579 C0.0217010964,14.5929598 0.0236152065,14.5862196 0.0256117182,14.5794512 L0.0340105746,14.5526085 L0.0340105746,14.5526085 L0.0438881197,14.525436 C0.0468008623,14.5177295 0.0494260142,14.5110146 0.0519658496,14.5051222 L0.0648499392,14.4768611 L0.0648499392,14.4768611 L0.0792271202,14.4489932 L0.0835215491,14.4405772 L0.106069006,14.4039031 L0.106069006,14.4039031 L0.130605115,14.3693043 L0.138723321,14.3591626 C0.15138446,14.3431047 0.164666107,14.3277531 0.177469995,14.3143573 C0.182294643,14.3092351 0.187285215,14.3041865 0.19256231,14.298988 L0.215852244,14.2771763 L0.215852244,14.2771763 L0.240091838,14.2566204 L0.246677583,14.2511683 C0.261016983,14.2399349 0.275649244,14.2294335 0.291758885,14.218914 L0.317179447,14.2030272 L6.0341892,10.8599175 L6.0341892,4.1644064 L6.03453375,4.15823625 L6.0342975,4.1641425 L6.03695948,4.11473548 C6.03999054,4.08060973 6.0457504,4.04676201 6.05417226,4.01390717 C6.0558903,4.00700906 6.05780441,4.00026885 6.05980092,3.9935005 L6.06819977,3.96665776 L6.06819977,3.96665776 L6.07807732,3.93948526 C6.08099006,3.93177881 6.08361521,3.92506384 6.08615505,3.91917143 L6.09903914,3.89091038 L6.09903914,3.89091038 L6.11341632,3.86304248 L6.11762701,3.85479056 L6.1403917,3.81770774 L6.1403917,3.81770774 L6.16524566,3.78272204 L6.1725732,3.77365393 L6.1929324,3.74899667 L6.1929324,3.74899667 L6.21431486,3.7255758 L6.22469022,3.71502511 L6.24908067,3.69199868 L6.24908067,3.69199868 L6.27451418,3.67039123 L12.3868218,0.087614736 C12.4867845,0.0291903391 12.5985075,0 12.710223,0 Z M12.0683784,15.8783173 L7.3179324,18.6562632 L7.3179324,24.2238116 L12.0683784,21.4458163 L12.0683784,15.8783173 Z M13.3521216,15.8782631 L13.3521216,21.4458151 L18.1025676,24.223761 L18.1025676,18.6562089 L13.3521216,15.8782631 Z M1.2837432,15.8782631 L1.2837432,21.445762 L6.0341892,24.2237573 L6.0341892,18.6562089 L1.2837432,15.8782631 Z M24.1367568,15.8783173 L19.3863108,18.6562632 L19.3863108,24.2238153 L24.1367568,21.4458694 L24.1367568,15.8783173 Z M18.7444392,11.9742608 L13.9840372,14.7580367 L18.7444392,17.5418125 L23.5048412,14.7580367 L18.7444392,11.9742608 Z M6.6760608,11.9742608 L1.91565877,14.7580367 L6.6760608,17.5418125 L11.4364628,14.7580367 L6.6760608,11.9742608 Z M18.1025676,5.29231233 L13.3521216,8.07025821 L13.3521216,13.6378066 L18.1025676,10.8598113 L18.1025676,5.29231233 Z M7.3179324,5.29225804 L7.3179324,10.8598101 L12.0683784,13.637756 L12.0683784,8.07020393 L7.3179324,5.29225804 Z M12.71025,1.38825582 L7.94984797,4.17203166 L12.71025,6.9558075 L17.470652,4.17203166 L12.71025,1.38825582 Z",
|
|
182
|
-
"wellbeing_element_aggressiveness": "M15.3,26.1c5.3,0,9.5-4.3,9.5-9.5c0-5.3-4.3-9.5-9.5-9.5c-5.3,0-9.5,4.3-9.5,9.5C5.8,21.9,10,26.1,15.3,26.1z M12,15.6c0.4,0,0.8-0.4,0.8-0.8c0-0.4-0.4-0.8-0.8-0.8c-0.4,0-0.8,0.4-0.8,0.8C11.2,15.3,11.5,15.6,12,15.6z M19.4,14.8 c0,0.4-0.4,0.8-0.8,0.8c-0.4,0-0.8-0.4-0.8-0.8c0-0.4,0.4-0.8,0.8-0.8C19.1,14,19.4,14.4,19.4,14.8z M15.3,19.1 c-1.9,0-3.2,1.9-3.2,1.9c2.5-0.2,3.9-0.2,6.4,0C18.5,21,17.2,19.1,15.3,19.1z M13,13.9l-3.5-1.6l0.2-0.5l3.5,1.6L13,13.9z M17.8,13.9l3.5-1.6L21,11.8l-3.5,1.6L17.8,13.9z M22.8,9.7c0.1-0.1,0.2-0.2,0.1-0.3C22.6,8.6,22,8,21.4,7.6c-0.7-0.5-1.4-0.7-2.2-0.9c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.7,0.1,1.4,0.4,2,0.8c0.6,0.4,1.1,1,1.4,1.6C22.6,9.7,22.7,9.7,22.8,9.7z M24.2,9c0.1-0.1,0.2-0.2,0.1-0.3c-0.5-0.9-1.2-1.7-2-2.3c-0.9-0.6-1.8-1-2.9-1.1c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c1,0.1,1.9,0.5,2.7,1c0.8,0.6,1.4,1.3,1.9,2.1C23.9,9,24.1,9,24.2,9z M25.5,8.3c0.1-0.1,0.2-0.2,0.1-0.3c-0.6-1.1-1.5-2.1-2.5-2.8c-1.1-0.7-2.3-1.2-3.5-1.4c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c1.2,0.2,2.3,0.6,3.3,1.3c1,0.7,1.8,1.6,2.4,2.7C25.3,8.3,25.4,8.3,25.5,8.3z",
|
|
183
|
-
"wellbeing_element_allergies_and_intolerances": "M15,11.2V9.6c0-0.1,0.1-0.2,0.2-0.2c0.1,0,0.2,0.1,0.2,0.2v1.6c0,0.1-0.1,0.2-0.2,0.2 C15.1,11.4,15,11.3,15,11.2L15,11.2z M14.5,12.2c0.1,0,0.2-0.1,0.2-0.2v-1.8c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2v1.8 C14.3,12.2,14.4,12.2,14.5,12.2z M15.8,12.2L15.8,12.2c0.1,0,0.2-0.1,0.2-0.2l0,0v-1.8c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0 c-0.1,0-0.2,0.1-0.2,0.2V12l-0.3-0.5L15,12.1c-0.3,0.4-0.3,1,0,1.4l0.1,0.1c0,0,0,0.1,0,0.1l0,9.1c0,0,0,0.1,0.1,0.1 c0,0,0.1,0.1,0.1,0c0.1,0,0.2-0.1,0.2-0.2l0-8.8l0.3-0.5C16,13.1,16,12.6,15.8,12.2L15.8,12.2z M16.6,12.6c0.1,0,0.2-0.1,0.2-0.2 l0,0v-1.4c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2l0,0v1.4C16.5,12.6,16.6,12.6,16.6,12.6L16.6,12.6z M16.7,13 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.3,0.4-0.4,0.6l-0.2,0.6l0.6-0.2c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.4,0.1L16.7,13z M13.9,12.9 l-0.6-0.2l0.1,0.3l0.1,0.2c0,0.2,0.1,0.4,0.3,0.6l0,0c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6C14.7,13.3,14.4,13,13.9,12.9 L13.9,12.9z M15.8,15.3l-0.2,0.6l0.3-0.1l0.2-0.1c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.3-0.4,0.4-0.6l0.2-0.6l-0.6,0.2 C16.2,14.5,15.8,14.9,15.8,15.3L15.8,15.3z M14.5,14.8c-0.2-0.2-0.4-0.3-0.6-0.3l-0.2-0.1l-0.3-0.1l0.2,0.6c0.1,0.5,0.4,0.8,0.9,0.9 l0.6,0.2l-0.2-0.6C14.8,15.2,14.6,15,14.5,14.8L14.5,14.8z M16,16.5c-0.2,0.2-0.3,0.4-0.3,0.6l-0.1,0.2l-0.1,0.3l0.6-0.2 c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.6,0.2C16.4,16.2,16.2,16.3,16,16.5L16,16.5z M13.6,17.1c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2 l-0.1-0.3l-0.1-0.2c0-0.2-0.1-0.4-0.3-0.6c-0.2-0.2-0.4-0.3-0.6-0.3l-0.6-0.2l0.2,0.6C13.4,16.8,13.5,17,13.6,17.1L13.6,17.1z M16.7,17.8c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.3,0.4-0.4,0.6l-0.2,0.6l0.6-0.2c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.3,0.1L16.7,17.8 z M13.9,17.7l-0.6-0.2l0.1,0.3l0.1,0.3c0,0.2,0.1,0.4,0.3,0.6l0,0c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6 C14.7,18.1,14.4,17.8,13.9,17.7L13.9,17.7z M15.7,20.2l-0.2,0.6l0.3-0.1l0.2-0.1c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.3-0.4,0.4-0.6 l0.2-0.6l-0.6,0.2C16.2,19.3,15.8,19.7,15.7,20.2L15.7,20.2z M14.4,19.7c-0.2-0.2-0.4-0.3-0.6-0.3l-0.2-0.1l-0.3-0.1l0.2,0.6 c0,0.2,0.1,0.4,0.3,0.6c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6C14.7,20.1,14.6,19.8,14.4,19.7z M13.8,12.5c0.1,0,0.2-0.1,0.2-0.2 v-1.4c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2l0,1.4c0,0,0,0.1,0.1,0.1C13.7,12.5,13.8,12.5,13.8,12.5z M15.3,6.5 c-5.4,0-9.8,4.4-9.8,9.8s4.4,9.8,9.8,9.8s9.8-4.4,9.8-9.8S20.7,6.5,15.3,6.5z M15.3,24.6c-2,0-4-0.7-5.5-2.1l3.3-2.9l-1-1.1l-3.3,3 C6,17.8,6.6,12.6,10.2,9.7c3.3-2.6,8.1-2.3,11.1,0.8l-3.9,3l0.9,1.2l3.9-3c2.5,3.8,1.4,9-2.4,11.5C18.5,24.1,16.9,24.6,15.3,24.6z",
|
|
184
|
-
"wellbeing_element_asthma": "M27.4,10.7L28,9c-1-0.5-2-0.9-3-1.3c-0.5-0.1-0.9-0.2-1.4-0.2c-0.4,0-0.6,0.2-0.2,0.6 C23.8,8.5,27.4,10.7,27.4,10.7z M19.2,19l3.3-10.9l5.3,3.4l-3.4,10.7c-1.2,1.8-2.2,2.1-4.4,1.2C20.5,21.5,20.4,20.6,19.2,19z M15.1,18.4l3.9,0.9c0.9,1.4,1.2,2.2,0.5,4l-5.7-1.7c0-0.2,0-0.5,0-0.7c-0.1-0.4,0-0.9,0.1-1.3c0.2-0.4,0.4-0.7,0.8-0.9l0,0l0,0 l0.1-0.1L15.1,18.4z M9.2,13.7c0.4,0,0.7-0.3,0.7-0.7c0-0.4-0.3-0.7-0.7-0.7c-0.4,0-0.7,0.3-0.7,0.7C8.5,13.4,8.8,13.7,9.2,13.7 C9.2,13.7,9.2,13.7,9.2,13.7z M7.5,16.6c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7c0,0,0,0,0,0 C7.2,15.9,7.5,16.3,7.5,16.6C7.5,16.6,7.5,16.6,7.5,16.6z M6.4,21.4c0.4,0,0.7-0.3,0.7-0.7c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7 c0,0,0,0,0,0C5.7,21.1,6,21.4,6.4,21.4z M9.1,20.3c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0 C8.8,19.8,9.1,20,9.1,20.3z M8.8,18c0.3,0,0.6-0.3,0.6-0.6s-0.3-0.6-0.6-0.6S8.2,17,8.2,17.4S8.5,18,8.8,18C8.8,18,8.8,18,8.8,18z M10.8,14.8c0,0.3-0.2,0.6-0.6,0.6c-0.3,0-0.6-0.2-0.6-0.6s0.2-0.6,0.6-0.6c0,0,0,0,0,0C10.5,14.3,10.8,14.5,10.8,14.8z M11.4,16.9 c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5C11,16.7,11.2,16.9,11.4,16.9C11.4,16.9,11.4,16.9,11.4,16.9z M12.9,17.6c0,0.2-0.2,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4c0-0.2,0.2-0.4,0.4-0.4C12.8,17.2,12.9,17.4,12.9,17.6 C12.9,17.6,12.9,17.6,12.9,17.6L12.9,17.6z M12,19.4c0.2,0,0.3-0.2,0.3-0.4s-0.2-0.3-0.4-0.3c-0.2,0-0.3,0.2-0.3,0.4 C11.6,19.3,11.8,19.4,12,19.4z M12,20.7c0,0.2-0.1,0.4-0.4,0.4s-0.4-0.1-0.4-0.4c0-0.2,0.1-0.4,0.4-0.4c0,0,0,0,0,0 C11.9,20.3,12,20.5,12,20.7L12,20.7z M13.1,21.4c0.1,0,0.2-0.1,0.2-0.2c0-0.1-0.1-0.2-0.3-0.2c-0.1,0-0.2,0.1-0.2,0.2 C12.9,21.3,13,21.4,13.1,21.4C13.1,21.4,13.1,21.4,13.1,21.4L13.1,21.4z M13.4,19.7c0,0.1-0.1,0.2-0.3,0.2c-0.1,0-0.2-0.1-0.2-0.2 c0-0.1,0.1-0.2,0.2-0.3C13.2,19.4,13.4,19.5,13.4,19.7C13.4,19.6,13.4,19.7,13.4,19.7z M13.7,18.7c0.1,0,0.2-0.1,0.2-0.2 c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2C13.5,18.6,13.6,18.7,13.7,18.7C13.7,18.7,13.7,18.7,13.7,18.7z M10.7,20.5 c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c0,0,0,0,0,0C10.4,20,10.7,20.2,10.7,20.5 C10.7,20.4,10.7,20.5,10.7,20.5L10.7,20.5z M10.6,18.7c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5 C10.1,18.5,10.3,18.7,10.6,18.7C10.6,18.7,10.6,18.7,10.6,18.7z",
|
|
185
|
-
"wellbeing_element_back_and_muscle_pain": "M26,10.2c0,2.1-1.7,3.7-3.7,3.7s-3.7-1.7-3.7-3.7s1.7-3.7,3.7-3.7S26,8.1,26,10.2z M17.9,11.9 c0.9,1.5,1.5,2.1,3.2,2.8c0.1,1.6-0.4,2.3-1.8,3.6c-1.7,2.3-2.7,6.5-2.9,7.5c0,0.1-0.1,0.2-0.3,0.2l-5.8-0.3c-0.1,0-0.3-0.1-0.3-0.3 c0,0,0,0,0,0c0.1-1.5,0.4-2.9,0.7-4.3c0,0-1.6-2.6-2.5-4.5C7.4,14.7,8.6,13.2,10,13s6.2-0.7,6.2-0.7C16.8,12,17.3,11.9,17.9,11.9 L17.9,11.9z M12.2,17.5l1.2-1.9c0,0-0.8,0.1-1.2,0.1s-0.8,0.3-0.5,0.9C11.8,16.9,12,17.2,12.2,17.5L12.2,17.5z M7.2,18.3 c0.6,0.2,1.4,0.4,1.8,0.5c0.2,0.1,0.4,0.3,0.3,0.5S9,19.8,8.8,19.7l0,0c-0.3-0.1-1-0.3-1.6-0.5l-1-0.3c-0.6-0.2-0.3-1,0.3-0.8 L7.2,18.3L7.2,18.3z M9,21.2C8.7,21.5,8,22,7.5,22.4c-0.3,0.2-0.5,0.3-0.6,0.5c-0.5,0.4,0,1,0.5,0.7l0.8-0.6c0.5-0.4,1.1-0.8,1.4-1 C10,21.5,9.4,20.8,9,21.2L9,21.2z M6.3,20.8c0.4-0.1,0.7-0.2,1.1-0.3c0.2-0.1,0.5,0,0.6,0.2c0.1,0.2,0,0.5-0.2,0.6c0,0,0,0-0.1,0 c-0.3,0.1-0.7,0.2-1.1,0.3c-0.3,0.1-0.7,0.2-0.9,0.2C5.1,22,4.8,21.2,5.5,21C5.7,20.9,6,20.9,6.3,20.8z",
|
|
186
|
-
"wellbeing_element_inflammation": "M19.72 9.39455C19.27 9.12656 19.06 8.79901 19.06 8.79901C19 8.97767 19 9.18611 19 9.39455C19 10.6749 20.02 11.6873 21.25 11.6873C21.97 11.6873 22.6 11.3598 22.99 10.8238C24.25 12.3722 25 14.3077 25 16.4516C25 21.3945 20.98 25.3846 16 25.3846C11.02 25.3846 7 21.3945 7 16.4516C7 11.5087 11.02 7.51861 16 7.51861C17.35 7.51861 18.64 7.81638 19.78 8.35236C19.66 8.91812 19.72 9.39455 19.72 9.39455ZM21.13 9.12656C20.68 8.82879 20.23 8.56079 19.75 8.32258C19.87 7.45906 20.26 6.29777 21.55 6C21.01 8.08436 22.24 8.65012 22.72 7.57817C23.47 8.62035 22.9 9.54342 22.9 9.54342C23.2 9.60298 23.47 9.24566 23.47 9.24566C23.47 9.27544 23.47 9.33498 23.47 9.36476C23.47 9.90074 23.29 10.407 22.96 10.8238C22.48 10.2283 21.91 9.69231 21.28 9.21589C21.31 9.15633 21.34 9.09678 21.37 9.03722C21.37 9.067 21.28 9.067 21.13 9.12656ZM21.13 9.12656C20.8 9.27543 20.23 9.63275 20.23 10.6749C20.23 11.2407 20.68 11.6873 21.22 11.6873C21.76 11.6873 22.21 11.2407 22.21 10.6749C22.21 10.3772 22.09 10.1092 21.88 9.93052C21.55 10.407 21.07 9.81141 21.28 9.24566C21.22 9.21589 21.19 9.15633 21.13 9.12656ZM12.82 12.6104L13 12.4615L12.7 12.0744L12.52 12.2233L10.72 13.5633L10.54 13.7122L10.84 14.0993L11.02 13.9504L12.82 12.6104ZM13.57 14.8139C13.57 15.2308 13.24 15.5583 12.82 15.5583C12.4 15.5583 12.07 15.2308 12.07 14.8139C12.07 14.397 12.4 14.0695 12.82 14.0695C13.24 14.0695 13.57 14.397 13.57 14.8139ZM19.12 15.5583C19.54 15.5583 19.87 15.2308 19.87 14.8139C19.87 14.397 19.54 14.0695 19.12 14.0695C18.7 14.0695 18.37 14.397 18.37 14.8139C18.37 15.2308 18.7 15.5583 19.12 15.5583ZM18.91 11.9553L19.12 12.1042L21.07 13.4442L21.28 13.5931L21.01 13.9802L20.8 13.8313L18.85 12.4913L18.64 12.3424L18.91 11.9553ZM15.97 18.8338C14.17 18.8338 12.97 20.6203 12.97 20.6203C15.31 20.4119 16.63 20.4119 18.97 20.6203C18.97 20.6203 17.77 18.8338 15.97 18.8338Z",
|
|
187
|
-
"wellbeing_element_thyroid_health": "M10.0978 11.5352C9.21739 11.9295 8.43478 12.4647 8.43478 13.1971C8.43478 13.5633 8.23912 13.9013 7.97826 14.3521C7.55435 15.0563 7 16.014 7 17.5633C7 18.6619 7.3587 19.3098 7.68478 19.8732C7.91305 20.2676 8.07609 20.6056 8.07609 20.9718C8.07609 21.9014 9.02174 25 10.9456 25C11.7283 24.9718 12.5435 24.8309 13.2609 24.5774C13.2609 24.5492 13.2609 24.5211 13.2609 24.5211V21.9577L12.6739 21.6478C12.4782 21.5352 12.2826 21.3943 12.1196 21.2535C11.9891 21.1126 11.9891 20.9436 12.1521 20.8028C12.2826 20.6901 12.5109 20.6901 12.6739 20.8309C12.7065 20.8591 13.8152 21.8732 16 21.8732C18.2174 21.8732 19.3261 20.8591 19.3261 20.8309C19.4565 20.7183 19.6847 20.6901 19.8477 20.8028C19.9782 20.9154 20.0108 21.1126 19.8804 21.2535C19.7174 21.3943 19.5217 21.5352 19.3261 21.6478L18.7391 21.9577V24.5211C18.7391 24.5492 18.7391 24.5774 18.7391 24.5774C19.4891 24.8309 20.2717 24.9718 21.0543 25C22.9782 25 23.9238 21.9014 23.9238 20.9718C23.9238 20.5774 24.1195 20.2394 24.3152 19.8732C24.6086 19.3098 25 18.6619 25 17.5633C25 16.014 24.4456 15.0844 24.0217 14.3521C23.7608 13.9013 23.5652 13.5633 23.5652 13.1971C23.5652 12.4929 22.8152 11.9577 21.9022 11.5352L21.8695 11.5633C21.8695 11.5633 21.8369 11.5633 21.8369 11.5915C21.7717 11.6478 21.7065 11.676 21.6413 11.7323C20.7282 12.4929 19.6522 13.5352 19.0978 15.4788L19.3913 15.6478C19.5543 15.7605 19.7174 15.8732 19.8804 15.9859C20.0108 16.1267 20.0108 16.2957 19.8477 16.4366C19.7174 16.5492 19.4891 16.5492 19.3261 16.4084C19.2608 16.3521 18.1847 15.3661 16 15.3661C13.7826 15.3661 12.6739 16.3802 12.6739 16.4084C12.5435 16.5211 12.3152 16.5492 12.1521 16.4366C12.0217 16.3239 11.9891 16.1267 12.1196 15.9859C12.25 15.845 12.413 15.7323 12.6087 15.6197L12.9022 15.4506C12.3478 13.507 11.3043 12.4366 10.3587 11.7042C10.2935 11.6478 10.2283 11.6197 10.163 11.5633C10.163 11.5633 10.1304 11.5633 10.1304 11.5352C10.0978 11.5633 10.0978 11.5352 10.0978 11.5352Z M10.3587 11.4225L10.3261 11.3944C9.67392 10.831 9.15219 10.4084 9.15219 9.78873C9.15219 7.92958 11.2717 7 13.0978 7C14.3043 7 14.5326 7.70423 14.7282 8.35211C14.9239 8.94366 15.0869 9.47887 15.9674 9.47887C16.8478 9.47887 17.0109 8.91549 17.2065 8.35211C17.4347 7.70423 17.6304 7 18.837 7C20.6631 7 22.7825 7.92958 22.7825 9.78873C22.7825 10.4366 22.2608 10.8592 21.6086 11.3944L21.5761 11.4225C21.5109 11.4789 21.4456 11.507 21.413 11.5634C21.413 11.5634 21.413 11.5634 21.3804 11.5915C21.3152 11.6479 21.2825 11.6761 21.2174 11.7324C20.4022 12.4366 19.4239 13.5916 18.837 15.3662L18.7391 15.3099C17.8913 14.9437 16.9456 14.7465 16 14.7465C15.0543 14.7465 14.1087 14.9155 13.2609 15.3099L13.163 15.3662C12.6087 13.6197 11.5978 12.4366 10.7826 11.7324C10.7174 11.6761 10.6848 11.6479 10.6196 11.5915C10.4891 11.507 10.4239 11.4789 10.3587 11.4225ZM15.9674 15.3944C17.2065 15.3944 18.087 15.7042 18.6413 15.9859C18.6086 16.0704 18.6086 16.1549 18.5761 16.2676C17.7283 15.8732 16.913 15.7042 15.9674 15.7042C15.0217 15.7042 14.2065 15.8732 13.3587 16.2676C13.3261 16.1831 13.3261 16.0986 13.2935 15.9859C13.8478 15.7042 14.7282 15.3944 15.9674 15.3944ZM13.4565 22.0141V24.493C13.4565 24.7747 13.7174 24.9718 14.0109 24.9718H17.8913C18.2174 24.9718 18.4456 24.7465 18.4456 24.493V22.0141C17.6631 22.3239 16.8152 22.493 15.9348 22.4648C15.0869 22.493 14.2391 22.3239 13.4565 22.0141Z",
|
|
188
|
-
"wellbeing_element_iron_balance": "M12.85 12.1C11.29 11.95 9.73 10.99 9.16 10.6C10.75 8.59 13.21 7.3 16 7.3C19 7.3 21.67 8.83 23.23 11.14C22.75 11.05 22.42 10.93 22.06 10.81C21.4 10.57 20.71 10.3 18.85 10.3C17.68 10.3 16.75 10.78 15.85 11.23C14.92 11.74 13.99 12.22 12.85 12.1ZM7 16C7 20.98 11.02 25 16 25C20.35 25 23.98 21.91 24.82 17.8C24.94 17.26 25 16.69 25 16.09C25 16.06 25 16 25 15.97C25 15.04 24.85 14.14 24.61 13.3C23.47 9.67 20.05 7 16 7C11.02 7 7 11.02 7 16ZM14.14 16.3H15.58V15.94H14.14V14.77H15.79V14.41H13.69V17.8H14.14V16.3ZM16.45 17.5C16.66 17.74 16.96 17.83 17.29 17.83C17.71 17.83 18.04 17.68 18.25 17.35L17.98 17.14C17.89 17.23 17.8 17.32 17.71 17.38C17.59 17.44 17.47 17.47 17.32 17.47C17.11 17.47 16.93 17.38 16.78 17.23C16.63 17.08 16.57 16.87 16.57 16.63H18.28V16.45C18.28 16.06 18.19 15.73 18.01 15.52C17.83 15.31 17.56 15.19 17.23 15.19C17.02 15.19 16.84 15.25 16.66 15.37C16.48 15.49 16.36 15.64 16.27 15.82C16.18 16.03 16.12 16.24 16.12 16.48V16.6C16.12 16.99 16.24 17.29 16.45 17.5ZM16.78 15.76C16.9 15.64 17.05 15.58 17.23 15.58C17.41 15.58 17.56 15.64 17.65 15.76C17.77 15.88 17.83 16.06 17.83 16.27V16.3H16.57C16.6 16.06 16.66 15.88 16.78 15.76Z",
|
|
189
|
-
"wellbeing_element_vitamin_balance": "M9.28358 5H18.2836C18.6866 5 19.0896 5.26866 19.0896 5.80597V8.08955C19.0896 8.49254 18.8209 8.89552 18.2836 8.89552H18.0149H18.4179V9.97015C18.4179 10.6418 18.8209 11.3134 19.4925 11.5821C19.7612 11.7164 20.1642 11.8507 20.2985 12.2537C20.5672 12.5224 20.5672 12.9254 20.5672 13.3284V14H7V13.194C7 12.5224 7.40299 11.8507 8.07463 11.5821C8.47761 11.4478 8.8806 11.1791 9.01493 10.9104C9.28358 10.6418 9.28358 10.2388 9.28358 9.97015V8.89552C8.8806 8.89552 8.61194 8.49254 8.61194 8.08955V5.80597C8.61194 5.26866 8.8806 5 9.28358 5ZM7 14.2687H20.5672V16.6866C19.4925 17.2239 18.6866 18.2985 18.6866 19.5075V23.806H7V14.2687ZM18.8209 24.0746L7.13433 24.209V25.6866C7.13433 26.4925 7.80597 27.1642 8.61194 27.1642H13.5821H19.2239C19.6269 27.1642 20.0299 27.0299 20.2985 26.6269C20.8358 26.8955 21.2388 27.0298 21.9104 27.0298C23.6567 27.0298 25 25.6866 25 23.9403V19.3731C25 18.5672 24.7313 17.7612 24.0597 17.2239C23.1194 16.2836 21.9104 16.0149 20.8358 16.5522V23.806V25.6866C20.8358 26.0896 20.7015 26.3582 20.4328 26.6269C19.3582 26.2239 18.8209 25.1493 18.8209 24.0746ZM13.0448 21.9254C13.1791 22.194 13.5821 22.4627 13.9851 22.4627C14.3881 22.4627 14.6567 22.194 14.9254 21.9254L17.209 17.0896C17.3433 16.8209 17.3433 16.4179 17.0746 16.1493C16.806 15.8806 16.5373 15.6119 16.2687 15.7463C15.8657 15.7463 15.597 15.8806 15.3284 16.2836L13.8507 19.3731L12.3731 16.2836C12.1045 15.7463 11.5672 15.6119 11.0299 15.8806C10.4925 16.1493 10.3582 16.6866 10.6269 17.2239L13.0448 21.9254Z"
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
const escapeHTML = (text) => {
|
|
193
|
-
return text
|
|
194
|
-
.replace(/&/g, '&') // Must come first
|
|
195
|
-
.replace(/</g, '<')
|
|
196
|
-
.replace(/>/g, '>')
|
|
197
|
-
.replace(/"/g, '"')
|
|
198
|
-
.replace(/'/g, ''')
|
|
199
|
-
.replace(/\(/g, '(')
|
|
200
|
-
.replace(/\)/g, ')');
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
const wrapLTR = (text) => {
|
|
204
|
-
const containsArabic = /[\u0600-\u06FF]/.test(text);
|
|
205
|
-
if (containsArabic) {
|
|
206
|
-
return text;
|
|
207
|
-
}
|
|
208
|
-
if (text.trim() === '') {
|
|
209
|
-
return text;
|
|
210
|
-
}
|
|
211
|
-
return `<span style="unicode-bidi: bidi-override;" dir="ltr">${text}</span>`;
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Calculate score metrics for visualization
|
|
218
|
-
* @param {number} score - The score value (0-100)
|
|
219
|
-
* @param {string} client - Client name for specific color logic
|
|
220
|
-
* @returns {object} Score metrics including color, amount, and rotation
|
|
221
|
-
*/
|
|
222
|
-
const calculateScoreMetrics = (score, client = 'default') => {
|
|
223
|
-
const scoreValue = parseFloat(score);
|
|
224
|
-
|
|
225
|
-
// Determine amount based on score range
|
|
226
|
-
let amount;
|
|
227
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
228
|
-
amount = 355;
|
|
229
|
-
} else if (scoreValue >= 70) {
|
|
230
|
-
amount = 360;
|
|
231
|
-
} else {
|
|
232
|
-
amount = 214;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// Determine color based on score range
|
|
236
|
-
let color;
|
|
237
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
238
|
-
color = config.third_level_color;
|
|
239
|
-
} else if (scoreValue >= 70) {
|
|
240
|
-
color = config.fifth_level_color;
|
|
241
|
-
} else {
|
|
242
|
-
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Calculate rotation amount
|
|
246
|
-
let rotateAmount = (scoreValue / 100) * amount;
|
|
247
|
-
if (rotateAmount > 336) {
|
|
248
|
-
rotateAmount = 336;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
return {
|
|
252
|
-
score: scoreValue,
|
|
253
|
-
amount,
|
|
254
|
-
color,
|
|
255
|
-
rotateAmount,
|
|
256
|
-
scoreInteger: Math.floor(scoreValue),
|
|
257
|
-
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
258
|
-
};
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Apply inactive classes to score sections based on score ranges
|
|
263
|
-
* @param {object} $ - jQuery instance
|
|
264
|
-
* @param {number} score - The score value
|
|
265
|
-
* @param {string} sectionClass - CSS class of the section
|
|
266
|
-
*/
|
|
267
|
-
const applyScoreInactiveClasses = ($, score, sectionClass) => {
|
|
268
|
-
const scoreValue = parseFloat(score);
|
|
269
|
-
const selector = `.first-section-scores .${sectionClass}`;
|
|
270
|
-
|
|
271
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
272
|
-
$(`${selector} .part-1, ${selector} .part-3`).addClass('inactive');
|
|
273
|
-
} else if (scoreValue >= 70) {
|
|
274
|
-
$(`${selector} .part-3, ${selector} .part-2`).addClass('inactive');
|
|
275
|
-
} else {
|
|
276
|
-
$(`${selector} .part-1, ${selector} .part-2`).addClass('inactive');
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Calculate extended score metrics for special score types (depression, anxiety)
|
|
282
|
-
* @param {number} score - The score value
|
|
283
|
-
* @param {string} scoreType - Type of score ('depression' or 'anxiety')
|
|
284
|
-
* @param {string} client - Client name
|
|
285
|
-
* @returns {object} Score metrics
|
|
286
|
-
*/
|
|
287
|
-
const calculateExtendedScoreMetrics = (score, scoreType, client = 'default') => {
|
|
288
|
-
const scoreValue = parseFloat(score).toFixed(1);
|
|
289
|
-
const scoreNum = parseFloat(score);
|
|
290
|
-
console.log('scoreValue', scoreValue);
|
|
291
|
-
let amount = 0;
|
|
292
|
-
|
|
293
|
-
if (scoreType === 'depression') {
|
|
294
|
-
if (scoreValue >= 0 && scoreValue <= 14.8) amount = 550;
|
|
295
|
-
else if (scoreValue >= 18.5 && scoreValue <= 33.3) amount = 400;
|
|
296
|
-
else if (scoreValue >= 37 && scoreValue <= 51.9) amount = 380;
|
|
297
|
-
else if (scoreValue >= 55.6 && scoreValue <= 70.4) amount = 370;
|
|
298
|
-
else if (scoreValue >= 74.1 && scoreValue <= 100) amount = 330;
|
|
299
|
-
} else if (scoreType === 'anxiety') {
|
|
300
|
-
if (scoreValue >= 0 && scoreValue <= 19) amount = 460;
|
|
301
|
-
else if (scoreValue >= 23.8 && scoreValue <= 42.9) amount = 400;
|
|
302
|
-
else if (scoreValue >= 47.6 && scoreValue <= 66.7) amount = 360;
|
|
303
|
-
else if (scoreValue >= 71.4 && scoreValue <= 100) amount = 330;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
let amountForRotation = 0;
|
|
307
|
-
if (scoreType === 'depression') {
|
|
308
|
-
if (scoreNum >= 0 && scoreNum <= 14.8) amountForRotation = 550;
|
|
309
|
-
else if (scoreNum > 14.8 && scoreNum < 18.5) amountForRotation = 475; // gap fill
|
|
310
|
-
else if (scoreNum >= 18.5 && scoreNum <= 33.3) amountForRotation = 400;
|
|
311
|
-
else if (scoreNum > 33.3 && scoreNum < 37) amountForRotation = 390; // gap fill
|
|
312
|
-
else if (scoreNum >= 37 && scoreNum <= 51.9) amountForRotation = 380;
|
|
313
|
-
else if (scoreNum > 51.9 && scoreNum < 55.6) amountForRotation = 375; // gap fill
|
|
314
|
-
else if (scoreNum >= 55.6 && scoreNum <= 70.4) amountForRotation = 370;
|
|
315
|
-
else if (scoreNum > 70.4 && scoreNum < 74.1) amountForRotation = 350; // gap fill
|
|
316
|
-
else if (scoreNum >= 74.1 && scoreNum <= 100) amountForRotation = 330;
|
|
317
|
-
} else if (scoreType === 'anxiety') {
|
|
318
|
-
if (scoreNum >= 0 && scoreNum <= 19) amountForRotation = 460;
|
|
319
|
-
else if (scoreNum > 19 && scoreNum < 23.8) amountForRotation = 430; // gap fill
|
|
320
|
-
else if (scoreNum >= 23.8 && scoreNum <= 42.9) amountForRotation = 400;
|
|
321
|
-
else if (scoreNum > 42.9 && scoreNum < 47.6) amountForRotation = 380; // gap fill
|
|
322
|
-
else if (scoreNum >= 47.6 && scoreNum <= 66.7) amountForRotation = 360;
|
|
323
|
-
else if (scoreNum > 66.7 && scoreNum < 71.4) amountForRotation = 345; // gap fill
|
|
324
|
-
else if (scoreNum >= 71.4 && scoreNum <= 100) amountForRotation = 330;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Calculate color
|
|
328
|
-
let color;
|
|
329
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
330
|
-
color = config.third_level_color;
|
|
331
|
-
} else if (scoreValue >= 70) {
|
|
332
|
-
color = config.fifth_level_color;
|
|
333
|
-
} else {
|
|
334
|
-
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
const rotateAmount = (scoreNum / 100) * amountForRotation;
|
|
338
|
-
|
|
339
|
-
return {
|
|
340
|
-
score: scoreValue,
|
|
341
|
-
amount,
|
|
342
|
-
color,
|
|
343
|
-
rotateAmount,
|
|
344
|
-
scoreInteger: Math.floor(scoreValue),
|
|
345
|
-
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
346
|
-
};
|
|
347
|
-
};
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* Calculate physical score metrics with special handling for low scores
|
|
351
|
-
* @param {number} score - The score value
|
|
352
|
-
* @param {string} client - Client name
|
|
353
|
-
* @returns {object} Score metrics
|
|
354
|
-
*/
|
|
355
|
-
const calculatePhysicalScoreMetrics = (score, client = 'default') => {
|
|
356
|
-
const scoreValue = parseFloat(score);
|
|
357
|
-
|
|
358
|
-
let amount;
|
|
359
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
360
|
-
amount = 310;
|
|
361
|
-
} else if (scoreValue >= 70) {
|
|
362
|
-
amount = 310;
|
|
363
|
-
} else {
|
|
364
|
-
amount = 300;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// Determine color
|
|
368
|
-
let color;
|
|
369
|
-
if (scoreValue > 40 && scoreValue < 70) {
|
|
370
|
-
color = config.third_level_color;
|
|
371
|
-
} else if (scoreValue >= 70) {
|
|
372
|
-
color = config.fifth_level_color;
|
|
373
|
-
} else {
|
|
374
|
-
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
let amountForRotation;
|
|
378
|
-
if (scoreValue >= 0 && scoreValue <= 40) {
|
|
379
|
-
amountForRotation = 300;
|
|
380
|
-
} else if (scoreValue > 40 && scoreValue < 70) {
|
|
381
|
-
amountForRotation = 310;
|
|
382
|
-
} else if (scoreValue >= 70 && scoreValue <= 100) {
|
|
383
|
-
amountForRotation = 310;
|
|
384
|
-
} else {
|
|
385
|
-
amountForRotation = 300; // fallback for out-of-range
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
let rotateAmount = (scoreValue / 100) * amountForRotation;
|
|
389
|
-
if (scoreValue <= 20) {
|
|
390
|
-
rotateAmount += 25;
|
|
391
|
-
}
|
|
392
|
-
if (rotateAmount > 336) {
|
|
393
|
-
rotateAmount = 336;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
return {
|
|
397
|
-
score: scoreValue,
|
|
398
|
-
amount,
|
|
399
|
-
color,
|
|
400
|
-
rotateAmount,
|
|
401
|
-
scoreInteger: Math.floor(scoreValue),
|
|
402
|
-
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
403
|
-
};
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Render the first section with physical and psychological scores
|
|
408
|
-
* @param {object} template - The HTML template
|
|
409
|
-
* @param {object} calculationData - Data containing scores and statements
|
|
410
|
-
* @param {object} physicalMetrics - Calculated physical score metrics
|
|
411
|
-
* @param {object} psychologicalMetrics - Calculated psychological score metrics
|
|
412
|
-
* @param {string} client - Client name
|
|
413
|
-
* @returns {string} Rendered HTML
|
|
414
|
-
*/
|
|
415
|
-
const renderFirstSection = (template, calculationData, physicalMetrics, psychologicalMetrics, client) => {
|
|
416
|
-
return template
|
|
417
|
-
.replace("{{physicalScore}}", physicalMetrics.scoreInteger)
|
|
418
|
-
.replace("{{physicalScoreDecimalPart}}", physicalMetrics.scoreDecimal)
|
|
419
|
-
.replace("{{physicalScoreStatement}}", calculationData.physicalScoreStatement)
|
|
420
|
-
.replace("{{PhysicalWord}}", localeService.t('physical'))
|
|
421
|
-
.replace(/{{rotatePhysicalAmount}}/gi, physicalMetrics.rotateAmount)
|
|
422
|
-
.replace(/{{physicalColor}}/gi, physicalMetrics.color)
|
|
423
|
-
.replace("{{psychologicalScore}}", psychologicalMetrics.scoreInteger)
|
|
424
|
-
.replace("{{psychologicalScoreDecimalPart}}", psychologicalMetrics.scoreDecimal)
|
|
425
|
-
.replace("{{psychologicalWord}}", localeService.t('psychological'))
|
|
426
|
-
.replace("{{psychologicalScoreStatement}}", calculationData.psychologicalScoreStatement)
|
|
427
|
-
.replace(/{{rotatePsychologicalAmount}}/gi, psychologicalMetrics.rotateAmount)
|
|
428
|
-
.replace(/{{fifthLevelColor}}/g, config.fifth_level_color)
|
|
429
|
-
.replace(/{{thirdLevelColor}}/g, config.third_level_color)
|
|
430
|
-
.replace(/{{firstLevelColor}}/g, client === 'nasco' ? config.second_level_color : config.first_level_color)
|
|
431
|
-
.replace("{{psychologicalColor}}", psychologicalMetrics.color)
|
|
432
|
-
.replace(/{{scoreHeaderColor}}/gi, physicalMetrics.color)
|
|
433
|
-
.replace(/{{svgIconColor}}/gi, physicalMetrics.color)
|
|
434
|
-
.replace(/{{lowScoreTextColor}}/gi, physicalMetrics.color)
|
|
435
|
-
.replace(/{{scoreDescriptionColor}}/gi, physicalMetrics.color)
|
|
436
|
-
.replace(/{{listIconsFontColor}}/g, config.list_icons_font_color);
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Render extended first section with depression and anxiety scores
|
|
441
|
-
* @param {object} template - The HTML template
|
|
442
|
-
* @param {object} calculationData - Data containing all scores and statements
|
|
443
|
-
* @param {object} metrics - Object containing all calculated metrics
|
|
444
|
-
* @param {string} client - Client name
|
|
445
|
-
* @returns {string} Rendered HTML
|
|
446
|
-
*/
|
|
447
|
-
const renderExtendedFirstSection = (template, calculationData, metrics, client) => {
|
|
448
|
-
return template
|
|
449
|
-
.replace("{{depressionRiskScore}}", metrics.depression.scoreInteger)
|
|
450
|
-
.replace("{{depressionRiskScoreDecimalPart}}", metrics.depression.scoreDecimal)
|
|
451
|
-
.replace("{{depressionRiskScoreStatement}}", calculationData.depressionRiskScoreStatement)
|
|
452
|
-
.replace("{{DepressionRiskWord}}", localeService.t('depressionRisk'))
|
|
453
|
-
.replace(/{{rotateDepressionRiskAmount}}/gi, metrics.depression.rotateAmount)
|
|
454
|
-
.replace(/{{depressionRiskColor}}/gi, metrics.depression.color)
|
|
455
|
-
.replace("{{anxietyRiskScore}}", metrics.anxiety.scoreInteger)
|
|
456
|
-
.replace("{{anxietyRiskScoreDecimalPart}}", metrics.anxiety.scoreDecimal)
|
|
457
|
-
.replace("{{anxietyRiskScoreStatement}}", calculationData.anxietyRiskScoreStatement)
|
|
458
|
-
.replace("{{AnxietyRiskWord}}", localeService.t('anxietyRisk'))
|
|
459
|
-
.replace(/{{rotateAnxietyRiskAmount}}/gi, metrics.anxiety.rotateAmount)
|
|
460
|
-
.replace(/{{anxietyRiskColor}}/gi, metrics.anxiety.color)
|
|
461
|
-
.replace("{{physicalScore}}", metrics.physical.scoreInteger)
|
|
462
|
-
.replace("{{physicalScoreDecimalPart}}", metrics.physical.scoreDecimal)
|
|
463
|
-
.replace("{{physicalScoreStatement}}", calculationData.physicalScoreStatement)
|
|
464
|
-
.replace("{{PhysicalWord}}", localeService.t('physicalScore'))
|
|
465
|
-
.replace(/{{rotatePhysicalAmount}}/gi, metrics.physical.rotateAmount)
|
|
466
|
-
.replace(/{{physicalColor}}/gi, metrics.physical.color)
|
|
467
|
-
.replace("{{ScoreText}}", localeService.t('scoreText'))
|
|
468
|
-
.replace("{{lowScoreText}}", localeService.t('lowScoreText'))
|
|
469
|
-
.replace("{{PhysicalWellbeingText}}", localeService.t('PhysicalWellbeingText'))
|
|
470
|
-
.replace("{{PsychologicalWellbeingText}}", localeService.t('PsychologicalWellbeingText'))
|
|
471
|
-
.replace("{{psychologicalScore}}", metrics.psychological.scoreInteger)
|
|
472
|
-
.replace("{{psychologicalScoreDecimalPart}}", metrics.psychological.scoreDecimal)
|
|
473
|
-
.replace("{{psychologicalWord}}", localeService.t('psychological'))
|
|
474
|
-
.replace("{{psychologicalScoreStatement}}", calculationData.psychologicalScoreStatement)
|
|
475
|
-
.replace(/{{rotatePsychologicalAmount}}/gi, metrics.psychological.rotateAmount)
|
|
476
|
-
.replace(/{{fifthLevelColor}}/g, config.fifth_level_color)
|
|
477
|
-
.replace(/{{thirdLevelColor}}/g, config.third_level_color)
|
|
478
|
-
.replace(/{{secondLevelColor}}/g, config.second_level_color)
|
|
479
|
-
.replace(/{{forthLevelColor}}/g, config.forth_level_color)
|
|
480
|
-
.replace(/{{firstLevelColor}}/g, client === 'nasco' ? config.second_level_color : config.first_level_color)
|
|
481
|
-
.replace(/{{psychologicalColor}}/gi, metrics.psychological.color)
|
|
482
|
-
.replace(/{{depressionRiskColor}}/gi, metrics.depression.color)
|
|
483
|
-
.replace(/{{anxietyRiskColor}}/gi, metrics.anxiety.color)
|
|
484
|
-
.replace(/{{scoreHeaderColor}}/gi, config.score_header_color)
|
|
485
|
-
.replace(/{{svgIconColor}}/gi, config.svg_icon_color)
|
|
486
|
-
.replace(/{{lowScoreTextColor}}/gi, config.low_score_text_color)
|
|
487
|
-
.replace(/{{scoreDescriptionColor}}/gi, config.score_description_color)
|
|
488
|
-
.replace(/{{listIconsFontColor}}/g, config.list_icons_font_color)
|
|
489
|
-
.replace(/{{generalFontColor}}/g, config.general_font_color)
|
|
490
|
-
.replace(/{{sectionTitleBorderColor}}/g, config.section_title_border_color);
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Load wellbeing templates based on language direction
|
|
495
|
-
* @param {boolean} isRtl - Whether the language is RTL
|
|
496
|
-
* @param {string} templatePath - Base template path (default: 'wellbeing')
|
|
497
|
-
* @returns {object} Object containing all loaded templates
|
|
498
|
-
*/
|
|
499
|
-
const loadWellbeingTemplates = (isRtl, templatePath = 'wellbeing') => {
|
|
500
|
-
const basePath = path.resolve(__dirname + `/../templates/${templatePath}`);
|
|
501
|
-
return {
|
|
502
|
-
html: fs.readFileSync(
|
|
503
|
-
path.resolve(basePath, isRtl ? 'rtl_no_pages.html' : 'ltr_no_pages.html'),
|
|
504
|
-
'utf8'
|
|
505
|
-
),
|
|
506
|
-
header: fs.readFileSync(path.resolve(basePath, 'blocks/header.html'), 'utf8'),
|
|
507
|
-
footer: fs.readFileSync(path.resolve(basePath, 'blocks/footer.html'), 'utf8'),
|
|
508
|
-
firstSection: fs.readFileSync(path.resolve(basePath, 'blocks/first-section.html'), 'utf8'),
|
|
509
|
-
tips: fs.readFileSync(path.resolve(basePath, 'blocks/tips.html'), 'utf8')
|
|
510
|
-
};
|
|
511
|
-
};
|
|
512
|
-
|
|
513
|
-
/**
|
|
514
|
-
* Get user image based on gender and photo availability
|
|
515
|
-
* @param {string} photo - User photo URL
|
|
516
|
-
* @param {number} genderId - Gender ID (90 for female)
|
|
517
|
-
* @returns {string} Path to user image
|
|
518
|
-
*/
|
|
519
|
-
const getUserImage = (photo, genderId) => {
|
|
520
|
-
if (!empty(photo)) {
|
|
521
|
-
return photo;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
const imageFolder = path.resolve(__dirname + '/../assets/wellbeing/images');
|
|
525
|
-
return genderId === 90
|
|
526
|
-
? path.resolve(imageFolder, 'user-woman.png')
|
|
527
|
-
: path.resolve(imageFolder, 'user-man.png');
|
|
528
|
-
};
|
|
529
|
-
|
|
530
|
-
/**
|
|
531
|
-
* Generate dynamic CSS styles for the report
|
|
532
|
-
* @param {string} iconColor - Color for icon elements
|
|
533
|
-
* @returns {string} CSS style string
|
|
534
|
-
*/
|
|
535
|
-
const generateReportStyles = (iconColor) => {
|
|
536
|
-
const styles = {
|
|
537
|
-
'.tips-text': `color: ${config.insights_font_color} !important;`,
|
|
538
|
-
'.first-level-font-color': `color: ${config.general_font_color} !important;`,
|
|
539
|
-
'.first-section-scores': `border-color: ${config.first_section_scores_border_color} !important;`,
|
|
540
|
-
'.disclaimer-text-color': `color: ${config.disclaimer_text_color} !important;`,
|
|
541
|
-
'.first-level-border-color': `border-color: ${config.general_font_color} !important;`,
|
|
542
|
-
'.scores-note .first-level-font-color': `color: ${iconColor} !important;`,
|
|
543
|
-
'.top-box-bg': `background-color: ${config.top_box_background} !important;`,
|
|
544
|
-
'.footer-background': `background-color: ${config.footer_background} !important;`,
|
|
545
|
-
'.report-date, .patient-info, .score-description, .list-text, .report-header, .list-score, .score-details-title': `color: ${config.body_font_color} !important;`,
|
|
546
|
-
'.list-item g, .list-item path': `fill: ${config.list_icons_font_color} !important; stroke: ${config.list_icons_font_color} !important;`,
|
|
547
|
-
'.fifth-level-font-color': `color: ${config.fifth_level_color} !important;`
|
|
548
|
-
};
|
|
549
|
-
|
|
550
|
-
return '<style>' + Object.entries(styles).map(([selector, rules]) => `${selector}{${rules}}`).join('') + '</style>';
|
|
551
|
-
};
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
* Process part scores and organize by category
|
|
555
|
-
* @param {object} partScores - Raw part scores data
|
|
556
|
-
* @returns {object} Organized scores by category
|
|
557
|
-
*/
|
|
558
|
-
const processPartScores = (partScores) => {
|
|
559
|
-
const categories = {
|
|
560
|
-
lifeStyle: [],
|
|
561
|
-
body: [],
|
|
562
|
-
mind: [],
|
|
563
|
-
healthRisk: []
|
|
564
|
-
};
|
|
565
|
-
|
|
566
|
-
Object.entries(partScores).forEach(([key, items]) => {
|
|
567
|
-
if (key === 'body' || key === 'lifeStyle' || key === 'mind') {
|
|
568
|
-
items.forEach(item => {
|
|
569
|
-
const iconName = item['icon'].replace(/\s/g, '');
|
|
570
|
-
const name = iconName.split('.png')[0];
|
|
571
|
-
const iconPath = icons[name];
|
|
572
|
-
|
|
573
|
-
if (empty(iconPath)) {
|
|
574
|
-
console.log('Missing icon:', name);
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
const scoreData = {
|
|
578
|
-
percentage: Math.round(item['score'] / 2),
|
|
579
|
-
icon: iconPath,
|
|
580
|
-
scoreText: item['scoreText']
|
|
581
|
-
};
|
|
582
|
-
|
|
583
|
-
categories[key].push(scoreData);
|
|
584
|
-
});
|
|
585
|
-
}
|
|
586
|
-
});
|
|
587
|
-
|
|
588
|
-
return categories;
|
|
589
|
-
};
|
|
590
|
-
|
|
591
|
-
/**
|
|
592
|
-
* Organize tips by part ID
|
|
593
|
-
* @param {array} tips - Array of tip objects
|
|
594
|
-
* @returns {object} Tips organized by category
|
|
595
|
-
*/
|
|
596
|
-
const organizeTipsByPart = (tips, clientName) => {
|
|
597
|
-
let organized = clientName.toLowerCase() === 'mediclinic' ? {
|
|
598
|
-
lifeStyle: [],
|
|
599
|
-
mind: [],
|
|
600
|
-
body: []
|
|
601
|
-
} : {
|
|
602
|
-
lifeStyle: [],
|
|
603
|
-
body: [],
|
|
604
|
-
mind: []
|
|
605
|
-
};
|
|
606
|
-
|
|
607
|
-
const partMapping = clientName.toLowerCase() === 'mediclinic' ? {
|
|
608
|
-
1: 'lifeStyle',
|
|
609
|
-
2: 'mind',
|
|
610
|
-
3: 'body'
|
|
611
|
-
} : {
|
|
612
|
-
1: 'lifeStyle',
|
|
613
|
-
2: 'body',
|
|
614
|
-
3: 'mind'
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
tips.forEach(tip => {
|
|
618
|
-
const category = partMapping[tip.partId];
|
|
619
|
-
if (category) {
|
|
620
|
-
tip.type = `${category}Insights`;
|
|
621
|
-
organized[category].push(tip);
|
|
622
|
-
}
|
|
623
|
-
});
|
|
624
|
-
return organized;
|
|
625
|
-
};
|
|
626
|
-
|
|
627
|
-
/**
|
|
628
|
-
* Render header template with data
|
|
629
|
-
* @param {string} template - Header template
|
|
630
|
-
* @param {object} data - Data object containing patient info
|
|
631
|
-
* @param {string} logo - Logo path
|
|
632
|
-
* @param {string} userImage - User image path
|
|
633
|
-
* @param {string} topInsight - Top insight text
|
|
634
|
-
* @returns {string} Rendered header HTML
|
|
635
|
-
*/
|
|
636
|
-
const renderHeaderTemplate = (template, data, logo, userImage, topInsight) => {
|
|
637
|
-
return template
|
|
638
|
-
.replace('{{logo}}', logo)
|
|
639
|
-
.replace('{{userImage}}', userImage)
|
|
640
|
-
.replace('{{topBoxBg}}', config.top_box_background)
|
|
641
|
-
.replace('{{scoresNote}}', localeService.t('scoresNote'))
|
|
642
|
-
.replace('{{bulbIcon}}', config.bulbIcon)
|
|
643
|
-
.replace('{{reportHeader}}', localeService.t('wellbeingReport'))
|
|
644
|
-
.replace('{{reportHeaderDescription}}', topInsight)
|
|
645
|
-
.replace('{{patientName}}', data.name)
|
|
646
|
-
.replace('{{patientOld}}', data.age)
|
|
647
|
-
.replace('{{yearsOld}}', localeService.t('yearsOld'))
|
|
648
|
-
.replace('{{patientGender}}', data.gender);
|
|
649
|
-
};
|
|
650
|
-
|
|
651
|
-
/**
|
|
652
|
-
* Load extended templates for smart report
|
|
653
|
-
* @param {boolean} isRtl - Whether the language is RTL
|
|
654
|
-
* @param {string} clientName - Client name for template path
|
|
655
|
-
* @param {boolean} hasProfileInfo - Whether profile info exists
|
|
656
|
-
* @returns {object} Object containing all loaded templates
|
|
657
|
-
*/
|
|
658
|
-
const loadExtendedTemplates = (isRtl, clientName, hasProfileInfo = false) => {
|
|
659
|
-
if (clientName.toLowerCase() === 'pha') {
|
|
660
|
-
clientName = 'Pha';
|
|
661
|
-
} else if (clientName.toLowerCase() === 'mediclinic') {
|
|
662
|
-
clientName = 'Mediclinic';
|
|
663
|
-
}
|
|
664
|
-
const basePath = path.resolve(__dirname + `/../templates/${clientName}`);
|
|
665
|
-
|
|
666
|
-
const templates = {
|
|
667
|
-
html: fs.readFileSync(
|
|
668
|
-
path.resolve(basePath, isRtl ? 'rtl_no_pages.html' : 'ltr_no_pages.html'),
|
|
669
|
-
'utf8'
|
|
670
|
-
),
|
|
671
|
-
header: fs.readFileSync(path.resolve(basePath, 'blocks/header.html'), 'utf8'),
|
|
672
|
-
pdfHeader: fs.readFileSync(path.resolve(basePath, 'blocks/header-template.html'), 'utf8'),
|
|
673
|
-
footer: fs.readFileSync(path.resolve(basePath, 'blocks/footer.html'), 'utf8'),
|
|
674
|
-
firstSection: fs.readFileSync(path.resolve(basePath, 'blocks/first-section.html'), 'utf8'),
|
|
675
|
-
tips: fs.readFileSync(path.resolve(basePath, 'blocks/tips.html'), 'utf8'),
|
|
676
|
-
patientTable: ''
|
|
677
|
-
};
|
|
678
|
-
|
|
679
|
-
if (hasProfileInfo) {
|
|
680
|
-
templates.patientTable = fs.readFileSync(path.resolve(basePath, 'blocks/patient-table.html'), 'utf8');
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
return templates;
|
|
684
|
-
};
|
|
685
|
-
|
|
686
|
-
/**
|
|
687
|
-
* Generate header info HTML from profile data
|
|
688
|
-
* @param {array} profileInfo - Array of profile information
|
|
689
|
-
* @param {number} count - Number of items to process (default: 4)
|
|
690
|
-
* @returns {string} Generated HTML
|
|
691
|
-
*/
|
|
692
|
-
const generateHeaderInfo = (profileInfo, count = 4) => {
|
|
693
|
-
let html = '';
|
|
694
|
-
|
|
695
|
-
for (let i = 0; i < Math.min(count, profileInfo.length); i++) {
|
|
696
|
-
const element = profileInfo[i];
|
|
697
|
-
if (element) {
|
|
698
|
-
html += `
|
|
699
|
-
<div class="info-group">
|
|
700
|
-
<div class="info-title">${element.title}:</div>
|
|
701
|
-
<div class="info-value">${element.value}</div>
|
|
702
|
-
</div>
|
|
703
|
-
`;
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
return html;
|
|
708
|
-
};
|
|
709
|
-
|
|
710
|
-
/**
|
|
711
|
-
* Generate extended report styles with additional properties
|
|
712
|
-
* @param {string} iconColor - Color for icon elements
|
|
713
|
-
* @returns {string} CSS style string
|
|
714
|
-
*/
|
|
715
|
-
const generateExtendedReportStyles = (iconColor) => {
|
|
716
|
-
const styles = {
|
|
717
|
-
'.tips-text': `color: ${config.insights_font_color} !important;`,
|
|
718
|
-
'.first-level-font-color': `color: ${config.general_font_color} !important;`,
|
|
719
|
-
'.first-section-scores': `border-color: ${config.section_title_border_color} !important;`,
|
|
720
|
-
'.physical-score-section': `border-color: ${config.section_title_border_color} !important;`,
|
|
721
|
-
'.psychological-score-section, .psychological-score-section1, .psychological-score-section2': `border-color: ${config.body_font_color} !important;`,
|
|
722
|
-
'.row.score-section': `border-color: ${config.section_title_border_color} !important;`,
|
|
723
|
-
'.disclaimer-text-color': `color: ${config.disclaimer_text_color} !important;`,
|
|
724
|
-
'.first-level-border-color': `border-color: ${config.general_font_color} !important;`,
|
|
725
|
-
'.scores-note .first-level-font-color': `color: ${iconColor} !important;`,
|
|
726
|
-
'.top-box-bg': `background-color: ${config.top_box_background} !important;`,
|
|
727
|
-
'.footer-background': `background-color: ${config.footer_background} !important;`,
|
|
728
|
-
'.print-page-footer': `border-color: ${config.footer_border_color} !important;`,
|
|
729
|
-
'.report-date, .patient-info, .score-description, .list-text, .report-header, .list-score, .score-details-title': `color: ${config.body_font_color} !important;`,
|
|
730
|
-
'.list-item g, .list-item path': `fill: ${config.list_icons_font_color} !important; stroke: ${config.list_icons_font_color} !important;`,
|
|
731
|
-
'.fifth-level-font-color': `color: ${config.fifth_level_color} !important;`
|
|
732
|
-
};
|
|
733
|
-
|
|
734
|
-
return '<style>' + Object.entries(styles).map(([selector, rules]) => `${selector}{${rules}}`).join('') + '</style>';
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
/**
|
|
738
|
-
* Process extended part scores with base division
|
|
739
|
-
* @param {object} partScores - Raw part scores data
|
|
740
|
-
* @returns {object} Organized scores by category
|
|
741
|
-
*/
|
|
742
|
-
const processExtendedPartScores = (partScores) => {
|
|
743
|
-
const categories = {
|
|
744
|
-
lifeStyle: [],
|
|
745
|
-
body: [],
|
|
746
|
-
mind: [],
|
|
747
|
-
healthRisk: []
|
|
748
|
-
};
|
|
749
|
-
|
|
750
|
-
Object.entries(partScores).forEach(([key, items]) => {
|
|
751
|
-
if (key === 'body' || key === 'lifeStyle' || key === 'mind') {
|
|
752
|
-
items.forEach(item => {
|
|
753
|
-
const iconName = item['icon'].replace(/\s/g, '');
|
|
754
|
-
const name = iconName.split('.png')[0];
|
|
755
|
-
const iconPath = icons[name];
|
|
756
|
-
|
|
757
|
-
if (empty(iconPath)) {
|
|
758
|
-
console.log('Missing icon:', name);
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
const scoreData = {
|
|
762
|
-
percentage: Math.round(item['score'] / (item['base'] / 5)),
|
|
763
|
-
icon: iconPath,
|
|
764
|
-
scoreText: item['scoreText'],
|
|
765
|
-
key
|
|
766
|
-
};
|
|
767
|
-
|
|
768
|
-
categories[key].push(scoreData);
|
|
769
|
-
});
|
|
770
|
-
}
|
|
771
|
-
});
|
|
772
|
-
|
|
773
|
-
return categories;
|
|
774
|
-
};
|
|
775
|
-
|
|
776
|
-
/**
|
|
777
|
-
* Organize tips by part ID for extended report
|
|
778
|
-
* @param {array} tips - Array of tip objects
|
|
779
|
-
* @returns {object} Tips organized by category
|
|
780
|
-
*/
|
|
781
|
-
const organizeExtendedTipsByPart = (tips, client) => {
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
const clientLower = (client || '').toLowerCase();
|
|
785
|
-
const organized = clientLower === 'pha' ? {
|
|
786
|
-
lifeStyle: [],
|
|
787
|
-
body: [],
|
|
788
|
-
mind: []
|
|
789
|
-
} : {
|
|
790
|
-
lifeStyle: [],
|
|
791
|
-
mind: [],
|
|
792
|
-
body: []
|
|
793
|
-
};
|
|
794
|
-
|
|
795
|
-
const partMapping = clientLower === 'pha' ? {
|
|
796
|
-
1: 'lifeStyle',
|
|
797
|
-
2: 'body',
|
|
798
|
-
3: 'mind',
|
|
799
|
-
} : {
|
|
800
|
-
1: 'lifeStyle',
|
|
801
|
-
2: 'mind',
|
|
802
|
-
3: 'body'
|
|
803
|
-
};
|
|
804
|
-
|
|
805
|
-
tips.forEach(tip => {
|
|
806
|
-
const category = partMapping[tip.partId];
|
|
807
|
-
if (category) {
|
|
808
|
-
tip.type = `${category}Insights`;
|
|
809
|
-
organized[category].push(tip);
|
|
810
|
-
}
|
|
811
|
-
});
|
|
812
|
-
|
|
813
|
-
return organized;
|
|
814
|
-
};
|
|
815
|
-
|
|
816
|
-
/**
|
|
817
|
-
* Render patient table from profile info
|
|
818
|
-
* @param {array} profileInfo - Profile information array
|
|
819
|
-
* @param {number} startIndex - Start index for processing (default: 4)
|
|
820
|
-
* @returns {string} Rendered patient table HTML
|
|
821
|
-
*/
|
|
822
|
-
const renderPatientTable = (profileInfo, startIndex = 4) => {
|
|
823
|
-
if (empty(profileInfo) || profileInfo.length <= startIndex) {
|
|
824
|
-
return '';
|
|
825
|
-
}
|
|
826
|
-
|
|
827
|
-
let details1HTML = '';
|
|
828
|
-
let details2HTML = '';
|
|
829
|
-
const
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
<div class="details-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
<div class="details-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
<div class="details-column"
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
*
|
|
870
|
-
* @
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
let
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
<div class="
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
<div class="
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
<
|
|
906
|
-
<div class="details-column"
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
*
|
|
913
|
-
* @param {string}
|
|
914
|
-
* @param {string}
|
|
915
|
-
* @
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
.replace('{{
|
|
921
|
-
.replace('{{
|
|
922
|
-
.replace(
|
|
923
|
-
};
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
*
|
|
928
|
-
* @param {string}
|
|
929
|
-
* @param {string}
|
|
930
|
-
* @
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
.replace('{{
|
|
936
|
-
.replace('{{
|
|
937
|
-
};
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
*
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
*
|
|
946
|
-
* @param {
|
|
947
|
-
* @param {
|
|
948
|
-
* @param {string}
|
|
949
|
-
* @
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
const
|
|
975
|
-
const
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
const
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
const
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
$('#content').append(
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
const
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
applyScoreInactiveClasses($,
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
.replace("{{Disclaimer
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
$('
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
};
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
*
|
|
1081
|
-
* @param {
|
|
1082
|
-
* @param {
|
|
1083
|
-
* @param {string}
|
|
1084
|
-
* @param {
|
|
1085
|
-
* @param {
|
|
1086
|
-
* @
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
const
|
|
1098
|
-
const
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
const
|
|
1122
|
-
const
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
const
|
|
1127
|
-
const
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
$('
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
const
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
if (
|
|
1139
|
-
$('#content').append('<style>.
|
|
1140
|
-
}
|
|
1141
|
-
|
|
1142
|
-
//
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
//
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
)
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
'
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
'
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
// Remove page-break
|
|
1273
|
-
temp$('[
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
smartReportHtml = smartReportHtml.replace(
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
#content
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
#content >
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
height: 0 !important;
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
}
|
|
1392
|
-
|
|
1393
|
-
.
|
|
1394
|
-
margin
|
|
1395
|
-
padding
|
|
1396
|
-
}
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
const
|
|
1410
|
-
if (!fs.existsSync(
|
|
1411
|
-
fs.mkdirSync(
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
await page.
|
|
1462
|
-
await page.
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
})
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
}
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
const
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
//
|
|
1488
|
-
await
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
debugLog("
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
const
|
|
1521
|
-
|
|
1522
|
-
);
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
const
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
const
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
logoStyle
|
|
1545
|
-
titleStyle
|
|
1546
|
-
}
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
}
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
<div style="font-family: 'Open Sans', sans-serif;">
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
<
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
await page.
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
await page.
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
})
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
}
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
const
|
|
1703
|
-
const
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
const
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
}
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
</
|
|
1944
|
-
</
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
htmlContent +=
|
|
1966
|
-
}
|
|
1967
|
-
|
|
1968
|
-
if (data.
|
|
1969
|
-
let
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const { promisify } = require('util');
|
|
4
|
+
const { JSDOM } = require("jsdom");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const LocaleService = require('../app/services/localeService.js');
|
|
7
|
+
const i18n = require('../app/i18n_wellbeing.config.js');
|
|
8
|
+
const puppeteer = require("puppeteer");
|
|
9
|
+
const { renderReportItems, find, renderSummary, renderReportSummary, renderHTMLTemplate, renderAllergyClasses } = require("./template.js");
|
|
10
|
+
const { cli } = require("webpack");
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var localeService = new LocaleService(i18n);
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
let OUT_FILE = 'output/nasco-pdf.html';
|
|
17
|
+
let Pdf_file = '';
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
let debug = true;
|
|
21
|
+
|
|
22
|
+
let debugLog = (val1, val2 = "") => {
|
|
23
|
+
if (debug) {
|
|
24
|
+
console.log(val1, val2);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Config object to hold all configuration values
|
|
30
|
+
let config = {
|
|
31
|
+
logo: "",
|
|
32
|
+
title: "",
|
|
33
|
+
bulbIcon: "",
|
|
34
|
+
bulb_icon_font_color: "",
|
|
35
|
+
first_level_color: "",
|
|
36
|
+
second_level_color: "",
|
|
37
|
+
third_level_color: "",
|
|
38
|
+
forth_level_color: "",
|
|
39
|
+
fifth_level_color: "",
|
|
40
|
+
general_font_color: "",
|
|
41
|
+
disclaimer_text_color: "",
|
|
42
|
+
top_box_background: "",
|
|
43
|
+
footer_background: "",
|
|
44
|
+
lifestyleImage: path.resolve(__dirname + '/../assets/wellbeing/images/lifestyle-section.png'),
|
|
45
|
+
mindImage: path.resolve(__dirname + '/../assets/wellbeing/images/mind-section.png'),
|
|
46
|
+
bodyImage: path.resolve(__dirname + '/../assets/wellbeing/images/body-section.png'),
|
|
47
|
+
body_font_color: "",
|
|
48
|
+
list_icons_font_color: "",
|
|
49
|
+
insights_font_color: "",
|
|
50
|
+
section_title_border_color: ""
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Load color theme based on client name
|
|
54
|
+
* @param {string} clientName - Client name (mediclinic, pha, nasco, etc.)
|
|
55
|
+
* @returns {object} Color theme object
|
|
56
|
+
*/
|
|
57
|
+
const loadColorTheme = (clientName = 'default') => {
|
|
58
|
+
if (clientName.toLowerCase() == 'pha') {
|
|
59
|
+
clientName = 'pha';
|
|
60
|
+
}
|
|
61
|
+
const themes = {
|
|
62
|
+
mediclinic: {
|
|
63
|
+
headerText: '#3B3B3B',
|
|
64
|
+
headerBackground: '#f2f5f8',
|
|
65
|
+
headerDivider: '#0092D2',
|
|
66
|
+
footerText: '#B5B5B5',
|
|
67
|
+
listIcon: '#8b8ba7',
|
|
68
|
+
insightPrimary: '#124374',
|
|
69
|
+
insightSecondary: '#000000',
|
|
70
|
+
warningIcon: '#ffc107'
|
|
71
|
+
},
|
|
72
|
+
pha: {
|
|
73
|
+
headerText: '#2C3E50',
|
|
74
|
+
headerBackground: '#ECF0F1',
|
|
75
|
+
headerDivider: '#0F2062',
|
|
76
|
+
footerText: '#95A5A6',
|
|
77
|
+
listIcon: '#7F8C8D',
|
|
78
|
+
insightPrimary: '#0F2062',
|
|
79
|
+
insightSecondary: '#2C3E50',
|
|
80
|
+
warningIcon: '#F39C12'
|
|
81
|
+
},
|
|
82
|
+
nasco: {
|
|
83
|
+
headerText: '#34495E',
|
|
84
|
+
headerBackground: '#EBF5FB',
|
|
85
|
+
headerDivider: '#5DADE2',
|
|
86
|
+
footerText: '#AAB7B8',
|
|
87
|
+
listIcon: '#85929E',
|
|
88
|
+
insightPrimary: '#1F618D',
|
|
89
|
+
insightSecondary: '#1C2833',
|
|
90
|
+
warningIcon: '#F4D03F'
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
};
|
|
94
|
+
return themes[clientName?.toLowerCase()] || themes.mediclinic;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Load and apply configuration for a specific client
|
|
98
|
+
* @param {string} clientName - The client name to load config for
|
|
99
|
+
* @returns {object} The loaded configuration
|
|
100
|
+
*/
|
|
101
|
+
const loadClientConfig = (clientName = 'default') => {
|
|
102
|
+
if (clientName.toLowerCase() == 'pha') {
|
|
103
|
+
clientName = 'Pha';
|
|
104
|
+
}
|
|
105
|
+
const pathFile = path.resolve(__dirname + '/../config/' + clientName + '.json');
|
|
106
|
+
let clientConfig = require('../config/default.json');
|
|
107
|
+
|
|
108
|
+
if (fs.existsSync(pathFile) && clientName !== 'default') {
|
|
109
|
+
clientConfig = require('../config/' + clientName + '.json');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Map config values with defaults
|
|
113
|
+
config.logo = clientConfig['logo'] || "";
|
|
114
|
+
config.labs_logos = clientConfig['labs-logo'] || [];
|
|
115
|
+
config.title = clientConfig['title'] || "";
|
|
116
|
+
config.bulbIcon = clientConfig['bulb_icon'] || "";
|
|
117
|
+
config.bulb_icon_font_color = clientConfig['bulb_icon_font_color'] || "";
|
|
118
|
+
config.first_level_color = clientConfig['first-level-color'] || "";
|
|
119
|
+
config.second_level_color = clientConfig['second-level-color'] || "";
|
|
120
|
+
config.third_level_color = clientConfig['third-level-color'] || "";
|
|
121
|
+
config.forth_level_color = clientConfig['forth-level-color'] || "";
|
|
122
|
+
config.fifth_level_color = clientConfig['fifth-level-color'] || "";
|
|
123
|
+
config.general_font_color = clientConfig['general-font-color'] || "";
|
|
124
|
+
config.disclaimer_text_color = clientConfig['disclaimer-text-color'] || "";
|
|
125
|
+
config.top_box_background = clientConfig['top-box-background'] || "";
|
|
126
|
+
config.footer_background = clientConfig['footer-background'] || "";
|
|
127
|
+
config.footer_border_color = clientConfig['footer-border-color'] || clientConfig['section-title-border-color'] || "";
|
|
128
|
+
|
|
129
|
+
// Handle image paths with fallbacks
|
|
130
|
+
config.lifestyleImage = clientConfig['lifestyle_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/lifestyle-section.png');
|
|
131
|
+
config.mindImage = clientConfig['mind_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/mind-section.png');
|
|
132
|
+
config.bodyImage = clientConfig['body_icon'] || path.resolve(__dirname + '/../assets/wellbeing/images/body-section.png');
|
|
133
|
+
config.body_font_color = clientConfig['body_font_color'] || "";
|
|
134
|
+
config.list_icons_font_color = clientConfig['list_icons_font_color'] || "";
|
|
135
|
+
config.insights_font_color = clientConfig['insights_font_color'] || "";
|
|
136
|
+
|
|
137
|
+
config.score_header_color = clientConfig['score-header-color'] || clientConfig['first-level-color'] || "";
|
|
138
|
+
config.score_description_color = clientConfig['score-description-color'] || clientConfig['first-level-color'] || "";
|
|
139
|
+
config.svg_icon_color = clientConfig['svg-icon-color'] || clientConfig['first-level-color'] || "";
|
|
140
|
+
config.low_score_text_color = clientConfig['low-score-text-color'] || clientConfig['first-level-color'] || "";
|
|
141
|
+
config.section_title_border_color =
|
|
142
|
+
clientConfig['section-title-border-color'] ||
|
|
143
|
+
(clientConfig['corporate_report'] ?
|
|
144
|
+
clientConfig['corporate_report']['section_title_border_color'] : null) ||
|
|
145
|
+
clientConfig['forth-level-color'] ||
|
|
146
|
+
"";
|
|
147
|
+
config.first_section_scores_border_color = clientConfig['first-section-scores-border-color'] || clientConfig['fifth-level-color'] || "";
|
|
148
|
+
|
|
149
|
+
config.colors = loadColorTheme(clientName);
|
|
150
|
+
|
|
151
|
+
return config;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const icons = {
|
|
155
|
+
"wellbeing_element_alcohol": "M 10.667969 5.144531 L 19.332031 5.144531 C 19.5 5.144531 19.65625 5.238281 19.710938 5.375 C 21.007812 8.671875 21.394531 10.714844 21.394531 12.316406 C 21.394531 15.285156 18.53125 17.695312 15 17.695312 C 11.46875 17.695312 8.605469 15.285156 8.605469 12.316406 C 8.605469 10.714844 8.988281 8.671875 10.289062 5.375 C 10.34375 5.238281 10.5 5.144531 10.667969 5.144531 Z M 9.804688 12.316406 C 9.804688 14.648438 11.785156 16.09375 15 16.339844 C 17.796875 16.550781 20.195312 14.71875 20.195312 12.316406 L 20.195312 11.929688 L 9.804688 11.929688 Z M 9.804688 12.316406 M 17.796875 24.140625 L 17.398438 24.140625 C 16.296875 24.140625 15.398438 23.378906 15.398438 22.445312 L 15.394531 18.28125 C 15.394531 17.945312 15.6875 17.667969 16.078125 17.613281 C 17.324219 17.433594 18.445312 16.953125 19.332031 16.261719 C 19.332031 16.261719 18.003906 17.015625 15 17.015625 C 11.996094 17.015625 10.667969 16.261719 10.667969 16.261719 C 11.558594 16.953125 12.675781 17.433594 13.921875 17.613281 C 14.3125 17.667969 14.605469 17.945312 14.601562 18.28125 L 14.601562 22.445312 C 14.601562 23.378906 13.703125 24.140625 12.601562 24.140625 L 12.203125 24.140625 C 11.980469 24.140625 11.804688 24.292969 11.804688 24.480469 C 11.804688 24.667969 11.980469 24.820312 12.203125 24.820312 L 17.796875 24.820312 C 18.019531 24.820312 18.195312 24.667969 18.195312 24.480469 C 18.195312 24.292969 18.019531 24.140625 17.796875 24.140625 Z M 17.796875 24.140625",
|
|
156
|
+
"wellbeing_element_blue_mood": "M 19.351562 7.859375 C 19.640625 6.664062 20.308594 5.144531 21.085938 5.144531 C 22.121094 5.144531 22.972656 7.855469 22.972656 8.882812 C 22.972656 9.371094 22.78125 9.8125 22.472656 10.148438 C 24.007812 11.851562 24.859375 14.066406 24.855469 16.363281 C 24.855469 21.527344 20.636719 25.714844 15.429688 25.714844 C 10.222656 25.714844 6 21.527344 6 16.363281 C 6 11.199219 10.222656 7.011719 15.429688 7.011719 C 16.828125 7.011719 18.15625 7.316406 19.351562 7.859375 Z M 12.191406 15.734375 C 12.636719 15.734375 13 15.375 13 14.933594 C 13 14.488281 12.636719 14.128906 12.191406 14.128906 C 11.75 14.128906 11.386719 14.488281 11.382812 14.933594 C 11.382812 15.375 11.746094 15.734375 12.191406 15.734375 Z M 18.835938 15.734375 C 19.28125 15.734375 19.644531 15.375 19.644531 14.933594 C 19.644531 14.488281 19.28125 14.128906 18.835938 14.128906 C 18.394531 14.128906 18.03125 14.488281 18.027344 14.933594 C 18.027344 15.375 18.390625 15.734375 18.835938 15.734375 Z M 12.929688 20.742188 C 13.726562 20.632812 14.59375 20.574219 15.53125 20.574219 C 16.464844 20.574219 17.3125 20.628906 18.066406 20.742188 C 17.785156 20.328125 17.5 20.023438 17.207031 19.835938 C 16.765625 19.550781 16.429688 19.3125 15.601562 19.3125 C 14.773438 19.3125 14.234375 19.554688 13.777344 19.835938 C 13.472656 20.019531 13.1875 20.324219 12.929688 20.742188 Z M 19.351562 7.859375 C 19.253906 8.257812 19.199219 8.625 19.199219 8.882812 C 19.199219 9.910156 20.046875 10.753906 21.085938 10.753906 C 21.632812 10.753906 22.128906 10.519531 22.472656 10.148438 C 21.601562 9.175781 20.539062 8.398438 19.351562 7.859375 Z M 9.941406 13.4375 L 10.421875 14.148438 L 12.554688 12.710938 L 12.074219 12 Z M 18.355469 12.832031 L 20.488281 14.269531 L 20.96875 13.558594 L 18.835938 12.121094 Z M 18.355469 12.832031",
|
|
157
|
+
"wellbeing_element_bodymeasurements": "M 14.019531 15.1875 L 16.433594 14.402344 L 15.875 12.6875 C 15.589844 13.550781 14.96875 14.398438 14.074219 15.144531 Z M 14.019531 15.1875 M 12.808594 23.019531 L 13.878906 22.667969 L 13.476562 21.433594 C 13.378906 21.125 13.546875 20.796875 13.851562 20.699219 C 14.15625 20.601562 14.484375 20.765625 14.582031 21.070312 L 14.984375 22.3125 L 16.023438 21.972656 L 16.171875 21.925781 L 15.347656 19.390625 C 15.246094 19.085938 15.414062 18.757812 15.71875 18.65625 C 16.023438 18.558594 16.351562 18.722656 16.453125 19.03125 L 17.277344 21.566406 L 17.949219 21.347656 L 18.460938 21.179688 L 18.058594 19.941406 C 17.960938 19.636719 18.128906 19.308594 18.433594 19.210938 C 18.738281 19.109375 19.066406 19.277344 19.164062 19.582031 L 19.566406 20.820312 L 20.753906 20.4375 L 19.929688 17.902344 C 19.859375 17.703125 19.902344 17.480469 20.042969 17.320312 C 20.183594 17.160156 20.398438 17.089844 20.605469 17.136719 C 20.808594 17.183594 20.976562 17.339844 21.035156 17.542969 L 21.859375 20.078125 L 23.042969 19.691406 L 22.640625 18.453125 C 22.542969 18.148438 22.710938 17.820312 23.015625 17.722656 C 23.320312 17.621094 23.648438 17.789062 23.746094 18.09375 L 24.148438 19.332031 L 25.203125 18.988281 C 25.644531 18.84375 25.890625 18.367188 25.746094 17.925781 L 24.292969 13.460938 C 24.226562 13.246094 24.074219 13.070312 23.875 12.96875 C 23.675781 12.867188 23.441406 12.847656 23.230469 12.917969 L 11.238281 16.8125 L 10.835938 16.945312 L 10.433594 17.074219 C 8.917969 17.503906 7.394531 17.578125 6.101562 17.289062 C 5.386719 17.125 4.773438 16.859375 4.285156 16.492188 L 4.261719 16.476562 L 5.410156 20.011719 L 5.875 21.445312 C 6.496094 23.355469 9.601562 24.058594 12.808594 23.019531 Z M 12.808594 23.019531 M 10.375 16.367188 C 10.457031 16.34375 10.539062 16.320312 10.625 16.292969 C 13.015625 15.515625 14.792969 13.984375 15.28125 12.464844 C 15.449219 11.949219 15.464844 11.429688 15.308594 10.945312 C 14.6875 9.035156 11.582031 8.332031 8.375 9.375 C 5.164062 10.417969 3.066406 12.8125 3.6875 14.722656 C 3.847656 15.207031 4.164062 15.613281 4.601562 15.933594 C 5.851562 16.84375 8.066406 17.054688 10.375 16.367188 Z M 9 11.289062 C 10.425781 10.824219 11.8125 11.136719 12.085938 11.988281 C 12.132812 12.128906 12.148438 12.273438 12.128906 12.417969 C 12.121094 12.5 12.101562 12.582031 12.078125 12.664062 C 11.859375 13.34375 11.066406 14.027344 10 14.371094 C 9.914062 14.398438 9.832031 14.425781 9.75 14.445312 C 8.773438 14.703125 7.847656 14.597656 7.320312 14.210938 C 7.128906 14.078125 6.988281 13.886719 6.910156 13.667969 C 6.632812 12.820312 7.566406 11.753906 9 11.289062 Z M 9 11.289062",
|
|
158
|
+
"wellbeing_element_caffinated_beverages": "M9 14.596h12.686c-.028 4.273-.266 7.221-.713 8.844-.447 1.623-1.51 3.396-3.19 5.32H12.93c-1.668-1.702-2.712-3.307-3.13-4.816-.42-1.51-.685-4.625-.799-9.348z M16.603 12.53c-.172-.568-.003-1.138.506-1.709.764-.856.48-.428.807-.819.217-.26.36-.857.43-1.79M13.965 11.984c-.274-.878-.156-1.602.353-2.173.764-.857 1.71-1.596 2.036-1.987.218-.26.277-.869.177-1.824 M21.301 18.507c.904-.801 1.639-1.144 2.206-1.028.851.172 1.268 1.028 1.17 1.862-.097.834-.059 1.142-.982 1.952-.615.54-1.688 1.27-3.22 2.194 M10.504 25.592l9.622-.114a33.97 33.97 0 0 1-.92 1.508c-.215.323-.659.95-1.332 1.88h-5.01c-.647-.735-1.112-1.3-1.396-1.694a15.104 15.104 0 0 1-.964-1.58z",
|
|
159
|
+
"wellbeing_element_cognitive_functions": "M 20.410156 24.855469 L 13.023438 24.855469 L 13.023438 21.65625 L 11.386719 21.957031 C 10.527344 21.917969 9.972656 21.820312 9.734375 21.65625 C 9.496094 21.492188 9.375 20.324219 9.375 18.148438 C 9.054688 18.164062 8.804688 18.164062 8.632812 18.148438 C 8.226562 18.109375 7.734375 18.035156 7.734375 17.613281 C 7.734375 16.921875 8.28125 15.347656 9.375 12.890625 C 9.375 9.363281 12.019531 6.453125 15.429688 6.050781 C 15.695312 6.015625 15.96875 6 16.246094 6 C 20.042969 6 23.121094 9.085938 23.121094 12.890625 C 23.121094 15.128906 22.058594 17.117188 20.410156 18.375 Z M 16.871094 14.574219 L 17.582031 14.992188 C 19.117188 15.898438 21.082031 14.835938 21.140625 13.050781 C 21.140625 13.011719 21.140625 12.96875 21.140625 12.929688 C 21.160156 10.433594 19.289062 8.335938 16.871094 8.027344 C 15.785156 7.886719 14.683594 8.113281 13.742188 8.675781 C 12.207031 9.597656 12.226562 11.839844 13.769531 12.746094 Z M 16.871094 14.574219",
|
|
160
|
+
"wellbeing_element_diet": "M 15.421875 19.214844 C 12.25 19.214844 9.382812 17.863281 7.285156 15.652344 L 5.144531 17.90625 C 7.753906 20.660156 11.394531 22.375 15.421875 22.375 C 19.445312 22.375 23.082031 20.660156 25.695312 17.90625 L 23.554688 15.652344 C 21.457031 17.863281 18.585938 19.214844 15.417969 19.214844 Z M 15.421875 19.214844 M 21.585938 17.128906 C 19.765625 18.363281 17.617188 19.019531 15.417969 19.023438 C 13.105469 19.023438 10.949219 18.300781 9.136719 17.046875 C 9.105469 17.097656 9.054688 17.132812 9.007812 17.132812 C 8.921875 17.132812 8.839844 17.03125 8.839844 16.929688 L 8.839844 16.835938 C 8.28125 16.421875 7.761719 15.960938 7.285156 15.457031 L 15.417969 6.886719 L 23.554688 15.457031 C 23.011719 16.03125 22.414062 16.546875 21.769531 17 C 21.742188 17.074219 21.679688 17.132812 21.617188 17.132812 C 21.605469 17.132812 21.59375 17.128906 21.585938 17.128906 Z M 9.140625 17.046875 C 9.164062 17.011719 9.175781 16.96875 9.175781 16.925781 L 9.175781 16.316406 C 9.175781 16.214844 9.089844 16.113281 9.007812 16.113281 C 8.882812 16.164062 8.839844 16.214844 8.839844 16.316406 L 8.839844 16.835938 C 8.9375 16.90625 9.035156 16.976562 9.136719 17.046875 Z M 11.945312 16.316406 L 11.945312 16.929688 C 11.945312 17.03125 12.03125 17.132812 12.113281 17.132812 C 12.199219 17.132812 12.28125 17.03125 12.28125 16.929688 L 12.28125 16.316406 C 12.28125 16.214844 12.199219 16.113281 12.113281 16.113281 C 12.03125 16.164062 11.945312 16.214844 11.945312 16.316406 Z M 15.113281 16.316406 L 15.113281 16.929688 C 15.113281 17.03125 15.199219 17.132812 15.28125 17.132812 C 15.367188 17.132812 15.449219 17.03125 15.449219 16.929688 L 15.449219 16.316406 C 15.449219 16.214844 15.367188 16.113281 15.28125 16.113281 C 15.199219 16.164062 15.113281 16.214844 15.113281 16.316406 Z M 18.28125 16.316406 L 18.28125 16.929688 C 18.28125 17.03125 18.363281 17.132812 18.449219 17.132812 C 18.53125 17.132812 18.617188 17.03125 18.617188 16.929688 L 18.617188 16.316406 C 18.617188 16.214844 18.53125 16.113281 18.449219 16.113281 C 18.363281 16.164062 18.28125 16.214844 18.28125 16.316406 Z M 21.585938 17.128906 L 21.769531 17 C 21.78125 16.976562 21.785156 16.953125 21.785156 16.929688 L 21.785156 16.316406 C 21.785156 16.214844 21.699219 16.113281 21.617188 16.113281 C 21.53125 16.164062 21.449219 16.214844 21.449219 16.316406 L 21.449219 16.929688 C 21.449219 17.019531 21.511719 17.105469 21.585938 17.128906 Z M 10.394531 14.476562 L 10.394531 15.035156 C 10.394531 15.136719 10.476562 15.238281 10.5625 15.238281 C 10.644531 15.238281 10.730469 15.136719 10.730469 15.035156 L 10.730469 14.425781 C 10.730469 14.320312 10.644531 14.21875 10.5625 14.21875 C 10.476562 14.269531 10.394531 14.375 10.394531 14.476562 Z M 13.558594 14.476562 L 13.558594 15.035156 C 13.558594 15.136719 13.644531 15.238281 13.726562 15.238281 C 13.8125 15.238281 13.894531 15.136719 13.894531 15.035156 L 13.894531 14.425781 C 13.894531 14.320312 13.8125 14.21875 13.726562 14.21875 C 13.621094 14.257812 13.554688 14.363281 13.558594 14.476562 Z M 16.726562 14.476562 L 16.726562 15.035156 C 16.726562 15.136719 16.8125 15.238281 16.894531 15.238281 C 16.980469 15.238281 17.0625 15.136719 17.0625 15.035156 L 17.0625 14.425781 C 17.0625 14.320312 16.980469 14.21875 16.894531 14.21875 C 16.789062 14.257812 16.722656 14.363281 16.726562 14.476562 Z M 19.894531 14.476562 L 19.894531 15.035156 C 19.894531 15.136719 19.976562 15.238281 20.0625 15.238281 C 20.144531 15.238281 20.230469 15.136719 20.230469 15.035156 L 20.230469 14.425781 C 20.230469 14.320312 20.144531 14.21875 20.0625 14.21875 C 19.976562 14.21875 19.894531 14.375 19.894531 14.476562 Z M 11.945312 12.585938 L 11.945312 13.195312 C 11.945312 13.296875 12.03125 13.402344 12.113281 13.402344 C 12.199219 13.402344 12.28125 13.296875 12.28125 13.195312 L 12.28125 12.585938 C 12.28125 12.484375 12.199219 12.382812 12.113281 12.382812 C 12.03125 12.433594 11.945312 12.484375 11.945312 12.585938 Z M 15.113281 12.585938 L 15.113281 13.195312 C 15.113281 13.296875 15.199219 13.402344 15.28125 13.402344 C 15.367188 13.402344 15.449219 13.296875 15.449219 13.195312 L 15.449219 12.585938 C 15.449219 12.484375 15.367188 12.382812 15.28125 12.382812 C 15.199219 12.433594 15.113281 12.484375 15.113281 12.585938 Z M 18.28125 12.585938 L 18.28125 13.195312 C 18.28125 13.296875 18.363281 13.402344 18.449219 13.402344 C 18.53125 13.402344 18.617188 13.296875 18.617188 13.195312 L 18.617188 12.585938 C 18.617188 12.484375 18.53125 12.382812 18.449219 12.382812 C 18.363281 12.433594 18.28125 12.484375 18.28125 12.585938 Z M 13.558594 10.746094 L 13.558594 11.359375 C 13.558594 11.460938 13.644531 11.5625 13.726562 11.5625 C 13.8125 11.5625 13.894531 11.460938 13.894531 11.359375 L 13.894531 10.746094 C 13.894531 10.644531 13.8125 10.542969 13.726562 10.542969 C 13.601562 10.542969 13.558594 10.644531 13.558594 10.746094 Z M 16.726562 10.746094 L 16.726562 11.359375 C 16.726562 11.460938 16.8125 11.5625 16.894531 11.5625 C 16.980469 11.5625 17.0625 11.460938 17.0625 11.359375 L 17.0625 10.746094 C 17.0625 10.644531 16.980469 10.542969 16.894531 10.542969 C 16.769531 10.542969 16.726562 10.644531 16.726562 10.746094 Z M 16.726562 10.746094",
|
|
161
|
+
"wellbeing_element_energy_drinks": "M 19.925781 8.023438 L 19.925781 19.921875 L 9.429688 19.921875 L 9.429688 8.023438 Z M 19.925781 5.644531 L 9.429688 5.644531 L 9.429688 5.472656 C 9.429688 4.816406 9.960938 4.285156 10.613281 4.285156 L 18.742188 4.285156 C 19.394531 4.285156 19.925781 4.816406 19.925781 5.472656 Z M 19.925781 22.128906 L 19.925781 22.304688 C 19.925781 22.957031 19.394531 23.488281 18.742188 23.488281 L 10.613281 23.488281 C 9.960938 23.488281 9.429688 22.957031 9.429688 22.304688 L 9.429688 22.128906 Z M 13.484375 18.050781 C 13.300781 18.050781 13.152344 18.199219 13.152344 18.378906 L 13.152344 18.566406 C 13.152344 18.746094 13.300781 18.894531 13.484375 18.894531 L 16.210938 18.894531 C 16.394531 18.894531 16.539062 18.746094 16.539062 18.566406 L 16.539062 18.378906 C 16.539062 18.199219 16.394531 18.050781 16.210938 18.050781 Z M 14.761719 16.863281 C 16.773438 16.863281 18.402344 15.261719 18.402344 13.292969 C 18.402344 11.320312 16.773438 9.722656 14.761719 9.722656 C 12.75 9.722656 11.121094 11.320312 11.121094 13.292969 C 11.121094 15.265625 12.75 16.863281 14.761719 16.863281 Z M 14.761719 16.863281 M 12.644531 13.917969 L 14.90625 13.917969 L 14.199219 15.839844 L 17.046875 12.742188 L 14.847656 12.742188 L 15.445312 10.402344 Z M 12.644531 13.917969",
|
|
162
|
+
"wellbeing_element_heart_health": "M 1.000781 17.860937 L 7.4375 17.860937 L 8.629687 15.711719 L 11.347656 24.325 L 12.966406 10.483594 L 15.678906 17.860937 L 23.220312 17.860937 M 17.332031 7.757812 C 17.332031 7.757812 17.804688 7.277344 18.070312 7.117188 C 18.441406 6.882812 18.859375 6.730469 19.292969 6.664062 C 19.75 6.601562 20.21875 6.636719 20.660156 6.765625 C 21.113281 6.894531 21.53125 7.117188 21.886719 7.421875 C 22.410156 7.828125 22.808594 8.371094 23.035156 8.988281 C 23.359375 10.257812 23.144531 11.601562 22.445312 12.703125 C 22.132812 13.191406 21.765625 13.636719 21.347656 14.039062 L 17.300781 18.195312 L 12.808594 13.488281 C 12.28125 12.917969 11.894531 12.234375 11.675781 11.488281 C 11.515625 10.988281 11.453125 10.457031 11.488281 9.929688 C 11.503906 9.367188 11.675781 8.816406 11.988281 8.34375 C 12.242188 7.914062 12.589844 7.542969 13.003906 7.253906 C 13.398438 6.953125 13.867188 6.765625 14.359375 6.703125 C 14.847656 6.609375 15.351562 6.632812 15.832031 6.765625 C 16.230469 6.894531 16.601562 7.109375 16.914062 7.390625 C 16.925781 7.402344 17.332031 7.757812 17.332031 7.757812 Z M 17.332031 7.757812",
|
|
163
|
+
"wellbeing_element_hobbies": "M 13.855469 14 L 22.285156 6.855469 L 23.125 7.695312 L 23.964844 8.539062 L 16.824219 16.96875 Z M 13.441406 14.410156 L 13.390625 14.464844 L 13.429688 14.398438 Z M 13.136719 14.859375 L 14.550781 16.273438 L 15.9375 17.664062 L 12.550781 19.828125 L 10.972656 18.25 Z M 8.199219 20.105469 C 9.089844 19.214844 10.605469 18.640625 10.605469 18.640625 L 11.394531 19.429688 L 6.859375 23.964844 L 8.601562 21.171875 L 11.394531 19.429688 L 12.183594 20.21875 C 12.183594 20.21875 11.609375 21.734375 10.71875 22.625 C 9.269531 24.074219 6.859375 23.964844 6.859375 23.964844 C 6.859375 23.964844 6.75 21.554688 8.199219 20.105469 Z M 8.199219 20.105469",
|
|
164
|
+
"wellbeing_element_hydration_level": "M 13.71875 6.765625 L 15.96875 6.765625 L 15.96875 7.625 L 13.71875 7.625 Z M 11.792969 15.535156 L 17.894531 15.535156 C 18.253906 15.535156 18.542969 15.828125 18.542969 16.1875 L 18.542969 25.0625 C 18.542969 25.421875 18.253906 25.714844 17.894531 25.714844 L 11.792969 25.714844 C 11.433594 25.714844 11.144531 25.421875 11.144531 25.0625 L 11.144531 16.1875 C 11.144531 15.828125 11.433594 15.535156 11.792969 15.535156 Z M 11.789062 14.238281 L 17.84375 14.238281 C 18.113281 14.238281 18.328125 14.457031 18.328125 14.722656 C 18.328125 14.992188 18.113281 15.210938 17.84375 15.210938 L 11.789062 15.210938 C 11.523438 15.210938 11.304688 14.992188 11.304688 14.722656 C 11.304688 14.457031 11.523438 14.238281 11.789062 14.238281 Z M 11.789062 14.238281 M 13.613281 6.875 L 16.074219 6.875 C 16.136719 6.875 16.183594 6.925781 16.183594 6.984375 L 16.183594 7.09375 C 16.183594 7.15625 16.136719 7.203125 16.074219 7.203125 L 13.609375 7.203125 C 13.582031 7.203125 13.554688 7.191406 13.535156 7.171875 C 13.511719 7.152344 13.503906 7.125 13.503906 7.09375 L 13.503906 6.984375 C 13.503906 6.925781 13.550781 6.875 13.609375 6.875 Z M 15.660156 12.578125 L 14.996094 11.355469 L 14.335938 12.523438 C 14.214844 12.675781 14.144531 12.863281 14.144531 13.058594 C 14.144531 13.523438 14.519531 13.898438 14.976562 13.898438 C 15.4375 13.898438 15.808594 13.523438 15.808594 13.058594 C 15.808594 12.886719 15.757812 12.71875 15.660156 12.578125 Z M 11.507812 10.628906 L 18.21875 10.628906 C 18.265625 10.777344 18.296875 10.894531 18.308594 10.976562 C 18.324219 11.058594 18.34375 11.207031 18.363281 11.425781 L 18.363281 14.886719 L 11.25 14.886719 L 11.25 11.425781 C 11.277344 11.273438 11.3125 11.125 11.355469 10.976562 C 11.382812 10.898438 11.433594 10.78125 11.507812 10.628906 Z M 13.828125 5.144531 L 15.859375 5.144531 C 16.039062 5.144531 16.183594 5.289062 16.183594 5.46875 L 16.183594 6.765625 L 13.5 6.765625 L 13.5 5.46875 C 13.5 5.289062 13.648438 5.144531 13.828125 5.144531 Z M 13.707031 7.417969 C 13.066406 7.96875 12.621094 8.410156 12.375 8.734375 C 12.128906 9.058594 11.824219 9.601562 11.464844 10.371094 L 18.207031 10.371094 C 17.855469 9.628906 17.550781 9.082031 17.28125 8.734375 C 17.011719 8.382812 16.566406 7.945312 15.945312 7.417969 Z M 13.707031 7.417969",
|
|
165
|
+
"wellbeing_element_kidney_health": "M 16.621094 10.972656 C 17.847656 10.933594 18.714844 10.628906 19.226562 10.058594 C 19.984375 9.203125 19.824219 7.226562 19.59375 6.820312 C 19.363281 6.414062 17.742188 4.015625 15.476562 4.3125 C 13.210938 4.609375 10.972656 6.042969 10.121094 7.226562 C 9.273438 8.414062 8.019531 9.214844 7.777344 12.003906 C 7.539062 14.792969 8.019531 17.359375 8.476562 18.035156 C 8.933594 18.710938 10.3125 21.984375 13.359375 21.984375 C 15.007812 21.984375 17.183594 20.71875 17.355469 19.3125 C 17.527344 17.902344 17.476562 18.082031 17.183594 17.261719 C 16.984375 16.707031 16.550781 16.160156 15.886719 15.621094 C 16.671875 14.5625 17.101562 13.84375 17.183594 13.46875 C 17.230469 13.246094 17.328125 12.808594 17.183594 12.253906 C 17.117188 12.007812 16.929688 11.582031 16.621094 10.972656 Z M 16.621094 10.972656 M 24.458984 26.965495 L 22.595052 26.965495 C 23.40625 23.319661 23.625 20.890625 23.255859 19.678385 C 22.891276 18.466146 21.770182 17.481771 19.901693 16.711589 C 20.047526 16.410807 20.152344 16.192057 20.207031 16.050781 C 20.266276 15.909505 20.302734 15.772786 20.316406 15.64974 L 20.352865 15.102865 C 21.296224 15.426432 21.947917 15.686198 22.317057 15.886719 C 23.424479 16.492839 24.135417 17.290365 24.454427 18.147135 C 24.741536 18.908203 24.946615 20.270833 24.891927 22.21224 C 24.864583 23.091797 24.71875 24.673177 24.458984 26.965495 Z M 19.445964 13.316406 C 19.582682 13.580729 19.678385 13.772135 19.728516 13.886068 C 19.80599 14.054688 19.924479 14.33724 19.947266 14.455729 C 19.992839 14.697266 20.02474 14.911458 20.042969 15.102865 C 21.127604 15.011719 21.938802 14.902344 22.476562 14.779297 C 23.283203 14.597005 25.730469 13.804036 25.776042 13.667318 C 25.817057 13.535156 25.871745 13.083984 25.534505 12.774089 C 25.306641 12.564453 25.087891 12.464193 24.878255 12.46875 C 23.880208 12.769531 23.046224 12.988281 22.371745 13.115885 C 21.701823 13.248047 20.726562 13.316406 19.445964 13.316406 Z M 19.445964 13.316406",
|
|
166
|
+
"wellbeing_element_liver_health": "M 4.766927 26.792318 C 4.078776 26.382161 3.609375 25.315755 3.367839 23.602214 C 3.007812 21.027344 2.761719 18.580078 3.367839 15.759115 C 3.978516 12.942708 3.796224 11.566406 6.166016 10.290365 C 8.535807 9.014323 12.546224 8.371745 13.753906 8.421875 C 14.966146 8.467448 20.00651 8.877604 19.938151 8.96875 C 19.869792 9.06901 20.07487 11.753255 19.550781 14.282552 C 19.022135 16.811849 18.370443 19.85612 17.253906 20.749349 C 16.511068 21.346354 15.14388 21.829427 13.147786 22.198568 C 11.420573 22.731771 10.272135 23.201172 9.702474 23.602214 C 8.854818 24.203776 6.507812 26.03125 6.166016 26.409505 C 5.938151 26.664714 5.46875 26.792318 4.766927 26.792318 Z M 20.498698 8.836589 C 20.722005 10.185547 20.722005 11.671224 20.498698 13.289062 C 20.166016 15.718099 19.085938 18.370443 19.095052 18.566406 C 19.099609 18.76237 21.323568 18.566406 21.988932 18.370443 C 22.658854 18.169922 24.568359 17.253906 25.365885 16.360677 C 26.163411 15.467448 28.369141 14.241536 28.861328 13.990885 C 29.353516 13.740234 31.171875 13.07487 31.363281 12.167969 C 31.554688 11.261068 28.856771 10.404297 28.432943 10.326823 C 28.004557 10.249349 24.791667 9.35612 24.294922 9.337891 C 23.966797 9.324219 22.69987 9.155599 20.498698 8.836589 Z M 20.498698 8.836589 M 15.644531 15.996094 L 15.644531 16.730469 C 15.644531 17.1875 15.683594 17.6875 15.855469 17.582031 C 16.023438 17.472656 16.242188 16.875 16.335938 15.996094 C 16.429688 15.121094 17.550781 12.644531 17.6875 10.984375 C 17.78125 9.894531 17.78125 8.796875 17.6875 7.707031 C 20.664062 8.046875 22.53125 8.335938 23.28125 8.574219 C 24.410156 8.929688 19.304688 7.113281 17.6875 6.988281 C 16.464844 6.898438 13.789062 6.808594 12.058594 6.890625 C 11.507812 6.917969 10.710938 7.113281 10.453125 7.199219 C 9.675781 7.449219 13.367188 7.214844 15.339844 7.472656 C 16.449219 7.617188 16.859375 7.472656 16.953125 7.632812 C 17.042969 7.796875 16.988281 8.421875 16.953125 9.085938 C 16.910156 9.816406 16.949219 10.585938 16.839844 10.984375 C 16.757812 11.277344 16.785156 12.078125 16.496094 13.175781 C 16.363281 13.695312 16.078125 14.632812 15.644531 15.996094 Z M 7.652344 20.660156 C 7.949219 20.964844 8.214844 21.191406 8.445312 21.339844 C 8.792969 21.5625 9.652344 21.625 9.988281 21.339844 C 10.324219 21.054688 10.820312 20.269531 10.726562 19.738281 C 10.664062 19.382812 10.582031 19.207031 10.476562 19.207031 C 9.738281 19.398438 9.230469 19.574219 8.964844 19.738281 C 8.695312 19.898438 8.257812 20.207031 7.652344 20.660156 Z M 7.652344 20.660156",
|
|
167
|
+
"wellbeing_element_lungs_health": "M 17.804688 16.601562 C 18.042969 20.695312 18.066406 22.429688 17.871094 21.804688 C 17.675781 21.179688 17.335938 18.4375 16.859375 13.585938 L 16.941406 12.019531 C 16.980469 11.402344 16.996094 11.027344 17 10.894531 C 17 10.695312 17.460938 10.246094 17.867188 10.246094 C 20.769531 10.246094 23.761719 13.402344 23.609375 16.316406 C 23.507812 19.042969 23.433594 20.492188 23.382812 20.664062 C 23.257812 21.0625 23.144531 22.21875 22.484375 22.808594 C 21.695312 23.519531 20.617188 23.652344 20.40625 23.640625 C 19.824219 23.609375 18.949219 23.5625 17.78125 23.503906 C 16.84375 23.453125 16.125 22.652344 16.171875 21.714844 L 16.542969 14.609375 C 17.34375 14.941406 17.847656 15.738281 17.804688 16.601562 Z M 13.484375 16.625 C 13.230469 20.703125 13.203125 22.429688 13.40625 21.808594 C 13.605469 21.183594 13.957031 18.457031 14.457031 13.617188 L 14.375 12.0625 C 14.347656 11.6875 14.328125 11.3125 14.316406 10.941406 C 14.316406 10.742188 13.84375 10.296875 13.425781 10.296875 C 10.453125 10.300781 7.386719 13.445312 7.539062 16.347656 C 7.636719 19.066406 7.710938 20.507812 7.765625 20.679688 C 7.890625 21.078125 8.007812 22.226562 8.679688 22.816406 C 9.484375 23.523438 10.589844 23.652344 10.808594 23.640625 L 13.492188 23.5 C 14.449219 23.449219 15.195312 22.648438 15.144531 21.71875 L 14.773438 14.640625 C 13.980469 14.960938 13.4375 15.742188 13.484375 16.625 Z M 13.484375 16.625 M 8.96875 16.15625 L 8.96875 22.253906 L 13.5 22.253906 L 13.5 20.5625 L 12.105469 19.207031 L 12.105469 17.851562 L 12.113281 16.496094 C 12.191406 15.511719 12.699219 14.613281 13.5 14.035156 L 13.5 11.753906 C 11 11.753906 8.96875 13.726562 8.96875 16.15625 Z M 14.890625 6.855469 L 16.285156 6.855469 L 16.285156 9.972656 L 14.890625 9.972656 Z M 14.890625 6.855469 M 15.589844 13.359375 C 14.835938 13.355469 14.105469 13.59375 13.5 14.039062 C 12.699219 14.613281 12.195312 15.511719 12.113281 16.496094 L 12.105469 17.851562 L 12.105469 19.207031 C 12.273438 19.496094 12.453125 19.730469 12.636719 19.910156 C 12.824219 20.089844 13.109375 20.304688 13.5 20.5625 L 13.5 16.746094 C 13.5 15.863281 14.082031 15.109375 14.890625 14.828125 C 15.109375 14.753906 15.34375 14.710938 15.589844 14.710938 Z M 15.589844 13.359375 M 19.0625 16.496094 C 18.984375 15.511719 18.480469 14.613281 17.679688 14.035156 C 17.265625 13.734375 16.789062 13.523438 16.285156 13.425781 L 16.285156 9.382812 L 14.890625 9.382812 L 14.890625 13.425781 C 15.117188 13.378906 15.058594 13.730469 15.296875 13.730469 L 15.589844 14.710938 C 15.832031 14.710938 16.066406 14.753906 16.285156 14.828125 C 17.097656 15.109375 17.679688 15.863281 17.679688 16.746094 L 17.679688 20.5625 C 18.132812 20.292969 18.445312 20.078125 18.617188 19.910156 C 18.789062 19.742188 18.941406 19.507812 19.074219 19.207031 L 19.074219 17.851562 Z M 19.0625 16.496094",
|
|
168
|
+
"wellbeing_element_physical_activity": "M18.593 19.85c-.759 0-1.373-.641-1.373-1.432 0-.79.614-1.432 1.373-1.432v2.864z M1.407 19.85c-.758 0-1.373-.641-1.373-1.432 0-.79.615-1.432 1.373-1.432v2.864zM6.816 19.037c-.445 0-.814-.366-.833-.834a4.832 4.832 0 0 0-1.473-3.316 4.44 4.44 0 0 0-3.29-1.258c-.462.02-.85-.353-.868-.833-.02-.48.338-.886.799-.906 1.667-.071 3.261.538 4.489 1.716 1.227 1.18 1.942 2.786 2.01 4.525.02.48-.338.885-.799.905h-.035z M4.001 14.463a4.41 4.41 0 0 0-2.781-.834c-.462.02-.85-.353-.868-.833-.02-.48.338-.886.799-.906A6.003 6.003 0 0 1 4 12.47v1.994z M19.409 18.227L15.637.708c-.1-.469-.547-.764-.997-.658-.45.105-.732.57-.631 1.04l2.198 10.21-4.469 6.248H1.676c-.461 0-.835.39-.835.87s.374.87.835.87h10.48c.264 0 .512-.13.67-.35l3.863-5.4 1.091 5.07c.087.405.432.68.814.68.06 0 .122-.007.183-.021.45-.105.733-.57.632-1.04z M9.39 19.288H1.677c-.461 0-.835-.39-.835-.87s.374-.87.835-.87H9.39v1.74zM12.44 3.424a.825.825 0 0 1-.696-.388.893.893 0 0 1 .232-1.206L14.361.174a.814.814 0 0 1 1.157.243c.255.4.151.94-.233 1.206L12.901 3.28a.806.806 0 0 1-.462.145z",
|
|
169
|
+
"wellbeing_element_quality_of_life": "M 18.15625 10.476562 C 18.1875 10.660156 18.199219 10.84375 18.1875 11.03125 C 19.199219 11.144531 20.421875 11.503906 20.65625 12.535156 L 20.65625 12.203125 C 20.421875 11.179688 19.164062 10.597656 18.15625 10.476562 Z M 10.164062 14.996094 C 10.171875 14.988281 10.175781 14.980469 10.175781 14.980469 C 9.785156 14.046875 9.488281 12.808594 10.234375 12.085938 L 9.960938 12.25 C 9.226562 12.960938 9.382812 14.335938 9.757812 15.265625 C 9.886719 15.164062 10.019531 15.074219 10.164062 14.996094 Z M 18.636719 20.640625 C 18.472656 20.605469 18.308594 20.550781 18.15625 20.480469 C 17.679688 21.378906 16.90625 22.390625 15.859375 22.234375 L 16.164062 22.355469 C 17.203125 22.507812 18.15625 21.535156 18.636719 20.640625 Z M 15.425781 24.855469 C 10.21875 24.855469 6 20.632812 6 15.425781 C 6 10.21875 10.21875 6 15.425781 6 C 20.632812 6 24.855469 10.21875 24.855469 15.425781 C 24.855469 20.632812 20.632812 24.855469 15.425781 24.855469 Z M 18.636719 20.640625 C 19.878906 20.925781 21.144531 20.253906 21.609375 19.066406 C 22.5625 16.621094 20.980469 13.582031 20.980469 13.582031 C 19.195312 15.449219 17.496094 15.421875 16.808594 17.191406 C 16.308594 18.472656 16.902344 19.917969 18.15625 20.480469 L 18.15625 20.476562 C 18.167969 20.460938 18.648438 20.613281 18.648438 20.613281 Z M 10.164062 14.996094 C 10.097656 15.0625 9.777344 15.3125 9.777344 15.3125 C 9.773438 15.296875 9.765625 15.28125 9.757812 15.265625 C 8.777344 16.066406 8.523438 17.460938 9.15625 18.558594 C 10.472656 20.828125 13.835938 21.488281 13.835938 21.488281 C 13.488281 18.925781 14.570312 17.617188 13.617188 15.972656 C 12.917969 14.765625 11.390625 14.335938 10.164062 14.996094 Z M 18.15625 10.476562 C 17.949219 9.234375 16.875 8.328125 15.613281 8.328125 C 12.988281 8.328125 10.734375 10.90625 10.734375 10.90625 C 13.121094 11.886719 13.714844 13.480469 15.613281 13.480469 C 16.988281 13.480469 18.121094 12.402344 18.1875 11.03125 L 18.183594 11.03125 C 18.164062 11.027344 18.128906 10.472656 18.128906 10.472656 Z M 18.15625 10.476562",
|
|
170
|
+
"wellbeing_element_self_satisifaction": "M18.1,12.9l-1.8,1.7l0.6,0.6l1.3-1.2l1.3,1.2l0.6-0.6l-1.8-1.7H18.1L18.1,12.9L18.1,12.9L18.1,12.9z M12.9,12.9 l-1.8,1.7l0.6,0.6L13,14l1.3,1.2l0.6-0.6l-1.8-1.7H12.9L12.9,12.9L12.9,12.9L12.9,12.9z M15.4,24.9c-4.7,0-8.6-3.7-8.6-8.3 s3.8-8.3,8.6-8.3S24,12,24,16.6S20.2,24.9,15.4,24.9z M11,18.6c0.6,1.3,1.2,2.2,1.8,2.6c1,0.6,2,1,3.5,0.9s2.2-0.9,2.8-1.4 c0.4-0.4,0.8-1.1,1.2-2.1H11z M20.7,5.5c0,0-4.7-2.1-10,0C10.8,5.5,15.9,7.7,20.7,5.5z",
|
|
171
|
+
"wellbeing_element_sex_life": "M 15.429688 9.210938 C 15.429688 9.210938 16.050781 8.574219 16.402344 8.355469 C 16.890625 8.046875 17.441406 7.84375 18.011719 7.753906 C 18.617188 7.671875 19.234375 7.714844 19.816406 7.886719 C 20.414062 8.0625 20.964844 8.359375 21.433594 8.765625 C 22.125 9.304688 22.648438 10.03125 22.945312 10.855469 C 23.375 12.546875 23.09375 14.335938 22.167969 15.8125 C 21.753906 16.460938 21.269531 17.0625 20.722656 17.597656 L 15.386719 23.144531 L 9.464844 16.863281 C 8.773438 16.097656 8.261719 15.183594 7.972656 14.195312 C 7.761719 13.523438 7.679688 12.816406 7.726562 12.113281 C 7.75 11.363281 7.976562 10.628906 8.382812 9.996094 C 8.722656 9.421875 9.179688 8.925781 9.722656 8.542969 C 10.242188 8.140625 10.859375 7.886719 11.511719 7.804688 C 12.15625 7.679688 12.820312 7.710938 13.449219 7.886719 C 13.980469 8.0625 14.464844 8.347656 14.875 8.726562 C 14.890625 8.742188 15.429688 9.214844 15.429688 9.214844 Z M 15.429688 9.210938",
|
|
172
|
+
"wellbeing_element_sleep": "M 4.148438 10.558594 C 5.484375 9.734375 7.019531 9.011719 8.753906 8.378906 C 11.359375 7.429688 13.519531 7.605469 14.230469 6.886719 C 14.945312 6.164062 15.949219 5.761719 16.453125 5.578125 C 16.789062 5.453125 16.839844 6.121094 16.613281 7.582031 C 17.769531 8.960938 18.414062 9.835938 18.554688 10.214844 C 18.761719 10.78125 18.925781 13.890625 19.617188 14.273438 C 20.3125 14.65625 20.878906 15.472656 20.636719 15.933594 C 20.472656 16.242188 19.664062 16.410156 18.210938 16.441406 C 16.101562 18.136719 14.695312 19.128906 14 19.417969 C 12.957031 19.847656 8.859375 20.40625 8.703125 20.5625 C 8.546875 20.714844 7.175781 21.683594 6.464844 21.65625 C 5.753906 21.632812 6.175781 19.816406 5.953125 19.246094 C 5.734375 18.679688 5.007812 17.65625 4.71875 16.859375 C 4.425781 16.0625 3.457031 12.675781 3.023438 12.207031 C 2.589844 11.738281 2.238281 11.253906 2.269531 10.738281 C 2.292969 10.394531 2.917969 10.335938 4.148438 10.558594 Z M 4.746094 12.972656 C 4.855469 13.792969 5.074219 14.65625 5.402344 15.5625 C 5.730469 16.464844 6.183594 17.441406 6.753906 18.488281 C 6.410156 16.910156 6.136719 15.867188 5.933594 15.367188 C 5.730469 14.863281 5.335938 14.066406 4.746094 12.972656 Z M 4.746094 12.972656 M21.44 5.379l2.793-1.857-.249 4.26 2.704-1.95M26.46 7.457l2.002-.172-1.312 2.113 1.98-.246M27.163 2.921l1.498-.963-.175 2.148 1.453-1.01",
|
|
173
|
+
"wellbeing_element_smoking": "M 8.707031 20.0625 L 21.835938 22.195312 C 22.027344 22.226562 22.15625 22.402344 22.125 22.589844 L 21.832031 24.488281 C 21.816406 24.582031 21.769531 24.664062 21.691406 24.71875 C 21.617188 24.773438 21.523438 24.792969 21.433594 24.777344 L 8.300781 22.648438 C 8.113281 22.617188 7.984375 22.4375 8.011719 22.25 L 8.304688 20.351562 C 8.320312 20.261719 8.371094 20.179688 8.445312 20.125 C 8.519531 20.070312 8.613281 20.046875 8.707031 20.0625 Z M 8.707031 20.0625 M 14.446615 21.966146 C 14.009115 20.448568 14.4375 18.926432 15.740885 17.39974 C 17.695964 15.111979 16.966797 16.255859 17.800781 15.21224 C 18.356771 14.514974 18.725911 12.919922 18.899089 10.427083 M 10.664062 20.608073 C 10.007812 18.315755 10.290365 16.429036 11.511719 14.938802 C 13.339193 12.705729 15.604167 10.777995 16.383464 9.757161 C 16.907552 9.078125 17.048828 7.492188 16.807292 4.999349",
|
|
174
|
+
"wellbeing_element_social_life": "M 13.6875 16.097656 C 13.6875 18.359375 11.773438 20.195312 9.414062 20.195312 C 7.054688 20.195312 5.144531 18.359375 5.144531 16.097656 C 5.144531 13.835938 7.054688 12 9.414062 12 C 11.773438 12 13.6875 13.835938 13.6875 16.097656 Z M 25.710938 8.570312 C 25.710938 10.460938 24.113281 11.996094 22.140625 11.996094 C 20.164062 11.996094 18.566406 10.460938 18.566406 8.570312 C 18.566406 6.675781 20.164062 5.144531 22.140625 5.144531 C 24.113281 5.144531 25.710938 6.675781 25.710938 8.570312 Z M 23.925781 22.273438 C 23.925781 24.164062 22.324219 25.699219 20.355469 25.699219 C 18.378906 25.699219 16.78125 24.164062 16.78125 22.273438 C 16.78125 20.378906 18.378906 18.847656 20.355469 18.847656 C 22.324219 18.847656 23.925781 20.378906 23.925781 22.273438 Z M 23.925781 22.273438 M 20.078125 22.609375 L 10.253906 15.25 L 10.804688 14.578125 L 20.628906 21.933594 Z M 20.078125 22.609375 M 10.75 15.285156 L 10.308594 14.542969 L 21.917969 8.195312 L 22.359375 8.941406 Z M 10.75 15.285156 M 21.847656 22.105469 C 21.847656 23.035156 20.921875 23.890625 20.355469 23.890625 C 19.785156 23.890625 18.859375 23.035156 18.859375 22.105469 C 18.859375 21.171875 19.527344 20.558594 20.355469 20.558594 C 21.175781 20.558594 21.847656 21.171875 21.847656 22.105469 Z M 21.847656 22.105469 M 20.796875 22.324219 L 19.910156 22.21875 L 21.695312 8.515625 L 22.582031 8.621094 Z M 20.796875 22.324219 ",
|
|
175
|
+
"wellbeing_element_sugar_balance": "M 14.53125 13.074219 L 9.785156 12.410156 C 9.632812 12.386719 9.492188 12.484375 9.472656 12.628906 L 8.847656 17.082031 C 8.828125 17.222656 8.933594 17.355469 9.085938 17.378906 L 13.835938 18.046875 C 13.988281 18.066406 14.125 17.96875 14.148438 17.824219 L 14.773438 13.375 C 14.792969 13.230469 14.683594 13.097656 14.53125 13.074219 Z M 19.957031 12.238281 L 15.328125 13.476562 C 15.179688 13.519531 15.085938 13.664062 15.125 13.804688 L 16.289062 18.144531 C 16.324219 18.285156 16.476562 18.363281 16.625 18.324219 L 21.257812 17.085938 C 21.40625 17.046875 21.496094 16.898438 21.457031 16.757812 L 20.292969 12.417969 C 20.257812 12.277344 20.105469 12.195312 19.957031 12.238281 Z M 19.957031 12.238281 M 18.402344 9.933594 L 14.023438 7.984375 C 13.882812 7.921875 13.71875 7.976562 13.660156 8.109375 L 11.832031 12.21875 C 11.773438 12.351562 11.839844 12.507812 11.980469 12.570312 L 16.359375 14.523438 C 16.5 14.585938 16.664062 14.527344 16.722656 14.394531 L 18.550781 10.289062 C 18.609375 10.15625 18.542969 9.996094 18.402344 9.933594 Z M 6.875 15.113281 C 7.15625 20.132812 9.972656 22.644531 15.324219 22.644531 C 20.679688 22.644531 23.355469 20.132812 23.355469 15.113281 Z M 6.875 15.113281",
|
|
176
|
+
"wellbeing_element_cardiovascular_disease_health_risk": "M16.9492185,14.9913917 C17.1368969,14.9079666 17.3369082,14.9094338 17.510824,14.9786458 C17.6828343,15.0470995 17.830365,15.1824471 17.9131408,15.3718018 C17.9957035,15.5603468 17.9958836,15.7607846 17.930594,15.934663 C17.864581,16.1104681 17.7315119,16.2600223 17.5451494,16.3437079 C17.4471913,16.3877445 17.345493,16.4084738 17.2458648,16.4084738 C17.1033483,16.4084738 16.9649053,16.3659995 16.8468215,16.2870952 C16.7343356,16.2119315 16.6400684,16.1036292 16.5790431,15.9655078 C16.4964361,15.7751293 16.4966755,15.5744594 16.5618209,15.4009737 C16.6281514,15.2243322 16.7619555,15.0747763 16.9492185,14.9913917 Z M8.29674049,0 C8.49843716,0 8.68113261,0.0824228901 8.81332984,0.216040201 C8.93367766,0.337680824 9.01211836,0.501814358 9.02435606,0.684364824 L9.02603397,0.734589844 L9.02603397,1.08062346 C9.07314831,1.0787916 9.12036435,1.07785456 9.1676556,1.07785456 C9.31251039,1.07785456 9.4562695,1.08647633 9.59859096,1.1030612 L9.70505715,1.11698265 L10.1201287,0.490598405 C10.2322538,0.321395952 10.4017096,0.214458134 10.5847444,0.177885144 C10.7683247,0.141203169 10.9657683,0.175223838 11.1332947,0.288732989 C11.3000792,0.401499669 11.4060851,0.571820057 11.442216,0.756285508 C11.4749699,0.923509452 11.4502403,1.10220521 11.3617545,1.25964916 L11.3332898,1.30621207 L11.1272487,1.61709958 C11.8990684,2.06458199 12.5762542,2.77891407 13.0826019,3.71165649 C14.2292571,3.58753698 15.0938397,3.654613 15.1720661,3.66109087 C15.3613986,3.67694198 15.528955,3.76460895 15.6491044,3.89649216 C15.7576356,4.01562252 15.8274386,4.17087606 15.8392331,4.34148311 L15.8410119,4.39310506 L15.8410119,6.2914684 C15.8410119,6.49040875 15.761039,6.68058435 15.619408,6.81885968 C15.4765519,6.95805229 15.2838165,7.03300025 15.086832,7.02552899 C14.3255506,6.99931354 13.6683619,7.13095887 13.1255745,7.42347756 C13.3473881,7.49324999 13.5598766,7.58454301 13.7606411,7.69494899 L13.8600352,7.75173357 L13.9847338,7.62569546 C14.1274018,7.48163911 14.3143548,7.40983657 14.5011919,7.40983657 C14.688029,7.40983657 14.874982,7.48163911 15.0177331,7.62577944 C15.1594306,7.76899908 15.2304854,7.95663592 15.2304854,8.14437775 C15.2304854,8.33211957 15.1594306,8.51975641 15.0177331,8.66297605 C15.0758073,8.91315585 15.1800394,9.11284695 15.2730764,9.31578838 L15.3073284,9.39214874 L15.7062595,9.39214874 C15.9078461,9.39214874 16.0905825,9.47457472 16.222824,9.60823679 C16.3541127,9.74093586 16.435553,9.92418952 16.435553,10.1267386 C16.435553,10.3292876 16.3541127,10.5125413 16.222824,10.6452404 C16.1016026,10.767764 15.9379515,10.847235 15.7562451,10.8596293 L15.7062595,10.8613284 L15.6064388,10.8611212 L15.6052644,10.9403609 C15.5982898,11.1660708 15.5704213,11.3895864 15.5220162,11.6084688 L15.496104,11.7175126 C16.2545351,12.2216294 16.8647281,12.9384088 17.2370433,13.7799785 C17.3185588,13.9646434 17.318408,14.165261 17.2521859,14.3403338 C17.1856644,14.516198 17.0526011,14.6661647 16.8691486,14.7490378 C16.6847165,14.8323535 16.4843584,14.8321927 16.3095005,14.7646232 C16.1354568,14.6973683 15.9865425,14.5631995 15.9044635,14.3775802 C15.5937284,13.6748668 15.0581788,13.1251262 14.4160409,12.79019 C13.7757797,12.4562325 13.0292742,12.335777 12.2940793,12.4917693 C12.2548006,12.5000876 12.2153349,12.5087848 12.1756925,12.5178142 C11.9243718,12.5752848 11.6837743,12.5119629 11.5065692,12.3294192 C11.412862,12.2522566 10.6786201,11.7065392 8.71129835,11.4081487 C8.30504987,12.1942257 7.30509129,13.7162105 5.31646935,14.6311724 C4.39378281,15.0556951 3.78933296,15.5541357 3.39656761,16.0390636 C2.77832024,16.8023831 2.69398445,17.5243046 2.69062884,17.8212798 C2.70275332,17.9987583 2.69951578,18.0961625 2.68850296,18.1658429 C2.93274062,18.7783345 3.25767488,19.3813459 3.94668912,20.2001123 C5.54053393,22.0937699 7.74394608,23.4659536 10.1641987,24.0755528 L10.3068137,24.1105302 L11.6133758,24.4223812 C11.8800937,24.4860378 12.1545715,24.5183203 12.4288686,24.5183203 C13.1538522,24.5183203 13.84775,24.2997338 14.4424038,23.8852247 L14.5228714,23.8274884 L14.856206,23.5814682 C16.1283297,22.6420755 16.922308,21.1923822 17.0352473,19.6041334 C17.084831,18.9068708 17.055153,18.203154 16.9473593,17.5128098 C16.9160636,17.3128562 16.9680364,17.1191149 17.077084,16.9674602 C17.1869016,16.8147346 17.354484,16.7046851 17.553144,16.6730415 C17.7526141,16.6410028 17.9460003,16.693667 18.0973662,16.8048578 C18.2478017,16.9153652 18.3567213,17.0838095 18.3879406,17.2840386 C18.5131822,18.0847604 18.547641,18.900609 18.4901406,19.7090863 C18.3492032,21.6915353 17.3732244,23.5036698 15.8075362,24.6995089 L15.7182842,24.7665368 L15.3849465,25.0125592 C14.5211732,25.6503859 13.4988605,25.9875 12.4288686,25.9875 C12.0898456,25.9875 11.7508226,25.9526033 11.4188254,25.8836266 L11.2769915,25.8519811 L9.97063354,25.5401328 C7.19307526,24.8772729 4.65875344,23.3181543 2.83406498,21.1500688 C1.77886737,19.8962793 1.42492872,19.007035 1.10894911,18.1015777 L1.08339923,18.0281192 L1.03365703,17.8842143 C0.969083119,17.6969289 0.905811453,17.5133689 0.835926474,17.3236283 C0.333600157,16.4440653 0.0118654964,15.0837748 0.000393803101,13.7475597 C-0.00982361714,12.551023 0.221426086,10.8561047 1.34432162,9.56158128 C1.5254193,9.35280742 1.71281216,9.1653371 1.90570367,8.99818379 L2.00260396,8.91629565 L2.00260396,3.93525533 C2.00260396,3.55817129 2.15446046,3.21628655 2.39947716,2.96863783 C2.63093733,2.73469127 2.94539922,2.58485161 3.29368444,2.56803292 L3.35937228,2.5664502 L4.69771568,2.5664502 C4.95783657,2.5664502 5.20108612,2.64077166 5.40784545,2.76947715 C5.51470964,2.83599898 5.61180056,2.91709588 5.69639447,3.00991852 C5.8927248,2.74148185 6.10771348,2.49510177 6.33987397,2.27433042 C6.68832976,1.94280918 7.06426015,1.67865496 7.45925484,1.48349757 L7.56744701,1.43198472 L7.56744701,0.734589844 C7.56744701,0.532008 7.64886261,0.348739062 7.78015114,0.216040201 C7.91234837,0.0824228901 8.09504382,0 8.29674049,0 Z M4.4717034,9.44778353 L4.39465723,9.44996762 C3.68357636,9.48199866 3.02972999,9.85153015 2.44275734,10.5283583 C1.8383879,11.2250761 1.56200587,12.1529647 1.48620149,13.0819775 C1.40538816,14.0723771 1.55284968,15.0679391 1.79556651,15.8036833 C2.24568266,15.0017358 3.09531329,14.0378151 4.71049301,13.2947864 C6.2146739,12.6026956 7.01632243,11.4556589 7.36260998,10.8270884 C6.30776424,9.89592152 5.29005797,9.40945232 4.39465723,9.44996762 L4.4717034,9.44778353 Z M12.0771899,8.7315096 C12.0054344,8.7315096 11.9336069,8.7354052 11.8623805,8.74288239 C11.5124273,9.40704144 11.3768721,10.1135556 11.3238324,10.5727394 C11.7210622,10.734382 12.0018172,10.8921612 12.1911642,11.0167131 C12.8364537,10.9094399 13.4983547,10.9427172 14.1294837,11.1101022 C14.1420631,11.016896 14.1484219,10.9225364 14.1484219,10.827529 C14.1484219,10.2493945 13.9158094,9.72507438 13.5400931,9.34532203 C13.1652865,8.96648921 12.6479153,8.7315096 12.0771899,8.7315096 Z M14.3824249,5.10976485 C13.2284354,5.1209326 10.8513175,5.30871994 9.40193981,6.65991044 C8.62555171,7.38373758 8.22794611,8.37005824 8.2047277,9.61764595 C8.30954342,9.70764854 8.41464826,9.80124304 8.52003356,9.89866967 C9.0457513,9.96455873 9.50681504,10.0474121 9.91033781,10.1393109 C10.0485981,9.23566185 10.4286922,7.86798574 11.4519152,6.8560141 C12.2155546,6.10112668 13.1978522,5.66889872 14.3824249,5.57345052 L14.3824249,5.57345052 L14.3824249,5.10976485 Z M9.1676556,2.54703425 C8.5003389,2.54703425 7.86131421,2.84923254 7.32252748,3.37226327 C6.77128548,3.90738503 6.32504312,4.67230802 6.05448405,5.59584335 L6.05448405,5.59584335 L6.05448405,8.27809478 L6.182032,8.3284943 C6.39491356,8.41577449 6.60928709,8.51945743 6.82490905,8.63951188 C7.01426278,7.41131045 7.54753895,6.38537578 8.41428157,5.57872382 C9.31069318,4.74431818 10.4490824,4.25980232 11.5384923,3.98447047 C11.0724295,3.30549494 10.4799248,2.83646785 9.82818866,2.64404043 C9.61311749,2.58059335 9.39206231,2.54703425 9.1676556,2.54703425 Z M4.46919637,4.05771595 L3.46119092,4.15071265 L3.46119092,8.12572687 L3.58233421,8.09263454 C3.82560245,8.03062375 4.07474439,7.99368037 4.32946712,7.98224061 C4.41541875,7.97833842 4.50165132,7.97738263 4.5882006,7.97930704 L4.5882006,7.97930704 L4.46919637,4.05771595 Z M6.10642436,19.9300312 C6.29265474,19.9124873 6.48555069,19.9665839 6.64082355,20.096839 C7.83022896,21.0939979 9.25463921,21.8112384 10.7601932,22.1705113 C10.9560976,22.2172794 11.1149122,22.339665 11.2130115,22.5001439 C11.31051,22.6596402 11.3479077,22.8567271 11.3019057,23.0535851 C11.2628407,23.2208977 11.1698436,23.3610748 11.0461613,23.4601192 C10.9191675,23.5618155 10.7597242,23.6199964 10.5924742,23.6199964 C8.69971972,23.1888457 7.06917431,22.3677429 5.707713,21.2259389 C5.55342467,21.096653 5.46537484,20.9164401 5.44812209,20.7293959 C5.4308925,20.5426029 5.48431707,20.3492193 5.61215522,20.1933634 C5.74090949,20.0365644 5.92045223,19.9475507 6.10642436,19.9300312 Z M4.89737927,18.6481301 L4.94420371,18.6500918 C5.13083058,18.6639119 5.31253707,18.7494456 5.4444858,18.9034071 C5.5802432,19.067802 5.63564497,19.2616634 5.62185524,19.4467945 C5.60761586,19.6379624 5.51963362,19.8205074 5.36428952,19.9513514 C5.22774469,20.0665535 5.06175471,20.1224683 4.89666646,20.1224683 C4.68745399,20.1224683 4.47980647,20.0325232 4.3352281,19.8573436 C4.20605987,19.7048182 4.14981243,19.5144336 4.16330713,19.3289858 C4.17689823,19.1422132 4.26127127,18.9605295 4.41277633,18.8278815 C4.56521054,18.694295 4.75722182,18.6362454 4.94420371,18.6500918 L4.89737927,18.6481301 Z",
|
|
177
|
+
"wellbeing_element_hypertension_health_risk": "M8.84116558,0 C9.06481853,0 9.27271794,0.0780959838 9.43374499,0.203497025 C9.60621554,0.337809786 9.72333901,0.525160072 9.76070272,0.726878563 C10.0125776,1.76355652 10.6393396,3.82350861 12.0938304,6.08890031 C12.2065496,6.27485044 12.2289026,6.46937848 12.1901447,6.64864723 C12.1491387,6.83831422 12.0368962,7.00994094 11.8852519,7.1226672 C11.6768958,7.24886212 11.4828872,7.26973707 11.3043436,7.23181649 C11.1136166,7.19130828 10.9412974,7.08010313 10.8279982,6.93037512 C9.88427758,5.39654335 9.26184593,3.98753056 8.8472111,2.85404805 C8.09269331,4.97369913 6.65260139,7.85618184 3.93963325,10.6614459 L3.80736474,10.7971207 L3.80124957,10.803371 C3.69370717,10.9145583 2.27904373,12.4185719 1.73258686,14.5735224 C1.47455441,15.5910723 1.41134752,16.755784 1.77914687,17.9883609 L1.81737224,18.1118419 L2.51589646,18.1345368 L3.50395917,15.7842416 C3.58198618,15.6259649 3.68473598,15.5133531 3.81359269,15.4372541 C3.93048982,15.368218 4.07251443,15.3274343 4.25225896,15.3274343 C4.41358714,15.3274343 4.57615996,15.3848444 4.7072098,15.4851703 C4.82085236,15.57217 4.90924743,15.6899941 4.9569107,15.8232477 L4.97284488,15.873911 L6.07531139,19.3393645 L6.39484017,18.5426119 C6.44072731,18.3872396 6.5379415,18.2658741 6.66629889,18.1816472 C6.7784911,18.1080277 6.9164222,18.0642931 7.05822325,18.0554832 L7.11153733,18.0538264 L9.6677618,18.0538781 C8.71166522,16.8505625 8.14006999,15.3350465 8.14006999,13.6937563 C8.14006999,11.7498941 8.94183769,9.98241884 10.2345786,8.70112378 C11.5264147,7.42072544 13.3083093,6.62618319 15.268285,6.62618319 C17.2282607,6.62618319 19.0101552,7.42072544 20.3019914,8.70112378 C21.5947323,9.98241884 22.3965,11.7498941 22.3965,13.6937563 C22.3965,15.6376185 21.5947323,17.4050937 20.3019914,18.6863888 C19.0101552,19.9667871 17.2282607,20.7613294 15.268285,20.7613294 C13.8719637,20.7613294 12.5660645,20.3580312 11.4633077,19.6631549 L11.3572272,19.5950023 L7.64828467,19.5955263 L6.70700407,21.9318899 C6.66356682,22.0515146 6.56885988,22.1761337 6.43630965,22.2674427 C6.31937988,22.3479913 6.17620694,22.4011427 6.03229071,22.4088746 C5.82556991,22.4098207 5.67859601,22.3584791 5.55865126,22.2794906 C5.43540231,22.198326 5.33955611,22.0837798 5.26579486,21.9468224 L5.23915924,21.8944342 L4.11949921,18.3393847 L3.74987469,19.2261865 C3.67481788,19.3786759 3.57641182,19.4884872 3.46264725,19.5631384 C3.35848798,19.6314868 3.23965603,19.672375 3.1047562,19.6815291 L3.04595417,19.6834969 L2.62587404,19.6834343 C3.15668432,20.4927424 3.98754641,21.4947575 5.17514574,22.2162248 C6.14451554,22.8051175 7.35306311,23.2051352 8.83029166,23.1567336 C10.7116999,23.1967869 12.3733739,22.5957096 13.7529198,21.2686129 C13.9153321,21.1157232 14.0981187,21.0514141 14.2784691,21.0514141 C14.4673121,21.0514141 14.6577115,21.1234764 14.8094085,21.2738302 C14.9621128,21.4251824 15.034844,21.6152786 15.034844,21.8035629 C15.034844,21.9918473 14.9621128,22.1819434 14.8094085,22.3332956 C13.1987988,23.843529 11.3390069,24.6290913 9.22573964,24.6599097 L9.09603918,24.6608532 L8.8459938,24.6608532 C6.86534931,24.7179208 5.27857297,24.100502 4.04040396,23.2480583 C2.14541961,21.9434162 1.07359127,20.0831581 0.662849991,19.2697344 C0.566780648,19.0762483 0.526220866,18.9889041 0.500712402,18.9339719 C-0.146745657,17.1491562 -0.0921225379,15.5704069 0.24931144,14.2167631 C0.88691284,11.6889386 2.53313299,9.95271821 2.72982913,9.7533691 C6.29321158,6.13857051 7.54841845,2.24747313 7.92440525,0.715435339 C7.99226385,0.478992336 8.10952761,0.308434892 8.26124313,0.190285279 C8.41660039,0.0692996271 8.61143101,0 8.84116558,0 Z M15.268285,8.13048091 C13.7237487,8.13048091 12.3197232,8.75690911 11.3017674,9.76585205 C10.2847162,10.7738983 9.65281995,12.1641351 9.65281995,13.6937563 C9.65281995,15.2233774 10.2847162,16.6136143 11.3017674,17.6216605 C12.3197232,18.6306034 13.7237487,19.2570316 15.268285,19.2570316 C16.8128213,19.2570316 18.2168468,18.6306034 19.2348026,17.6216605 C20.2518537,16.6136143 20.88375,15.2233774 20.88375,13.6937563 C20.88375,12.1641351 20.2518537,10.7738983 19.2348026,9.76585205 C18.2168468,8.75690911 16.8128213,8.13048091 15.268285,8.13048091 L15.268285,8.13048091 Z M18.3487819,9.73377289 C18.5537448,9.73377289 18.7585996,9.8114564 18.9149397,9.9664002 C19.0722636,10.1223189 19.1507069,10.3267315 19.1507069,10.5310319 C19.1507069,10.7183073 19.0847928,10.9056769 18.9526276,11.0557018 L18.9149397,11.0956636 L15.7793441,14.2032533 C15.6230039,14.3581971 15.4181491,14.4358806 15.2131863,14.4358806 C15.0082234,14.4358806 14.8033686,14.3581971 14.6470284,14.2032533 C14.4897045,14.0473346 14.4112613,13.842922 14.4112613,13.6386216 C14.4112613,13.4513463 14.4771754,13.2639766 14.6093405,13.1139517 L14.6470284,13.0739899 L17.7826241,9.9664002 C17.9389642,9.8114564 18.143819,9.73377289 18.3487819,9.73377289 Z",
|
|
178
|
+
"wellbeing_element_diabetes_health_risk": "M12.710223,0 C12.8219384,0 12.9336614,0.0291903391 13.0336716,0.0876424677 C13.0338358,0.0877385191 14.2777775,0.815163202 15.636204,1.60954975 L15.7821363,1.69488875 C15.8065142,1.70914459 15.8309158,1.72341427 15.8553346,1.73769401 L16.0250265,1.83692744 L16.1099304,1.88657813 L16.1099304,1.88657813 L16.2795557,1.98577284 C17.4370134,2.66263993 18.5495201,3.31323255 18.9308936,3.53629779 L18.9574842,3.55185083 L19.0056489,3.58002422 L19.0709642,3.61824995 L19.106091,3.64061398 L19.106091,3.64061398 L19.1398559,3.66535503 L19.1454609,3.66999989 L19.1706468,3.69136442 L19.1706468,3.69136442 L19.1961701,3.7154497 L19.2058446,3.72522342 L19.2271844,3.74853011 L19.2271844,3.74853011 L19.2466373,3.77200147 L19.2555447,3.78314115 C19.2667412,3.79800469 19.2774253,3.8132026 19.2878925,3.82987039 L19.3034675,3.8561164 L19.3068283,3.86266495 L19.3221446,3.89243898 L19.3221446,3.89243898 L19.3357617,3.9226647 L19.3419364,3.93840641 L19.3520374,3.96615994 L19.3520374,3.96615994 L19.3609122,3.99451409 L19.3650373,4.00897246 C19.3736131,4.04187237 19.3795347,4.07507255 19.3828458,4.10833439 L19.3858599,4.15824356 L19.3862567,4.16429782 L19.3862567,10.8597033 L21.9605918,12.3651516 L22.1408198,12.4705486 L22.2966007,12.5616511 L22.4521042,12.6525948 C23.6939775,13.3788989 24.8716173,14.0679615 25.0827858,14.19156 C25.09038,14.1956547 25.0978822,14.1998968 25.1052924,14.2042856 L25.1401571,14.2264784 L25.1401571,14.2264784 L25.173718,14.2509983 L25.1804015,14.256555 L25.2054315,14.2778009 L25.2054315,14.2778009 L25.2294667,14.300439 L25.240529,14.311681 L25.2615011,14.334603 L25.2615011,14.334603 L25.280319,14.3572783 L25.2898617,14.3691377 C25.3009981,14.3839891 25.3116608,14.399168 25.3221196,14.4157984 L25.3376887,14.4419729 L25.3411257,14.44867 L25.356442,14.478444 L25.356442,14.478444 L25.370059,14.5086697 L25.3762338,14.5244114 L25.3863348,14.5521649 L25.3863348,14.5521649 L25.3952096,14.5805191 L25.3993346,14.5949773 C25.4083634,14.6296146 25.4144478,14.6645853 25.4177094,14.6996107 L25.4205,14.7521548 L25.4205,21.8154276 C25.4205,22.0290286 25.314745,22.2275819 25.1404379,22.3468317 L25.1020507,22.371148 L19.0607022,25.904003 L19.052145,25.90812 L19.0274725,25.921385 L18.9905864,25.938248 L18.9539249,25.9520573 L18.9539249,25.9520573 L18.9162396,25.9636844 L18.9034263,25.9670546 L18.8997537,25.9679693 L18.8711417,25.9744001 L18.8711417,25.9744001 L18.8420964,25.9795306 L18.8379956,25.9801949 L18.8249914,25.9821309 C18.7985081,25.9854918 18.7717485,25.9875 18.7444392,25.9875 L18.7040493,25.9860656 L18.7040493,25.9860656 L18.6642771,25.9821889 L18.6508827,25.9801949 L18.646846,25.979541 L18.6174402,25.9743289 L18.6174402,25.9743289 L18.5868873,25.9673987 L18.5729594,25.9637741 C18.5476891,25.9567065 18.5230702,25.9485325 18.497631,25.9379898 L18.4649195,25.923126 L18.4649195,25.923126 L18.4332596,25.906515 L18.428176,25.9040029 L12.7102506,22.5602666 L6.99237848,25.9040027 L6.98142719,25.9094145 L6.9593323,25.9213255 L6.92203217,25.9383662 L6.88503557,25.9522506 L6.88503557,25.9522506 L6.84699677,25.9639238 L6.83142934,25.967915 L6.80216677,25.9744782 L6.80216677,25.9744782 L6.77283755,25.9796106 L6.75726882,25.9819991 C6.7306938,25.985397 6.70363433,25.9875 6.67611488,25.9875 L6.63570066,25.9860347 L6.63570066,25.9860347 L6.59590387,25.982129 L6.58258318,25.9801389 L6.57850195,25.9794754 L6.54920392,25.9742924 L6.54920392,25.9742924 L6.51930447,25.9675361 L6.50518482,25.9639105 C6.47957351,25.9567826 6.45461482,25.9485147 6.42930671,25.9379898 L6.3965804,25.9231295 L6.3965804,25.9231295 L6.36489546,25.9065221 L6.35979781,25.904003 L0.318477405,22.3711645 C0.134589739,22.2636648 0.0165298434,22.0721858 0.00160580254,21.8609638 L4.33362146e-11,21.8154231 L4.33362146e-11,14.7547544 C0.000659431039,14.7002958 0.00739860769,14.6489513 0.0199830606,14.5998579 C0.0217010964,14.5929598 0.0236152065,14.5862196 0.0256117182,14.5794512 L0.0340105746,14.5526085 L0.0340105746,14.5526085 L0.0438881197,14.525436 C0.0468008623,14.5177295 0.0494260142,14.5110146 0.0519658496,14.5051222 L0.0648499392,14.4768611 L0.0648499392,14.4768611 L0.0792271202,14.4489932 L0.0835215491,14.4405772 L0.106069006,14.4039031 L0.106069006,14.4039031 L0.130605115,14.3693043 L0.138723321,14.3591626 C0.15138446,14.3431047 0.164666107,14.3277531 0.177469995,14.3143573 C0.182294643,14.3092351 0.187285215,14.3041865 0.19256231,14.298988 L0.215852244,14.2771763 L0.215852244,14.2771763 L0.240091838,14.2566204 L0.246677583,14.2511683 C0.261016983,14.2399349 0.275649244,14.2294335 0.291758885,14.218914 L0.317179447,14.2030272 L6.0341892,10.8599175 L6.0341892,4.1644064 L6.03453375,4.15823625 L6.0342975,4.1641425 L6.03695948,4.11473548 C6.03999054,4.08060973 6.0457504,4.04676201 6.05417226,4.01390717 C6.0558903,4.00700906 6.05780441,4.00026885 6.05980092,3.9935005 L6.06819977,3.96665776 L6.06819977,3.96665776 L6.07807732,3.93948526 C6.08099006,3.93177881 6.08361521,3.92506384 6.08615505,3.91917143 L6.09903914,3.89091038 L6.09903914,3.89091038 L6.11341632,3.86304248 L6.11762701,3.85479056 L6.1403917,3.81770774 L6.1403917,3.81770774 L6.16524566,3.78272204 L6.1725732,3.77365393 L6.1929324,3.74899667 L6.1929324,3.74899667 L6.21431486,3.7255758 L6.22469022,3.71502511 L6.24908067,3.69199868 L6.24908067,3.69199868 L6.27451418,3.67039123 L12.3868218,0.087614736 C12.4867845,0.0291903391 12.5985075,0 12.710223,0 Z M12.0683784,15.8783173 L7.3179324,18.6562632 L7.3179324,24.2238116 L12.0683784,21.4458163 L12.0683784,15.8783173 Z M13.3521216,15.8782631 L13.3521216,21.4458151 L18.1025676,24.223761 L18.1025676,18.6562089 L13.3521216,15.8782631 Z M1.2837432,15.8782631 L1.2837432,21.445762 L6.0341892,24.2237573 L6.0341892,18.6562089 L1.2837432,15.8782631 Z M24.1367568,15.8783173 L19.3863108,18.6562632 L19.3863108,24.2238153 L24.1367568,21.4458694 L24.1367568,15.8783173 Z M18.7444392,11.9742608 L13.9840372,14.7580367 L18.7444392,17.5418125 L23.5048412,14.7580367 L18.7444392,11.9742608 Z M6.6760608,11.9742608 L1.91565877,14.7580367 L6.6760608,17.5418125 L11.4364628,14.7580367 L6.6760608,11.9742608 Z M18.1025676,5.29231233 L13.3521216,8.07025821 L13.3521216,13.6378066 L18.1025676,10.8598113 L18.1025676,5.29231233 Z M7.3179324,5.29225804 L7.3179324,10.8598101 L12.0683784,13.637756 L12.0683784,8.07020393 L7.3179324,5.29225804 Z M12.71025,1.38825582 L7.94984797,4.17203166 L12.71025,6.9558075 L17.470652,4.17203166 L12.71025,1.38825582 Z",
|
|
179
|
+
"wellbeing_aspect_cardiovascular_disease_health_risk": "M16.9492185,14.9913917 C17.1368969,14.9079666 17.3369082,14.9094338 17.510824,14.9786458 C17.6828343,15.0470995 17.830365,15.1824471 17.9131408,15.3718018 C17.9957035,15.5603468 17.9958836,15.7607846 17.930594,15.934663 C17.864581,16.1104681 17.7315119,16.2600223 17.5451494,16.3437079 C17.4471913,16.3877445 17.345493,16.4084738 17.2458648,16.4084738 C17.1033483,16.4084738 16.9649053,16.3659995 16.8468215,16.2870952 C16.7343356,16.2119315 16.6400684,16.1036292 16.5790431,15.9655078 C16.4964361,15.7751293 16.4966755,15.5744594 16.5618209,15.4009737 C16.6281514,15.2243322 16.7619555,15.0747763 16.9492185,14.9913917 Z M8.29674049,0 C8.49843716,0 8.68113261,0.0824228901 8.81332984,0.216040201 C8.93367766,0.337680824 9.01211836,0.501814358 9.02435606,0.684364824 L9.02603397,0.734589844 L9.02603397,1.08062346 C9.07314831,1.0787916 9.12036435,1.07785456 9.1676556,1.07785456 C9.31251039,1.07785456 9.4562695,1.08647633 9.59859096,1.1030612 L9.70505715,1.11698265 L10.1201287,0.490598405 C10.2322538,0.321395952 10.4017096,0.214458134 10.5847444,0.177885144 C10.7683247,0.141203169 10.9657683,0.175223838 11.1332947,0.288732989 C11.3000792,0.401499669 11.4060851,0.571820057 11.442216,0.756285508 C11.4749699,0.923509452 11.4502403,1.10220521 11.3617545,1.25964916 L11.3332898,1.30621207 L11.1272487,1.61709958 C11.8990684,2.06458199 12.5762542,2.77891407 13.0826019,3.71165649 C14.2292571,3.58753698 15.0938397,3.654613 15.1720661,3.66109087 C15.3613986,3.67694198 15.528955,3.76460895 15.6491044,3.89649216 C15.7576356,4.01562252 15.8274386,4.17087606 15.8392331,4.34148311 L15.8410119,4.39310506 L15.8410119,6.2914684 C15.8410119,6.49040875 15.761039,6.68058435 15.619408,6.81885968 C15.4765519,6.95805229 15.2838165,7.03300025 15.086832,7.02552899 C14.3255506,6.99931354 13.6683619,7.13095887 13.1255745,7.42347756 C13.3473881,7.49324999 13.5598766,7.58454301 13.7606411,7.69494899 L13.8600352,7.75173357 L13.9847338,7.62569546 C14.1274018,7.48163911 14.3143548,7.40983657 14.5011919,7.40983657 C14.688029,7.40983657 14.874982,7.48163911 15.0177331,7.62577944 C15.1594306,7.76899908 15.2304854,7.95663592 15.2304854,8.14437775 C15.2304854,8.33211957 15.1594306,8.51975641 15.0177331,8.66297605 C15.0758073,8.91315585 15.1800394,9.11284695 15.2730764,9.31578838 L15.3073284,9.39214874 L15.7062595,9.39214874 C15.9078461,9.39214874 16.0905825,9.47457472 16.222824,9.60823679 C16.3541127,9.74093586 16.435553,9.92418952 16.435553,10.1267386 C16.435553,10.3292876 16.3541127,10.5125413 16.222824,10.6452404 C16.1016026,10.767764 15.9379515,10.847235 15.7562451,10.8596293 L15.7062595,10.8613284 L15.6064388,10.8611212 L15.6052644,10.9403609 C15.5982898,11.1660708 15.5704213,11.3895864 15.5220162,11.6084688 L15.496104,11.7175126 C16.2545351,12.2216294 16.8647281,12.9384088 17.2370433,13.7799785 C17.3185588,13.9646434 17.318408,14.165261 17.2521859,14.3403338 C17.1856644,14.516198 17.0526011,14.6661647 16.8691486,14.7490378 C16.6847165,14.8323535 16.4843584,14.8321927 16.3095005,14.7646232 C16.1354568,14.6973683 15.9865425,14.5631995 15.9044635,14.3775802 C15.5937284,13.6748668 15.0581788,13.1251262 14.4160409,12.79019 C13.7757797,12.4562325 13.0292742,12.335777 12.2940793,12.4917693 C12.2548006,12.5000876 12.2153349,12.5087848 12.1756925,12.5178142 C11.9243718,12.5752848 11.6837743,12.5119629 11.5065692,12.3294192 C11.412862,12.2522566 10.6786201,11.7065392 8.71129835,11.4081487 C8.30504987,12.1942257 7.30509129,13.7162105 5.31646935,14.6311724 C4.39378281,15.0556951 3.78933296,15.5541357 3.39656761,16.0390636 C2.77832024,16.8023831 2.69398445,17.5243046 2.69062884,17.8212798 C2.70275332,17.9987583 2.69951578,18.0961625 2.68850296,18.1658429 C2.93274062,18.7783345 3.25767488,19.3813459 3.94668912,20.2001123 C5.54053393,22.0937699 7.74394608,23.4659536 10.1641987,24.0755528 L10.3068137,24.1105302 L11.6133758,24.4223812 C11.8800937,24.4860378 12.1545715,24.5183203 12.4288686,24.5183203 C13.1538522,24.5183203 13.84775,24.2997338 14.4424038,23.8852247 L14.5228714,23.8274884 L14.856206,23.5814682 C16.1283297,22.6420755 16.922308,21.1923822 17.0352473,19.6041334 C17.084831,18.9068708 17.055153,18.203154 16.9473593,17.5128098 C16.9160636,17.3128562 16.9680364,17.1191149 17.077084,16.9674602 C17.1869016,16.8147346 17.354484,16.7046851 17.553144,16.6730415 C17.7526141,16.6410028 17.9460003,16.693667 18.0973662,16.8048578 C18.2478017,16.9153652 18.3567213,17.0838095 18.3879406,17.2840386 C18.5131822,18.0847604 18.547641,18.900609 18.4901406,19.7090863 C18.3492032,21.6915353 17.3732244,23.5036698 15.8075362,24.6995089 L15.7182842,24.7665368 L15.3849465,25.0125592 C14.5211732,25.6503859 13.4988605,25.9875 12.4288686,25.9875 C12.0898456,25.9875 11.7508226,25.9526033 11.4188254,25.8836266 L11.2769915,25.8519811 L9.97063354,25.5401328 C7.19307526,24.8772729 4.65875344,23.3181543 2.83406498,21.1500688 C1.77886737,19.8962793 1.42492872,19.007035 1.10894911,18.1015777 L1.08339923,18.0281192 L1.03365703,17.8842143 C0.969083119,17.6969289 0.905811453,17.5133689 0.835926474,17.3236283 C0.333600157,16.4440653 0.0118654964,15.0837748 0.000393803101,13.7475597 C-0.00982361714,12.551023 0.221426086,10.8561047 1.34432162,9.56158128 C1.5254193,9.35280742 1.71281216,9.1653371 1.90570367,8.99818379 L2.00260396,8.91629565 L2.00260396,3.93525533 C2.00260396,3.55817129 2.15446046,3.21628655 2.39947716,2.96863783 C2.63093733,2.73469127 2.94539922,2.58485161 3.29368444,2.56803292 L3.35937228,2.5664502 L4.69771568,2.5664502 C4.95783657,2.5664502 5.20108612,2.64077166 5.40784545,2.76947715 C5.51470964,2.83599898 5.61180056,2.91709588 5.69639447,3.00991852 C5.8927248,2.74148185 6.10771348,2.49510177 6.33987397,2.27433042 C6.68832976,1.94280918 7.06426015,1.67865496 7.45925484,1.48349757 L7.56744701,1.43198472 L7.56744701,0.734589844 C7.56744701,0.532008 7.64886261,0.348739062 7.78015114,0.216040201 C7.91234837,0.0824228901 8.09504382,0 8.29674049,0 Z M4.4717034,9.44778353 L4.39465723,9.44996762 C3.68357636,9.48199866 3.02972999,9.85153015 2.44275734,10.5283583 C1.8383879,11.2250761 1.56200587,12.1529647 1.48620149,13.0819775 C1.40538816,14.0723771 1.55284968,15.0679391 1.79556651,15.8036833 C2.24568266,15.0017358 3.09531329,14.0378151 4.71049301,13.2947864 C6.2146739,12.6026956 7.01632243,11.4556589 7.36260998,10.8270884 C6.30776424,9.89592152 5.29005797,9.40945232 4.39465723,9.44996762 L4.4717034,9.44778353 Z M12.0771899,8.7315096 C12.0054344,8.7315096 11.9336069,8.7354052 11.8623805,8.74288239 C11.5124273,9.40704144 11.3768721,10.1135556 11.3238324,10.5727394 C11.7210622,10.734382 12.0018172,10.8921612 12.1911642,11.0167131 C12.8364537,10.9094399 13.4983547,10.9427172 14.1294837,11.1101022 C14.1420631,11.016896 14.1484219,10.9225364 14.1484219,10.827529 C14.1484219,10.2493945 13.9158094,9.72507438 13.5400931,9.34532203 C13.1652865,8.96648921 12.6479153,8.7315096 12.0771899,8.7315096 Z M14.3824249,5.10976485 C13.2284354,5.1209326 10.8513175,5.30871994 9.40193981,6.65991044 C8.62555171,7.38373758 8.22794611,8.37005824 8.2047277,9.61764595 C8.30954342,9.70764854 8.41464826,9.80124304 8.52003356,9.89866967 C9.0457513,9.96455873 9.50681504,10.0474121 9.91033781,10.1393109 C10.0485981,9.23566185 10.4286922,7.86798574 11.4519152,6.8560141 C12.2155546,6.10112668 13.1978522,5.66889872 14.3824249,5.57345052 L14.3824249,5.57345052 L14.3824249,5.10976485 Z M9.1676556,2.54703425 C8.5003389,2.54703425 7.86131421,2.84923254 7.32252748,3.37226327 C6.77128548,3.90738503 6.32504312,4.67230802 6.05448405,5.59584335 L6.05448405,5.59584335 L6.05448405,8.27809478 L6.182032,8.3284943 C6.39491356,8.41577449 6.60928709,8.51945743 6.82490905,8.63951188 C7.01426278,7.41131045 7.54753895,6.38537578 8.41428157,5.57872382 C9.31069318,4.74431818 10.4490824,4.25980232 11.5384923,3.98447047 C11.0724295,3.30549494 10.4799248,2.83646785 9.82818866,2.64404043 C9.61311749,2.58059335 9.39206231,2.54703425 9.1676556,2.54703425 Z M4.46919637,4.05771595 L3.46119092,4.15071265 L3.46119092,8.12572687 L3.58233421,8.09263454 C3.82560245,8.03062375 4.07474439,7.99368037 4.32946712,7.98224061 C4.41541875,7.97833842 4.50165132,7.97738263 4.5882006,7.97930704 L4.5882006,7.97930704 L4.46919637,4.05771595 Z M6.10642436,19.9300312 C6.29265474,19.9124873 6.48555069,19.9665839 6.64082355,20.096839 C7.83022896,21.0939979 9.25463921,21.8112384 10.7601932,22.1705113 C10.9560976,22.2172794 11.1149122,22.339665 11.2130115,22.5001439 C11.31051,22.6596402 11.3479077,22.8567271 11.3019057,23.0535851 C11.2628407,23.2208977 11.1698436,23.3610748 11.0461613,23.4601192 C10.9191675,23.5618155 10.7597242,23.6199964 10.5924742,23.6199964 C8.69971972,23.1888457 7.06917431,22.3677429 5.707713,21.2259389 C5.55342467,21.096653 5.46537484,20.9164401 5.44812209,20.7293959 C5.4308925,20.5426029 5.48431707,20.3492193 5.61215522,20.1933634 C5.74090949,20.0365644 5.92045223,19.9475507 6.10642436,19.9300312 Z M4.89737927,18.6481301 L4.94420371,18.6500918 C5.13083058,18.6639119 5.31253707,18.7494456 5.4444858,18.9034071 C5.5802432,19.067802 5.63564497,19.2616634 5.62185524,19.4467945 C5.60761586,19.6379624 5.51963362,19.8205074 5.36428952,19.9513514 C5.22774469,20.0665535 5.06175471,20.1224683 4.89666646,20.1224683 C4.68745399,20.1224683 4.47980647,20.0325232 4.3352281,19.8573436 C4.20605987,19.7048182 4.14981243,19.5144336 4.16330713,19.3289858 C4.17689823,19.1422132 4.26127127,18.9605295 4.41277633,18.8278815 C4.56521054,18.694295 4.75722182,18.6362454 4.94420371,18.6500918 L4.89737927,18.6481301 Z",
|
|
180
|
+
"wellbeing_aspect_hypertension_health_risk": "M8.84116558,0 C9.06481853,0 9.27271794,0.0780959838 9.43374499,0.203497025 C9.60621554,0.337809786 9.72333901,0.525160072 9.76070272,0.726878563 C10.0125776,1.76355652 10.6393396,3.82350861 12.0938304,6.08890031 C12.2065496,6.27485044 12.2289026,6.46937848 12.1901447,6.64864723 C12.1491387,6.83831422 12.0368962,7.00994094 11.8852519,7.1226672 C11.6768958,7.24886212 11.4828872,7.26973707 11.3043436,7.23181649 C11.1136166,7.19130828 10.9412974,7.08010313 10.8279982,6.93037512 C9.88427758,5.39654335 9.26184593,3.98753056 8.8472111,2.85404805 C8.09269331,4.97369913 6.65260139,7.85618184 3.93963325,10.6614459 L3.80736474,10.7971207 L3.80124957,10.803371 C3.69370717,10.9145583 2.27904373,12.4185719 1.73258686,14.5735224 C1.47455441,15.5910723 1.41134752,16.755784 1.77914687,17.9883609 L1.81737224,18.1118419 L2.51589646,18.1345368 L3.50395917,15.7842416 C3.58198618,15.6259649 3.68473598,15.5133531 3.81359269,15.4372541 C3.93048982,15.368218 4.07251443,15.3274343 4.25225896,15.3274343 C4.41358714,15.3274343 4.57615996,15.3848444 4.7072098,15.4851703 C4.82085236,15.57217 4.90924743,15.6899941 4.9569107,15.8232477 L4.97284488,15.873911 L6.07531139,19.3393645 L6.39484017,18.5426119 C6.44072731,18.3872396 6.5379415,18.2658741 6.66629889,18.1816472 C6.7784911,18.1080277 6.9164222,18.0642931 7.05822325,18.0554832 L7.11153733,18.0538264 L9.6677618,18.0538781 C8.71166522,16.8505625 8.14006999,15.3350465 8.14006999,13.6937563 C8.14006999,11.7498941 8.94183769,9.98241884 10.2345786,8.70112378 C11.5264147,7.42072544 13.3083093,6.62618319 15.268285,6.62618319 C17.2282607,6.62618319 19.0101552,7.42072544 20.3019914,8.70112378 C21.5947323,9.98241884 22.3965,11.7498941 22.3965,13.6937563 C22.3965,15.6376185 21.5947323,17.4050937 20.3019914,18.6863888 C19.0101552,19.9667871 17.2282607,20.7613294 15.268285,20.7613294 C13.8719637,20.7613294 12.5660645,20.3580312 11.4633077,19.6631549 L11.3572272,19.5950023 L7.64828467,19.5955263 L6.70700407,21.9318899 C6.66356682,22.0515146 6.56885988,22.1761337 6.43630965,22.2674427 C6.31937988,22.3479913 6.17620694,22.4011427 6.03229071,22.4088746 C5.82556991,22.4098207 5.67859601,22.3584791 5.55865126,22.2794906 C5.43540231,22.198326 5.33955611,22.0837798 5.26579486,21.9468224 L5.23915924,21.8944342 L4.11949921,18.3393847 L3.74987469,19.2261865 C3.67481788,19.3786759 3.57641182,19.4884872 3.46264725,19.5631384 C3.35848798,19.6314868 3.23965603,19.672375 3.1047562,19.6815291 L3.04595417,19.6834969 L2.62587404,19.6834343 C3.15668432,20.4927424 3.98754641,21.4947575 5.17514574,22.2162248 C6.14451554,22.8051175 7.35306311,23.2051352 8.83029166,23.1567336 C10.7116999,23.1967869 12.3733739,22.5957096 13.7529198,21.2686129 C13.9153321,21.1157232 14.0981187,21.0514141 14.2784691,21.0514141 C14.4673121,21.0514141 14.6577115,21.1234764 14.8094085,21.2738302 C14.9621128,21.4251824 15.034844,21.6152786 15.034844,21.8035629 C15.034844,21.9918473 14.9621128,22.1819434 14.8094085,22.3332956 C13.1987988,23.843529 11.3390069,24.6290913 9.22573964,24.6599097 L9.09603918,24.6608532 L8.8459938,24.6608532 C6.86534931,24.7179208 5.27857297,24.100502 4.04040396,23.2480583 C2.14541961,21.9434162 1.07359127,20.0831581 0.662849991,19.2697344 C0.566780648,19.0762483 0.526220866,18.9889041 0.500712402,18.9339719 C-0.146745657,17.1491562 -0.0921225379,15.5704069 0.24931144,14.2167631 C0.88691284,11.6889386 2.53313299,9.95271821 2.72982913,9.7533691 C6.29321158,6.13857051 7.54841845,2.24747313 7.92440525,0.715435339 C7.99226385,0.478992336 8.10952761,0.308434892 8.26124313,0.190285279 C8.41660039,0.0692996271 8.61143101,0 8.84116558,0 Z M15.268285,8.13048091 C13.7237487,8.13048091 12.3197232,8.75690911 11.3017674,9.76585205 C10.2847162,10.7738983 9.65281995,12.1641351 9.65281995,13.6937563 C9.65281995,15.2233774 10.2847162,16.6136143 11.3017674,17.6216605 C12.3197232,18.6306034 13.7237487,19.2570316 15.268285,19.2570316 C16.8128213,19.2570316 18.2168468,18.6306034 19.2348026,17.6216605 C20.2518537,16.6136143 20.88375,15.2233774 20.88375,13.6937563 C20.88375,12.1641351 20.2518537,10.7738983 19.2348026,9.76585205 C18.2168468,8.75690911 16.8128213,8.13048091 15.268285,8.13048091 L15.268285,8.13048091 Z M18.3487819,9.73377289 C18.5537448,9.73377289 18.7585996,9.8114564 18.9149397,9.9664002 C19.0722636,10.1223189 19.1507069,10.3267315 19.1507069,10.5310319 C19.1507069,10.7183073 19.0847928,10.9056769 18.9526276,11.0557018 L18.9149397,11.0956636 L15.7793441,14.2032533 C15.6230039,14.3581971 15.4181491,14.4358806 15.2131863,14.4358806 C15.0082234,14.4358806 14.8033686,14.3581971 14.6470284,14.2032533 C14.4897045,14.0473346 14.4112613,13.842922 14.4112613,13.6386216 C14.4112613,13.4513463 14.4771754,13.2639766 14.6093405,13.1139517 L14.6470284,13.0739899 L17.7826241,9.9664002 C17.9389642,9.8114564 18.143819,9.73377289 18.3487819,9.73377289 Z",
|
|
181
|
+
"wellbeing_aspect_diabetes_health_risk": "M12.710223,0 C12.8219384,0 12.9336614,0.0291903391 13.0336716,0.0876424677 C13.0338358,0.0877385191 14.2777775,0.815163202 15.636204,1.60954975 L15.7821363,1.69488875 C15.8065142,1.70914459 15.8309158,1.72341427 15.8553346,1.73769401 L16.0250265,1.83692744 L16.1099304,1.88657813 L16.1099304,1.88657813 L16.2795557,1.98577284 C17.4370134,2.66263993 18.5495201,3.31323255 18.9308936,3.53629779 L18.9574842,3.55185083 L19.0056489,3.58002422 L19.0709642,3.61824995 L19.106091,3.64061398 L19.106091,3.64061398 L19.1398559,3.66535503 L19.1454609,3.66999989 L19.1706468,3.69136442 L19.1706468,3.69136442 L19.1961701,3.7154497 L19.2058446,3.72522342 L19.2271844,3.74853011 L19.2271844,3.74853011 L19.2466373,3.77200147 L19.2555447,3.78314115 C19.2667412,3.79800469 19.2774253,3.8132026 19.2878925,3.82987039 L19.3034675,3.8561164 L19.3068283,3.86266495 L19.3221446,3.89243898 L19.3221446,3.89243898 L19.3357617,3.9226647 L19.3419364,3.93840641 L19.3520374,3.96615994 L19.3520374,3.96615994 L19.3609122,3.99451409 L19.3650373,4.00897246 C19.3736131,4.04187237 19.3795347,4.07507255 19.3828458,4.10833439 L19.3858599,4.15824356 L19.3862567,4.16429782 L19.3862567,10.8597033 L21.9605918,12.3651516 L22.1408198,12.4705486 L22.2966007,12.5616511 L22.4521042,12.6525948 C23.6939775,13.3788989 24.8716173,14.0679615 25.0827858,14.19156 C25.09038,14.1956547 25.0978822,14.1998968 25.1052924,14.2042856 L25.1401571,14.2264784 L25.1401571,14.2264784 L25.173718,14.2509983 L25.1804015,14.256555 L25.2054315,14.2778009 L25.2054315,14.2778009 L25.2294667,14.300439 L25.240529,14.311681 L25.2615011,14.334603 L25.2615011,14.334603 L25.280319,14.3572783 L25.2898617,14.3691377 C25.3009981,14.3839891 25.3116608,14.399168 25.3221196,14.4157984 L25.3376887,14.4419729 L25.3411257,14.44867 L25.356442,14.478444 L25.356442,14.478444 L25.370059,14.5086697 L25.3762338,14.5244114 L25.3863348,14.5521649 L25.3863348,14.5521649 L25.3952096,14.5805191 L25.3993346,14.5949773 C25.4083634,14.6296146 25.4144478,14.6645853 25.4177094,14.6996107 L25.4205,14.7521548 L25.4205,21.8154276 C25.4205,22.0290286 25.314745,22.2275819 25.1404379,22.3468317 L25.1020507,22.371148 L19.0607022,25.904003 L19.052145,25.90812 L19.0274725,25.921385 L18.9905864,25.938248 L18.9539249,25.9520573 L18.9539249,25.9520573 L18.9162396,25.9636844 L18.9034263,25.9670546 L18.8997537,25.9679693 L18.8711417,25.9744001 L18.8711417,25.9744001 L18.8420964,25.9795306 L18.8379956,25.9801949 L18.8249914,25.9821309 C18.7985081,25.9854918 18.7717485,25.9875 18.7444392,25.9875 L18.7040493,25.9860656 L18.7040493,25.9860656 L18.6642771,25.9821889 L18.6508827,25.9801949 L18.646846,25.979541 L18.6174402,25.9743289 L18.6174402,25.9743289 L18.5868873,25.9673987 L18.5729594,25.9637741 C18.5476891,25.9567065 18.5230702,25.9485325 18.497631,25.9379898 L18.4649195,25.923126 L18.4649195,25.923126 L18.4332596,25.906515 L18.428176,25.9040029 L12.7102506,22.5602666 L6.99237848,25.9040027 L6.98142719,25.9094145 L6.9593323,25.9213255 L6.92203217,25.9383662 L6.88503557,25.9522506 L6.88503557,25.9522506 L6.84699677,25.9639238 L6.83142934,25.967915 L6.80216677,25.9744782 L6.80216677,25.9744782 L6.77283755,25.9796106 L6.75726882,25.9819991 C6.7306938,25.985397 6.70363433,25.9875 6.67611488,25.9875 L6.63570066,25.9860347 L6.63570066,25.9860347 L6.59590387,25.982129 L6.58258318,25.9801389 L6.57850195,25.9794754 L6.54920392,25.9742924 L6.54920392,25.9742924 L6.51930447,25.9675361 L6.50518482,25.9639105 C6.47957351,25.9567826 6.45461482,25.9485147 6.42930671,25.9379898 L6.3965804,25.9231295 L6.3965804,25.9231295 L6.36489546,25.9065221 L6.35979781,25.904003 L0.318477405,22.3711645 C0.134589739,22.2636648 0.0165298434,22.0721858 0.00160580254,21.8609638 L4.33362146e-11,21.8154231 L4.33362146e-11,14.7547544 C0.000659431039,14.7002958 0.00739860769,14.6489513 0.0199830606,14.5998579 C0.0217010964,14.5929598 0.0236152065,14.5862196 0.0256117182,14.5794512 L0.0340105746,14.5526085 L0.0340105746,14.5526085 L0.0438881197,14.525436 C0.0468008623,14.5177295 0.0494260142,14.5110146 0.0519658496,14.5051222 L0.0648499392,14.4768611 L0.0648499392,14.4768611 L0.0792271202,14.4489932 L0.0835215491,14.4405772 L0.106069006,14.4039031 L0.106069006,14.4039031 L0.130605115,14.3693043 L0.138723321,14.3591626 C0.15138446,14.3431047 0.164666107,14.3277531 0.177469995,14.3143573 C0.182294643,14.3092351 0.187285215,14.3041865 0.19256231,14.298988 L0.215852244,14.2771763 L0.215852244,14.2771763 L0.240091838,14.2566204 L0.246677583,14.2511683 C0.261016983,14.2399349 0.275649244,14.2294335 0.291758885,14.218914 L0.317179447,14.2030272 L6.0341892,10.8599175 L6.0341892,4.1644064 L6.03453375,4.15823625 L6.0342975,4.1641425 L6.03695948,4.11473548 C6.03999054,4.08060973 6.0457504,4.04676201 6.05417226,4.01390717 C6.0558903,4.00700906 6.05780441,4.00026885 6.05980092,3.9935005 L6.06819977,3.96665776 L6.06819977,3.96665776 L6.07807732,3.93948526 C6.08099006,3.93177881 6.08361521,3.92506384 6.08615505,3.91917143 L6.09903914,3.89091038 L6.09903914,3.89091038 L6.11341632,3.86304248 L6.11762701,3.85479056 L6.1403917,3.81770774 L6.1403917,3.81770774 L6.16524566,3.78272204 L6.1725732,3.77365393 L6.1929324,3.74899667 L6.1929324,3.74899667 L6.21431486,3.7255758 L6.22469022,3.71502511 L6.24908067,3.69199868 L6.24908067,3.69199868 L6.27451418,3.67039123 L12.3868218,0.087614736 C12.4867845,0.0291903391 12.5985075,0 12.710223,0 Z M12.0683784,15.8783173 L7.3179324,18.6562632 L7.3179324,24.2238116 L12.0683784,21.4458163 L12.0683784,15.8783173 Z M13.3521216,15.8782631 L13.3521216,21.4458151 L18.1025676,24.223761 L18.1025676,18.6562089 L13.3521216,15.8782631 Z M1.2837432,15.8782631 L1.2837432,21.445762 L6.0341892,24.2237573 L6.0341892,18.6562089 L1.2837432,15.8782631 Z M24.1367568,15.8783173 L19.3863108,18.6562632 L19.3863108,24.2238153 L24.1367568,21.4458694 L24.1367568,15.8783173 Z M18.7444392,11.9742608 L13.9840372,14.7580367 L18.7444392,17.5418125 L23.5048412,14.7580367 L18.7444392,11.9742608 Z M6.6760608,11.9742608 L1.91565877,14.7580367 L6.6760608,17.5418125 L11.4364628,14.7580367 L6.6760608,11.9742608 Z M18.1025676,5.29231233 L13.3521216,8.07025821 L13.3521216,13.6378066 L18.1025676,10.8598113 L18.1025676,5.29231233 Z M7.3179324,5.29225804 L7.3179324,10.8598101 L12.0683784,13.637756 L12.0683784,8.07020393 L7.3179324,5.29225804 Z M12.71025,1.38825582 L7.94984797,4.17203166 L12.71025,6.9558075 L17.470652,4.17203166 L12.71025,1.38825582 Z",
|
|
182
|
+
"wellbeing_element_aggressiveness": "M15.3,26.1c5.3,0,9.5-4.3,9.5-9.5c0-5.3-4.3-9.5-9.5-9.5c-5.3,0-9.5,4.3-9.5,9.5C5.8,21.9,10,26.1,15.3,26.1z M12,15.6c0.4,0,0.8-0.4,0.8-0.8c0-0.4-0.4-0.8-0.8-0.8c-0.4,0-0.8,0.4-0.8,0.8C11.2,15.3,11.5,15.6,12,15.6z M19.4,14.8 c0,0.4-0.4,0.8-0.8,0.8c-0.4,0-0.8-0.4-0.8-0.8c0-0.4,0.4-0.8,0.8-0.8C19.1,14,19.4,14.4,19.4,14.8z M15.3,19.1 c-1.9,0-3.2,1.9-3.2,1.9c2.5-0.2,3.9-0.2,6.4,0C18.5,21,17.2,19.1,15.3,19.1z M13,13.9l-3.5-1.6l0.2-0.5l3.5,1.6L13,13.9z M17.8,13.9l3.5-1.6L21,11.8l-3.5,1.6L17.8,13.9z M22.8,9.7c0.1-0.1,0.2-0.2,0.1-0.3C22.6,8.6,22,8,21.4,7.6c-0.7-0.5-1.4-0.7-2.2-0.9c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c0.7,0.1,1.4,0.4,2,0.8c0.6,0.4,1.1,1,1.4,1.6C22.6,9.7,22.7,9.7,22.8,9.7z M24.2,9c0.1-0.1,0.2-0.2,0.1-0.3c-0.5-0.9-1.2-1.7-2-2.3c-0.9-0.6-1.8-1-2.9-1.1c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c1,0.1,1.9,0.5,2.7,1c0.8,0.6,1.4,1.3,1.9,2.1C23.9,9,24.1,9,24.2,9z M25.5,8.3c0.1-0.1,0.2-0.2,0.1-0.3c-0.6-1.1-1.5-2.1-2.5-2.8c-1.1-0.7-2.3-1.2-3.5-1.4c-0.1,0-0.2,0-0.2,0.1 c0,0,0,0.1,0,0.1c0,0.1,0.1,0.2,0.2,0.3c1.2,0.2,2.3,0.6,3.3,1.3c1,0.7,1.8,1.6,2.4,2.7C25.3,8.3,25.4,8.3,25.5,8.3z",
|
|
183
|
+
"wellbeing_element_allergies_and_intolerances": "M15,11.2V9.6c0-0.1,0.1-0.2,0.2-0.2c0.1,0,0.2,0.1,0.2,0.2v1.6c0,0.1-0.1,0.2-0.2,0.2 C15.1,11.4,15,11.3,15,11.2L15,11.2z M14.5,12.2c0.1,0,0.2-0.1,0.2-0.2v-1.8c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2v1.8 C14.3,12.2,14.4,12.2,14.5,12.2z M15.8,12.2L15.8,12.2c0.1,0,0.2-0.1,0.2-0.2l0,0v-1.8c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0 c-0.1,0-0.2,0.1-0.2,0.2V12l-0.3-0.5L15,12.1c-0.3,0.4-0.3,1,0,1.4l0.1,0.1c0,0,0,0.1,0,0.1l0,9.1c0,0,0,0.1,0.1,0.1 c0,0,0.1,0.1,0.1,0c0.1,0,0.2-0.1,0.2-0.2l0-8.8l0.3-0.5C16,13.1,16,12.6,15.8,12.2L15.8,12.2z M16.6,12.6c0.1,0,0.2-0.1,0.2-0.2 l0,0v-1.4c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2l0,0v1.4C16.5,12.6,16.6,12.6,16.6,12.6L16.6,12.6z M16.7,13 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.3,0.4-0.4,0.6l-0.2,0.6l0.6-0.2c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.4,0.1L16.7,13z M13.9,12.9 l-0.6-0.2l0.1,0.3l0.1,0.2c0,0.2,0.1,0.4,0.3,0.6l0,0c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6C14.7,13.3,14.4,13,13.9,12.9 L13.9,12.9z M15.8,15.3l-0.2,0.6l0.3-0.1l0.2-0.1c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.3-0.4,0.4-0.6l0.2-0.6l-0.6,0.2 C16.2,14.5,15.8,14.9,15.8,15.3L15.8,15.3z M14.5,14.8c-0.2-0.2-0.4-0.3-0.6-0.3l-0.2-0.1l-0.3-0.1l0.2,0.6c0.1,0.5,0.4,0.8,0.9,0.9 l0.6,0.2l-0.2-0.6C14.8,15.2,14.6,15,14.5,14.8L14.5,14.8z M16,16.5c-0.2,0.2-0.3,0.4-0.3,0.6l-0.1,0.2l-0.1,0.3l0.6-0.2 c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.6,0.2C16.4,16.2,16.2,16.3,16,16.5L16,16.5z M13.6,17.1c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2 l-0.1-0.3l-0.1-0.2c0-0.2-0.1-0.4-0.3-0.6c-0.2-0.2-0.4-0.3-0.6-0.3l-0.6-0.2l0.2,0.6C13.4,16.8,13.5,17,13.6,17.1L13.6,17.1z M16.7,17.8c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.3,0.4-0.4,0.6l-0.2,0.6l0.6-0.2c0.5-0.1,0.8-0.4,0.9-0.9l0.2-0.6l-0.3,0.1L16.7,17.8 z M13.9,17.7l-0.6-0.2l0.1,0.3l0.1,0.3c0,0.2,0.1,0.4,0.3,0.6l0,0c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6 C14.7,18.1,14.4,17.8,13.9,17.7L13.9,17.7z M15.7,20.2l-0.2,0.6l0.3-0.1l0.2-0.1c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.3-0.4,0.4-0.6 l0.2-0.6l-0.6,0.2C16.2,19.3,15.8,19.7,15.7,20.2L15.7,20.2z M14.4,19.7c-0.2-0.2-0.4-0.3-0.6-0.3l-0.2-0.1l-0.3-0.1l0.2,0.6 c0,0.2,0.1,0.4,0.3,0.6c0.2,0.2,0.4,0.3,0.6,0.3l0.6,0.2l-0.2-0.6C14.7,20.1,14.6,19.8,14.4,19.7z M13.8,12.5c0.1,0,0.2-0.1,0.2-0.2 v-1.4c0-0.1-0.1-0.2-0.2-0.2c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2l0,1.4c0,0,0,0.1,0.1,0.1C13.7,12.5,13.8,12.5,13.8,12.5z M15.3,6.5 c-5.4,0-9.8,4.4-9.8,9.8s4.4,9.8,9.8,9.8s9.8-4.4,9.8-9.8S20.7,6.5,15.3,6.5z M15.3,24.6c-2,0-4-0.7-5.5-2.1l3.3-2.9l-1-1.1l-3.3,3 C6,17.8,6.6,12.6,10.2,9.7c3.3-2.6,8.1-2.3,11.1,0.8l-3.9,3l0.9,1.2l3.9-3c2.5,3.8,1.4,9-2.4,11.5C18.5,24.1,16.9,24.6,15.3,24.6z",
|
|
184
|
+
"wellbeing_element_asthma": "M27.4,10.7L28,9c-1-0.5-2-0.9-3-1.3c-0.5-0.1-0.9-0.2-1.4-0.2c-0.4,0-0.6,0.2-0.2,0.6 C23.8,8.5,27.4,10.7,27.4,10.7z M19.2,19l3.3-10.9l5.3,3.4l-3.4,10.7c-1.2,1.8-2.2,2.1-4.4,1.2C20.5,21.5,20.4,20.6,19.2,19z M15.1,18.4l3.9,0.9c0.9,1.4,1.2,2.2,0.5,4l-5.7-1.7c0-0.2,0-0.5,0-0.7c-0.1-0.4,0-0.9,0.1-1.3c0.2-0.4,0.4-0.7,0.8-0.9l0,0l0,0 l0.1-0.1L15.1,18.4z M9.2,13.7c0.4,0,0.7-0.3,0.7-0.7c0-0.4-0.3-0.7-0.7-0.7c-0.4,0-0.7,0.3-0.7,0.7C8.5,13.4,8.8,13.7,9.2,13.7 C9.2,13.7,9.2,13.7,9.2,13.7z M7.5,16.6c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7c0,0,0,0,0,0 C7.2,15.9,7.5,16.3,7.5,16.6C7.5,16.6,7.5,16.6,7.5,16.6z M6.4,21.4c0.4,0,0.7-0.3,0.7-0.7c0-0.4-0.3-0.7-0.7-0.7s-0.7,0.3-0.7,0.7 c0,0,0,0,0,0C5.7,21.1,6,21.4,6.4,21.4z M9.1,20.3c0,0.3-0.3,0.6-0.6,0.6c-0.3,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0 C8.8,19.8,9.1,20,9.1,20.3z M8.8,18c0.3,0,0.6-0.3,0.6-0.6s-0.3-0.6-0.6-0.6S8.2,17,8.2,17.4S8.5,18,8.8,18C8.8,18,8.8,18,8.8,18z M10.8,14.8c0,0.3-0.2,0.6-0.6,0.6c-0.3,0-0.6-0.2-0.6-0.6s0.2-0.6,0.6-0.6c0,0,0,0,0,0C10.5,14.3,10.8,14.5,10.8,14.8z M11.4,16.9 c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5C11,16.7,11.2,16.9,11.4,16.9C11.4,16.9,11.4,16.9,11.4,16.9z M12.9,17.6c0,0.2-0.2,0.4-0.4,0.4c-0.2,0-0.4-0.2-0.4-0.4c0-0.2,0.2-0.4,0.4-0.4C12.8,17.2,12.9,17.4,12.9,17.6 C12.9,17.6,12.9,17.6,12.9,17.6L12.9,17.6z M12,19.4c0.2,0,0.3-0.2,0.3-0.4s-0.2-0.3-0.4-0.3c-0.2,0-0.3,0.2-0.3,0.4 C11.6,19.3,11.8,19.4,12,19.4z M12,20.7c0,0.2-0.1,0.4-0.4,0.4s-0.4-0.1-0.4-0.4c0-0.2,0.1-0.4,0.4-0.4c0,0,0,0,0,0 C11.9,20.3,12,20.5,12,20.7L12,20.7z M13.1,21.4c0.1,0,0.2-0.1,0.2-0.2c0-0.1-0.1-0.2-0.3-0.2c-0.1,0-0.2,0.1-0.2,0.2 C12.9,21.3,13,21.4,13.1,21.4C13.1,21.4,13.1,21.4,13.1,21.4L13.1,21.4z M13.4,19.7c0,0.1-0.1,0.2-0.3,0.2c-0.1,0-0.2-0.1-0.2-0.2 c0-0.1,0.1-0.2,0.2-0.3C13.2,19.4,13.4,19.5,13.4,19.7C13.4,19.6,13.4,19.7,13.4,19.7z M13.7,18.7c0.1,0,0.2-0.1,0.2-0.2 c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2C13.5,18.6,13.6,18.7,13.7,18.7C13.7,18.7,13.7,18.7,13.7,18.7z M10.7,20.5 c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5c0,0,0,0,0,0C10.4,20,10.7,20.2,10.7,20.5 C10.7,20.4,10.7,20.5,10.7,20.5L10.7,20.5z M10.6,18.7c0.3,0,0.5-0.2,0.5-0.5c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5 C10.1,18.5,10.3,18.7,10.6,18.7C10.6,18.7,10.6,18.7,10.6,18.7z",
|
|
185
|
+
"wellbeing_element_back_and_muscle_pain": "M26,10.2c0,2.1-1.7,3.7-3.7,3.7s-3.7-1.7-3.7-3.7s1.7-3.7,3.7-3.7S26,8.1,26,10.2z M17.9,11.9 c0.9,1.5,1.5,2.1,3.2,2.8c0.1,1.6-0.4,2.3-1.8,3.6c-1.7,2.3-2.7,6.5-2.9,7.5c0,0.1-0.1,0.2-0.3,0.2l-5.8-0.3c-0.1,0-0.3-0.1-0.3-0.3 c0,0,0,0,0,0c0.1-1.5,0.4-2.9,0.7-4.3c0,0-1.6-2.6-2.5-4.5C7.4,14.7,8.6,13.2,10,13s6.2-0.7,6.2-0.7C16.8,12,17.3,11.9,17.9,11.9 L17.9,11.9z M12.2,17.5l1.2-1.9c0,0-0.8,0.1-1.2,0.1s-0.8,0.3-0.5,0.9C11.8,16.9,12,17.2,12.2,17.5L12.2,17.5z M7.2,18.3 c0.6,0.2,1.4,0.4,1.8,0.5c0.2,0.1,0.4,0.3,0.3,0.5S9,19.8,8.8,19.7l0,0c-0.3-0.1-1-0.3-1.6-0.5l-1-0.3c-0.6-0.2-0.3-1,0.3-0.8 L7.2,18.3L7.2,18.3z M9,21.2C8.7,21.5,8,22,7.5,22.4c-0.3,0.2-0.5,0.3-0.6,0.5c-0.5,0.4,0,1,0.5,0.7l0.8-0.6c0.5-0.4,1.1-0.8,1.4-1 C10,21.5,9.4,20.8,9,21.2L9,21.2z M6.3,20.8c0.4-0.1,0.7-0.2,1.1-0.3c0.2-0.1,0.5,0,0.6,0.2c0.1,0.2,0,0.5-0.2,0.6c0,0,0,0-0.1,0 c-0.3,0.1-0.7,0.2-1.1,0.3c-0.3,0.1-0.7,0.2-0.9,0.2C5.1,22,4.8,21.2,5.5,21C5.7,20.9,6,20.9,6.3,20.8z",
|
|
186
|
+
"wellbeing_element_inflammation": "M19.72 9.39455C19.27 9.12656 19.06 8.79901 19.06 8.79901C19 8.97767 19 9.18611 19 9.39455C19 10.6749 20.02 11.6873 21.25 11.6873C21.97 11.6873 22.6 11.3598 22.99 10.8238C24.25 12.3722 25 14.3077 25 16.4516C25 21.3945 20.98 25.3846 16 25.3846C11.02 25.3846 7 21.3945 7 16.4516C7 11.5087 11.02 7.51861 16 7.51861C17.35 7.51861 18.64 7.81638 19.78 8.35236C19.66 8.91812 19.72 9.39455 19.72 9.39455ZM21.13 9.12656C20.68 8.82879 20.23 8.56079 19.75 8.32258C19.87 7.45906 20.26 6.29777 21.55 6C21.01 8.08436 22.24 8.65012 22.72 7.57817C23.47 8.62035 22.9 9.54342 22.9 9.54342C23.2 9.60298 23.47 9.24566 23.47 9.24566C23.47 9.27544 23.47 9.33498 23.47 9.36476C23.47 9.90074 23.29 10.407 22.96 10.8238C22.48 10.2283 21.91 9.69231 21.28 9.21589C21.31 9.15633 21.34 9.09678 21.37 9.03722C21.37 9.067 21.28 9.067 21.13 9.12656ZM21.13 9.12656C20.8 9.27543 20.23 9.63275 20.23 10.6749C20.23 11.2407 20.68 11.6873 21.22 11.6873C21.76 11.6873 22.21 11.2407 22.21 10.6749C22.21 10.3772 22.09 10.1092 21.88 9.93052C21.55 10.407 21.07 9.81141 21.28 9.24566C21.22 9.21589 21.19 9.15633 21.13 9.12656ZM12.82 12.6104L13 12.4615L12.7 12.0744L12.52 12.2233L10.72 13.5633L10.54 13.7122L10.84 14.0993L11.02 13.9504L12.82 12.6104ZM13.57 14.8139C13.57 15.2308 13.24 15.5583 12.82 15.5583C12.4 15.5583 12.07 15.2308 12.07 14.8139C12.07 14.397 12.4 14.0695 12.82 14.0695C13.24 14.0695 13.57 14.397 13.57 14.8139ZM19.12 15.5583C19.54 15.5583 19.87 15.2308 19.87 14.8139C19.87 14.397 19.54 14.0695 19.12 14.0695C18.7 14.0695 18.37 14.397 18.37 14.8139C18.37 15.2308 18.7 15.5583 19.12 15.5583ZM18.91 11.9553L19.12 12.1042L21.07 13.4442L21.28 13.5931L21.01 13.9802L20.8 13.8313L18.85 12.4913L18.64 12.3424L18.91 11.9553ZM15.97 18.8338C14.17 18.8338 12.97 20.6203 12.97 20.6203C15.31 20.4119 16.63 20.4119 18.97 20.6203C18.97 20.6203 17.77 18.8338 15.97 18.8338Z",
|
|
187
|
+
"wellbeing_element_thyroid_health": "M10.0978 11.5352C9.21739 11.9295 8.43478 12.4647 8.43478 13.1971C8.43478 13.5633 8.23912 13.9013 7.97826 14.3521C7.55435 15.0563 7 16.014 7 17.5633C7 18.6619 7.3587 19.3098 7.68478 19.8732C7.91305 20.2676 8.07609 20.6056 8.07609 20.9718C8.07609 21.9014 9.02174 25 10.9456 25C11.7283 24.9718 12.5435 24.8309 13.2609 24.5774C13.2609 24.5492 13.2609 24.5211 13.2609 24.5211V21.9577L12.6739 21.6478C12.4782 21.5352 12.2826 21.3943 12.1196 21.2535C11.9891 21.1126 11.9891 20.9436 12.1521 20.8028C12.2826 20.6901 12.5109 20.6901 12.6739 20.8309C12.7065 20.8591 13.8152 21.8732 16 21.8732C18.2174 21.8732 19.3261 20.8591 19.3261 20.8309C19.4565 20.7183 19.6847 20.6901 19.8477 20.8028C19.9782 20.9154 20.0108 21.1126 19.8804 21.2535C19.7174 21.3943 19.5217 21.5352 19.3261 21.6478L18.7391 21.9577V24.5211C18.7391 24.5492 18.7391 24.5774 18.7391 24.5774C19.4891 24.8309 20.2717 24.9718 21.0543 25C22.9782 25 23.9238 21.9014 23.9238 20.9718C23.9238 20.5774 24.1195 20.2394 24.3152 19.8732C24.6086 19.3098 25 18.6619 25 17.5633C25 16.014 24.4456 15.0844 24.0217 14.3521C23.7608 13.9013 23.5652 13.5633 23.5652 13.1971C23.5652 12.4929 22.8152 11.9577 21.9022 11.5352L21.8695 11.5633C21.8695 11.5633 21.8369 11.5633 21.8369 11.5915C21.7717 11.6478 21.7065 11.676 21.6413 11.7323C20.7282 12.4929 19.6522 13.5352 19.0978 15.4788L19.3913 15.6478C19.5543 15.7605 19.7174 15.8732 19.8804 15.9859C20.0108 16.1267 20.0108 16.2957 19.8477 16.4366C19.7174 16.5492 19.4891 16.5492 19.3261 16.4084C19.2608 16.3521 18.1847 15.3661 16 15.3661C13.7826 15.3661 12.6739 16.3802 12.6739 16.4084C12.5435 16.5211 12.3152 16.5492 12.1521 16.4366C12.0217 16.3239 11.9891 16.1267 12.1196 15.9859C12.25 15.845 12.413 15.7323 12.6087 15.6197L12.9022 15.4506C12.3478 13.507 11.3043 12.4366 10.3587 11.7042C10.2935 11.6478 10.2283 11.6197 10.163 11.5633C10.163 11.5633 10.1304 11.5633 10.1304 11.5352C10.0978 11.5633 10.0978 11.5352 10.0978 11.5352Z M10.3587 11.4225L10.3261 11.3944C9.67392 10.831 9.15219 10.4084 9.15219 9.78873C9.15219 7.92958 11.2717 7 13.0978 7C14.3043 7 14.5326 7.70423 14.7282 8.35211C14.9239 8.94366 15.0869 9.47887 15.9674 9.47887C16.8478 9.47887 17.0109 8.91549 17.2065 8.35211C17.4347 7.70423 17.6304 7 18.837 7C20.6631 7 22.7825 7.92958 22.7825 9.78873C22.7825 10.4366 22.2608 10.8592 21.6086 11.3944L21.5761 11.4225C21.5109 11.4789 21.4456 11.507 21.413 11.5634C21.413 11.5634 21.413 11.5634 21.3804 11.5915C21.3152 11.6479 21.2825 11.6761 21.2174 11.7324C20.4022 12.4366 19.4239 13.5916 18.837 15.3662L18.7391 15.3099C17.8913 14.9437 16.9456 14.7465 16 14.7465C15.0543 14.7465 14.1087 14.9155 13.2609 15.3099L13.163 15.3662C12.6087 13.6197 11.5978 12.4366 10.7826 11.7324C10.7174 11.6761 10.6848 11.6479 10.6196 11.5915C10.4891 11.507 10.4239 11.4789 10.3587 11.4225ZM15.9674 15.3944C17.2065 15.3944 18.087 15.7042 18.6413 15.9859C18.6086 16.0704 18.6086 16.1549 18.5761 16.2676C17.7283 15.8732 16.913 15.7042 15.9674 15.7042C15.0217 15.7042 14.2065 15.8732 13.3587 16.2676C13.3261 16.1831 13.3261 16.0986 13.2935 15.9859C13.8478 15.7042 14.7282 15.3944 15.9674 15.3944ZM13.4565 22.0141V24.493C13.4565 24.7747 13.7174 24.9718 14.0109 24.9718H17.8913C18.2174 24.9718 18.4456 24.7465 18.4456 24.493V22.0141C17.6631 22.3239 16.8152 22.493 15.9348 22.4648C15.0869 22.493 14.2391 22.3239 13.4565 22.0141Z",
|
|
188
|
+
"wellbeing_element_iron_balance": "M12.85 12.1C11.29 11.95 9.73 10.99 9.16 10.6C10.75 8.59 13.21 7.3 16 7.3C19 7.3 21.67 8.83 23.23 11.14C22.75 11.05 22.42 10.93 22.06 10.81C21.4 10.57 20.71 10.3 18.85 10.3C17.68 10.3 16.75 10.78 15.85 11.23C14.92 11.74 13.99 12.22 12.85 12.1ZM7 16C7 20.98 11.02 25 16 25C20.35 25 23.98 21.91 24.82 17.8C24.94 17.26 25 16.69 25 16.09C25 16.06 25 16 25 15.97C25 15.04 24.85 14.14 24.61 13.3C23.47 9.67 20.05 7 16 7C11.02 7 7 11.02 7 16ZM14.14 16.3H15.58V15.94H14.14V14.77H15.79V14.41H13.69V17.8H14.14V16.3ZM16.45 17.5C16.66 17.74 16.96 17.83 17.29 17.83C17.71 17.83 18.04 17.68 18.25 17.35L17.98 17.14C17.89 17.23 17.8 17.32 17.71 17.38C17.59 17.44 17.47 17.47 17.32 17.47C17.11 17.47 16.93 17.38 16.78 17.23C16.63 17.08 16.57 16.87 16.57 16.63H18.28V16.45C18.28 16.06 18.19 15.73 18.01 15.52C17.83 15.31 17.56 15.19 17.23 15.19C17.02 15.19 16.84 15.25 16.66 15.37C16.48 15.49 16.36 15.64 16.27 15.82C16.18 16.03 16.12 16.24 16.12 16.48V16.6C16.12 16.99 16.24 17.29 16.45 17.5ZM16.78 15.76C16.9 15.64 17.05 15.58 17.23 15.58C17.41 15.58 17.56 15.64 17.65 15.76C17.77 15.88 17.83 16.06 17.83 16.27V16.3H16.57C16.6 16.06 16.66 15.88 16.78 15.76Z",
|
|
189
|
+
"wellbeing_element_vitamin_balance": "M9.28358 5H18.2836C18.6866 5 19.0896 5.26866 19.0896 5.80597V8.08955C19.0896 8.49254 18.8209 8.89552 18.2836 8.89552H18.0149H18.4179V9.97015C18.4179 10.6418 18.8209 11.3134 19.4925 11.5821C19.7612 11.7164 20.1642 11.8507 20.2985 12.2537C20.5672 12.5224 20.5672 12.9254 20.5672 13.3284V14H7V13.194C7 12.5224 7.40299 11.8507 8.07463 11.5821C8.47761 11.4478 8.8806 11.1791 9.01493 10.9104C9.28358 10.6418 9.28358 10.2388 9.28358 9.97015V8.89552C8.8806 8.89552 8.61194 8.49254 8.61194 8.08955V5.80597C8.61194 5.26866 8.8806 5 9.28358 5ZM7 14.2687H20.5672V16.6866C19.4925 17.2239 18.6866 18.2985 18.6866 19.5075V23.806H7V14.2687ZM18.8209 24.0746L7.13433 24.209V25.6866C7.13433 26.4925 7.80597 27.1642 8.61194 27.1642H13.5821H19.2239C19.6269 27.1642 20.0299 27.0299 20.2985 26.6269C20.8358 26.8955 21.2388 27.0298 21.9104 27.0298C23.6567 27.0298 25 25.6866 25 23.9403V19.3731C25 18.5672 24.7313 17.7612 24.0597 17.2239C23.1194 16.2836 21.9104 16.0149 20.8358 16.5522V23.806V25.6866C20.8358 26.0896 20.7015 26.3582 20.4328 26.6269C19.3582 26.2239 18.8209 25.1493 18.8209 24.0746ZM13.0448 21.9254C13.1791 22.194 13.5821 22.4627 13.9851 22.4627C14.3881 22.4627 14.6567 22.194 14.9254 21.9254L17.209 17.0896C17.3433 16.8209 17.3433 16.4179 17.0746 16.1493C16.806 15.8806 16.5373 15.6119 16.2687 15.7463C15.8657 15.7463 15.597 15.8806 15.3284 16.2836L13.8507 19.3731L12.3731 16.2836C12.1045 15.7463 11.5672 15.6119 11.0299 15.8806C10.4925 16.1493 10.3582 16.6866 10.6269 17.2239L13.0448 21.9254Z"
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const escapeHTML = (text) => {
|
|
193
|
+
return text
|
|
194
|
+
.replace(/&/g, '&') // Must come first
|
|
195
|
+
.replace(/</g, '<')
|
|
196
|
+
.replace(/>/g, '>')
|
|
197
|
+
.replace(/"/g, '"')
|
|
198
|
+
.replace(/'/g, ''')
|
|
199
|
+
.replace(/\(/g, '(')
|
|
200
|
+
.replace(/\)/g, ')');
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const wrapLTR = (text) => {
|
|
204
|
+
const containsArabic = /[\u0600-\u06FF]/.test(text);
|
|
205
|
+
if (containsArabic) {
|
|
206
|
+
return text;
|
|
207
|
+
}
|
|
208
|
+
if (text.trim() === '') {
|
|
209
|
+
return text;
|
|
210
|
+
}
|
|
211
|
+
return `<span style="unicode-bidi: bidi-override;" dir="ltr">${text}</span>`;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Calculate score metrics for visualization
|
|
218
|
+
* @param {number} score - The score value (0-100)
|
|
219
|
+
* @param {string} client - Client name for specific color logic
|
|
220
|
+
* @returns {object} Score metrics including color, amount, and rotation
|
|
221
|
+
*/
|
|
222
|
+
const calculateScoreMetrics = (score, client = 'default') => {
|
|
223
|
+
const scoreValue = parseFloat(score);
|
|
224
|
+
|
|
225
|
+
// Determine amount based on score range
|
|
226
|
+
let amount;
|
|
227
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
228
|
+
amount = 355;
|
|
229
|
+
} else if (scoreValue >= 70) {
|
|
230
|
+
amount = 360;
|
|
231
|
+
} else {
|
|
232
|
+
amount = 214;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Determine color based on score range
|
|
236
|
+
let color;
|
|
237
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
238
|
+
color = config.third_level_color;
|
|
239
|
+
} else if (scoreValue >= 70) {
|
|
240
|
+
color = config.fifth_level_color;
|
|
241
|
+
} else {
|
|
242
|
+
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Calculate rotation amount
|
|
246
|
+
let rotateAmount = (scoreValue / 100) * amount;
|
|
247
|
+
if (rotateAmount > 336) {
|
|
248
|
+
rotateAmount = 336;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return {
|
|
252
|
+
score: scoreValue,
|
|
253
|
+
amount,
|
|
254
|
+
color,
|
|
255
|
+
rotateAmount,
|
|
256
|
+
scoreInteger: Math.floor(scoreValue),
|
|
257
|
+
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Apply inactive classes to score sections based on score ranges
|
|
263
|
+
* @param {object} $ - jQuery instance
|
|
264
|
+
* @param {number} score - The score value
|
|
265
|
+
* @param {string} sectionClass - CSS class of the section
|
|
266
|
+
*/
|
|
267
|
+
const applyScoreInactiveClasses = ($, score, sectionClass) => {
|
|
268
|
+
const scoreValue = parseFloat(score);
|
|
269
|
+
const selector = `.first-section-scores .${sectionClass}`;
|
|
270
|
+
|
|
271
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
272
|
+
$(`${selector} .part-1, ${selector} .part-3`).addClass('inactive');
|
|
273
|
+
} else if (scoreValue >= 70) {
|
|
274
|
+
$(`${selector} .part-3, ${selector} .part-2`).addClass('inactive');
|
|
275
|
+
} else {
|
|
276
|
+
$(`${selector} .part-1, ${selector} .part-2`).addClass('inactive');
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Calculate extended score metrics for special score types (depression, anxiety)
|
|
282
|
+
* @param {number} score - The score value
|
|
283
|
+
* @param {string} scoreType - Type of score ('depression' or 'anxiety')
|
|
284
|
+
* @param {string} client - Client name
|
|
285
|
+
* @returns {object} Score metrics
|
|
286
|
+
*/
|
|
287
|
+
const calculateExtendedScoreMetrics = (score, scoreType, client = 'default') => {
|
|
288
|
+
const scoreValue = parseFloat(score).toFixed(1);
|
|
289
|
+
const scoreNum = parseFloat(score);
|
|
290
|
+
console.log('scoreValue', scoreValue);
|
|
291
|
+
let amount = 0;
|
|
292
|
+
|
|
293
|
+
if (scoreType === 'depression') {
|
|
294
|
+
if (scoreValue >= 0 && scoreValue <= 14.8) amount = 550;
|
|
295
|
+
else if (scoreValue >= 18.5 && scoreValue <= 33.3) amount = 400;
|
|
296
|
+
else if (scoreValue >= 37 && scoreValue <= 51.9) amount = 380;
|
|
297
|
+
else if (scoreValue >= 55.6 && scoreValue <= 70.4) amount = 370;
|
|
298
|
+
else if (scoreValue >= 74.1 && scoreValue <= 100) amount = 330;
|
|
299
|
+
} else if (scoreType === 'anxiety') {
|
|
300
|
+
if (scoreValue >= 0 && scoreValue <= 19) amount = 460;
|
|
301
|
+
else if (scoreValue >= 23.8 && scoreValue <= 42.9) amount = 400;
|
|
302
|
+
else if (scoreValue >= 47.6 && scoreValue <= 66.7) amount = 360;
|
|
303
|
+
else if (scoreValue >= 71.4 && scoreValue <= 100) amount = 330;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
let amountForRotation = 0;
|
|
307
|
+
if (scoreType === 'depression') {
|
|
308
|
+
if (scoreNum >= 0 && scoreNum <= 14.8) amountForRotation = 550;
|
|
309
|
+
else if (scoreNum > 14.8 && scoreNum < 18.5) amountForRotation = 475; // gap fill
|
|
310
|
+
else if (scoreNum >= 18.5 && scoreNum <= 33.3) amountForRotation = 400;
|
|
311
|
+
else if (scoreNum > 33.3 && scoreNum < 37) amountForRotation = 390; // gap fill
|
|
312
|
+
else if (scoreNum >= 37 && scoreNum <= 51.9) amountForRotation = 380;
|
|
313
|
+
else if (scoreNum > 51.9 && scoreNum < 55.6) amountForRotation = 375; // gap fill
|
|
314
|
+
else if (scoreNum >= 55.6 && scoreNum <= 70.4) amountForRotation = 370;
|
|
315
|
+
else if (scoreNum > 70.4 && scoreNum < 74.1) amountForRotation = 350; // gap fill
|
|
316
|
+
else if (scoreNum >= 74.1 && scoreNum <= 100) amountForRotation = 330;
|
|
317
|
+
} else if (scoreType === 'anxiety') {
|
|
318
|
+
if (scoreNum >= 0 && scoreNum <= 19) amountForRotation = 460;
|
|
319
|
+
else if (scoreNum > 19 && scoreNum < 23.8) amountForRotation = 430; // gap fill
|
|
320
|
+
else if (scoreNum >= 23.8 && scoreNum <= 42.9) amountForRotation = 400;
|
|
321
|
+
else if (scoreNum > 42.9 && scoreNum < 47.6) amountForRotation = 380; // gap fill
|
|
322
|
+
else if (scoreNum >= 47.6 && scoreNum <= 66.7) amountForRotation = 360;
|
|
323
|
+
else if (scoreNum > 66.7 && scoreNum < 71.4) amountForRotation = 345; // gap fill
|
|
324
|
+
else if (scoreNum >= 71.4 && scoreNum <= 100) amountForRotation = 330;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// Calculate color
|
|
328
|
+
let color;
|
|
329
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
330
|
+
color = config.third_level_color;
|
|
331
|
+
} else if (scoreValue >= 70) {
|
|
332
|
+
color = config.fifth_level_color;
|
|
333
|
+
} else {
|
|
334
|
+
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
const rotateAmount = (scoreNum / 100) * amountForRotation;
|
|
338
|
+
|
|
339
|
+
return {
|
|
340
|
+
score: scoreValue,
|
|
341
|
+
amount,
|
|
342
|
+
color,
|
|
343
|
+
rotateAmount,
|
|
344
|
+
scoreInteger: Math.floor(scoreValue),
|
|
345
|
+
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Calculate physical score metrics with special handling for low scores
|
|
351
|
+
* @param {number} score - The score value
|
|
352
|
+
* @param {string} client - Client name
|
|
353
|
+
* @returns {object} Score metrics
|
|
354
|
+
*/
|
|
355
|
+
const calculatePhysicalScoreMetrics = (score, client = 'default') => {
|
|
356
|
+
const scoreValue = parseFloat(score);
|
|
357
|
+
|
|
358
|
+
let amount;
|
|
359
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
360
|
+
amount = 310;
|
|
361
|
+
} else if (scoreValue >= 70) {
|
|
362
|
+
amount = 310;
|
|
363
|
+
} else {
|
|
364
|
+
amount = 300;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Determine color
|
|
368
|
+
let color;
|
|
369
|
+
if (scoreValue > 40 && scoreValue < 70) {
|
|
370
|
+
color = config.third_level_color;
|
|
371
|
+
} else if (scoreValue >= 70) {
|
|
372
|
+
color = config.fifth_level_color;
|
|
373
|
+
} else {
|
|
374
|
+
color = client === 'nasco' ? config.second_level_color : config.first_level_color;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
let amountForRotation;
|
|
378
|
+
if (scoreValue >= 0 && scoreValue <= 40) {
|
|
379
|
+
amountForRotation = 300;
|
|
380
|
+
} else if (scoreValue > 40 && scoreValue < 70) {
|
|
381
|
+
amountForRotation = 310;
|
|
382
|
+
} else if (scoreValue >= 70 && scoreValue <= 100) {
|
|
383
|
+
amountForRotation = 310;
|
|
384
|
+
} else {
|
|
385
|
+
amountForRotation = 300; // fallback for out-of-range
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
let rotateAmount = (scoreValue / 100) * amountForRotation;
|
|
389
|
+
if (scoreValue <= 20) {
|
|
390
|
+
rotateAmount += 25;
|
|
391
|
+
}
|
|
392
|
+
if (rotateAmount > 336) {
|
|
393
|
+
rotateAmount = 336;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
return {
|
|
397
|
+
score: scoreValue,
|
|
398
|
+
amount,
|
|
399
|
+
color,
|
|
400
|
+
rotateAmount,
|
|
401
|
+
scoreInteger: Math.floor(scoreValue),
|
|
402
|
+
scoreDecimal: parseFloat((scoreValue % 1).toFixed(1)).toString().substring(1)
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Render the first section with physical and psychological scores
|
|
408
|
+
* @param {object} template - The HTML template
|
|
409
|
+
* @param {object} calculationData - Data containing scores and statements
|
|
410
|
+
* @param {object} physicalMetrics - Calculated physical score metrics
|
|
411
|
+
* @param {object} psychologicalMetrics - Calculated psychological score metrics
|
|
412
|
+
* @param {string} client - Client name
|
|
413
|
+
* @returns {string} Rendered HTML
|
|
414
|
+
*/
|
|
415
|
+
const renderFirstSection = (template, calculationData, physicalMetrics, psychologicalMetrics, client) => {
|
|
416
|
+
return template
|
|
417
|
+
.replace("{{physicalScore}}", physicalMetrics.scoreInteger)
|
|
418
|
+
.replace("{{physicalScoreDecimalPart}}", physicalMetrics.scoreDecimal)
|
|
419
|
+
.replace("{{physicalScoreStatement}}", calculationData.physicalScoreStatement)
|
|
420
|
+
.replace("{{PhysicalWord}}", localeService.t('physical'))
|
|
421
|
+
.replace(/{{rotatePhysicalAmount}}/gi, physicalMetrics.rotateAmount)
|
|
422
|
+
.replace(/{{physicalColor}}/gi, physicalMetrics.color)
|
|
423
|
+
.replace("{{psychologicalScore}}", psychologicalMetrics.scoreInteger)
|
|
424
|
+
.replace("{{psychologicalScoreDecimalPart}}", psychologicalMetrics.scoreDecimal)
|
|
425
|
+
.replace("{{psychologicalWord}}", localeService.t('psychological'))
|
|
426
|
+
.replace("{{psychologicalScoreStatement}}", calculationData.psychologicalScoreStatement)
|
|
427
|
+
.replace(/{{rotatePsychologicalAmount}}/gi, psychologicalMetrics.rotateAmount)
|
|
428
|
+
.replace(/{{fifthLevelColor}}/g, config.fifth_level_color)
|
|
429
|
+
.replace(/{{thirdLevelColor}}/g, config.third_level_color)
|
|
430
|
+
.replace(/{{firstLevelColor}}/g, client === 'nasco' ? config.second_level_color : config.first_level_color)
|
|
431
|
+
.replace("{{psychologicalColor}}", psychologicalMetrics.color)
|
|
432
|
+
.replace(/{{scoreHeaderColor}}/gi, physicalMetrics.color)
|
|
433
|
+
.replace(/{{svgIconColor}}/gi, physicalMetrics.color)
|
|
434
|
+
.replace(/{{lowScoreTextColor}}/gi, physicalMetrics.color)
|
|
435
|
+
.replace(/{{scoreDescriptionColor}}/gi, physicalMetrics.color)
|
|
436
|
+
.replace(/{{listIconsFontColor}}/g, config.list_icons_font_color);
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Render extended first section with depression and anxiety scores
|
|
441
|
+
* @param {object} template - The HTML template
|
|
442
|
+
* @param {object} calculationData - Data containing all scores and statements
|
|
443
|
+
* @param {object} metrics - Object containing all calculated metrics
|
|
444
|
+
* @param {string} client - Client name
|
|
445
|
+
* @returns {string} Rendered HTML
|
|
446
|
+
*/
|
|
447
|
+
const renderExtendedFirstSection = (template, calculationData, metrics, client) => {
|
|
448
|
+
return template
|
|
449
|
+
.replace("{{depressionRiskScore}}", metrics.depression.scoreInteger)
|
|
450
|
+
.replace("{{depressionRiskScoreDecimalPart}}", metrics.depression.scoreDecimal)
|
|
451
|
+
.replace("{{depressionRiskScoreStatement}}", calculationData.depressionRiskScoreStatement)
|
|
452
|
+
.replace("{{DepressionRiskWord}}", localeService.t('depressionRisk'))
|
|
453
|
+
.replace(/{{rotateDepressionRiskAmount}}/gi, metrics.depression.rotateAmount)
|
|
454
|
+
.replace(/{{depressionRiskColor}}/gi, metrics.depression.color)
|
|
455
|
+
.replace("{{anxietyRiskScore}}", metrics.anxiety.scoreInteger)
|
|
456
|
+
.replace("{{anxietyRiskScoreDecimalPart}}", metrics.anxiety.scoreDecimal)
|
|
457
|
+
.replace("{{anxietyRiskScoreStatement}}", calculationData.anxietyRiskScoreStatement)
|
|
458
|
+
.replace("{{AnxietyRiskWord}}", localeService.t('anxietyRisk'))
|
|
459
|
+
.replace(/{{rotateAnxietyRiskAmount}}/gi, metrics.anxiety.rotateAmount)
|
|
460
|
+
.replace(/{{anxietyRiskColor}}/gi, metrics.anxiety.color)
|
|
461
|
+
.replace("{{physicalScore}}", metrics.physical.scoreInteger)
|
|
462
|
+
.replace("{{physicalScoreDecimalPart}}", metrics.physical.scoreDecimal)
|
|
463
|
+
.replace("{{physicalScoreStatement}}", calculationData.physicalScoreStatement)
|
|
464
|
+
.replace("{{PhysicalWord}}", localeService.t('physicalScore'))
|
|
465
|
+
.replace(/{{rotatePhysicalAmount}}/gi, metrics.physical.rotateAmount)
|
|
466
|
+
.replace(/{{physicalColor}}/gi, metrics.physical.color)
|
|
467
|
+
.replace("{{ScoreText}}", localeService.t('scoreText'))
|
|
468
|
+
.replace("{{lowScoreText}}", localeService.t('lowScoreText'))
|
|
469
|
+
.replace("{{PhysicalWellbeingText}}", localeService.t('PhysicalWellbeingText'))
|
|
470
|
+
.replace("{{PsychologicalWellbeingText}}", localeService.t('PsychologicalWellbeingText'))
|
|
471
|
+
.replace("{{psychologicalScore}}", metrics.psychological.scoreInteger)
|
|
472
|
+
.replace("{{psychologicalScoreDecimalPart}}", metrics.psychological.scoreDecimal)
|
|
473
|
+
.replace("{{psychologicalWord}}", localeService.t('psychological'))
|
|
474
|
+
.replace("{{psychologicalScoreStatement}}", calculationData.psychologicalScoreStatement)
|
|
475
|
+
.replace(/{{rotatePsychologicalAmount}}/gi, metrics.psychological.rotateAmount)
|
|
476
|
+
.replace(/{{fifthLevelColor}}/g, config.fifth_level_color)
|
|
477
|
+
.replace(/{{thirdLevelColor}}/g, config.third_level_color)
|
|
478
|
+
.replace(/{{secondLevelColor}}/g, config.second_level_color)
|
|
479
|
+
.replace(/{{forthLevelColor}}/g, config.forth_level_color)
|
|
480
|
+
.replace(/{{firstLevelColor}}/g, client === 'nasco' ? config.second_level_color : config.first_level_color)
|
|
481
|
+
.replace(/{{psychologicalColor}}/gi, metrics.psychological.color)
|
|
482
|
+
.replace(/{{depressionRiskColor}}/gi, metrics.depression.color)
|
|
483
|
+
.replace(/{{anxietyRiskColor}}/gi, metrics.anxiety.color)
|
|
484
|
+
.replace(/{{scoreHeaderColor}}/gi, config.score_header_color)
|
|
485
|
+
.replace(/{{svgIconColor}}/gi, config.svg_icon_color)
|
|
486
|
+
.replace(/{{lowScoreTextColor}}/gi, config.low_score_text_color)
|
|
487
|
+
.replace(/{{scoreDescriptionColor}}/gi, config.score_description_color)
|
|
488
|
+
.replace(/{{listIconsFontColor}}/g, config.list_icons_font_color)
|
|
489
|
+
.replace(/{{generalFontColor}}/g, config.general_font_color)
|
|
490
|
+
.replace(/{{sectionTitleBorderColor}}/g, config.section_title_border_color);
|
|
491
|
+
};
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Load wellbeing templates based on language direction
|
|
495
|
+
* @param {boolean} isRtl - Whether the language is RTL
|
|
496
|
+
* @param {string} templatePath - Base template path (default: 'wellbeing')
|
|
497
|
+
* @returns {object} Object containing all loaded templates
|
|
498
|
+
*/
|
|
499
|
+
const loadWellbeingTemplates = (isRtl, templatePath = 'wellbeing') => {
|
|
500
|
+
const basePath = path.resolve(__dirname + `/../templates/${templatePath}`);
|
|
501
|
+
return {
|
|
502
|
+
html: fs.readFileSync(
|
|
503
|
+
path.resolve(basePath, isRtl ? 'rtl_no_pages.html' : 'ltr_no_pages.html'),
|
|
504
|
+
'utf8'
|
|
505
|
+
),
|
|
506
|
+
header: fs.readFileSync(path.resolve(basePath, 'blocks/header.html'), 'utf8'),
|
|
507
|
+
footer: fs.readFileSync(path.resolve(basePath, 'blocks/footer.html'), 'utf8'),
|
|
508
|
+
firstSection: fs.readFileSync(path.resolve(basePath, 'blocks/first-section.html'), 'utf8'),
|
|
509
|
+
tips: fs.readFileSync(path.resolve(basePath, 'blocks/tips.html'), 'utf8')
|
|
510
|
+
};
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* Get user image based on gender and photo availability
|
|
515
|
+
* @param {string} photo - User photo URL
|
|
516
|
+
* @param {number} genderId - Gender ID (90 for female)
|
|
517
|
+
* @returns {string} Path to user image
|
|
518
|
+
*/
|
|
519
|
+
const getUserImage = (photo, genderId) => {
|
|
520
|
+
if (!empty(photo)) {
|
|
521
|
+
return photo;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
const imageFolder = path.resolve(__dirname + '/../assets/wellbeing/images');
|
|
525
|
+
return genderId === 90
|
|
526
|
+
? path.resolve(imageFolder, 'user-woman.png')
|
|
527
|
+
: path.resolve(imageFolder, 'user-man.png');
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Generate dynamic CSS styles for the report
|
|
532
|
+
* @param {string} iconColor - Color for icon elements
|
|
533
|
+
* @returns {string} CSS style string
|
|
534
|
+
*/
|
|
535
|
+
const generateReportStyles = (iconColor) => {
|
|
536
|
+
const styles = {
|
|
537
|
+
'.tips-text': `color: ${config.insights_font_color} !important;`,
|
|
538
|
+
'.first-level-font-color': `color: ${config.general_font_color} !important;`,
|
|
539
|
+
'.first-section-scores': `border-color: ${config.first_section_scores_border_color} !important;`,
|
|
540
|
+
'.disclaimer-text-color': `color: ${config.disclaimer_text_color} !important;`,
|
|
541
|
+
'.first-level-border-color': `border-color: ${config.general_font_color} !important;`,
|
|
542
|
+
'.scores-note .first-level-font-color': `color: ${iconColor} !important;`,
|
|
543
|
+
'.top-box-bg': `background-color: ${config.top_box_background} !important;`,
|
|
544
|
+
'.footer-background': `background-color: ${config.footer_background} !important;`,
|
|
545
|
+
'.report-date, .patient-info, .score-description, .list-text, .report-header, .list-score, .score-details-title': `color: ${config.body_font_color} !important;`,
|
|
546
|
+
'.list-item g, .list-item path': `fill: ${config.list_icons_font_color} !important; stroke: ${config.list_icons_font_color} !important;`,
|
|
547
|
+
'.fifth-level-font-color': `color: ${config.fifth_level_color} !important;`
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
return '<style>' + Object.entries(styles).map(([selector, rules]) => `${selector}{${rules}}`).join('') + '</style>';
|
|
551
|
+
};
|
|
552
|
+
|
|
553
|
+
/**
|
|
554
|
+
* Process part scores and organize by category
|
|
555
|
+
* @param {object} partScores - Raw part scores data
|
|
556
|
+
* @returns {object} Organized scores by category
|
|
557
|
+
*/
|
|
558
|
+
const processPartScores = (partScores) => {
|
|
559
|
+
const categories = {
|
|
560
|
+
lifeStyle: [],
|
|
561
|
+
body: [],
|
|
562
|
+
mind: [],
|
|
563
|
+
healthRisk: []
|
|
564
|
+
};
|
|
565
|
+
|
|
566
|
+
Object.entries(partScores).forEach(([key, items]) => {
|
|
567
|
+
if (key === 'body' || key === 'lifeStyle' || key === 'mind') {
|
|
568
|
+
items.forEach(item => {
|
|
569
|
+
const iconName = item['icon'].replace(/\s/g, '');
|
|
570
|
+
const name = iconName.split('.png')[0];
|
|
571
|
+
const iconPath = icons[name];
|
|
572
|
+
|
|
573
|
+
if (empty(iconPath)) {
|
|
574
|
+
console.log('Missing icon:', name);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
const scoreData = {
|
|
578
|
+
percentage: Math.round(item['score'] / 2),
|
|
579
|
+
icon: iconPath,
|
|
580
|
+
scoreText: item['scoreText']
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
categories[key].push(scoreData);
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
return categories;
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Organize tips by part ID
|
|
593
|
+
* @param {array} tips - Array of tip objects
|
|
594
|
+
* @returns {object} Tips organized by category
|
|
595
|
+
*/
|
|
596
|
+
const organizeTipsByPart = (tips, clientName) => {
|
|
597
|
+
let organized = clientName.toLowerCase() === 'mediclinic' ? {
|
|
598
|
+
lifeStyle: [],
|
|
599
|
+
mind: [],
|
|
600
|
+
body: []
|
|
601
|
+
} : {
|
|
602
|
+
lifeStyle: [],
|
|
603
|
+
body: [],
|
|
604
|
+
mind: []
|
|
605
|
+
};
|
|
606
|
+
|
|
607
|
+
const partMapping = clientName.toLowerCase() === 'mediclinic' ? {
|
|
608
|
+
1: 'lifeStyle',
|
|
609
|
+
2: 'mind',
|
|
610
|
+
3: 'body'
|
|
611
|
+
} : {
|
|
612
|
+
1: 'lifeStyle',
|
|
613
|
+
2: 'body',
|
|
614
|
+
3: 'mind'
|
|
615
|
+
};
|
|
616
|
+
|
|
617
|
+
tips.forEach(tip => {
|
|
618
|
+
const category = partMapping[tip.partId];
|
|
619
|
+
if (category) {
|
|
620
|
+
tip.type = `${category}Insights`;
|
|
621
|
+
organized[category].push(tip);
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
return organized;
|
|
625
|
+
};
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Render header template with data
|
|
629
|
+
* @param {string} template - Header template
|
|
630
|
+
* @param {object} data - Data object containing patient info
|
|
631
|
+
* @param {string} logo - Logo path
|
|
632
|
+
* @param {string} userImage - User image path
|
|
633
|
+
* @param {string} topInsight - Top insight text
|
|
634
|
+
* @returns {string} Rendered header HTML
|
|
635
|
+
*/
|
|
636
|
+
const renderHeaderTemplate = (template, data, logo, userImage, topInsight) => {
|
|
637
|
+
return template
|
|
638
|
+
.replace('{{logo}}', logo)
|
|
639
|
+
.replace('{{userImage}}', userImage)
|
|
640
|
+
.replace('{{topBoxBg}}', config.top_box_background)
|
|
641
|
+
.replace('{{scoresNote}}', localeService.t('scoresNote'))
|
|
642
|
+
.replace('{{bulbIcon}}', config.bulbIcon)
|
|
643
|
+
.replace('{{reportHeader}}', localeService.t('wellbeingReport'))
|
|
644
|
+
.replace('{{reportHeaderDescription}}', topInsight)
|
|
645
|
+
.replace('{{patientName}}', data.name)
|
|
646
|
+
.replace('{{patientOld}}', data.age)
|
|
647
|
+
.replace('{{yearsOld}}', localeService.t('yearsOld'))
|
|
648
|
+
.replace('{{patientGender}}', data.gender);
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Load extended templates for smart report
|
|
653
|
+
* @param {boolean} isRtl - Whether the language is RTL
|
|
654
|
+
* @param {string} clientName - Client name for template path
|
|
655
|
+
* @param {boolean} hasProfileInfo - Whether profile info exists
|
|
656
|
+
* @returns {object} Object containing all loaded templates
|
|
657
|
+
*/
|
|
658
|
+
const loadExtendedTemplates = (isRtl, clientName, hasProfileInfo = false) => {
|
|
659
|
+
if (clientName.toLowerCase() === 'pha') {
|
|
660
|
+
clientName = 'Pha';
|
|
661
|
+
} else if (clientName.toLowerCase() === 'mediclinic') {
|
|
662
|
+
clientName = 'Mediclinic';
|
|
663
|
+
}
|
|
664
|
+
const basePath = path.resolve(__dirname + `/../templates/${clientName}`);
|
|
665
|
+
|
|
666
|
+
const templates = {
|
|
667
|
+
html: fs.readFileSync(
|
|
668
|
+
path.resolve(basePath, isRtl ? 'rtl_no_pages.html' : 'ltr_no_pages.html'),
|
|
669
|
+
'utf8'
|
|
670
|
+
),
|
|
671
|
+
header: fs.readFileSync(path.resolve(basePath, 'blocks/header.html'), 'utf8'),
|
|
672
|
+
pdfHeader: fs.readFileSync(path.resolve(basePath, 'blocks/header-template.html'), 'utf8'),
|
|
673
|
+
footer: fs.readFileSync(path.resolve(basePath, 'blocks/footer.html'), 'utf8'),
|
|
674
|
+
firstSection: fs.readFileSync(path.resolve(basePath, 'blocks/first-section.html'), 'utf8'),
|
|
675
|
+
tips: fs.readFileSync(path.resolve(basePath, 'blocks/tips.html'), 'utf8'),
|
|
676
|
+
patientTable: ''
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
if (hasProfileInfo) {
|
|
680
|
+
templates.patientTable = fs.readFileSync(path.resolve(basePath, 'blocks/patient-table.html'), 'utf8');
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
return templates;
|
|
684
|
+
};
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Generate header info HTML from profile data
|
|
688
|
+
* @param {array} profileInfo - Array of profile information
|
|
689
|
+
* @param {number} count - Number of items to process (default: 4)
|
|
690
|
+
* @returns {string} Generated HTML
|
|
691
|
+
*/
|
|
692
|
+
const generateHeaderInfo = (profileInfo, count = 4) => {
|
|
693
|
+
let html = '';
|
|
694
|
+
|
|
695
|
+
for (let i = 0; i < Math.min(count, profileInfo.length); i++) {
|
|
696
|
+
const element = profileInfo[i];
|
|
697
|
+
if (element) {
|
|
698
|
+
html += `
|
|
699
|
+
<div class="info-group">
|
|
700
|
+
<div class="info-title">${element.title}:</div>
|
|
701
|
+
<div class="info-value">${element.value}</div>
|
|
702
|
+
</div>
|
|
703
|
+
`;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
return html;
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* Generate extended report styles with additional properties
|
|
712
|
+
* @param {string} iconColor - Color for icon elements
|
|
713
|
+
* @returns {string} CSS style string
|
|
714
|
+
*/
|
|
715
|
+
const generateExtendedReportStyles = (iconColor) => {
|
|
716
|
+
const styles = {
|
|
717
|
+
'.tips-text': `color: ${config.insights_font_color} !important;`,
|
|
718
|
+
'.first-level-font-color': `color: ${config.general_font_color} !important;`,
|
|
719
|
+
'.first-section-scores': `border-color: ${config.section_title_border_color} !important;`,
|
|
720
|
+
'.physical-score-section': `border-color: ${config.section_title_border_color} !important;`,
|
|
721
|
+
'.psychological-score-section, .psychological-score-section1, .psychological-score-section2': `border-color: ${config.body_font_color} !important;`,
|
|
722
|
+
'.row.score-section': `border-color: ${config.section_title_border_color} !important;`,
|
|
723
|
+
'.disclaimer-text-color': `color: ${config.disclaimer_text_color} !important;`,
|
|
724
|
+
'.first-level-border-color': `border-color: ${config.general_font_color} !important;`,
|
|
725
|
+
'.scores-note .first-level-font-color': `color: ${iconColor} !important;`,
|
|
726
|
+
'.top-box-bg': `background-color: ${config.top_box_background} !important;`,
|
|
727
|
+
'.footer-background': `background-color: ${config.footer_background} !important;`,
|
|
728
|
+
'.print-page-footer': `border-color: ${config.footer_border_color} !important;`,
|
|
729
|
+
'.report-date, .patient-info, .score-description, .list-text, .report-header, .list-score, .score-details-title': `color: ${config.body_font_color} !important;`,
|
|
730
|
+
'.list-item g, .list-item path': `fill: ${config.list_icons_font_color} !important; stroke: ${config.list_icons_font_color} !important;`,
|
|
731
|
+
'.fifth-level-font-color': `color: ${config.fifth_level_color} !important;`
|
|
732
|
+
};
|
|
733
|
+
|
|
734
|
+
return '<style>' + Object.entries(styles).map(([selector, rules]) => `${selector}{${rules}}`).join('') + '</style>';
|
|
735
|
+
};
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* Process extended part scores with base division
|
|
739
|
+
* @param {object} partScores - Raw part scores data
|
|
740
|
+
* @returns {object} Organized scores by category
|
|
741
|
+
*/
|
|
742
|
+
const processExtendedPartScores = (partScores) => {
|
|
743
|
+
const categories = {
|
|
744
|
+
lifeStyle: [],
|
|
745
|
+
body: [],
|
|
746
|
+
mind: [],
|
|
747
|
+
healthRisk: []
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
Object.entries(partScores).forEach(([key, items]) => {
|
|
751
|
+
if (key === 'body' || key === 'lifeStyle' || key === 'mind') {
|
|
752
|
+
items.forEach(item => {
|
|
753
|
+
const iconName = item['icon'].replace(/\s/g, '');
|
|
754
|
+
const name = iconName.split('.png')[0];
|
|
755
|
+
const iconPath = icons[name];
|
|
756
|
+
|
|
757
|
+
if (empty(iconPath)) {
|
|
758
|
+
console.log('Missing icon:', name);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
const scoreData = {
|
|
762
|
+
percentage: Math.round(item['score'] / (item['base'] / 5)),
|
|
763
|
+
icon: iconPath,
|
|
764
|
+
scoreText: item['scoreText'],
|
|
765
|
+
key
|
|
766
|
+
};
|
|
767
|
+
|
|
768
|
+
categories[key].push(scoreData);
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
});
|
|
772
|
+
|
|
773
|
+
return categories;
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
/**
|
|
777
|
+
* Organize tips by part ID for extended report
|
|
778
|
+
* @param {array} tips - Array of tip objects
|
|
779
|
+
* @returns {object} Tips organized by category
|
|
780
|
+
*/
|
|
781
|
+
const organizeExtendedTipsByPart = (tips, client) => {
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
const clientLower = (client || '').toLowerCase();
|
|
785
|
+
const organized = clientLower === 'pha' ? {
|
|
786
|
+
lifeStyle: [],
|
|
787
|
+
body: [],
|
|
788
|
+
mind: []
|
|
789
|
+
} : {
|
|
790
|
+
lifeStyle: [],
|
|
791
|
+
mind: [],
|
|
792
|
+
body: []
|
|
793
|
+
};
|
|
794
|
+
|
|
795
|
+
const partMapping = clientLower === 'pha' ? {
|
|
796
|
+
1: 'lifeStyle',
|
|
797
|
+
2: 'body',
|
|
798
|
+
3: 'mind',
|
|
799
|
+
} : {
|
|
800
|
+
1: 'lifeStyle',
|
|
801
|
+
2: 'mind',
|
|
802
|
+
3: 'body'
|
|
803
|
+
};
|
|
804
|
+
|
|
805
|
+
tips.forEach(tip => {
|
|
806
|
+
const category = partMapping[tip.partId];
|
|
807
|
+
if (category) {
|
|
808
|
+
tip.type = `${category}Insights`;
|
|
809
|
+
organized[category].push(tip);
|
|
810
|
+
}
|
|
811
|
+
});
|
|
812
|
+
|
|
813
|
+
return organized;
|
|
814
|
+
};
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* Render patient table from profile info
|
|
818
|
+
* @param {array} profileInfo - Profile information array
|
|
819
|
+
* @param {number} startIndex - Start index for processing (default: 4)
|
|
820
|
+
* @returns {string} Rendered patient table HTML
|
|
821
|
+
*/
|
|
822
|
+
const renderPatientTable = (profileInfo, startIndex = 4) => {
|
|
823
|
+
if (empty(profileInfo) || profileInfo.length <= startIndex) {
|
|
824
|
+
return '';
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
let details1HTML = '';
|
|
828
|
+
let details2HTML = '';
|
|
829
|
+
const patientCount = profileInfo.length - startIndex;
|
|
830
|
+
const midPoint = startIndex + Math.ceil(patientCount / 2);
|
|
831
|
+
|
|
832
|
+
// First column (left half)
|
|
833
|
+
for (let i = startIndex; i < midPoint; i++) {
|
|
834
|
+
const item = profileInfo[i];
|
|
835
|
+
if (item) {
|
|
836
|
+
const title = escapeHTML(item.title);
|
|
837
|
+
details1HTML += `
|
|
838
|
+
<div class="details-row">
|
|
839
|
+
<div class="details-label">${wrapLTR(title)}</div>
|
|
840
|
+
<div class="details-value">${item.value}</div>
|
|
841
|
+
</div>
|
|
842
|
+
`;
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
// Second column (right half)
|
|
847
|
+
for (let i = midPoint; i < profileInfo.length; i++) {
|
|
848
|
+
const item = profileInfo[i];
|
|
849
|
+
if (item) {
|
|
850
|
+
const title = escapeHTML(item.title);
|
|
851
|
+
details2HTML += `
|
|
852
|
+
<div class="details-row">
|
|
853
|
+
<div class="details-label" style="unicode-bidi: isolate;">${wrapLTR(title)}</div>
|
|
854
|
+
<div class="details-value">${item.value}</div>
|
|
855
|
+
</div>
|
|
856
|
+
`;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
return `
|
|
861
|
+
<div class="patient-details">
|
|
862
|
+
<div class="details-column">${details1HTML}</div>
|
|
863
|
+
<div class="details-column" style="margin-left:1%">${details2HTML}</div>
|
|
864
|
+
</div>
|
|
865
|
+
`;
|
|
866
|
+
};
|
|
867
|
+
|
|
868
|
+
/**
|
|
869
|
+
* Render doctor quiz details
|
|
870
|
+
* @param {array} doctorData - Doctor data array
|
|
871
|
+
* @returns {string} Rendered doctor details HTML
|
|
872
|
+
*/
|
|
873
|
+
const renderDoctorDetails = (doctorData) => {
|
|
874
|
+
if (empty(doctorData)) {
|
|
875
|
+
return '';
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
let details1HTML = '';
|
|
879
|
+
let details2HTML = '';
|
|
880
|
+
const halfLength = Math.ceil(doctorData.length / 2);
|
|
881
|
+
|
|
882
|
+
// First column
|
|
883
|
+
for (let i = 0; i < halfLength; i++) {
|
|
884
|
+
const item = doctorData[i];
|
|
885
|
+
details1HTML += `
|
|
886
|
+
<div class="details-row page-break">
|
|
887
|
+
<div class="question-title">${item.title}</div>
|
|
888
|
+
<div class="details-value">${item.value}</div>
|
|
889
|
+
</div>
|
|
890
|
+
`;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// Second column
|
|
894
|
+
for (let i = halfLength; i < doctorData.length; i++) {
|
|
895
|
+
const item = doctorData[i];
|
|
896
|
+
details2HTML += `
|
|
897
|
+
<div class="details-row page-break">
|
|
898
|
+
<div class="question-title">${item.title}</div>
|
|
899
|
+
<div class="details-value">${item.value}</div>
|
|
900
|
+
</div>
|
|
901
|
+
`;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
return `
|
|
905
|
+
<p class="resume-title">Quiz Answers</p>
|
|
906
|
+
<div class="details-column">${details1HTML}</div>
|
|
907
|
+
<div class="details-column" style="margin-left: 1%">${details2HTML}</div>
|
|
908
|
+
`;
|
|
909
|
+
};
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* Render PDF header template
|
|
913
|
+
* @param {string} template - PDF header template
|
|
914
|
+
* @param {string} logo - Logo path
|
|
915
|
+
* @param {string} title - Client title
|
|
916
|
+
* @returns {string} Rendered PDF header
|
|
917
|
+
*/
|
|
918
|
+
const renderPdfHeaderTemplate = (template, logo, title) => {
|
|
919
|
+
return template
|
|
920
|
+
.replace('{{logo}}', logo)
|
|
921
|
+
.replace('{{clientName}}', localeService.t(title))
|
|
922
|
+
.replace('{{notificationTitle}}', localeService.t('notificationTitle'))
|
|
923
|
+
.replace(/{{sectionTitleBorderColor}}/g, config.section_title_border_color);
|
|
924
|
+
};
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Render basic header template for extended report
|
|
928
|
+
* @param {string} template - Header template
|
|
929
|
+
* @param {string} logo - Logo path
|
|
930
|
+
* @param {string} title - Client title
|
|
931
|
+
* @returns {string} Rendered header
|
|
932
|
+
*/
|
|
933
|
+
const renderBasicHeaderTemplate = (template, logo, title) => {
|
|
934
|
+
return template
|
|
935
|
+
.replace('{{logo}}', logo)
|
|
936
|
+
.replace('{{clientName}}', localeService.t(title))
|
|
937
|
+
.replace('{{notificationTitle}}', localeService.t('notificationTitle'));
|
|
938
|
+
};
|
|
939
|
+
|
|
940
|
+
/***
|
|
941
|
+
* HTML file generator to fill the html template
|
|
942
|
+
* based on the json wellbeingData from the POST request
|
|
943
|
+
*/
|
|
944
|
+
/**
|
|
945
|
+
* Generate HTML wellbeing report
|
|
946
|
+
* @param {object} data - Report data
|
|
947
|
+
* @param {boolean} isDebugging - Debug mode flag
|
|
948
|
+
* @param {string} clientName - Client name for configuration
|
|
949
|
+
* @param {string} language - Report language
|
|
950
|
+
* @returns {object} Generated report data
|
|
951
|
+
*/
|
|
952
|
+
let generateHTMLWellbeingReport = async (data, isDebugging, clientName, language) => {
|
|
953
|
+
// Setup
|
|
954
|
+
debug = isDebugging;
|
|
955
|
+
const client = clientName || 'default';
|
|
956
|
+
OUT_FILE = path.resolve(__dirname + `/../output/${client}-pdf-` + Date.now() + '.html');
|
|
957
|
+
Pdf_file = `/output/${client}-pdf-` + Date.now() + '.html';
|
|
958
|
+
|
|
959
|
+
// Language configuration
|
|
960
|
+
language = empty(language) ? 'en' : language;
|
|
961
|
+
const isRtl = language.indexOf('ar') !== -1;
|
|
962
|
+
if (isRtl) language = 'ar-SA';
|
|
963
|
+
|
|
964
|
+
// Load client configuration
|
|
965
|
+
loadClientConfig(client);
|
|
966
|
+
localeService.setLocale(language);
|
|
967
|
+
debugLog("pdf language:", language);
|
|
968
|
+
|
|
969
|
+
// Load templates
|
|
970
|
+
const templates = loadWellbeingTemplates(isRtl);
|
|
971
|
+
debugLog("templates loaded");
|
|
972
|
+
|
|
973
|
+
// Setup DOM
|
|
974
|
+
const dom = new JSDOM(templates.html);
|
|
975
|
+
const $ = (require('jquery'))(dom.window);
|
|
976
|
+
const historyData = [];
|
|
977
|
+
|
|
978
|
+
// Prepare data
|
|
979
|
+
const userImage = getUserImage(data.photo, data.genderId);
|
|
980
|
+
const topInsight = data.lingualReading?.statement || localeService.t('reportHeaderDescription');
|
|
981
|
+
|
|
982
|
+
// Render header
|
|
983
|
+
const renderedHeader = renderHeaderTemplate(
|
|
984
|
+
templates.header,
|
|
985
|
+
data,
|
|
986
|
+
config.logo,
|
|
987
|
+
userImage,
|
|
988
|
+
topInsight
|
|
989
|
+
);
|
|
990
|
+
|
|
991
|
+
// Apply styles
|
|
992
|
+
const iconColor = config.bulb_icon_font_color || config.general_font_color;
|
|
993
|
+
const dynamicStyles = generateReportStyles(iconColor);
|
|
994
|
+
|
|
995
|
+
$('#content').append(renderedHeader);
|
|
996
|
+
$('#content').append(dynamicStyles);
|
|
997
|
+
|
|
998
|
+
// Handle missing photo
|
|
999
|
+
if (empty(data.photo)) {
|
|
1000
|
+
$('#content').append('<style>.user-profile-img{display: none !important;}</style>');
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
// Add chart colors
|
|
1004
|
+
$("#chartsData").append(
|
|
1005
|
+
`<script>var RANGE_COLORS = ['${config.first_level_color}','${config.second_level_color}','${config.third_level_color}','${config.forth_level_color}','${config.fifth_level_color}'];</script>`
|
|
1006
|
+
);
|
|
1007
|
+
|
|
1008
|
+
// Render first section
|
|
1009
|
+
const physicalMetrics = calculateScoreMetrics(data.calculation.physicalScore, client);
|
|
1010
|
+
const psychologicalMetrics = calculateScoreMetrics(data.calculation.psychologicalScore, client);
|
|
1011
|
+
|
|
1012
|
+
const firstSectionHtml = renderFirstSection(
|
|
1013
|
+
templates.firstSection,
|
|
1014
|
+
data.calculation,
|
|
1015
|
+
physicalMetrics,
|
|
1016
|
+
psychologicalMetrics,
|
|
1017
|
+
client
|
|
1018
|
+
);
|
|
1019
|
+
|
|
1020
|
+
$('.first-section-scores').html(firstSectionHtml);
|
|
1021
|
+
applyScoreInactiveClasses($, psychologicalMetrics.score, 'psychological-score-section');
|
|
1022
|
+
applyScoreInactiveClasses($, physicalMetrics.score, 'physical-score-section');
|
|
1023
|
+
$(".score-main").addClass(client).addClass(language);
|
|
1024
|
+
|
|
1025
|
+
// Process part scores
|
|
1026
|
+
const processedScores = processPartScores(data.partsScore);
|
|
1027
|
+
debugLog("after signature");
|
|
1028
|
+
|
|
1029
|
+
// Render footer
|
|
1030
|
+
const footerHtml = templates.footer
|
|
1031
|
+
.replace("{{Disclaimer}}", localeService.t('Disclaimer'))
|
|
1032
|
+
.replace("{{Disclaimer Text}}", localeService.t('Disclaimer Text'));
|
|
1033
|
+
|
|
1034
|
+
$('#content').after(`<h5 class='recommended-tips-title first-level-font-color'>${localeService.t('weRecommend')}</h5>`);
|
|
1035
|
+
$('.footer').append(footerHtml);
|
|
1036
|
+
|
|
1037
|
+
// Process and render tips
|
|
1038
|
+
const organizedTips = organizeTipsByPart(data.insights.tips, clientName);
|
|
1039
|
+
$('.all-tips').append(templates.tips);
|
|
1040
|
+
|
|
1041
|
+
Object.values(organizedTips).forEach(tipCategory => {
|
|
1042
|
+
$(".tips-section .three-column").append(
|
|
1043
|
+
`<div class='left-align'>${renderInsightTips(tipCategory)}</div>`
|
|
1044
|
+
);
|
|
1045
|
+
});
|
|
1046
|
+
|
|
1047
|
+
// Add scores data for charts
|
|
1048
|
+
$("#chartsData").append(`<script>var allScores = ${JSON.stringify(processedScores)};</script>`);
|
|
1049
|
+
|
|
1050
|
+
// Ensure output directories exist
|
|
1051
|
+
const OUTPUT_DIRECTORY = path.resolve(`${__dirname}/../output`);
|
|
1052
|
+
if (!fs.existsSync(OUTPUT_DIRECTORY)) {
|
|
1053
|
+
fs.mkdirSync(OUTPUT_DIRECTORY);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
const REQUEST_OUTPUT_DIRECTORY = path.resolve(`${__dirname}/../output/request`);
|
|
1057
|
+
if (!fs.existsSync(REQUEST_OUTPUT_DIRECTORY)) {
|
|
1058
|
+
fs.mkdirSync(REQUEST_OUTPUT_DIRECTORY);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
// Replace footer border color placeholder for PHA
|
|
1062
|
+
let finalHtml = dom.serialize();
|
|
1063
|
+
if (client.toLowerCase() === 'pha') {
|
|
1064
|
+
finalHtml = finalHtml.replace(/\{\{footerBorderColor\}\}/g, config.footer_border_color);
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
// Write file
|
|
1068
|
+
await promisify(fs.writeFile)(OUT_FILE, finalHtml);
|
|
1069
|
+
|
|
1070
|
+
return {
|
|
1071
|
+
html: finalHtml,
|
|
1072
|
+
outputFile: OUT_FILE,
|
|
1073
|
+
header: renderedHeader,
|
|
1074
|
+
footer: footerHtml,
|
|
1075
|
+
historyData
|
|
1076
|
+
};
|
|
1077
|
+
};
|
|
1078
|
+
|
|
1079
|
+
/**
|
|
1080
|
+
* Generate HTML wellbeing report with smart report integration
|
|
1081
|
+
* @param {object} data - Report data including wellbeing, profile, and smart report
|
|
1082
|
+
* @param {boolean} isDebugging - Debug mode flag
|
|
1083
|
+
* @param {string} clientName - Client name for configuration
|
|
1084
|
+
* @param {string} language - Report language
|
|
1085
|
+
* @param {array} selectedLabs - Selected labs default is []
|
|
1086
|
+
* @param {boolean} showHeaderLogo - Show header logo default is true
|
|
1087
|
+
* @returns {object} Generated report data
|
|
1088
|
+
*/
|
|
1089
|
+
let generateHTMLWellbeingReportWithSmartReport = async (data, isDebugging, clientName, language, selectedLabs = [], showHeaderLogo = true, hideWellbeingUI = false) => {
|
|
1090
|
+
// Setup
|
|
1091
|
+
debug = isDebugging;
|
|
1092
|
+
const client = clientName || 'default';
|
|
1093
|
+
OUT_FILE = path.resolve(__dirname + `/../output/${client}-pdf-` + Date.now() + '.html');
|
|
1094
|
+
Pdf_file = `/output/${client}-pdf-` + Date.now() + '.html';
|
|
1095
|
+
|
|
1096
|
+
// Extract data
|
|
1097
|
+
const wellbeingData = data.wellbeing || {};
|
|
1098
|
+
const profileInfo = data.profileInfo || {};
|
|
1099
|
+
const doctorData = data.IsDoctor ? data.Profile : [];
|
|
1100
|
+
// Handle SR as either JSON string or already parsed object
|
|
1101
|
+
const smartReport = data.SR ? (typeof data.SR === 'string' ? JSON.parse(data.SR) : data.SR) : {};
|
|
1102
|
+
|
|
1103
|
+
// Determine if wellbeing UI should be hidden (flag OR empty data)
|
|
1104
|
+
const shouldHideWellbeingUI = hideWellbeingUI || empty(wellbeingData);
|
|
1105
|
+
|
|
1106
|
+
// Language configuration
|
|
1107
|
+
language = empty(language) ? 'en' : language;
|
|
1108
|
+
const isRtl = language.indexOf('ar') !== -1;
|
|
1109
|
+
if (isRtl) language = 'ar-SA';
|
|
1110
|
+
|
|
1111
|
+
// Load client configuration
|
|
1112
|
+
loadClientConfig(client);
|
|
1113
|
+
localeService.setLocale(language);
|
|
1114
|
+
debugLog("pdf language:", language);
|
|
1115
|
+
|
|
1116
|
+
// Load templates
|
|
1117
|
+
const templates = loadExtendedTemplates(isRtl, client, !empty(profileInfo));
|
|
1118
|
+
debugLog("templates loaded");
|
|
1119
|
+
|
|
1120
|
+
// Setup DOM
|
|
1121
|
+
const dom = new JSDOM(templates.html);
|
|
1122
|
+
const $ = (require('jquery'))(dom.window);
|
|
1123
|
+
const historyData = [];
|
|
1124
|
+
|
|
1125
|
+
// Render templates
|
|
1126
|
+
const renderedPdfHeader = renderPdfHeaderTemplate(templates.pdfHeader, config.logo, config.title);
|
|
1127
|
+
const renderedHeader = renderBasicHeaderTemplate(templates.header, config.logo, config.title);
|
|
1128
|
+
const headerInfoHtml = generateHeaderInfo(profileInfo, 4);
|
|
1129
|
+
|
|
1130
|
+
// Apply content and styles
|
|
1131
|
+
$('#content').append(renderedHeader);
|
|
1132
|
+
$('.report-info').html(headerInfoHtml);
|
|
1133
|
+
|
|
1134
|
+
const iconColor = config.bulb_icon_font_color || config.general_font_color;
|
|
1135
|
+
const dynamicStyles = generateExtendedReportStyles(iconColor);
|
|
1136
|
+
$('#content').append(dynamicStyles);
|
|
1137
|
+
|
|
1138
|
+
if (client.toLowerCase() === 'pha') {
|
|
1139
|
+
$('#content').append('<style>.patient-details .details-label, .patient-details .details-value { padding: 4px !important; }</style>');
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
// Handle missing photo
|
|
1143
|
+
if (empty(wellbeingData.photo)) {
|
|
1144
|
+
$('#content').append('<style>.user-profile-img{display: none !important;}</style>');
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
// Add chart colors
|
|
1148
|
+
$("#chartsData").append(
|
|
1149
|
+
`<script>var RANGE_COLORS = ['${config.first_level_color}','${config.second_level_color}','${config.third_level_color}','${config.forth_level_color}','${config.fifth_level_color}'];</script>`
|
|
1150
|
+
);
|
|
1151
|
+
|
|
1152
|
+
// Render wellbeing data if available
|
|
1153
|
+
let firstSectionHtml = '';
|
|
1154
|
+
if (!empty(wellbeingData)) {
|
|
1155
|
+
// Calculate all metrics
|
|
1156
|
+
const metrics = {
|
|
1157
|
+
physical: calculatePhysicalScoreMetrics(wellbeingData.calculation.physicalScore, client),
|
|
1158
|
+
psychological: calculateScoreMetrics(wellbeingData.calculation.psychologicalScore, client),
|
|
1159
|
+
depression: calculateExtendedScoreMetrics(wellbeingData.calculation.depressionRiskScore, 'depression', client),
|
|
1160
|
+
anxiety: calculateExtendedScoreMetrics(wellbeingData.calculation.anxietyRiskScore, 'anxiety', client)
|
|
1161
|
+
};
|
|
1162
|
+
|
|
1163
|
+
// Render first section
|
|
1164
|
+
firstSectionHtml = renderExtendedFirstSection(
|
|
1165
|
+
templates.firstSection,
|
|
1166
|
+
wellbeingData.calculation,
|
|
1167
|
+
metrics,
|
|
1168
|
+
client
|
|
1169
|
+
);
|
|
1170
|
+
|
|
1171
|
+
$('.first-section-scores').html(firstSectionHtml);
|
|
1172
|
+
|
|
1173
|
+
// Apply inactive classes
|
|
1174
|
+
applyScoreInactiveClasses($, metrics.psychological.score, 'psychological-score-section');
|
|
1175
|
+
applyScoreInactiveClasses($, metrics.depression.score, 'psychological-score-section1');
|
|
1176
|
+
applyScoreInactiveClasses($, metrics.anxiety.score, 'psychological-score-section2');
|
|
1177
|
+
applyScoreInactiveClasses($, metrics.physical.score, 'physical-score-section');
|
|
1178
|
+
|
|
1179
|
+
$(".score-main").addClass(client).addClass(language);
|
|
1180
|
+
|
|
1181
|
+
// Process part scores
|
|
1182
|
+
const processedScores = processExtendedPartScores(wellbeingData.partsScore);
|
|
1183
|
+
|
|
1184
|
+
let allScores = { lifeStyle: [], body: [], mind: [], healthRisk: [] };
|
|
1185
|
+
if (client.toLowerCase() === 'mediclinic') {
|
|
1186
|
+
allScores = { lifeStyle: [], mind: [], body: [], healthRisk: [] };
|
|
1187
|
+
}
|
|
1188
|
+
$('#content').append(
|
|
1189
|
+
`<div class='row scores-parts' style='width:99.5% !important;'>${renderItems(allScores, wellbeingData.partsScore)}</div>`
|
|
1190
|
+
);
|
|
1191
|
+
debugLog("after signature");
|
|
1192
|
+
|
|
1193
|
+
// Process and render tips
|
|
1194
|
+
const tips = wellbeingData.insights.tips;
|
|
1195
|
+
if (!empty(tips)) {
|
|
1196
|
+
$('#content').after(`<h5 class='recommended-tips-title'>${localeService.t('weRecommend')}</h5>`);
|
|
1197
|
+
|
|
1198
|
+
const organizedTips = organizeExtendedTipsByPart(tips, client);
|
|
1199
|
+
$('.all-tips').append(templates.tips);
|
|
1200
|
+
|
|
1201
|
+
Object.values(organizedTips).forEach(tipCategory => {
|
|
1202
|
+
$(".tips-section .three-column").append(
|
|
1203
|
+
`<div class='left-align'>${renderInsightTips(tipCategory, client)}</div>`
|
|
1204
|
+
);
|
|
1205
|
+
});
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
// Add scores data for charts
|
|
1209
|
+
$("#chartsData").append(`<script>var allScores = ${JSON.stringify(processedScores)};</script>`);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
// Remove wellbeing UI sections completely from DOM if flag is set or data is empty
|
|
1213
|
+
// Using .remove() instead of display:none to eliminate white space in PDF
|
|
1214
|
+
if (shouldHideWellbeingUI) {
|
|
1215
|
+
$('.first-section-scores, .scores-parts, .recommended-tips-title, .tips-section, .footer-background').remove();
|
|
1216
|
+
|
|
1217
|
+
// Remove spacing to ensure smooth flow between profileInfo and smart report
|
|
1218
|
+
$('#content').css({
|
|
1219
|
+
'margin-bottom': '0',
|
|
1220
|
+
'padding-bottom': '0',
|
|
1221
|
+
'margin': '0',
|
|
1222
|
+
'padding': '0'
|
|
1223
|
+
});
|
|
1224
|
+
|
|
1225
|
+
// Also remove spacing from patient-table
|
|
1226
|
+
$('.patient-table').css({
|
|
1227
|
+
'margin-bottom': '0',
|
|
1228
|
+
'padding-bottom': '0',
|
|
1229
|
+
'margin': '0',
|
|
1230
|
+
'padding': '0'
|
|
1231
|
+
});
|
|
1232
|
+
|
|
1233
|
+
// Remove spacing from patient-table children
|
|
1234
|
+
$('.patient-table > *').css({
|
|
1235
|
+
'margin-bottom': '0',
|
|
1236
|
+
'padding-bottom': '0'
|
|
1237
|
+
});
|
|
1238
|
+
} else {
|
|
1239
|
+
// Handle empty tips even when wellbeing data exists
|
|
1240
|
+
if (empty(wellbeingData?.insights?.tips)) {
|
|
1241
|
+
$('.footer-background').remove();
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
// Render patient table
|
|
1246
|
+
if (!empty(profileInfo)) {
|
|
1247
|
+
const patientTableHtml = renderPatientTable(profileInfo, 4);
|
|
1248
|
+
$('.patient-table').html(patientTableHtml);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
// Render doctor details
|
|
1252
|
+
if (!empty(doctorData)) {
|
|
1253
|
+
const doctorDetailsHtml = renderDoctorDetails(doctorData);
|
|
1254
|
+
$('.doctor-details').html(doctorDetailsHtml);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
// Update report info
|
|
1258
|
+
$('.report-info').html(headerInfoHtml);
|
|
1259
|
+
|
|
1260
|
+
// Add smart report if available
|
|
1261
|
+
if (!empty(smartReport)) {
|
|
1262
|
+
let smartReportHtml = generateReportHtml(smartReport, isRtl, false, false, language).html;
|
|
1263
|
+
|
|
1264
|
+
if (shouldHideWellbeingUI) {
|
|
1265
|
+
// Parse and clean smart report HTML to remove page breaks when wellbeing is missing
|
|
1266
|
+
const tempDom = new JSDOM(smartReportHtml);
|
|
1267
|
+
const temp$ = (require('jquery'))(tempDom.window);
|
|
1268
|
+
|
|
1269
|
+
// Remove all .new-page divs that cause page breaks
|
|
1270
|
+
temp$('.new-page').remove();
|
|
1271
|
+
|
|
1272
|
+
// Remove page-break related classes
|
|
1273
|
+
temp$('[class*="page-break"]').removeClass(function (index, className) {
|
|
1274
|
+
return (className.match(/\bpage-break\S*/g) || []).join(' ');
|
|
1275
|
+
});
|
|
1276
|
+
|
|
1277
|
+
// Remove page-break from inline styles
|
|
1278
|
+
temp$('[style*="page-break"]').each(function () {
|
|
1279
|
+
let style = temp$(this).attr('style') || '';
|
|
1280
|
+
style = style.replace(/page-break-before:\s*always[^;]*;?/gi, '');
|
|
1281
|
+
style = style.replace(/page-break-after:\s*always[^;]*;?/gi, '');
|
|
1282
|
+
if (style.trim()) {
|
|
1283
|
+
temp$(this).attr('style', style);
|
|
1284
|
+
} else {
|
|
1285
|
+
temp$(this).removeAttr('style');
|
|
1286
|
+
}
|
|
1287
|
+
});
|
|
1288
|
+
|
|
1289
|
+
// Find the actual content div and extract its inner HTML (unwrap nested content divs)
|
|
1290
|
+
let contentDiv = temp$('body #content, body .content').first();
|
|
1291
|
+
if (contentDiv.length === 0) {
|
|
1292
|
+
// If no content div found, get body content
|
|
1293
|
+
contentDiv = temp$('body');
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
// Unwrap nested content divs and get inner HTML
|
|
1297
|
+
let innerContent = contentDiv.html() || '';
|
|
1298
|
+
|
|
1299
|
+
// Remove wrapper divs (page_template, all-pages) from inner content
|
|
1300
|
+
const innerDom = new JSDOM(`<div>${innerContent}</div>`);
|
|
1301
|
+
const inner$ = (require('jquery'))(innerDom.window);
|
|
1302
|
+
inner$('#page_template, .all-pages').each(function () {
|
|
1303
|
+
inner$(this).replaceWith(inner$(this).html());
|
|
1304
|
+
});
|
|
1305
|
+
|
|
1306
|
+
// Get the cleaned inner HTML
|
|
1307
|
+
smartReportHtml = innerDom.window.document.body.innerHTML || innerContent;
|
|
1308
|
+
|
|
1309
|
+
// Remove any remaining .new-page divs with regex
|
|
1310
|
+
smartReportHtml = smartReportHtml.replace(/<div[^>]*class="[^"]*new-page[^"]*"[^>]*><\/div>/gi, '');
|
|
1311
|
+
smartReportHtml = smartReportHtml.replace(/<div[^>]*class="[^"]*new-page[^"]*"[^>]*>/gi, '');
|
|
1312
|
+
|
|
1313
|
+
// Remove page-break CSS from inline styles
|
|
1314
|
+
smartReportHtml = smartReportHtml.replace(/page-break-before:\s*always[^;]*;?/gi, '');
|
|
1315
|
+
smartReportHtml = smartReportHtml.replace(/page-break-after:\s*always[^;]*;?/gi, '');
|
|
1316
|
+
|
|
1317
|
+
// Remove margins/padding from first div in the content
|
|
1318
|
+
smartReportHtml = smartReportHtml.replace(/(<div[^>]*class="[^"]*content[^"]*"[^>]*)style="([^"]*)"/gi, function (match, tag, style) {
|
|
1319
|
+
style = style.replace(/margin[^:]*:\s*[^;]*;?/gi, '');
|
|
1320
|
+
style = style.replace(/padding[^:]*:\s*[^;]*;?/gi, '');
|
|
1321
|
+
return tag + 'style="' + style + 'margin: 0 !important; padding-top: 0 !important; margin-top: 0 !important;"';
|
|
1322
|
+
});
|
|
1323
|
+
|
|
1324
|
+
// Also remove margin/padding from the first element if it's a div
|
|
1325
|
+
smartReportHtml = smartReportHtml.replace(/^(<div[^>]*)(style="[^"]*")/i, function (match, tag, style) {
|
|
1326
|
+
let newStyle = style.replace(/margin[^:]*:\s*[^;]*;?/gi, '');
|
|
1327
|
+
newStyle = newStyle.replace(/padding[^:]*:\s*[^;]*;?/gi, '');
|
|
1328
|
+
return tag + newStyle.replace('"', 'margin: 0 !important; padding: 0 !important; margin-top: 0 !important; padding-top: 0 !important;"');
|
|
1329
|
+
});
|
|
1330
|
+
|
|
1331
|
+
// Remove the #smart-report container and append content directly to #content
|
|
1332
|
+
// This eliminates any spacing between profileInfo and smart report
|
|
1333
|
+
$('#smart-report').remove();
|
|
1334
|
+
|
|
1335
|
+
// Ensure #content has no bottom spacing
|
|
1336
|
+
$('#content').css({
|
|
1337
|
+
'margin-bottom': '0',
|
|
1338
|
+
'padding-bottom': '0',
|
|
1339
|
+
'margin': '0',
|
|
1340
|
+
'padding': '0'
|
|
1341
|
+
});
|
|
1342
|
+
|
|
1343
|
+
// Remove any whitespace/newlines from the smart report HTML
|
|
1344
|
+
smartReportHtml = smartReportHtml.replace(/^\s+|\s+$/g, '');
|
|
1345
|
+
smartReportHtml = smartReportHtml.replace(/\n\s*\n/g, '\n');
|
|
1346
|
+
|
|
1347
|
+
// Append the cleaned content directly (no whitespace)
|
|
1348
|
+
const lastChild = $('#content').children().last();
|
|
1349
|
+
if (lastChild.length) {
|
|
1350
|
+
// Insert right after the last child with no spacing
|
|
1351
|
+
lastChild.after(smartReportHtml);
|
|
1352
|
+
} else {
|
|
1353
|
+
$('#content').append(smartReportHtml);
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
// Add CSS to prevent any page breaks and spacing on the appended content
|
|
1357
|
+
$('#content').append(`<style>
|
|
1358
|
+
#content {
|
|
1359
|
+
margin-bottom: 0 !important;
|
|
1360
|
+
padding-bottom: 0 !important;
|
|
1361
|
+
}
|
|
1362
|
+
#content > .patient-table {
|
|
1363
|
+
margin-bottom: 0 !important;
|
|
1364
|
+
padding-bottom: 0 !important;
|
|
1365
|
+
}
|
|
1366
|
+
#content > div:last-child,
|
|
1367
|
+
#content > div[id="page_template"],
|
|
1368
|
+
#content > div[class*="all-pages"],
|
|
1369
|
+
#content > div[class*="content"] {
|
|
1370
|
+
page-break-before: auto !important;
|
|
1371
|
+
margin-top: 0 !important;
|
|
1372
|
+
padding-top: 0 !important;
|
|
1373
|
+
margin: 0 !important;
|
|
1374
|
+
padding: 0 !important;
|
|
1375
|
+
}
|
|
1376
|
+
#content > div[class*="content"] > *:first-child {
|
|
1377
|
+
margin-top: 0 !important;
|
|
1378
|
+
padding-top: 0 !important;
|
|
1379
|
+
}
|
|
1380
|
+
.new-page {
|
|
1381
|
+
display: none !important;
|
|
1382
|
+
height: 0 !important;
|
|
1383
|
+
margin: 0 !important;
|
|
1384
|
+
padding: 0 !important;
|
|
1385
|
+
line-height: 0 !important;
|
|
1386
|
+
font-size: 0 !important;
|
|
1387
|
+
}
|
|
1388
|
+
[class*="new-page"] {
|
|
1389
|
+
display: none !important;
|
|
1390
|
+
height: 0 !important;
|
|
1391
|
+
}
|
|
1392
|
+
#page_template,
|
|
1393
|
+
.all-pages {
|
|
1394
|
+
margin: 0 !important;
|
|
1395
|
+
padding: 0 !important;
|
|
1396
|
+
}
|
|
1397
|
+
/* Remove any spacing between patient-table and smart report */
|
|
1398
|
+
.patient-table + div {
|
|
1399
|
+
margin-top: 0 !important;
|
|
1400
|
+
padding-top: 0 !important;
|
|
1401
|
+
}
|
|
1402
|
+
</style>`);
|
|
1403
|
+
} else {
|
|
1404
|
+
$('#smart-report').append(smartReportHtml);
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
// Ensure output directories exist
|
|
1409
|
+
const OUTPUT_DIRECTORY = path.resolve(`${__dirname}/../output`);
|
|
1410
|
+
if (!fs.existsSync(OUTPUT_DIRECTORY)) {
|
|
1411
|
+
fs.mkdirSync(OUTPUT_DIRECTORY);
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1414
|
+
const REQUEST_OUTPUT_DIRECTORY = path.resolve(`${__dirname}/../output/request`);
|
|
1415
|
+
if (!fs.existsSync(REQUEST_OUTPUT_DIRECTORY)) {
|
|
1416
|
+
fs.mkdirSync(REQUEST_OUTPUT_DIRECTORY);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
// Replace footer border color placeholder for PHA
|
|
1420
|
+
let finalHtml = dom.serialize();
|
|
1421
|
+
if (client.toLowerCase() === 'pha') {
|
|
1422
|
+
finalHtml = finalHtml.replace(/\{\{footerBorderColor\}\}/g, config.footer_border_color);
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
// Write file
|
|
1426
|
+
await promisify(fs.writeFile)(OUT_FILE, finalHtml);
|
|
1427
|
+
|
|
1428
|
+
return {
|
|
1429
|
+
html: finalHtml,
|
|
1430
|
+
outputFile: OUT_FILE,
|
|
1431
|
+
header: renderedHeader,
|
|
1432
|
+
footer: templates.footer,
|
|
1433
|
+
historyData,
|
|
1434
|
+
profileInfo,
|
|
1435
|
+
language,
|
|
1436
|
+
pdfHeader: cleanStyledHeader(renderedPdfHeader, profileInfo, language, clientName, selectedLabs, showHeaderLogo)
|
|
1437
|
+
};
|
|
1438
|
+
};
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Launch Puppeteer browser with standard configuration
|
|
1442
|
+
* @returns {object} Browser instance
|
|
1443
|
+
*/
|
|
1444
|
+
const launchBrowser = async () => {
|
|
1445
|
+
return await puppeteer.launch({
|
|
1446
|
+
args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"],
|
|
1447
|
+
headless: true,
|
|
1448
|
+
defaultViewport: null
|
|
1449
|
+
});
|
|
1450
|
+
};
|
|
1451
|
+
|
|
1452
|
+
/**
|
|
1453
|
+
* Setup page with content and dependencies
|
|
1454
|
+
* @param {object} page - Puppeteer page instance
|
|
1455
|
+
* @param {string} contentHtml - HTML content to load
|
|
1456
|
+
* @param {string} filePath - File path for navigation
|
|
1457
|
+
* @returns {object} Configured page
|
|
1458
|
+
*/
|
|
1459
|
+
const setupPageContent = async (page, contentHtml, filePath) => {
|
|
1460
|
+
await page.setContent(contentHtml, { waitUntil: 'networkidle2' });
|
|
1461
|
+
await page.evaluateHandle('document.fonts.ready');
|
|
1462
|
+
await page.addScriptTag({ url: 'https://code.jquery.com/jquery-3.3.1.min.js' });
|
|
1463
|
+
|
|
1464
|
+
debugLog("fonts loaded!");
|
|
1465
|
+
|
|
1466
|
+
await page.setContent(contentHtml, { waitUntil: 'networkidle2' });
|
|
1467
|
+
await page.goto(`file:///${path.resolve(__dirname + `/../${filePath}`)}`, {
|
|
1468
|
+
timeout: 30000000,
|
|
1469
|
+
waitUntil: 'networkidle2'
|
|
1470
|
+
}).catch(e => {
|
|
1471
|
+
console.log("ERROR IS File path: " + e.message);
|
|
1472
|
+
});
|
|
1473
|
+
|
|
1474
|
+
return page;
|
|
1475
|
+
};
|
|
1476
|
+
|
|
1477
|
+
/**
|
|
1478
|
+
* Generate PDF from HTML content (simple wellbeing report)
|
|
1479
|
+
* @param {object} data - Data containing HTML and output file info
|
|
1480
|
+
* @returns {Buffer} PDF buffer
|
|
1481
|
+
*/
|
|
1482
|
+
let generatePDFWellbeingReport = async (data) => {
|
|
1483
|
+
try {
|
|
1484
|
+
const contentHtml = data.html;
|
|
1485
|
+
OUT_FILE = data.outputFile;
|
|
1486
|
+
|
|
1487
|
+
// Launch browser and setup page
|
|
1488
|
+
const browser = await launchBrowser();
|
|
1489
|
+
const page = await browser.newPage();
|
|
1490
|
+
debugLog("page launched!");
|
|
1491
|
+
|
|
1492
|
+
// Setup content
|
|
1493
|
+
await setupPageContent(page, contentHtml, Pdf_file);
|
|
1494
|
+
debugLog("page opened!");
|
|
1495
|
+
|
|
1496
|
+
// Generate PDF
|
|
1497
|
+
const buffer = await page.pdf({
|
|
1498
|
+
width: "210mm",
|
|
1499
|
+
height: "297mm",
|
|
1500
|
+
pageRanges: '1',
|
|
1501
|
+
printBackground: true,
|
|
1502
|
+
displayHeaderFooter: true,
|
|
1503
|
+
margin: {
|
|
1504
|
+
top: 0,
|
|
1505
|
+
bottom: 0
|
|
1506
|
+
}
|
|
1507
|
+
});
|
|
1508
|
+
|
|
1509
|
+
debugLog("Buffer loaded!");
|
|
1510
|
+
|
|
1511
|
+
await browser.close();
|
|
1512
|
+
return buffer;
|
|
1513
|
+
} catch (e) {
|
|
1514
|
+
debugLog("ERROR!: ", e);
|
|
1515
|
+
return "";
|
|
1516
|
+
}
|
|
1517
|
+
};
|
|
1518
|
+
|
|
1519
|
+
const cleanStyledHeader = (html, profileInfo, language = 'ar', clientName = 'mediclinic', selectedLabs = [], showLogoInHeader = true) => {
|
|
1520
|
+
const dom = new JSDOM(html);
|
|
1521
|
+
const document = dom.window.document;
|
|
1522
|
+
const logo = document.querySelector("img.report-logo");
|
|
1523
|
+
const allClientLabs = config.labs_logos;
|
|
1524
|
+
console.log('selected labs : ', selectedLabs);
|
|
1525
|
+
const addedLogos = Object.keys(allClientLabs).filter(lab =>
|
|
1526
|
+
selectedLabs?.some(otherLab => otherLab.toLowerCase() === lab.toLowerCase())
|
|
1527
|
+
);
|
|
1528
|
+
console.log('added logos', addedLogos);
|
|
1529
|
+
const logoSrc = logo?.src || "";
|
|
1530
|
+
const headerTitle = document.querySelector(".client-name")?.textContent?.trim() || "";
|
|
1531
|
+
const fontFamily = language.startsWith('ar') ? 'Cairo' : 'Open Sans';
|
|
1532
|
+
const dir = language.startsWith('ar') ? 'rtl' : 'ltr';
|
|
1533
|
+
let pdfHeaderData = "";
|
|
1534
|
+
|
|
1535
|
+
const headerStylesCustomization = () => {
|
|
1536
|
+
let logoStyle = 'width:130px;height:40px;margin:0 8px;';
|
|
1537
|
+
let titleStyle = `font-family: ${fontFamily};font-weight: 700;font-style: Bold;font-size: 14px;line-height: 100%;letter-spacing: 0;text-transform: uppercase;`;
|
|
1538
|
+
|
|
1539
|
+
if (clientName.toLocaleLowerCase() == 'mediclinic') {
|
|
1540
|
+
logoStyle = 'width: 92px;height: 28px;';
|
|
1541
|
+
titleStyle = titleStyle;
|
|
1542
|
+
} else if (clientName.toLocaleLowerCase() == 'pha') {
|
|
1543
|
+
// Fixed height with flexible width, but constrained
|
|
1544
|
+
logoStyle = 'max-height: 32px; max-width: 60px; width: auto; object-fit: contain; display: block;margin:0 4px;';
|
|
1545
|
+
titleStyle = `font-family: ${fontFamily};font-weight: 500;font-style: Bold;font-size: 12px;line-height: 100%;letter-spacing: 0;text-transform: uppercase;`;
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
return {
|
|
1549
|
+
logoStyle,
|
|
1550
|
+
titleStyle
|
|
1551
|
+
};
|
|
1552
|
+
};
|
|
1553
|
+
|
|
1554
|
+
for (let index = 0; index < 4; index++) {
|
|
1555
|
+
const element = profileInfo[index];
|
|
1556
|
+
if (element) {
|
|
1557
|
+
pdfHeaderData += `
|
|
1558
|
+
<div style="display: flex; align-items: center; justify-content: center; text-align: center;padding: 4px;">
|
|
1559
|
+
<span style="font-weight: 500;font-style: normal;font-size: 8px;leading-trim: NONE;line-height: 100%;letter-spacing: 0;">
|
|
1560
|
+
${element.title}:
|
|
1561
|
+
</span>
|
|
1562
|
+
<span style="width: 4px;"></span>
|
|
1563
|
+
<span style="font-weight: 300;font-size: 8px;color: ${config.colors.headerText};leading-trim: NONE;line-height: 100%;letter-spacing: 0;">
|
|
1564
|
+
${element.value}
|
|
1565
|
+
</span>
|
|
1566
|
+
</div>
|
|
1567
|
+
`;
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
// the images should be in the same height and width 92x61
|
|
1572
|
+
const styles = headerStylesCustomization();
|
|
1573
|
+
const logoSection = showLogoInHeader && logoSrc ? `
|
|
1574
|
+
<div style="display: flex; gap: 12px; align-items: center;">
|
|
1575
|
+
<img src="${logoSrc}" alt="Logo" style="${styles?.logoStyle || ""}" />
|
|
1576
|
+
${addedLogos.length > 0 ? addedLogos.map(lab =>
|
|
1577
|
+
(!!lab && !!allClientLabs[lab])
|
|
1578
|
+
? `<img src="${allClientLabs[lab]}" style="${styles?.logoStyle || ""}" />`
|
|
1579
|
+
: ''
|
|
1580
|
+
).join('') : ''}
|
|
1581
|
+
</div>
|
|
1582
|
+
` : '';
|
|
1583
|
+
|
|
1584
|
+
return `
|
|
1585
|
+
<style>
|
|
1586
|
+
html { -webkit-print-color-adjust: exact; margin-bottom: 10px}
|
|
1587
|
+
</style>
|
|
1588
|
+
<div style="font-family: '${fontFamily}', sans-serif; direction: ${dir}; width: 100%;margin-left: 20px;margin-right: 20px;margin-bottom: 20px;">
|
|
1589
|
+
<div style="width: 100%; display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;gap: 12px;">
|
|
1590
|
+
${logoSection}
|
|
1591
|
+
<div style="${styles?.titleStyle || ""}">
|
|
1592
|
+
${headerTitle.toUpperCase()}
|
|
1593
|
+
</div>
|
|
1594
|
+
</div>
|
|
1595
|
+
<!-- Info Row -->
|
|
1596
|
+
<div style="
|
|
1597
|
+
padding: 2px 10px;
|
|
1598
|
+
background-color: ${config.colors.headerBackground};
|
|
1599
|
+
display: flex;
|
|
1600
|
+
justify-content: space-between;
|
|
1601
|
+
align-items: center;
|
|
1602
|
+
overflow: hidden;
|
|
1603
|
+
margin-bottom: 5px;
|
|
1604
|
+
">
|
|
1605
|
+
${pdfHeaderData}
|
|
1606
|
+
</div>
|
|
1607
|
+
<div style="width: 100%; height: 1px; background-color: ${config.colors.headerDivider}; margin: 6px 0 10px 0;"></div>
|
|
1608
|
+
</div>
|
|
1609
|
+
`;
|
|
1610
|
+
};
|
|
1611
|
+
|
|
1612
|
+
/**
|
|
1613
|
+
* Get PDF footer template HTML (client-specific contact info)
|
|
1614
|
+
* @param {string} [client='mediclinic'] - Client identifier: 'mediclinic' | 'pha' | other
|
|
1615
|
+
* @returns {string} Footer template HTML
|
|
1616
|
+
*/
|
|
1617
|
+
const getPdfFooterTemplate = (client = 'mediclinic') => {
|
|
1618
|
+
const clientKey = (client || 'mediclinic').toLocaleLowerCase();
|
|
1619
|
+
let contactBlock = '';
|
|
1620
|
+
if (clientKey === 'mediclinic') {
|
|
1621
|
+
contactBlock = `
|
|
1622
|
+
<div style="font-family: 'Open Sans', sans-serif; font-feature-settings: 'tnum';">Telephone: 800 20 33</div>
|
|
1623
|
+
<div style="font-family: 'Open Sans', sans-serif;">Email: info@mediclinic.ae</div>`;
|
|
1624
|
+
} else if (clientKey === 'pha') {
|
|
1625
|
+
contactBlock = `
|
|
1626
|
+
<div style="font-family: 'Open Sans', sans-serif; font-feature-settings: 'tnum';">Telephone: (877) 345-7775</div>
|
|
1627
|
+
<div style="font-family: 'Open Sans', sans-serif;">Email: processing@wellness-partners.org</div>`;
|
|
1628
|
+
} else {
|
|
1629
|
+
contactBlock = `
|
|
1630
|
+
<div style="font-family: 'Open Sans', sans-serif;"> </div>`;
|
|
1631
|
+
}
|
|
1632
|
+
return `
|
|
1633
|
+
<div style="width: 100%; font-size:7.3px; color: ${config.colors.footerText}; padding: 0 20px; box-sizing: border-box; display: flex; justify-content: space-between; align-items: center; font-family: 'Open Sans', sans-serif;">
|
|
1634
|
+
<div style="display: flex; align-items: center;font-family: 'Open Sans', sans-serif;">
|
|
1635
|
+
<span style="font-style: italic; font-family: 'Open Sans', sans-serif;">Page
|
|
1636
|
+
<span class="pageNumber" style="font-family: 'Open Sans', sans-serif; font-feature-settings: 'tnum';"></span>
|
|
1637
|
+
of
|
|
1638
|
+
<span class="totalPages" style="font-family: 'Open Sans', sans-serif; font-feature-settings: 'tnum';"></span>
|
|
1639
|
+
</span>
|
|
1640
|
+
</div>
|
|
1641
|
+
<div style="display: flex; flex-direction: column; align-items: flex-end; font-family: 'Open Sans', sans-serif;">
|
|
1642
|
+
${contactBlock}
|
|
1643
|
+
</div>
|
|
1644
|
+
</div>
|
|
1645
|
+
`;
|
|
1646
|
+
};
|
|
1647
|
+
|
|
1648
|
+
/**
|
|
1649
|
+
* Launch browser for extended PDF with font optimization
|
|
1650
|
+
* @returns {object} Browser instance
|
|
1651
|
+
*/
|
|
1652
|
+
const launchExtendedBrowser = async () => {
|
|
1653
|
+
return await puppeteer.launch({
|
|
1654
|
+
args: [
|
|
1655
|
+
"--no-sandbox",
|
|
1656
|
+
"--disable-setuid-sandbox",
|
|
1657
|
+
"--font-render-hinting=none",
|
|
1658
|
+
"--force-color-profile=srgb",
|
|
1659
|
+
"--disable-web-security"
|
|
1660
|
+
],
|
|
1661
|
+
headless: true,
|
|
1662
|
+
defaultViewport: null
|
|
1663
|
+
});
|
|
1664
|
+
};
|
|
1665
|
+
|
|
1666
|
+
/**
|
|
1667
|
+
* Setup page for extended PDF report
|
|
1668
|
+
* @param {object} page - Puppeteer page instance
|
|
1669
|
+
* @param {string} contentHtml - HTML content
|
|
1670
|
+
* @param {string} filePath - File path for navigation
|
|
1671
|
+
* @returns {object} Configured page
|
|
1672
|
+
*/
|
|
1673
|
+
const setupExtendedPageContent = async (page, contentHtml, filePath) => {
|
|
1674
|
+
await page.evaluateHandle('document.fonts.ready');
|
|
1675
|
+
await page.evaluate(() => {
|
|
1676
|
+
const usedFonts = Array.from(document.fonts).map(f => f.family);
|
|
1677
|
+
console.log('Fonts in use:', usedFonts);
|
|
1678
|
+
});
|
|
1679
|
+
await page.screenshot({ encoding: 'binary' });
|
|
1680
|
+
|
|
1681
|
+
debugLog("page launched & fonts loaded!");
|
|
1682
|
+
|
|
1683
|
+
await page.addScriptTag({ url: 'https://code.jquery.com/jquery-3.3.1.min.js' });
|
|
1684
|
+
await page.setContent(contentHtml, { waitUntil: 'networkidle2', timeout: 30000 });
|
|
1685
|
+
await page.goto(`file:///${path.resolve(__dirname + `/../${filePath}`)}`, {
|
|
1686
|
+
timeout: 30000000,
|
|
1687
|
+
waitUntil: 'networkidle2'
|
|
1688
|
+
}).catch(e => {
|
|
1689
|
+
console.log("ERROR IS File path: " + e.message);
|
|
1690
|
+
});
|
|
1691
|
+
|
|
1692
|
+
return page;
|
|
1693
|
+
};
|
|
1694
|
+
|
|
1695
|
+
/**
|
|
1696
|
+
* Generate PDF from HTML content (extended report with header/footer)
|
|
1697
|
+
* @param {object} data - Data containing HTML, header, and output file info
|
|
1698
|
+
* @returns {Buffer} PDF buffer
|
|
1699
|
+
*/
|
|
1700
|
+
const generatePDFReport = async (data, hideWellbeingUI = false) => {
|
|
1701
|
+
try {
|
|
1702
|
+
const contentHtml = data.html;
|
|
1703
|
+
const OUT_FILE = data.outputFile;
|
|
1704
|
+
const footerTemplate = getPdfFooterTemplate(data.client);
|
|
1705
|
+
|
|
1706
|
+
// Launch browser and setup page
|
|
1707
|
+
const browser = await launchExtendedBrowser();
|
|
1708
|
+
const page = await browser.newPage();
|
|
1709
|
+
|
|
1710
|
+
// Setup content
|
|
1711
|
+
await setupExtendedPageContent(page, contentHtml, Pdf_file);
|
|
1712
|
+
|
|
1713
|
+
// Generate PDF with header and footer
|
|
1714
|
+
const buffer = await page.pdf({
|
|
1715
|
+
format: 'A4',
|
|
1716
|
+
displayHeaderFooter: true,
|
|
1717
|
+
footerTemplate,
|
|
1718
|
+
headerTemplate: data.pdfHeader,
|
|
1719
|
+
width: "220mm",
|
|
1720
|
+
margin: {
|
|
1721
|
+
top: '125px',
|
|
1722
|
+
bottom: '50px',
|
|
1723
|
+
left: '20px',
|
|
1724
|
+
right: '20px'
|
|
1725
|
+
},
|
|
1726
|
+
printBackground: true
|
|
1727
|
+
});
|
|
1728
|
+
|
|
1729
|
+
await browser.close();
|
|
1730
|
+
return buffer;
|
|
1731
|
+
} catch (e) {
|
|
1732
|
+
debugLog("ERROR!: ", e);
|
|
1733
|
+
return "";
|
|
1734
|
+
}
|
|
1735
|
+
};
|
|
1736
|
+
|
|
1737
|
+
const isEmpty = (obj) => {
|
|
1738
|
+
for (let key in obj) {
|
|
1739
|
+
if (obj.hasOwnProperty(key)) return false;
|
|
1740
|
+
}
|
|
1741
|
+
return true;
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
const empty = (value) => {
|
|
1745
|
+
return (typeof value === "undefined" || typeof value === 'undefined' || typeof value === undefined || value === null || value === '' || value === "" || value.length === 0 || value === 'undefined') || (typeof value === 'object' && Object.keys(value).length === 0);
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
const renderDetails = (list) => {
|
|
1749
|
+
if (list.length === 1 && empty(list[0].children)) {
|
|
1750
|
+
return (`<li>${list[0].content.substring(list[0].sepCount, list[0].content.length + 1)}</li>`)
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
const columns = []
|
|
1754
|
+
|
|
1755
|
+
list.forEach((child) => {
|
|
1756
|
+
let div = '';
|
|
1757
|
+
if (empty(child.children)) {
|
|
1758
|
+
div = `<li>${child.content.substring(child.sepCount, child.content.length + 1)}</li>`
|
|
1759
|
+
} else {
|
|
1760
|
+
div = `<li>${child.content.substring(child.sepCount, child.content.length + 1)}</li><ul>${renderDetails(child.children)}</ul>`
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
if (!empty(div)) {
|
|
1764
|
+
columns.push(div);
|
|
1765
|
+
}
|
|
1766
|
+
});
|
|
1767
|
+
|
|
1768
|
+
return !empty(columns) ? columns.join('') : null;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
/**
|
|
1773
|
+
* Render score list elements for a given category
|
|
1774
|
+
* @param {string} key - Category key (body, lifeStyle, mind, healthRisk)
|
|
1775
|
+
* @param {object} partScores - Part scores data
|
|
1776
|
+
* @returns {string} Rendered score list HTML
|
|
1777
|
+
*/
|
|
1778
|
+
const renderScoreListElements = (key, partScores) => {
|
|
1779
|
+
if (isEmpty(partScores) || !partScores[key]) {
|
|
1780
|
+
return '<ul class="score-list"></ul>';
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
const elements = partScores[key].map((item) => {
|
|
1784
|
+
const iconName = item['icon'].split(".png")[0];
|
|
1785
|
+
const icon = icons[iconName];
|
|
1786
|
+
const color = config.colors.listIcon;
|
|
1787
|
+
const score = key === 'healthRisk'
|
|
1788
|
+
? item['scoreText']
|
|
1789
|
+
: `${item['score']}/${item['base']}`;
|
|
1790
|
+
|
|
1791
|
+
return `
|
|
1792
|
+
<li class='list-item'>
|
|
1793
|
+
<svg fill-rule="evenodd" clip-rule="evenodd" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 30 30">
|
|
1794
|
+
<g fill="none" fillRule="evenodd">
|
|
1795
|
+
<g fill='${color}' stroke='${color}' strokeOpacity={0.2} fillRule="nonzero">
|
|
1796
|
+
<path d='${icon}'/>
|
|
1797
|
+
</g>
|
|
1798
|
+
</g>
|
|
1799
|
+
</svg>
|
|
1800
|
+
<div class='list-text'>${item.name}</div>
|
|
1801
|
+
<div class='list-score'>${score}</div>
|
|
1802
|
+
</li>
|
|
1803
|
+
`;
|
|
1804
|
+
}).join('');
|
|
1805
|
+
|
|
1806
|
+
return `<ul class='score-list'>${elements}</ul>`;
|
|
1807
|
+
};
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+
/**
|
|
1811
|
+
* Render all score items with charts
|
|
1812
|
+
* @param {object} allScores - All scores object
|
|
1813
|
+
* @param {object} partScores - Part scores data
|
|
1814
|
+
* @returns {string} Rendered HTML for all score items
|
|
1815
|
+
*/
|
|
1816
|
+
const renderItems = (allScores, partScores) => {
|
|
1817
|
+
if (isEmpty(allScores)) {
|
|
1818
|
+
return '';
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
const numberWords = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
|
|
1822
|
+
|
|
1823
|
+
const itemsHtml = Object.entries(allScores).map(([key, value]) => {
|
|
1824
|
+
if (empty(partScores[key])) {
|
|
1825
|
+
return '';
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
const itemCount = Object.entries(allScores[key]).length;
|
|
1829
|
+
const numberOfE = numberWords[itemCount] || itemCount.toString();
|
|
1830
|
+
const topOffset = itemCount * 30 / 2;
|
|
1831
|
+
const top = `calc(50% - ${topOffset}px)`;
|
|
1832
|
+
|
|
1833
|
+
const circleContainer = key !== "healthRisk"
|
|
1834
|
+
? `<div id='${key}' class="circle-container"></div>`
|
|
1835
|
+
: '';
|
|
1836
|
+
|
|
1837
|
+
return `
|
|
1838
|
+
<div key='${key}' class='percentage-meter-content center'>
|
|
1839
|
+
<div class='svg-container'>
|
|
1840
|
+
${circleContainer}
|
|
1841
|
+
<div class='chart-title'>
|
|
1842
|
+
<span class='score-details-title'>${localeService.t(key)}</span>
|
|
1843
|
+
</div>
|
|
1844
|
+
</div>
|
|
1845
|
+
<div class='element-list ${numberOfE}' style='top:${top}'>
|
|
1846
|
+
${renderScoreListElements(key, partScores)}
|
|
1847
|
+
</div>
|
|
1848
|
+
</div>
|
|
1849
|
+
`;
|
|
1850
|
+
}).join('');
|
|
1851
|
+
|
|
1852
|
+
return itemsHtml;
|
|
1853
|
+
};
|
|
1854
|
+
|
|
1855
|
+
/**
|
|
1856
|
+
* Render insight tips for a specific category
|
|
1857
|
+
* @param {array} tips - Array of tip objects
|
|
1858
|
+
* @param {string} clientName - Client type (e.g., 'Mediclinic')
|
|
1859
|
+
* @returns {string} Rendered tips HTML
|
|
1860
|
+
*/
|
|
1861
|
+
const renderInsightTips = (tips, clientName) => {
|
|
1862
|
+
if (empty(tips)) {
|
|
1863
|
+
return '';
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
const partImages = clientName.toLowerCase() === 'pha' ? {
|
|
1867
|
+
1: config.lifestyleImage,
|
|
1868
|
+
2: config.bodyImage,
|
|
1869
|
+
3: config.mindImage
|
|
1870
|
+
} : {
|
|
1871
|
+
1: config.lifestyleImage,
|
|
1872
|
+
2: config.mindImage,
|
|
1873
|
+
3: config.bodyImage
|
|
1874
|
+
};
|
|
1875
|
+
|
|
1876
|
+
const partTitles = clientName.toLowerCase() === 'pha' ? {
|
|
1877
|
+
1: localeService.t('lifeStyle'),
|
|
1878
|
+
2: localeService.t('body'),
|
|
1879
|
+
3: localeService.t('mind')
|
|
1880
|
+
} : {
|
|
1881
|
+
1: localeService.t('lifeStyle'),
|
|
1882
|
+
2: localeService.t('mind'),
|
|
1883
|
+
3: localeService.t('body')
|
|
1884
|
+
};
|
|
1885
|
+
|
|
1886
|
+
if (clientName === 'Mediclinic' || clientName.toLowerCase() === 'pha') {
|
|
1887
|
+
const tip = tips[0];
|
|
1888
|
+
const tipImage = partImages[tip.partId] || '';
|
|
1889
|
+
const translatedTitle = partTitles[tip.partId] || '';
|
|
1890
|
+
|
|
1891
|
+
const tipContents = tips.map((t, index) => {
|
|
1892
|
+
const color = index === 0 ? config.colors.insightPrimary : config.colors.insightSecondary;
|
|
1893
|
+
return `<div class="insight-content" style="color: ${color};">${t.content}</div>`;
|
|
1894
|
+
}).join('');
|
|
1895
|
+
|
|
1896
|
+
return `
|
|
1897
|
+
<div class="insight-wrapper">
|
|
1898
|
+
<div class="insight-header">
|
|
1899
|
+
<div class="insight-icon">
|
|
1900
|
+
<img src="${tipImage}" alt="${translatedTitle}" />
|
|
1901
|
+
</div>
|
|
1902
|
+
<div class="insight-title">${translatedTitle}</div>
|
|
1903
|
+
</div>
|
|
1904
|
+
${tipContents}
|
|
1905
|
+
</div>
|
|
1906
|
+
`;
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
// Default rendering for other clients
|
|
1910
|
+
return tips.map((tip, index) => {
|
|
1911
|
+
const isFirst = index === 0;
|
|
1912
|
+
const tipImage = isFirst ? (partImages[tip.partId] || '') : '';
|
|
1913
|
+
const insightClass = isFirst ? 'insight-container-with-img' : 'insight-container-without-img';
|
|
1914
|
+
const tipsTextClass = isFirst ? 'first-level-font-color' : '';
|
|
1915
|
+
const imageHtml = isFirst ? `<div class='chunk-image'><img class='chunk-image-mind' src='${tipImage}'/></div>` : '';
|
|
1916
|
+
|
|
1917
|
+
return `
|
|
1918
|
+
<div class='insight-container ${insightClass}'>
|
|
1919
|
+
<div class='tips-text ${tipsTextClass}'>${tip.content}</div>
|
|
1920
|
+
${imageHtml}
|
|
1921
|
+
</div>
|
|
1922
|
+
`;
|
|
1923
|
+
}).join('');
|
|
1924
|
+
};
|
|
1925
|
+
|
|
1926
|
+
function generateReportHtml(data, isRtl, isRectified, isIMCLab, currentLanguage) {
|
|
1927
|
+
let detailsViewClass = data.showCompactView ? "" : "one-page";
|
|
1928
|
+
let htmlContent = "";
|
|
1929
|
+
if (data.showCompactView) {
|
|
1930
|
+
let isCompactView = true;
|
|
1931
|
+
htmlContent += `<div id="content" class="content compact-view-content"> <p class="resume-title">${localeService.t('testResultTitle')}</p>`;
|
|
1932
|
+
if (isRectified) {
|
|
1933
|
+
htmlContent += `<div class="rectified-title-icon">
|
|
1934
|
+
<table>
|
|
1935
|
+
<tr>
|
|
1936
|
+
<td>
|
|
1937
|
+
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 12" width="20" height="20">
|
|
1938
|
+
<style>
|
|
1939
|
+
.s0 { fill: ${config.colors.warningIcon} }
|
|
1940
|
+
</style>
|
|
1941
|
+
<path id="Layer" class="s0" d="m0.7 0.6q-0.1 0-0.1 0.1v8.8q0 0.1 0.1 0.1h3.1l-0.6 0.6h-2.5c-0.4 0-0.7-0.3-0.7-0.7v-8.8c0-0.4 0.3-0.7 0.7-0.7h6.2c0.4 0 0.7 0.3 0.7 0.7v5l-0.6 0.6v-5.6q0-0.1-0.1-0.1z" />
|
|
1942
|
+
<path id="Layer" class="s0" d="m9.9 5.4c0.1 0.2 0.1 0.4 0 0.5l-5.5 5.5l-1.6 0.6l0.6-1.6l5.5-5.6c0.1-0.1 0.3-0.1 0.4 0z" />
|
|
1943
|
+
</svg>
|
|
1944
|
+
</td>
|
|
1945
|
+
<td>
|
|
1946
|
+
<span>${localeService.t('Rectified value')}</span>
|
|
1947
|
+
</td>
|
|
1948
|
+
</tr>
|
|
1949
|
+
</table>
|
|
1950
|
+
</div>`;
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
htmlContent += renderReportItems(data.items, isCompactView, isRtl, isRectified);
|
|
1954
|
+
let forPatient = data.forPatient || false;
|
|
1955
|
+
|
|
1956
|
+
if (data.customRangeAllergyItems && data.customRangeAllergyItems.length > 0) {
|
|
1957
|
+
htmlContent += renderReportItems(data.customRangeAllergyItems, isCompactView, isRtl, isRectified, false, [], forPatient);
|
|
1958
|
+
} else if (data.allergyItems && data.allergyItems.length > 0) {
|
|
1959
|
+
data.customRangeAllergyItems = [data.allergyItems[0]];
|
|
1960
|
+
htmlContent += renderReportItems(data.customRangeAllergyItems, isCompactView, isRtl, isRectified, false, [], forPatient);
|
|
1961
|
+
}
|
|
1962
|
+
if (data.allergyClasses && data.allergyItems && data.allergyItems.length > 0) {
|
|
1963
|
+
htmlContent += renderAllergyClasses(data.allergyClasses, isRtl);
|
|
1964
|
+
}
|
|
1965
|
+
htmlContent += '</div>';
|
|
1966
|
+
}
|
|
1967
|
+
htmlContent += `<div id="content" class="content ${detailsViewClass}">`;
|
|
1968
|
+
if (data.allergyItems && data.allergyItems.length > 0) {
|
|
1969
|
+
let isAllergyItem = true;
|
|
1970
|
+
htmlContent += renderReportItems(data.allergyItems, false, isRtl, isRectified, isAllergyItem, data.allergyClasses, forPatient);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
if (data.showDetailsView) {
|
|
1974
|
+
let isCompactView = false;
|
|
1975
|
+
let checkPanelsInDetails = find(data.items, 'showInDetailsView', true);
|
|
1976
|
+
if (checkPanelsInDetails) {
|
|
1977
|
+
htmlContent += '<div class="new-page"></div><div class="all-details-section">';
|
|
1978
|
+
htmlContent += `<p class="resume-title">${localeService.t('Details')}</p>`;
|
|
1979
|
+
htmlContent += '<div id="twoColumnsContent" class="details-block">';
|
|
1980
|
+
htmlContent += renderReportItems(data.items, isCompactView, isRtl, isRectified);
|
|
1981
|
+
htmlContent += '</div></div>';
|
|
1982
|
+
}
|
|
1983
|
+
}
|
|
1984
|
+
htmlContent += renderSummary(data, isRtl);
|
|
1985
|
+
htmlContent += renderReportSummary(data, isIMCLab);
|
|
1986
|
+
htmlContent += '</div>';
|
|
1987
|
+
let html = renderHTMLTemplate(htmlContent, isRtl, data, isIMCLab, currentLanguage);
|
|
1988
|
+
return {
|
|
1989
|
+
html: html, isIMCLab: isIMCLab
|
|
1990
|
+
};
|
|
1991
|
+
}
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
module.exports = {
|
|
1995
|
+
generatePDFReport,
|
|
1996
|
+
generatePDFWellbeingReport,
|
|
1997
|
+
generateHTMLWellbeingReport,
|
|
1998
|
+
generateHTMLWellbeingReportWithSmartReport
|
|
1994
1999
|
};
|