@medicus.ai/medicus-report-pdf-generator 1.3.14 → 1.3.16

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.
Files changed (169) hide show
  1. package/.vscode/settings.json +3 -3
  2. package/README.md +26 -26
  3. package/app/i18n.config.js +20 -20
  4. package/app/i18n_wellbeing.config.js +20 -20
  5. package/app/services/localeService.js +28 -28
  6. package/assets/Mediclinic/css/nasco_report.css +6297 -6297
  7. package/assets/Mediclinic/css/nasco_report_rtl.css +851 -851
  8. package/assets/Mediclinic/css/style.css +33 -33
  9. package/assets/Mediclinic/js/js.js +112 -112
  10. package/assets/Mediclinic/js/raphael.js +8437 -8437
  11. package/assets/arabic.css +275 -275
  12. package/assets/charts.min.js +7 -7
  13. package/assets/corporate_report/css/report.css +582 -582
  14. package/assets/corporate_report/css/report_rtl.css +144 -144
  15. package/assets/corporate_report/js/js.js +14 -14
  16. package/assets/data/data.json +124 -124
  17. package/assets/data/data2.json +675 -675
  18. package/assets/data/pdf_data_with_history.json +1255 -1255
  19. package/assets/doctor-note-insight-icon.svg +11 -11
  20. package/assets/imc/css/style.css +61 -61
  21. package/assets/jquery-1.4.min.js +151 -151
  22. package/assets/jquery-2.1.0.min.js +3 -3
  23. package/assets/js.js +201 -201
  24. package/assets/medicus_pdf/arabic.css +444 -444
  25. package/assets/medicus_pdf/styles.css +2427 -2427
  26. package/assets/print.css +4 -4
  27. package/assets/qr-code-style.css +68 -68
  28. package/assets/qrcode.min.js +3 -3
  29. package/assets/raphael-min.js +10 -10
  30. package/assets/sanusx/css/sanusx_report.css +707 -707
  31. package/assets/sizing.js +2 -2
  32. package/assets/styles.css +1545 -1545
  33. package/assets/styles.min.css +1358 -1358
  34. package/assets/translation.js +30 -30
  35. package/assets/wellbeing/css/nasco_report.css +3472 -3472
  36. package/assets/wellbeing/css/nasco_report_rtl.css +679 -679
  37. package/assets/wellbeing/js/js.js +111 -111
  38. package/assets/wellbeing/js/raphael.js +8437 -8437
  39. package/base64/cairo-font.js +2 -2
  40. package/config/Mediclinic.json +37 -37
  41. package/config/Najeeb.ai.json +35 -35
  42. package/config/Pha.json +64 -64
  43. package/config/bionext.json +37 -37
  44. package/config/default.json +35 -35
  45. package/config/diagnostikare.json +34 -34
  46. package/config/maisonsante.json +39 -39
  47. package/config/nasco.json +35 -35
  48. package/config/sanitas.json +35 -35
  49. package/config/sanusx.json +34 -34
  50. package/config/test.txt +4 -4
  51. package/data converter.js +53 -53
  52. package/downloadfile.js +6 -6
  53. package/example.txt +1188 -1188
  54. package/index.js +481 -481
  55. package/lib/big_integral_questionnaire.js +367 -298
  56. package/lib/corporate_report_generator.js +399 -399
  57. package/lib/pdf_generator.min.js +525 -525
  58. package/lib/sanusx_report_generator.js +533 -533
  59. package/lib/sendEmail.js +343 -343
  60. package/lib/template.js +2227 -2227
  61. package/lib/wellbeing_report_generator.js +2164 -2134
  62. package/locales/ar-AE.json +169 -169
  63. package/locales/ar-SA.json +169 -169
  64. package/locales/ar.json +397 -397
  65. package/locales/de.json +169 -169
  66. package/locales/en.json +229 -229
  67. package/locales/fr.json +168 -168
  68. package/locales/pt.json +165 -165
  69. package/locales/wellbeing/ar-AE.json +149 -149
  70. package/locales/wellbeing/ar-SA.json +257 -257
  71. package/locales/wellbeing/de.json +301 -301
  72. package/locales/wellbeing/en.json +423 -423
  73. package/locales/wellbeing/es.json +133 -133
  74. package/locales/wellbeing/fr.json +121 -121
  75. package/locales/wellbeing/it-IT.json +121 -121
  76. package/locales/wellbeing/pt.json +121 -121
  77. package/locales/wellbeing/tr.json +121 -121
  78. package/locales/wellbeing/zh-CN.json +121 -121
  79. package/locales/zh-CN.json +165 -165
  80. package/package.json +47 -47
  81. package/preview-big-integral.js +75 -75
  82. package/run.js +15 -15
  83. package/templates/Mediclinic/blocks/first-section.html +205 -205
  84. package/templates/Mediclinic/blocks/footer.html +7 -7
  85. package/templates/Mediclinic/blocks/header-template.html +5 -5
  86. package/templates/Mediclinic/blocks/header.html +20 -20
  87. package/templates/Mediclinic/blocks/patient-table.html +38 -38
  88. package/templates/Mediclinic/blocks/pdf-header.html +9 -9
  89. package/templates/Mediclinic/blocks/tips.html +8 -8
  90. package/templates/Mediclinic/ltr_no_pages.html +37 -37
  91. package/templates/Mediclinic/rtl_no_pages.html +42 -42
  92. package/templates/Mediclinic/wellbeing_template.html +41 -41
  93. package/templates/Pha/blocks/first-section.html +207 -207
  94. package/templates/Pha/blocks/footer.html +7 -7
  95. package/templates/Pha/blocks/header-template.html +5 -5
  96. package/templates/Pha/blocks/header.html +20 -20
  97. package/templates/Pha/blocks/patient-table.html +38 -38
  98. package/templates/Pha/blocks/pdf-header.html +8 -8
  99. package/templates/Pha/blocks/tips.html +8 -8
  100. package/templates/Pha/ltr_no_pages.html +37 -37
  101. package/templates/Pha/rtl_no_pages.html +42 -42
  102. package/templates/Pha/wellbeing_template.html +41 -41
  103. package/templates/base.html +23 -23
  104. package/templates/blocks/ar-first-page-header.html +68 -68
  105. package/templates/blocks/ar-footer.html +54 -54
  106. package/templates/blocks/ar-header.html +67 -67
  107. package/templates/blocks/biomarker-compact-ar.html +27 -27
  108. package/templates/blocks/biomarker-compact.html +27 -27
  109. package/templates/blocks/biomarker-details.html +41 -41
  110. package/templates/blocks/biomarker-insight.html +22 -22
  111. package/templates/blocks/biomarker-min.html +9 -9
  112. package/templates/blocks/doctor-note.html +11 -11
  113. package/templates/blocks/footer.html +35 -35
  114. package/templates/blocks/header-first-page.html +46 -46
  115. package/templates/blocks/header.html +49 -49
  116. package/templates/blocks/panel-compact.html +38 -38
  117. package/templates/blocks/panel-details.html +16 -16
  118. package/templates/blocks/report-summary.html +16 -16
  119. package/templates/blocks/section-title.html +4 -4
  120. package/templates/blocks/signature.html +16 -16
  121. package/templates/blocks/summary-insight.html +15 -15
  122. package/templates/blocks/summary.html +9 -9
  123. package/templates/corporate_report/cover_page.html +23 -23
  124. package/templates/corporate_report/footer.html +9 -9
  125. package/templates/corporate_report/ltr_no_pages.html +20 -20
  126. package/templates/corporate_report/page.html +24 -24
  127. package/templates/corporate_report/participant_analytics.html +5 -5
  128. package/templates/corporate_report/rtl_no_pages.html +20 -20
  129. package/templates/empty.html +10 -10
  130. package/templates/first_page_head.html +157 -157
  131. package/templates/imc/first-header-template.html +53 -53
  132. package/templates/ltr.html +1368 -1368
  133. package/templates/ltr_no_pages.html +89 -89
  134. package/templates/maisonsante/blocks/first-section.html +151 -207
  135. package/templates/maisonsante/blocks/footer.html +7 -7
  136. package/templates/maisonsante/blocks/header-template.html +5 -5
  137. package/templates/maisonsante/blocks/header.html +20 -20
  138. package/templates/maisonsante/blocks/patient-table.html +38 -38
  139. package/templates/maisonsante/blocks/pdf-header.html +8 -8
  140. package/templates/maisonsante/blocks/tips.html +8 -8
  141. package/templates/maisonsante/ltr_no_pages.html +38 -38
  142. package/templates/maisonsante/rtl_no_pages.html +43 -43
  143. package/templates/maisonsante/wellbeing_template.html +41 -41
  144. package/templates/no_pages.html +1224 -1224
  145. package/templates/popup/popup-template.html +129 -129
  146. package/templates/rtl_no_pages.html +92 -92
  147. package/templates/sanusx/blocks/footer.html +6 -6
  148. package/templates/sanusx/blocks/header.html +20 -20
  149. package/templates/sanusx/blocks/personal-details.html +123 -123
  150. package/templates/sanusx/blocks/predictions-section.html +57 -57
  151. package/templates/sanusx/blocks/recommendations-section.html +6 -6
  152. package/templates/sanusx/blocks/super-power-section.html +29 -29
  153. package/templates/sanusx/blocks/tips.html +8 -8
  154. package/templates/sanusx/ltr_no_pages.html +26 -26
  155. package/templates/sanusx/rtl_no_pages.html +36 -36
  156. package/templates/template.html +1377 -1377
  157. package/templates/wellbeing/blocks/first-section.html +106 -106
  158. package/templates/wellbeing/blocks/footer.html +7 -7
  159. package/templates/wellbeing/blocks/header.html +37 -37
  160. package/templates/wellbeing/blocks/tips.html +8 -8
  161. package/templates/wellbeing/ltr_no_pages.html +35 -35
  162. package/templates/wellbeing/rtl_no_pages.html +36 -36
  163. package/templates/wellbeing/wellbeing_template.html +43 -43
  164. package/test.js +74 -74
  165. package/.claude/settings.local.json +0 -16
  166. package/testing-reports/mediclinic/arabic-data.js +0 -439
  167. package/testing-reports/mediclinic/doctor-data.js +0 -523
  168. package/testing-reports/mediclinic/with-wellbeing.js +0 -415
  169. package/testing-reports/pha/notes-example.js +0 -397
