@epcare/esm-report-builder 0.1.1-pre.2 → 0.1.1-pre.20

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 (317) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +19 -0
  3. package/.prettierrc +8 -0
  4. package/README.md +19 -0
  5. package/dist/162.js +1 -0
  6. package/dist/162.js.map +1 -0
  7. package/dist/184.js +2 -0
  8. package/dist/184.js.map +1 -0
  9. package/dist/242.js +2 -0
  10. package/dist/{d1aa59bd9c702dc4.js.LICENSE.txt → 242.js.LICENSE.txt} +0 -11
  11. package/dist/242.js.map +1 -0
  12. package/dist/271.js +2 -0
  13. package/dist/{377971e519bf3f4a.js.LICENSE.txt → 271.js.LICENSE.txt} +6 -0
  14. package/dist/271.js.map +1 -0
  15. package/dist/300.js +1 -0
  16. package/dist/311.js +1 -0
  17. package/dist/311.js.map +1 -0
  18. package/dist/382.js +2 -0
  19. package/dist/382.js.LICENSE.txt +77 -0
  20. package/dist/382.js.map +1 -0
  21. package/dist/478.js +2 -0
  22. package/dist/478.js.map +1 -0
  23. package/dist/540.js +2 -0
  24. package/dist/540.js.map +1 -0
  25. package/dist/698.js +1 -0
  26. package/dist/698.js.map +1 -0
  27. package/dist/710.js +1 -0
  28. package/dist/710.js.map +1 -0
  29. package/dist/729.js +1 -0
  30. package/dist/729.js.map +1 -0
  31. package/dist/764.js +1 -0
  32. package/dist/764.js.map +1 -0
  33. package/dist/917.js +1 -0
  34. package/dist/917.js.map +1 -0
  35. package/dist/961.js +2 -0
  36. package/dist/961.js.map +1 -0
  37. package/dist/main.js +1 -0
  38. package/dist/main.js.map +1 -0
  39. package/dist/openmrs-esm-report-builder.js +1 -0
  40. package/dist/openmrs-esm-report-builder.js.buildmanifest.json +506 -0
  41. package/dist/openmrs-esm-report-builder.js.map +1 -0
  42. package/dist/routes.json +1 -0
  43. package/e2e/core/env.ts +5 -0
  44. package/e2e/core/global-setup.ts +34 -0
  45. package/e2e/core/test.ts +21 -0
  46. package/e2e/pages/app-shell.page.ts +34 -0
  47. package/e2e/pages/etl-sources.page.ts +35 -0
  48. package/e2e/pages/report-sections.page.ts +20 -0
  49. package/e2e/pages/section-preview.modal.ts +29 -0
  50. package/e2e/specs/etl-sources.spec.ts +51 -0
  51. package/e2e/specs/navigation.spec.ts +13 -0
  52. package/e2e/specs/section-preview-validation.spec.ts +38 -0
  53. package/e2e/specs/section-preview.spec.ts +94 -0
  54. package/e2e/tsconfig.json +11 -0
  55. package/example.env +5 -0
  56. package/jest.config.js +28 -0
  57. package/package.json +34 -17
  58. package/playwright.config.ts +28 -0
  59. package/src/components/admin/admin-page.component.tsx +5 -0
  60. package/src/components/app-shell/report-builder-shell.component.tsx +3 -0
  61. package/src/components/data-themes/data-theme-modal.component.tsx +3 -3
  62. package/src/components/data-themes/sections/data-theme-condition-columns.section.tsx +1 -1
  63. package/src/components/data-themes/sections/data-theme-source.section.tsx +3 -3
  64. package/src/components/indicators/create-base-indicator-modal.component.tsx +1 -0
  65. package/src/components/indicators/create-composite-base-indicator-modal.component.tsx +4 -0
  66. package/src/components/indicators/create-final-indicator-modal.component.tsx +8 -0
  67. package/src/components/indicators/handler/question-answer-concept-search.component.tsx +2 -2
  68. package/src/components/indicators/sections/indicator-conditions.section.tsx +39 -1
  69. package/src/components/indicators/utils/indicator-sql.utils.ts +33 -0
  70. package/src/components/landing/report-builder-landing-page.component.tsx +26 -1
  71. package/src/components/landing/report-builder-landing-page.scss +1 -1
  72. package/src/components/legacy-reports/legacy-report-detail-page.component.tsx +300 -0
  73. package/src/components/legacy-reports/legacy-report-editor-page.component.tsx +324 -0
  74. package/src/components/legacy-reports/legacy-report-upload-modal.component.tsx +307 -0
  75. package/src/components/legacy-reports/legacy-reports-page.component.tsx +206 -0
  76. package/src/components/legacy-reports/legacy-reports-table.component.tsx +154 -0
  77. package/src/components/legacy-reports/tabs/legacy-report-datasets-tab.component.tsx +344 -0
  78. package/src/components/legacy-reports/tabs/legacy-report-dimensions-tab.component.tsx +590 -0
  79. package/src/components/legacy-reports/tabs/legacy-report-indicators-tab.component.tsx +490 -0
  80. package/src/components/legacy-reports/tabs/legacy-report-json-preview-tab.component.tsx +272 -0
  81. package/src/components/legacy-reports/tabs/legacy-report-overview-tab.component.tsx +218 -0
  82. package/src/components/legacy-reports/tabs/legacy-report-parameters-tab.component.tsx +279 -0
  83. package/src/components/report/design/report-design-editor.component.tsx +1 -1
  84. package/src/components/run-reports/run-reports-page.component.tsx +2 -17
  85. package/src/components/shared/preview/query-results-preview.component.tsx +2 -2
  86. package/src/data-visualizer/components/cqi-components/cqi-data-table.component.tsx +214 -0
  87. package/src/data-visualizer/components/cqi-components/cqi-elements.ts +203 -0
  88. package/src/data-visualizer/components/cqi-components/detail.component.tsx +110 -0
  89. package/src/data-visualizer/components/cqi-components/detail.scss +22 -0
  90. package/src/data-visualizer/components/data-table/data-table.component.tsx +208 -0
  91. package/src/data-visualizer/components/data-table/data-tables.scss +206 -0
  92. package/src/data-visualizer/components/empty-state/empty-state-illustration.component.tsx +53 -0
  93. package/src/data-visualizer/components/header/header.component.tsx +43 -0
  94. package/src/data-visualizer/components/header/header.scss +71 -0
  95. package/src/data-visualizer/components/model/confirm.component.tsx +40 -0
  96. package/src/data-visualizer/components/panel/panel.component.tsx +20 -0
  97. package/src/data-visualizer/components/panel/panel.scss +25 -0
  98. package/src/data-visualizer/components/popover/modifier-panel.tsx +53 -0
  99. package/src/data-visualizer/constants.ts +445 -0
  100. package/src/data-visualizer/data-visualizer-illustration.component.tsx +31 -0
  101. package/src/data-visualizer/data-visualizer.component.tsx +1453 -0
  102. package/src/data-visualizer/data-visualizer.resource.ts +467 -0
  103. package/src/data-visualizer/data-visualizer.scss +363 -0
  104. package/src/data-visualizer/declarations.d.ts +131 -0
  105. package/src/data-visualizer/types.ts +206 -0
  106. package/src/hooks/theme/useMambaTableMeta.ts +4 -4
  107. package/src/hooks/theme/useMambaTables.ts +2 -2
  108. package/src/index.ts +6 -0
  109. package/src/resources/indicator/indicators.api.ts +1 -1
  110. package/src/resources/legacy-reports/legacy-reports.api.ts +156 -0
  111. package/src/resources/theme/{mamba-table-meta.api.ts → etl-table-meta.api.ts} +2 -2
  112. package/src/routes/report-builder.routes.tsx +10 -1
  113. package/src/routes.json +6 -0
  114. package/tools/setup-tests.ts +1 -0
  115. package/translations/en.json +65 -0
  116. package/tsconfig.json +43 -0
  117. package/webpack.config.js +14 -0
  118. package/dist/0081d5d3d536cb23.js +0 -1
  119. package/dist/02acc4469a2fe2e4.woff2 +0 -0
  120. package/dist/081587ca0db8e63f.woff2 +0 -0
  121. package/dist/08cf53c4e5e71cf1.woff2 +0 -0
  122. package/dist/090b2bc014d24ea4.woff2 +0 -0
  123. package/dist/09de5db63ef7b579.js +0 -1
  124. package/dist/0ae92bcea615e948.woff2 +0 -0
  125. package/dist/0be8520d8945b3b7.woff2 +0 -0
  126. package/dist/0e7dd073cd8bb0ad.woff2 +0 -0
  127. package/dist/0edb77cd19e43550.js +0 -1
  128. package/dist/14869ac5d1830304.woff2 +0 -0
  129. package/dist/14aaceff85fc8b28.woff2 +0 -0
  130. package/dist/14c3abea79fc1389.js +0 -1
  131. package/dist/155a4ac079785bfd.js +0 -1
  132. package/dist/155a4ac079785bfd.js.map +0 -1
  133. package/dist/16f443eed01776ca.woff2 +0 -0
  134. package/dist/183bae0e53a22182.woff2 +0 -0
  135. package/dist/19c8f94ccd6289f5.woff2 +0 -0
  136. package/dist/1ae86565eab7451c.woff2 +0 -0
  137. package/dist/1c7bf8797e0a9be6.woff2 +0 -0
  138. package/dist/1f266d3619b30f16.woff2 +0 -0
  139. package/dist/1f8c5a4087a524fd.woff2 +0 -0
  140. package/dist/20ba2b23c5c0cd0b.woff2 +0 -0
  141. package/dist/22a32bd51591301b.js +0 -1
  142. package/dist/273c72d90e432a3d.js +0 -1
  143. package/dist/295dd01a1fbfee6d.woff2 +0 -0
  144. package/dist/29cbe6827c3f03ef.js +0 -1
  145. package/dist/2f686985e26e7107.woff2 +0 -0
  146. package/dist/315eff729e4ccbd9.woff2 +0 -0
  147. package/dist/368d16e3259bf207.woff2 +0 -0
  148. package/dist/36c49aa341a7079a.woff2 +0 -0
  149. package/dist/36e1e0430475edee.woff2 +0 -0
  150. package/dist/374c3ee36d9e040a.js +0 -1
  151. package/dist/377971e519bf3f4a.js +0 -2
  152. package/dist/377971e519bf3f4a.js.map +0 -1
  153. package/dist/3b0ea8395009dcf3.js +0 -2
  154. package/dist/3b0ea8395009dcf3.js.map +0 -1
  155. package/dist/3bc19662b8630ee9.woff2 +0 -0
  156. package/dist/3f645f473b3f8fba.woff2 +0 -0
  157. package/dist/41320d8930d23b36.js +0 -1
  158. package/dist/4218ac9901b9d36d.woff2 +0 -0
  159. package/dist/4659f3ca46d928b5.js +0 -1
  160. package/dist/4659f3ca46d928b5.js.map +0 -1
  161. package/dist/4680ba68412e4da9.woff2 +0 -0
  162. package/dist/48e37bd7ebf85a1f.woff2 +0 -0
  163. package/dist/4aabceefe5a2494a.js +0 -1
  164. package/dist/4c188cbaefba58cd.js +0 -1
  165. package/dist/4e11b8a7c445255f.woff2 +0 -0
  166. package/dist/537ddd61c5c1fce2.woff2 +0 -0
  167. package/dist/54f5eee3a7989556.js +0 -1
  168. package/dist/55c9107b50dd747c.js +0 -1
  169. package/dist/56c4118c0907f151.woff2 +0 -0
  170. package/dist/5938bc2ae7ec60c0.woff2 +0 -0
  171. package/dist/5c6586155f0d278a.woff2 +0 -0
  172. package/dist/5e50c92017029ca3.js +0 -1
  173. package/dist/5e50c92017029ca3.js.map +0 -1
  174. package/dist/600aca7295d8bcb7.js +0 -2
  175. package/dist/600aca7295d8bcb7.js.map +0 -1
  176. package/dist/60ec587649ba812a.woff2 +0 -0
  177. package/dist/64cf08a5ac3266d8.js +0 -1
  178. package/dist/652f476a8a1603d3.js +0 -2
  179. package/dist/652f476a8a1603d3.js.LICENSE.txt +0 -9
  180. package/dist/652f476a8a1603d3.js.map +0 -1
  181. package/dist/65e6511e035870e1.woff2 +0 -0
  182. package/dist/661425f6798cd16a.woff2 +0 -0
  183. package/dist/66b864fe213caf46.woff2 +0 -0
  184. package/dist/680eb791e6266590.js +0 -2
  185. package/dist/680eb791e6266590.js.map +0 -1
  186. package/dist/69d087d970ee9455.woff2 +0 -0
  187. package/dist/69e3aa4276b4cb4b.js +0 -1
  188. package/dist/6a88f03fc4e7c3da.js +0 -1
  189. package/dist/6c6c45e66ff54281.woff2 +0 -0
  190. package/dist/6d9009857c6df878.js +0 -1
  191. package/dist/6ebe7cea59ed2853.js +0 -1
  192. package/dist/6f3181849e740935.js +0 -1
  193. package/dist/6f3181849e740935.js.map +0 -1
  194. package/dist/7073a7323e92bd11.woff2 +0 -0
  195. package/dist/70ac433ae2a89a89.js +0 -1
  196. package/dist/70ee4ee625ac0ec1.js +0 -1
  197. package/dist/718c6cc31274ab1a.woff2 +0 -0
  198. package/dist/727696c3934d0966.js +0 -1
  199. package/dist/727763c0f0df59dc.js +0 -1
  200. package/dist/727763c0f0df59dc.js.map +0 -1
  201. package/dist/72cdbedfe04be9f9.woff2 +0 -0
  202. package/dist/7509c9f56fe9e532.woff2 +0 -0
  203. package/dist/75dc5c5b04adc8bf.woff2 +0 -0
  204. package/dist/77b48bc05299ecca.woff2 +0 -0
  205. package/dist/7a0a0215c248c73d.woff2 +0 -0
  206. package/dist/7c0d0c5180de8729.js +0 -1
  207. package/dist/7f00bebb24e40167.woff2 +0 -0
  208. package/dist/802c6176541eeed7.woff2 +0 -0
  209. package/dist/8080081b3379c637.woff2 +0 -0
  210. package/dist/81cfdaeaa0bbca1f.js +0 -1
  211. package/dist/8605507b7a8487c4.woff2 +0 -0
  212. package/dist/893a160d06428365.js +0 -1
  213. package/dist/893a160d06428365.js.map +0 -1
  214. package/dist/8a83d654702f6534.woff2 +0 -0
  215. package/dist/8fe71173a13fe571.woff2 +0 -0
  216. package/dist/94aa912dcac90114.js +0 -1
  217. package/dist/9624cec0f9bdd81e.woff2 +0 -0
  218. package/dist/98a3af55a1698171.woff2 +0 -0
  219. package/dist/99823aaebba56f46.js +0 -1
  220. package/dist/9ba85996af74c5ce.woff2 +0 -0
  221. package/dist/9ddb22faa35006e7.woff2 +0 -0
  222. package/dist/a167fb2799dd741b.woff2 +0 -0
  223. package/dist/a2045a5cc4fdf94f.woff2 +0 -0
  224. package/dist/a246c73905a31c93.woff2 +0 -0
  225. package/dist/a325099b0a580ce2.js +0 -2
  226. package/dist/a325099b0a580ce2.js.map +0 -1
  227. package/dist/a401aa7939cb6e6f.woff2 +0 -0
  228. package/dist/a40fef67997d3b2c.js +0 -1
  229. package/dist/a62897b000a24b86.js +0 -1
  230. package/dist/a6ed036f17a1ea29.woff2 +0 -0
  231. package/dist/a77bac4877483a0a.js +0 -1
  232. package/dist/a9f25ca430709a1a.woff2 +0 -0
  233. package/dist/aa0dfbdd569b1c24.js +0 -2
  234. package/dist/aa0dfbdd569b1c24.js.LICENSE.txt +0 -5
  235. package/dist/aa0dfbdd569b1c24.js.map +0 -1
  236. package/dist/ab0f637d6cff12e4.js +0 -1
  237. package/dist/afa9121a49e95351.woff2 +0 -0
  238. package/dist/afcda12d9f805543.woff2 +0 -0
  239. package/dist/b09ded85a7da77f1.woff2 +0 -0
  240. package/dist/b10dbe5318a91a12.js +0 -1
  241. package/dist/b2f4e9d1e821b71c.woff2 +0 -0
  242. package/dist/b4a074bf828bb757.woff2 +0 -0
  243. package/dist/b7f447da43f6e596.woff2 +0 -0
  244. package/dist/bcca84a524572d10.woff2 +0 -0
  245. package/dist/be093e052a6d50eb.js +0 -1
  246. package/dist/be4d1f97b11d087c.woff2 +0 -0
  247. package/dist/bec14780d81164de.woff2 +0 -0
  248. package/dist/c31657fe213c1b5e.js +0 -1
  249. package/dist/c49ef726d3f0420b.js +0 -1
  250. package/dist/c553f7e0199c5084.woff2 +0 -0
  251. package/dist/c94ac2fdc1ff1418.js +0 -1
  252. package/dist/c9d9ce9f465df4fe.woff2 +0 -0
  253. package/dist/cbbb57b397433964.js +0 -2
  254. package/dist/cbbb57b397433964.js.LICENSE.txt +0 -14
  255. package/dist/cbbb57b397433964.js.map +0 -1
  256. package/dist/d188f7f036ac5779.woff2 +0 -0
  257. package/dist/d1aa59bd9c702dc4.js +0 -2
  258. package/dist/d1aa59bd9c702dc4.js.map +0 -1
  259. package/dist/d265d81c58525ae4.woff2 +0 -0
  260. package/dist/d5942cd81663e136.woff2 +0 -0
  261. package/dist/d66b8ff73d95cabb.woff2 +0 -0
  262. package/dist/d84bac6d07672dd2.js +0 -1
  263. package/dist/d84bac6d07672dd2.js.map +0 -1
  264. package/dist/d88899ef0fd16719.woff2 +0 -0
  265. package/dist/d92b5ecf31fc187b.js +0 -1
  266. package/dist/d9a5d958e69e058d.woff2 +0 -0
  267. package/dist/dac90d495be353a0.woff2 +0 -0
  268. package/dist/db0550511978dc47.js +0 -1
  269. package/dist/dd8ce598529c3fab.woff2 +0 -0
  270. package/dist/de013f1be25103fa.woff2 +0 -0
  271. package/dist/df222fceeffca849.woff2 +0 -0
  272. package/dist/df22bda08ec7964c.js +0 -1
  273. package/dist/e05b7f902b02a251.js +0 -1
  274. package/dist/e05b7f902b02a251.js.map +0 -1
  275. package/dist/e465f1481f0d2e1c.js +0 -1
  276. package/dist/e62b00b9199c1ac9.woff2 +0 -0
  277. package/dist/e696cef1407b2610.woff2 +0 -0
  278. package/dist/eb42de5422d9af00.js +0 -1
  279. package/dist/eed48feba743e21c.woff2 +0 -0
  280. package/dist/f135ef54213f8975.js +0 -1
  281. package/dist/f260e50923d4283b.js +0 -1
  282. package/dist/f543c88feb236d11.woff2 +0 -0
  283. package/dist/f591b0079faa93fe.woff2 +0 -0
  284. package/dist/f6ed27923769ad1d.woff2 +0 -0
  285. package/dist/f8d066e92ea157c6.js +0 -1
  286. package/dist/fae042506530c1e6.js +0 -1
  287. package/dist/favicon.ico +0 -0
  288. package/dist/fbebeb4336e67012.woff2 +0 -0
  289. package/dist/fd574df77d31a5eb.js +0 -1
  290. package/dist/icon_128x128.3dde25c6e69b1c010a6a5d6b27b3f436.png +0 -0
  291. package/dist/icon_144x144.e263e02b838d229b02ff9133e6e0f2ba.png +0 -0
  292. package/dist/icon_192x192.d3d318638bbe8a10a3c687d3d302d01a.png +0 -0
  293. package/dist/icon_256x256.c729f6e7e914b58fcea5ce91d7aa9bad.png +0 -0
  294. package/dist/icon_384x384.c8923df6b6bd08eba5c79b78d7fcecc0.png +0 -0
  295. package/dist/icon_512x512.7163efb26df832de513bc58d925ea22e.png +0 -0
  296. package/dist/icon_96x96.682ee334ae19d49894217370b8596f61.png +0 -0
  297. package/dist/index.html +0 -9
  298. package/dist/logo-512.png +0 -0
  299. package/dist/logo.svg +0 -30
  300. package/dist/manifest.266df36f2271d27ae9bcaa196a2976ae.json +0 -47
  301. package/dist/openmrs.39723c21cec4b1fc.css +0 -1
  302. package/dist/openmrs.39723c21cec4b1fc.css.map +0 -1
  303. package/dist/openmrs.44bac4c8520ee42f.css +0 -2
  304. package/dist/openmrs.44bac4c8520ee42f.css.map +0 -1
  305. package/dist/openmrs.936e8cf6a4b1599d.css +0 -2
  306. package/dist/openmrs.936e8cf6a4b1599d.css.map +0 -1
  307. package/dist/openmrs.c3adea28ef850516.js +0 -1
  308. package/dist/openmrs.c3adea28ef850516.js.map +0 -1
  309. package/dist/openmrs.e4daba1e3b840e70.css +0 -25
  310. package/dist/openmrs.e4daba1e3b840e70.css.map +0 -1
  311. package/dist/service-worker.js +0 -1
  312. package/dist/service-worker.js.map +0 -1
  313. /package/dist/{a325099b0a580ce2.js.LICENSE.txt → 184.js.LICENSE.txt} +0 -0
  314. /package/dist/{600aca7295d8bcb7.js.LICENSE.txt → 478.js.LICENSE.txt} +0 -0
  315. /package/dist/{3b0ea8395009dcf3.js.LICENSE.txt → 540.js.LICENSE.txt} +0 -0
  316. /package/dist/{680eb791e6266590.js.LICENSE.txt → 961.js.LICENSE.txt} +0 -0
  317. /package/src/resources/theme/{mamba-schema.api.ts → etl-schema.api.ts} +0 -0