@@ -1,113 +1,113 @@
1
- $(function () {
2
- $("div[key=\"healthRisk\"]").appendTo("div[key=\"mind\"]");
3
- drawPercentageMeters();
4
-
5
- let bodyHeight = $("body").height()
6
- let contentHeight = $(".score-main").height()
7
- let FooterTop = parseFloat(bodyHeight) - parseFloat(contentHeight)
8
- if(contentHeight < bodyHeight && FooterTop > 24){
9
- $(".recommended-tips-title").css({"margin-top": FooterTop - 45})
10
- }
11
- });
12
-
13
- function drawPercentageMeters() {
14
- let windowWidth = window.innerWidth
15
- let dimensions = [250, 200];
16
-
17
- if (windowWidth < 769 && windowWidth > 480) {
18
- dimensions = [200, 200];
19
- }
20
- console.log("allScores", allScores)
21
- for (let score in allScores) {
22
- console.log("score", score)
23
- if (score !== "healthRisk")
24
- ResultPie(allScores[score], score, dimensions);
25
- }
26
- }
27
-
28
- let paper
29
- let OUTER_WIDTH_SIZE = 200;
30
- let OUTER_HEIGHT_SIZE = 200;
31
- const BOTTOM_CUTOUT_ANGLE = 120;
32
- const ICON_SIZE = 18;
33
-
34
- const STROKE_WIDTH = 4;
35
- const STROKE_SPACE = 2;
36
-
37
- function ResultPie(data, html_element, dimensions) {
38
- document.getElementById(html_element).innerHTML = "";
39
- paper = new Raphael(document.getElementById(html_element), OUTER_WIDTH_SIZE, OUTER_HEIGHT_SIZE);
40
- for (let i = 0; i < data.length; i++) {
41
- addStepIcon(i, data);
42
- drawPieceArcs(i, data);
43
- }
44
- }
45
-
46
- let num = 2.1
47
-
48
- function addStepIcon(step, data) {
49
- let center = [OUTER_WIDTH_SIZE / num, OUTER_WIDTH_SIZE / num];
50
- let radius = OUTER_WIDTH_SIZE / num - ICON_SIZE;
51
- let a = getPieceAngles(step, data);
52
- let angle = a[0] + (a[1] - a[0]) / num;
53
-
54
- let score_segments = Math.ceil(data[step].percentage); // get score between 1 and 5
55
-
56
- let color = data[step].key!='mind'?RANGE_COLORS[Math.max(0, score_segments - 1)]:RANGE_COLORS[Math.max(0, RANGE_COLORS.length - (score_segments==0?1:score_segments))]
57
- let coords = toCoords(center, radius, angle);
58
- let c = paper.path(data[step].icon);
59
-
60
- c.node.style = "transform: translate(" + (coords[0] - ICON_SIZE + 3) + "px," + (coords[1] - ICON_SIZE) + "px); stroke-opacity: 0.2";
61
- c.attr({width: ICON_SIZE});
62
- c.attr({stroke: color, fill: color});
63
-
64
- if (data[step].percentage == 0) c.attr({opacity: 0.2});
65
- if (typeof data[step].title != "undefined") c.attr({title: data[step].title});
66
- }
67
-
68
- function getPieceAngles(index, data) {
69
- // Returns an array with start and end angles
70
- let step_angle = (360 - BOTTOM_CUTOUT_ANGLE) / data.length;
71
- let start_angle = index * step_angle - 90 - (360 - BOTTOM_CUTOUT_ANGLE) / 2;
72
- return [start_angle, start_angle + step_angle];
73
- }
74
-
75
- function toCoords(center, radius, angle) {
76
- let radians = (angle / 180) * Math.PI;
77
- let x = center[0] + Math.cos(radians) * radius;
78
- let y = center[1] + Math.sin(radians) * radius;
79
- return [x, y];
80
- }
81
-
82
- function drawPieceArcs(index, data) {
83
- let radius = OUTER_WIDTH_SIZE / num - ICON_SIZE * num;
84
- let angles = getPieceAngles(index, data);
85
- let score_segments = Math.ceil(data[index].percentage); // get score between 1 and 5
86
- let color = data[index].key!='mind'?RANGE_COLORS[Math.max(0, score_segments - 1)]:RANGE_COLORS[Math.max(0, RANGE_COLORS.length - (score_segments==0?1:score_segments))]
87
- for (let i = 0; i < 5; i++) {
88
- drawArc(radius, angles[0] + (STROKE_SPACE / num), angles[1] - (STROKE_SPACE / num), color, score_segments >= (5 - i) ? 1 : 0.25, index, data);
89
- radius -= STROKE_WIDTH + STROKE_SPACE;
90
- }
91
- }
92
-
93
- function drawArc(radius, startAngle, endAngle, color, opacity, index, data) {
94
- let center = [OUTER_WIDTH_SIZE / num, OUTER_WIDTH_SIZE / num];
95
- let angle = startAngle;
96
- let coords = toCoords(center, radius, angle);
97
- let path = "M " + coords[0] + " " + coords[1];
98
- while (angle <= endAngle) {
99
- coords = toCoords(center, radius, angle);
100
- path += " L " + coords[0] + " " + coords[1];
101
- angle += 1;
102
- }
103
-
104
- let p = paper.path(path);
105
- p.attr({stroke: color, 'stroke-width': STROKE_WIDTH, opacity: opacity});
106
- if (typeof data[index].title != "undefined") p.attr({title: data[index].title});
107
- }
108
-
109
- function reset() {
110
- if (typeof paper != "undefined") {
111
- paper.remove();
112
- }
1
+ $(function () {
2
+ $("div[key=\"healthRisk\"]").appendTo("div[key=\"mind\"]");
3
+ drawPercentageMeters();
4
+
5
+ let bodyHeight = $("body").height()
6
+ let contentHeight = $(".score-main").height()
7
+ let FooterTop = parseFloat(bodyHeight) - parseFloat(contentHeight)
8
+ if(contentHeight < bodyHeight && FooterTop > 24){
9
+ $(".recommended-tips-title").css({"margin-top": FooterTop - 45})
10
+ }
11
+ });
12
+
13
+ function drawPercentageMeters() {
14
+ let windowWidth = window.innerWidth
15
+ let dimensions = [250, 200];
16
+
17
+ if (windowWidth < 769 && windowWidth > 480) {
18
+ dimensions = [200, 200];
19
+ }
20
+ console.log("allScores", allScores)
21
+ for (let score in allScores) {
22
+ console.log("score", score)
23
+ if (score !== "healthRisk")
24
+ ResultPie(allScores[score], score, dimensions);
25
+ }
26
+ }
27
+
28
+ let paper
29
+ let OUTER_WIDTH_SIZE = 200;
30
+ let OUTER_HEIGHT_SIZE = 200;
31
+ const BOTTOM_CUTOUT_ANGLE = 120;
32
+ const ICON_SIZE = 18;
33
+
34
+ const STROKE_WIDTH = 4;
35
+ const STROKE_SPACE = 2;
36
+
37
+ function ResultPie(data, html_element, dimensions) {
38
+ document.getElementById(html_element).innerHTML = "";
39
+ paper = new Raphael(document.getElementById(html_element), OUTER_WIDTH_SIZE, OUTER_HEIGHT_SIZE);
40
+ for (let i = 0; i < data.length; i++) {
41
+ addStepIcon(i, data);
42
+ drawPieceArcs(i, data);
43
+ }
44
+ }
45
+
46
+ let num = 2.1
47
+
48
+ function addStepIcon(step, data) {
49
+ let center = [OUTER_WIDTH_SIZE / num, OUTER_WIDTH_SIZE / num];
50
+ let radius = OUTER_WIDTH_SIZE / num - ICON_SIZE;
51
+ let a = getPieceAngles(step, data);
52
+ let angle = a[0] + (a[1] - a[0]) / num;
53
+
54
+ let score_segments = Math.ceil(data[step].percentage); // get score between 1 and 5
55
+
56
+ let color = data[step].key!='mind'?RANGE_COLORS[Math.max(0, score_segments - 1)]:RANGE_COLORS[Math.max(0, RANGE_COLORS.length - (score_segments==0?1:score_segments))]
57
+ let coords = toCoords(center, radius, angle);
58
+ let c = paper.path(data[step].icon);
59
+
60
+ c.node.style = "transform: translate(" + (coords[0] - ICON_SIZE + 3) + "px," + (coords[1] - ICON_SIZE) + "px); stroke-opacity: 0.2";
61
+ c.attr({width: ICON_SIZE});
62
+ c.attr({stroke: color, fill: color});
63
+
64
+ if (data[step].percentage == 0) c.attr({opacity: 0.2});
65
+ if (typeof data[step].title != "undefined") c.attr({title: data[step].title});
66
+ }
67
+
68
+ function getPieceAngles(index, data) {
69
+ // Returns an array with start and end angles
70
+ let step_angle = (360 - BOTTOM_CUTOUT_ANGLE) / data.length;
71
+ let start_angle = index * step_angle - 90 - (360 - BOTTOM_CUTOUT_ANGLE) / 2;
72
+ return [start_angle, start_angle + step_angle];
73
+ }
74
+
75
+ function toCoords(center, radius, angle) {
76
+ let radians = (angle / 180) * Math.PI;
77
+ let x = center[0] + Math.cos(radians) * radius;
78
+ let y = center[1] + Math.sin(radians) * radius;
79
+ return [x, y];
80
+ }
81
+
82
+ function drawPieceArcs(index, data) {
83
+ let radius = OUTER_WIDTH_SIZE / num - ICON_SIZE * num;
84
+ let angles = getPieceAngles(index, data);
85
+ let score_segments = Math.ceil(data[index].percentage); // get score between 1 and 5
86
+ let color = data[index].key!='mind'?RANGE_COLORS[Math.max(0, score_segments - 1)]:RANGE_COLORS[Math.max(0, RANGE_COLORS.length - (score_segments==0?1:score_segments))]
87
+ for (let i = 0; i < 5; i++) {
88
+ drawArc(radius, angles[0] + (STROKE_SPACE / num), angles[1] - (STROKE_SPACE / num), color, score_segments >= (5 - i) ? 1 : 0.25, index, data);
89
+ radius -= STROKE_WIDTH + STROKE_SPACE;
90
+ }
91
+ }
92
+
93
+ function drawArc(radius, startAngle, endAngle, color, opacity, index, data) {
94
+ let center = [OUTER_WIDTH_SIZE / num, OUTER_WIDTH_SIZE / num];
95
+ let angle = startAngle;
96
+ let coords = toCoords(center, radius, angle);
97
+ let path = "M " + coords[0] + " " + coords[1];
98
+ while (angle <= endAngle) {
99
+ coords = toCoords(center, radius, angle);
100
+ path += " L " + coords[0] + " " + coords[1];
101
+ angle += 1;
102
+ }
103
+
104
+ let p = paper.path(path);
105
+ p.attr({stroke: color, 'stroke-width': STROKE_WIDTH, opacity: opacity});
106
+ if (typeof data[index].title != "undefined") p.attr({title: data[index].title});
107
+ }
108
+
109
+ function reset() {
110
+ if (typeof paper != "undefined") {
111
+ paper.remove();
112
+ }
113
113
  }