package/.eslintignore ADDED
@@ -0,0 +1,5 @@
1
+ dist
2
+ coverage
3
+ node_modules
4
+ playwright-report
5
+ test-results
package/.eslintrc.js ADDED
@@ -0,0 +1,19 @@
1
+ module.exports = {
2
+ root: true,
3
+ env: {
4
+ browser: true,
5
+ node: true,
6
+ es2021: true,
7
+ jest: true,
8
+ },
9
+ parser: '@typescript-eslint/parser',
10
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
11
+ plugins: ['@typescript-eslint', 'import', 'react-hooks'],
12
+ rules: {
13
+ 'react-hooks/rules-of-hooks': 'error',
14
+ 'react-hooks/exhaustive-deps': 'warn',
15
+ '@typescript-eslint/no-explicit-any': 'off',
16
+ '@typescript-eslint/ban-types': 'off',
17
+ },
18
+ ignorePatterns: ['dist/', 'coverage/', 'node_modules/', 'playwright-report/', 'test-results/'],
19
+ };
package/.prettierrc ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "bracketSpacing": true,
3
+ "printWidth": 120,
4
+ "semi": true,
5
+ "singleQuote": true,
6
+ "tabWidth": 2,
7
+ "trailingComma": "all"
8
+ }
package/README.md CHANGED
@@ -6,6 +6,18 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 📚 Documentation
10
+
11
+ | Document | Description | Audience |
12
+ |----------|-------------|----------|
13
+ | **[User Manual](USER_MANUAL.md)** | Complete guide for end users on using the application | Implementers, Report Developers |
14
+ | **[Technical Documentation](DOCUMENTATION.md)** | Architecture, API, and integration details | Developers, Technical Staff |
15
+ | **[Quick Reference](QUICK_REFERENCE.md)** | Quick lookup for routes, endpoints, and common patterns | All Users |
16
+ | **[Backend Support](BACKEND_SUPPORT_ANALYSIS.md)** | Backend API dependencies and requirements | Developers |
17
+ | **[Endpoint Migration](ENDPOINT_MIGRATION_SUMMARY.md)** | API migration details and status | Developers |
18
+
19
+ ---
20
+
9
21
  ## Overview
10
22
 
11
23
  The **OpenMRS ESM Report Builder** is an OpenMRS 3 frontend microfrontend (ESM) for **designing, managing, and structuring health reports** used in national and facility-level reporting.
@@ -312,6 +324,13 @@ Mozilla Public License 2.0 (MPL-2.0)
312
324
 
313
325
  ---
314
326
 
327
+ ## Documentation
328
+
329
+ For detailed documentation, see:
330
+ - **[User Manual](USER_MANUAL.md)** - How to use the Report Builder
331
+ - **[Technical Documentation](DOCUMENTATION.md)** - Architecture and implementation details
332
+ - **[Quick Reference](QUICK_REFERENCE.md)** - Quick lookup for common tasks
333
+
315
334
  ## Acknowledgements
316
335
 
317
336
  This work builds on the OpenMRS 3 microfrontend platform and reflects implementation needs around structured health reporting, indicator management, and reporting governance within UgandaEMR and the wider OpenMRS ecosystem.