@openmrs/esm-form-engine-lib 2.1.0-pre.1362

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 (272) hide show
  1. package/.editorconfig +12 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc +58 -0
  4. package/.husky/pre-commit +6 -0
  5. package/.husky/pre-push +6 -0
  6. package/.prettierignore +4 -0
  7. package/LICENSE.txt +401 -0
  8. package/README.md +136 -0
  9. package/__mocks__/concepts.mock.json +140 -0
  10. package/__mocks__/forms/afe-forms/component_art.json +38 -0
  11. package/__mocks__/forms/afe-forms/component_preclinic-review.json +38 -0
  12. package/__mocks__/forms/afe-forms/demo_hts-form.json +62 -0
  13. package/__mocks__/forms/afe-forms/form-component.json +38 -0
  14. package/__mocks__/forms/afe-forms/mini-form.json +31 -0
  15. package/__mocks__/forms/afe-forms/nested-form1.json +38 -0
  16. package/__mocks__/forms/afe-forms/nested-form2.json +38 -0
  17. package/__mocks__/forms/afe-forms/test-orders.json +72 -0
  18. package/__mocks__/forms/afe-forms/test-schema-transformer-form.json +88 -0
  19. package/__mocks__/forms/rfe-forms/age-validation-form.json +58 -0
  20. package/__mocks__/forms/rfe-forms/bmi-test-form.json +69 -0
  21. package/__mocks__/forms/rfe-forms/bsa-test-form.json +69 -0
  22. package/__mocks__/forms/rfe-forms/component_art.json +1705 -0
  23. package/__mocks__/forms/rfe-forms/component_preclinic-review.json +480 -0
  24. package/__mocks__/forms/rfe-forms/conditional-answered-form.json +97 -0
  25. package/__mocks__/forms/rfe-forms/conditional-required-form.json +281 -0
  26. package/__mocks__/forms/rfe-forms/demo_hts-form.json +346 -0
  27. package/__mocks__/forms/rfe-forms/edd-test-form.json +88 -0
  28. package/__mocks__/forms/rfe-forms/external_data_source_form.json +43 -0
  29. package/__mocks__/forms/rfe-forms/filter-answer-options-test-form.json +87 -0
  30. package/__mocks__/forms/rfe-forms/form-component.json +43 -0
  31. package/__mocks__/forms/rfe-forms/forms-loader.test.schema.ts +209 -0
  32. package/__mocks__/forms/rfe-forms/historical-expressions-form.json +170 -0
  33. package/__mocks__/forms/rfe-forms/labour_and_delivery_test_form.json +374 -0
  34. package/__mocks__/forms/rfe-forms/mini-form.json +29 -0
  35. package/__mocks__/forms/rfe-forms/mockHistoricalvisitsEncounter.json +89 -0
  36. package/__mocks__/forms/rfe-forms/months-on-art-form.json +90 -0
  37. package/__mocks__/forms/rfe-forms/multi-select-form.json +86 -0
  38. package/__mocks__/forms/rfe-forms/nested-form1.json +43 -0
  39. package/__mocks__/forms/rfe-forms/nested-form2.json +43 -0
  40. package/__mocks__/forms/rfe-forms/next-visit-test-form.json +78 -0
  41. package/__mocks__/forms/rfe-forms/obs-group-test_form.json +137 -0
  42. package/__mocks__/forms/rfe-forms/obs-list-data.ts +37 -0
  43. package/__mocks__/forms/rfe-forms/post-submission-test-form.json +116 -0
  44. package/__mocks__/forms/rfe-forms/reference-by-mapping-form.json +54 -0
  45. package/__mocks__/forms/rfe-forms/required-form.json +50 -0
  46. package/__mocks__/forms/rfe-forms/sample_fields.json +36 -0
  47. package/__mocks__/forms/rfe-forms/test-enrolment-form.json +241 -0
  48. package/__mocks__/forms/rfe-forms/treatment-end-date-test-form.json +121 -0
  49. package/__mocks__/forms/rfe-forms/viral-load-status-form.json +75 -0
  50. package/__mocks__/forms/rfe-forms/zscore-bmi-for-age-form.json +79 -0
  51. package/__mocks__/forms/rfe-forms/zscore-height-for-age-form.json +79 -0
  52. package/__mocks__/forms/rfe-forms/zscore-weight-height-form.json +77 -0
  53. package/__mocks__/packages/hiv/forms/hts_poc/1.0.json +8 -0
  54. package/__mocks__/packages/hiv/forms/hts_poc/1.1.json +91 -0
  55. package/__mocks__/packages/test-forms-registry.ts +12 -0
  56. package/__mocks__/patient.mock.ts +173 -0
  57. package/__mocks__/react-i18next.js +49 -0
  58. package/__mocks__/react-markdown.tsx +5 -0
  59. package/__mocks__/session.mock.ts +117 -0
  60. package/__mocks__/single-spa-react.js +11 -0
  61. package/__mocks__/use-initial-values/encounter.mock.json +963 -0
  62. package/__mocks__/use-initial-values/patient.mock.json +73 -0
  63. package/__mocks__/visit.mock.ts +19 -0
  64. package/dist/openmrs-esm-form-engine-lib.js +1 -0
  65. package/jest.config.js +30 -0
  66. package/package.json +104 -0
  67. package/prettier.config.js +8 -0
  68. package/readme/form-engine.jpeg +0 -0
  69. package/src/adapters/control-adapter.ts +29 -0
  70. package/src/adapters/encounter-datetime-adapter.ts +38 -0
  71. package/src/adapters/encounter-location-adapter.ts +39 -0
  72. package/src/adapters/encounter-provider-adapter.ts +48 -0
  73. package/src/adapters/encounter-role-adapter.ts +54 -0
  74. package/src/adapters/inline-date-adapter.ts +58 -0
  75. package/src/adapters/obs-adapter.ts +280 -0
  76. package/src/adapters/obs-comment-adapter.ts +60 -0
  77. package/src/adapters/orders-adapter.ts +75 -0
  78. package/src/adapters/patient-identifier-adapter.ts +40 -0
  79. package/src/adapters/program-state-adapter.ts +52 -0
  80. package/src/api/index.ts +178 -0
  81. package/src/components/error/error-modal.component.tsx +37 -0
  82. package/src/components/error/error.scss +4 -0
  83. package/src/components/extension/extension-parcel.component.tsx +32 -0
  84. package/src/components/field-label/field-label.component.tsx +32 -0
  85. package/src/components/field-label/field-label.scss +11 -0
  86. package/src/components/group/obs-group.component.tsx +29 -0
  87. package/src/components/group/obs-group.scss +12 -0
  88. package/src/components/inputs/content-switcher/content-switcher.component.tsx +71 -0
  89. package/src/components/inputs/content-switcher/content-switcher.scss +55 -0
  90. package/src/components/inputs/date/date.component.tsx +149 -0
  91. package/src/components/inputs/date/date.scss +36 -0
  92. package/src/components/inputs/file/camera/camera.component.tsx +34 -0
  93. package/src/components/inputs/file/camera/camera.scss +3 -0
  94. package/src/components/inputs/file/file.component.tsx +159 -0
  95. package/src/components/inputs/file/file.scss +101 -0
  96. package/src/components/inputs/fixed-value/fixed-value.component.tsx +19 -0
  97. package/src/components/inputs/markdown/markdown-wrapper.component.tsx +14 -0
  98. package/src/components/inputs/markdown/markdown.component.tsx +8 -0
  99. package/src/components/inputs/multi-select/multi-select.component.tsx +151 -0
  100. package/src/components/inputs/multi-select/multi-select.scss +25 -0
  101. package/src/components/inputs/multi-select/multi-select.test.tsx +90 -0
  102. package/src/components/inputs/number/number.component.tsx +69 -0
  103. package/src/components/inputs/number/number.scss +15 -0
  104. package/src/components/inputs/radio/radio.component.tsx +79 -0
  105. package/src/components/inputs/radio/radio.scss +36 -0
  106. package/src/components/inputs/select/dropdown.component.tsx +73 -0
  107. package/src/components/inputs/select/dropdown.scss +11 -0
  108. package/src/components/inputs/select/dropdown.test.tsx +120 -0
  109. package/src/components/inputs/text/text.component.tsx +65 -0
  110. package/src/components/inputs/text/text.scss +15 -0
  111. package/src/components/inputs/text/text.test.tsx +104 -0
  112. package/src/components/inputs/text-area/text-area.component.tsx +63 -0
  113. package/src/components/inputs/text-area/text-area.scss +11 -0
  114. package/src/components/inputs/toggle/toggle.component.tsx +66 -0
  115. package/src/components/inputs/toggle/toggle.scss +12 -0
  116. package/src/components/inputs/tooltip/tooltip.component.tsx +23 -0
  117. package/src/components/inputs/tooltip/tooltip.scss +8 -0
  118. package/src/components/inputs/ui-select-extended/ui-select-extended.component.tsx +187 -0
  119. package/src/components/inputs/ui-select-extended/ui-select-extended.scss +15 -0
  120. package/src/components/inputs/ui-select-extended/ui-select-extended.test.tsx +211 -0
  121. package/src/components/inputs/unspecified/unspecified.component.tsx +74 -0
  122. package/src/components/inputs/unspecified/unspecified.scss +7 -0
  123. package/src/components/inputs/unspecified/unspecified.test.tsx +95 -0
  124. package/src/components/inputs/workspace-launcher/workspace-launcher.component.tsx +35 -0
  125. package/src/components/inputs/workspace-launcher/workspace-launcher.scss +15 -0
  126. package/src/components/label/label.component.tsx +20 -0
  127. package/src/components/label/label.scss +11 -0
  128. package/src/components/loaders/loader.component.tsx +16 -0
  129. package/src/components/loaders/loader.scss +20 -0
  130. package/src/components/patient-banner/patient-banner.component.tsx +20 -0
  131. package/src/components/patient-banner/patient-banner.scss +12 -0
  132. package/src/components/previous-value-review/previous-value-review.component.tsx +49 -0
  133. package/src/components/previous-value-review/previous-value-review.scss +36 -0
  134. package/src/components/processor-factory/form-processor-factory.component.tsx +127 -0
  135. package/src/components/renderer/custom-hooks-renderer.component.tsx +30 -0
  136. package/src/components/renderer/field/fieldLogic.ts +214 -0
  137. package/src/components/renderer/field/form-field-renderer.component.tsx +281 -0
  138. package/src/components/renderer/field/form-field-renderer.scss +5 -0
  139. package/src/components/renderer/form/form-renderer.component.tsx +89 -0
  140. package/src/components/renderer/form/state.ts +54 -0
  141. package/src/components/renderer/page/page.renderer.component.tsx +50 -0
  142. package/src/components/renderer/page/page.renderer.scss +36 -0
  143. package/src/components/renderer/section/section-renderer.component.tsx +21 -0
  144. package/src/components/renderer/section/section-renderer.scss +19 -0
  145. package/src/components/repeat/helpers.test.ts +29 -0
  146. package/src/components/repeat/helpers.ts +68 -0
  147. package/src/components/repeat/repeat-controls.component.tsx +38 -0
  148. package/src/components/repeat/repeat-controls.scss +7 -0
  149. package/src/components/repeat/repeat.component.tsx +201 -0
  150. package/src/components/repeat/repeat.scss +30 -0
  151. package/src/components/repeat/repeat.test.ts +29 -0
  152. package/src/components/sidebar/sidebar.component.tsx +134 -0
  153. package/src/components/sidebar/sidebar.scss +121 -0
  154. package/src/components/value/value.component.tsx +27 -0
  155. package/src/components/value/value.scss +17 -0
  156. package/src/components/value/view/field-value-view.component.tsx +33 -0
  157. package/src/components/value/view/field-value-view.scss +31 -0
  158. package/src/constants.ts +12 -0
  159. package/src/datasources/concept-data-source.ts +42 -0
  160. package/src/datasources/data-source.ts +23 -0
  161. package/src/datasources/encounter-role-datasource.ts +15 -0
  162. package/src/datasources/historical-data-source.ts +11 -0
  163. package/src/datasources/location-data-source.ts +27 -0
  164. package/src/datasources/provider-datasource.ts +15 -0
  165. package/src/datasources/select-concept-answers-datasource.ts +15 -0
  166. package/src/declarations.d.ts +4 -0
  167. package/src/external-function-context.tsx +8 -0
  168. package/src/form-context.tsx +42 -0
  169. package/src/form-engine.component.tsx +178 -0
  170. package/src/form-engine.scss +140 -0
  171. package/src/form-engine.test.tsx +817 -0
  172. package/src/globals.ts +1 -0
  173. package/src/hooks/useClobData.tsx +21 -0
  174. package/src/hooks/useConcepts.tsx +55 -0
  175. package/src/hooks/useDatasourceDependentValue.ts +16 -0
  176. package/src/hooks/useEncounter.tsx +32 -0
  177. package/src/hooks/useEncounterRole.tsx +15 -0
  178. package/src/hooks/useEvaluateFormFieldExpressions.ts +138 -0
  179. package/src/hooks/useFieldValidationResults.ts +18 -0
  180. package/src/hooks/useFormCollapse.tsx +36 -0
  181. package/src/hooks/useFormFieldValidators.ts +22 -0
  182. package/src/hooks/useFormFieldValueAdapters.ts +24 -0
  183. package/src/hooks/useFormFields.ts +37 -0
  184. package/src/hooks/useFormFieldsMeta.ts +48 -0
  185. package/src/hooks/useFormJson.test.tsx +173 -0
  186. package/src/hooks/useFormJson.tsx +237 -0
  187. package/src/hooks/useFormStateHelpers.ts +50 -0
  188. package/src/hooks/useFormsConfig.tsx +27 -0
  189. package/src/hooks/useInitialValues.ts +38 -0
  190. package/src/hooks/usePatientData.tsx +32 -0
  191. package/src/hooks/usePatientPrograms.ts +32 -0
  192. package/src/hooks/usePostSubmissionActions.test.tsx +42 -0
  193. package/src/hooks/usePostSubmissionActions.ts +31 -0
  194. package/src/hooks/useProcessorDependencies.ts +30 -0
  195. package/src/hooks/useRestMaxResultsCount.ts +5 -0
  196. package/src/hooks/useSystemSetting.ts +36 -0
  197. package/src/hooks/useWorkspaceLayout.ts +29 -0
  198. package/src/index.ts +12 -0
  199. package/src/lifecycle.ts +33 -0
  200. package/src/post-submission-actions/program-enrollment-action.ts +138 -0
  201. package/src/processors/encounter/encounter-form-processor.ts +337 -0
  202. package/src/processors/encounter/encounter-processor-helper.ts +320 -0
  203. package/src/processors/form-processor.ts +41 -0
  204. package/src/provider/form-factory-helper.ts +100 -0
  205. package/src/provider/form-factory-provider.tsx +169 -0
  206. package/src/provider/form-provider.tsx +37 -0
  207. package/src/registry/inbuilt-components/InbuiltPostSubmissionActions.ts +9 -0
  208. package/src/registry/inbuilt-components/control-templates.ts +57 -0
  209. package/src/registry/inbuilt-components/inbuiltControls.ts +99 -0
  210. package/src/registry/inbuilt-components/inbuiltDataSources.ts +41 -0
  211. package/src/registry/inbuilt-components/inbuiltFieldValueAdapters.ts +64 -0
  212. package/src/registry/inbuilt-components/inbuiltTransformers.ts +10 -0
  213. package/src/registry/inbuilt-components/inbuiltValidators.ts +33 -0
  214. package/src/registry/inbuilt-components/template-component-map.ts +28 -0
  215. package/src/registry/registry.test.ts +20 -0
  216. package/src/registry/registry.ts +261 -0
  217. package/src/routes.json +1 -0
  218. package/src/setupI18n.ts +16 -0
  219. package/src/setupTests.ts +5 -0
  220. package/src/transformers/default-schema-transformer.test.ts +155 -0
  221. package/src/transformers/default-schema-transformer.ts +239 -0
  222. package/src/types/domain.ts +129 -0
  223. package/src/types/index.ts +130 -0
  224. package/src/types/schema.ts +238 -0
  225. package/src/typings.d.ts +9 -0
  226. package/src/utils/boolean-utils.ts +25 -0
  227. package/src/utils/common-expression-helpers.ts +503 -0
  228. package/src/utils/common-utils.test.ts +136 -0
  229. package/src/utils/common-utils.ts +55 -0
  230. package/src/utils/error-utils.ts +37 -0
  231. package/src/utils/expression-parser.test.ts +308 -0
  232. package/src/utils/expression-parser.ts +158 -0
  233. package/src/utils/expression-runner.test.ts +387 -0
  234. package/src/utils/expression-runner.ts +219 -0
  235. package/src/utils/form-helper.test.ts +482 -0
  236. package/src/utils/form-helper.ts +210 -0
  237. package/src/utils/form-page-utils.ts +13 -0
  238. package/src/utils/forms-loader.test.ts +323 -0
  239. package/src/utils/forms-loader.ts +306 -0
  240. package/src/utils/post-submission-action-helper.ts +71 -0
  241. package/src/utils/test-utils.ts +54 -0
  242. package/src/utils/zscore-service.ts +59 -0
  243. package/src/validators/conditional-answered-validator.test.ts +61 -0
  244. package/src/validators/conditional-answered-validator.ts +17 -0
  245. package/src/validators/date-validator.test.ts +46 -0
  246. package/src/validators/date-validator.ts +19 -0
  247. package/src/validators/default-value-validator.test.ts +90 -0
  248. package/src/validators/default-value-validator.ts +36 -0
  249. package/src/validators/form-validator.test.ts +188 -0
  250. package/src/validators/form-validator.ts +95 -0
  251. package/src/validators/js-expression-validator.test.ts +118 -0
  252. package/src/validators/js-expression-validator.ts +44 -0
  253. package/src/validators/schema.ts +34 -0
  254. package/src/zscore/bfa_boys_5_above.json +2522 -0
  255. package/src/zscore/bfa_girls_5_above.json +2522 -0
  256. package/src/zscore/hfa_boys_5_above.json +2186 -0
  257. package/src/zscore/hfa_boys_below5.json +22286 -0
  258. package/src/zscore/hfa_girls_5_above.json +2186 -0
  259. package/src/zscore/hfa_girls_below5.json +22286 -0
  260. package/src/zscore/wfl_boys_below5.json +7814 -0
  261. package/src/zscore/wfl_girls_below5.json +7814 -0
  262. package/src/zscore-tests/bmi-age.test.tsx +88 -0
  263. package/src/zscore-tests/height-age.test.tsx +96 -0
  264. package/src/zscore-tests/weight-height.test.tsx +87 -0
  265. package/tools/i18next-parser.config.js +93 -0
  266. package/translations/en.json +47 -0
  267. package/translations/es.json +38 -0
  268. package/translations/fr.json +38 -0
  269. package/translations/km.json +38 -0
  270. package/tsconfig.json +19 -0
  271. package/turbo.json +15 -0
  272. package/webpack.config.js +1 -0
@@ -0,0 +1,1705 @@
1
+ {
2
+ "name": "component_art",
3
+ "uuid": "2f063f32-7f8a-11ee-b962-0242ac120002",
4
+ "processor": "EncounterFormProcessor",
5
+ "pages": [
6
+ {
7
+ "label": "ART ",
8
+ "sections": [
9
+ {
10
+ "label": "ART First Visit",
11
+ "questions": [
12
+ {
13
+ "label": "Patient previous ART use",
14
+ "type": "obs",
15
+ "id": "pastArtUse",
16
+ "questionOptions": {
17
+ "concept": "a8a318e8-1350-11df-a1f1-0026b9348838",
18
+ "answers": [
19
+ {
20
+ "concept": "a899b35c-1350-11df-a1f1-0026b9348838",
21
+ "label": "Yes"
22
+ },
23
+ {
24
+ "concept": "a899b42e-1350-11df-a1f1-0026b9348838",
25
+ "label": "No"
26
+ }
27
+ ],
28
+ "rendering": "select"
29
+ }
30
+ },
31
+ {
32
+ "label": "Date patient first became medically eligible for ART:",
33
+ "id": "eligibility",
34
+ "type": "obs",
35
+ "questionOptions": {
36
+ "concept": "81608e3b-fece-4136-8def-b822b54de197",
37
+ "rendering": "date"
38
+ },
39
+ "validators": [
40
+ {
41
+ "type": "date",
42
+ "allowFutureDates": "false"
43
+ },
44
+ {
45
+ "type": "js_expression",
46
+ "failsWhenExpression": "(new moment(encDate)).isBefore((new moment(myValue)), 'day') || (new moment(encDate)).isSame((new moment(myValue)), 'day')",
47
+ "message": "Date should be before the encounter date."
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "label": "Reason for eligibility:",
53
+ "type": "obs",
54
+ "id": "reasonEligible",
55
+ "questionOptions": {
56
+ "concept": "87c0a7b8-9878-459e-b0f5-e0358f4811d4",
57
+ "answers": [
58
+ {
59
+ "concept": "a8a0be2c-1350-11df-a1f1-0026b9348838",
60
+ "label": "Clinical"
61
+ },
62
+ {
63
+ "concept": "1ea9d6ba-2084-4bc0-97a6-46fe677d40e5",
64
+ "label": "WHO Stage"
65
+ },
66
+ {
67
+ "concept": "a8970a26-1350-11df-a1f1-0026b9348838",
68
+ "label": "CD4 %"
69
+ },
70
+ {
71
+ "concept": "a89fbedc-1350-11df-a1f1-0026b9348838",
72
+ "label": "PMTCT"
73
+ },
74
+ {
75
+ "concept": "a8909060-1350-11df-a1f1-0026b9348838",
76
+ "label": "Hepatitis"
77
+ },
78
+ {
79
+ "concept": "a8af49d8-1350-11df-a1f1-0026b9348838",
80
+ "label": "Discordant couple"
81
+ },
82
+ {
83
+ "concept": "a89b2606-1350-11df-a1f1-0026b9348838",
84
+ "label": "WHO Stage 1"
85
+ },
86
+ {
87
+ "concept": "a89b26d8-1350-11df-a1f1-0026b9348838",
88
+ "label": "WHO Stage 2"
89
+ },
90
+ {
91
+ "concept": "a89b27be-1350-11df-a1f1-0026b9348838",
92
+ "label": "WHO Stage 3"
93
+ },
94
+ {
95
+ "concept": "a89b289a-1350-11df-a1f1-0026b9348838",
96
+ "label": "WHO Stage 4"
97
+ }
98
+ ],
99
+ "rendering": "multiCheckbox"
100
+ }
101
+ },
102
+ {
103
+ "label": "Date started:",
104
+ "type": "obs",
105
+ "id": "pastArtDate",
106
+ "questionOptions": {
107
+ "concept": "a89d200a-1350-11df-a1f1-0026b9348838",
108
+ "rendering": "date"
109
+ },
110
+ "validators": [
111
+ {
112
+ "type": "date",
113
+ "allowFutureDates": "false"
114
+ },
115
+ {
116
+ "type": "js_expression",
117
+ "failsWhenExpression": "(new moment(encDate)).isBefore((new moment(myValue)), 'day') || (new moment(encDate)).isSame((new moment(myValue)), 'day')",
118
+ "message": "ARV start date should be before the encounter date."
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "label": "Date last used:",
124
+ "type": "obs",
125
+ "id": "pastArtDateLastUsed",
126
+ "questionOptions": {
127
+ "concept": "a67ffb12-761b-48cb-a670-ce0bc0a50d60",
128
+ "rendering": "date"
129
+ },
130
+ "validators": [
131
+ {
132
+ "type": "date",
133
+ "allowFutureDates": "false"
134
+ },
135
+ {
136
+ "type": "js_expression",
137
+ "failsWhenExpression": "(new moment(encDate)).isBefore((new moment(myValue)), 'day') || (new moment(encDate)).isSame((new moment(myValue)), 'day')",
138
+ "message": "ARV start date should be before the encounter date."
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "label": "Date stopped:",
144
+ "type": "obs",
145
+ "id": "pastArtDateStop",
146
+ "questionOptions": {
147
+ "concept": "a89ec270-1350-11df-a1f1-0026b9348838",
148
+ "rendering": "date"
149
+ },
150
+ "validators": [
151
+ {
152
+ "type": "date",
153
+ "allowFutureDates": "false"
154
+ },
155
+ {
156
+ "type": "js_expression",
157
+ "failsWhenExpression": "(new moment(encDate)).isBefore((new moment(myValue)), 'day') || (new moment(encDate)).isSame((new moment(myValue)), 'day')",
158
+ "message": "ARV start date should be before the encounter date."
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "label": "Reason for use in past:",
164
+ "id": "reasonPastUse",
165
+ "type": "obs",
166
+ "questionOptions": {
167
+ "concept": "a8a31a00-1350-11df-a1f1-0026b9348838",
168
+ "answers": [
169
+ {
170
+ "concept": "a89adc46-1350-11df-a1f1-0026b9348838",
171
+ "label": "Treatment"
172
+ },
173
+ {
174
+ "concept": "a8a19c20-1350-11df-a1f1-0026b9348838",
175
+ "label": "PEP"
176
+ },
177
+ {
178
+ "concept": "a89fbedc-1350-11df-a1f1-0026b9348838",
179
+ "label": "PMTCT"
180
+ }
181
+ ],
182
+ "rendering": "select"
183
+ }
184
+ },
185
+ {
186
+ "label": "Past treatment categories:",
187
+ "id": "pastCate",
188
+ "type": "obs",
189
+ "questionOptions": {
190
+ "concept": "c89f8473-474d-4165-b7bd-e9f54e908f45",
191
+ "answers": [
192
+ {
193
+ "concept": "034047bd-3fa1-4b2a-b0f0-2787e9b9f7b3",
194
+ "label": "First Line Regimen"
195
+ },
196
+ {
197
+ "concept": "8f8a715d-e49a-4b2c-aa3a-83fa9d7a4254",
198
+ "label": "Second Line Regimen"
199
+ },
200
+ {
201
+ "concept": "a90ebdd2-351f-485a-b850-4938fcca2729",
202
+ "label": "Third Line Regimen"
203
+ }
204
+ ],
205
+ "rendering": "select"
206
+ }
207
+ },
208
+ {
209
+ "label": "Past ART, peds:",
210
+ "id": "pastArvDrugsPed",
211
+ "type": "obs",
212
+ "questionOptions": {
213
+ "concept": "a8a318e8-1350-11df-a1f1-0026b9348838",
214
+ "answers": [
215
+ {
216
+ "concept": "b58a28d2-36de-11e0-93be-0026b9348838",
217
+ "label": "ABC 60mg/3TC 30mg"
218
+ },
219
+ {
220
+ "concept": "25c753d8-870f-11e0-85d3-000d6014b64c",
221
+ "label": "ZDV 60mg/3TC 30mg"
222
+ },
223
+ {
224
+ "concept": "20185c04-9334-11df-8193-000d6014b64c",
225
+ "label": "ZDV 60mg/3TC 30mg/NVP 50mg"
226
+ },
227
+ {
228
+ "concept": "8ddf2f66-9333-11df-8193-000d6014b64c",
229
+ "label": "ZDV 300mg/3TC 150mg/NVP 200mg >25kgs"
230
+ },
231
+ {
232
+ "concept": "fd4cd670-3115-11e0-8090-0026b9348838",
233
+ "label": "3TC 150mg/ZDV 300mg >25kgs"
234
+ },
235
+ {
236
+ "concept": "b9da84e8-3127-11e0-8090-0026b9348838",
237
+ "label": "3TC 300mg/TDF 300mg >25kgs"
238
+ },
239
+ {
240
+ "concept": "e0037172-87ce-11e0-85d3-000d6014b64c",
241
+ "label": "TDF 300mg/3TC 300mg/EFV 600mg >35kgs"
242
+ },
243
+ {
244
+ "concept": "f8b6299e-6bbf-446a-b3f1-a88f5d6b9da2",
245
+ "label": "Lopinavir 80mg/Ritonavir 20mg"
246
+ },
247
+ {
248
+ "concept": "fa8266f6-36df-11e0-93be-0026b9348838",
249
+ "label": "Lopinavir 200mg/Ritonavir 50mg >25kgs"
250
+ },
251
+ {
252
+ "concept": "3cbfb0b9-721e-4d42-92a3-7d37269aab24",
253
+ "label": " Atazanavir 300mg/ritonavir 100mg"
254
+ },
255
+ {
256
+ "concept": "2fc1f68c-9939-44d4-b5f4-e064ed4073ca",
257
+ "label": "Nevirapine 100mg"
258
+ },
259
+ {
260
+ "concept": "0485075a-3111-11e0-8090-0026b9348838",
261
+ "label": "Nevirapine 200mg"
262
+ },
263
+ {
264
+ "concept": "db3c194b-3e1b-4001-9a1c-a5df1728fc28",
265
+ "label": "Efavirenz 200mg"
266
+ },
267
+ {
268
+ "concept": "ff9096b6-d86c-403a-9bda-eab02252dbf3",
269
+ "label": "Efavirenz 250mg"
270
+ },
271
+ {
272
+ "concept": "55e0461f-b28f-42de-a3c6-328d7f17c44b",
273
+ "label": "Efavirenz 350mg"
274
+ },
275
+ {
276
+ "concept": "81a41a82-fd72-4da4-8d47-edd5672549ce",
277
+ "label": "Efavirenz 400mg"
278
+ },
279
+ {
280
+ "concept": "4677ad3e-3120-11e0-8090-0026b9348838",
281
+ "label": "Efavirenz 600mg"
282
+ },
283
+ {
284
+ "concept": "d6262526-3113-11e0-8090-0026b9348838",
285
+ "label": "Lamivudine 150mg"
286
+ },
287
+ {
288
+ "concept": "52441ef8-3126-11e0-8090-0026b9348838",
289
+ "label": " Abacavir 300mg"
290
+ },
291
+ {
292
+ "concept": "21d417bc-3114-11e0-8090-0026b9348838",
293
+ "label": " Zidovudine 300mg "
294
+ },
295
+ {
296
+ "concept": "1baf254e-1429-4fd9-8db1-edf6523cea13",
297
+ "label": " Ritonavir 100mg"
298
+ },
299
+ {
300
+ "concept": "42ef7c4d-d6fb-49c0-a46e-019c42dea203",
301
+ "label": " Ritonavir 80mg"
302
+ },
303
+ {
304
+ "concept": "da698164-870d-11e0-85d3-000d6014b64c",
305
+ "label": " Raltegravir 400mg"
306
+ },
307
+ {
308
+ "concept": "a8afbf9e-1350-11df-a1f1-0026b9348838",
309
+ "label": "Atazanavir "
310
+ }
311
+ ],
312
+ "rendering": "single-select"
313
+ }
314
+ },
315
+ {
316
+ "label": "Past ART, adult:",
317
+ "id": "pastArvDrugsAdult",
318
+ "type": "obs",
319
+ "questionOptions": {
320
+ "concept": "a8a318e8-1350-11df-a1f1-0026b9348838",
321
+ "answers": [
322
+ {
323
+ "concept": "6a73f32d-1870-4527-af6e-74443251ded2",
324
+ "label": "NVP200/ZDV300/3TC150"
325
+ },
326
+ {
327
+ "concept": "1c4a75d0-cc91-4752-b0a5-4b833326ff7a",
328
+ "label": "TDF300mg/3TC300mg/EFV600mg"
329
+ },
330
+ {
331
+ "concept": "a89cc876-1350-11df-a1f1-0026b9348838",
332
+ "label": "3TC300mg/TDF300mg"
333
+ },
334
+ {
335
+ "concept": "3d587177-984e-4eeb-93f2-3223b6c1dd7c",
336
+ "label": "3TC150mg/D4T30mg"
337
+ },
338
+ {
339
+ "concept": "a896758e-1350-11df-a1f1-0026b9348838",
340
+ "label": "3TC150mg/ZDV300mg"
341
+ },
342
+ {
343
+ "concept": "a897e608-1350-11df-a1f1-0026b9348838",
344
+ "label": "NVP200/D4T30/3TC150"
345
+ },
346
+ {
347
+ "concept": "a8afcf84-1350-11df-a1f1-0026b9348838",
348
+ "label": "Emtri200mg/TDF300(Truvada)"
349
+ },
350
+ {
351
+ "concept": "a897e7c0-1350-11df-a1f1-0026b9348838",
352
+ "label": "Aluvia(Kaletra)200mg/LPV50mg"
353
+ },
354
+ {
355
+ "concept": "a8afc066-1350-11df-a1f1-0026b9348838",
356
+ "label": "Atazanavir300/Ritonavir100"
357
+ },
358
+ {
359
+ "concept": "dabf36cb-dd9a-4542-a8ef-874c1ee5be4a",
360
+ "label": "FTC200mg/RPV25mg/TDF245mg(Eviplera)"
361
+ },
362
+ {
363
+ "concept": "a897f8a0-1350-11df-a1f1-0026b9348838",
364
+ "label": "Abacavir300mg"
365
+ },
366
+ {
367
+ "concept": "a89677e6-1350-11df-a1f1-0026b9348838",
368
+ "label": "Efavirenz600mg"
369
+ },
370
+ {
371
+ "concept": "a89673f4-1350-11df-a1f1-0026b9348838",
372
+ "label": "Lamivudine150mg"
373
+ },
374
+ {
375
+ "concept": "a8967656-1350-11df-a1f1-0026b9348838",
376
+ "label": "Nevirapine200mg"
377
+ },
378
+ {
379
+ "concept": "a8afbd64-1350-11df-a1f1-0026b9348838",
380
+ "label": "Raltegravir 400mg"
381
+ },
382
+ {
383
+ "concept": "a897ea4a-1350-11df-a1f1-0026b9348838",
384
+ "label": "Zidovudine300mg"
385
+ },
386
+ {
387
+ "concept": "68a0a5dd-1e91-43a2-8dce-c6e84a14de04",
388
+ "label": "Darunavir 600mg"
389
+ },
390
+ {
391
+ "concept": "38fbba9c-4b26-412d-9659-8dd649514d66",
392
+ "label": "Etravirine 100mg"
393
+ },
394
+ {
395
+ "concept": "a899e0ac-1350-11df-a1f1-0026b9348838",
396
+ "label": "None"
397
+ },
398
+ {
399
+ "concept": "a8a87a86-1350-11df-a1f1-0026b9348838",
400
+ "label": "Other"
401
+ }
402
+ ],
403
+ "rendering": "multi-select"
404
+ }
405
+ }
406
+ ]
407
+ },
408
+ {
409
+ "label": "ART History",
410
+ "isExpanded": "true",
411
+ "questions": [
412
+ {
413
+ "label": "Patient currently on ART:",
414
+ "required": "true",
415
+ "id": "onArt",
416
+ "historicalExpression": "arrayContainsAny(['a89b7c50-1350-11df-a1f1-0026b9348838','a89b7ae8-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838'], HD.getObject('prevEnc').getValue('a89b75d4-1350-11df-a1f1-0026b9348838')) ? 'a899b35c-1350-11df-a1f1-0026b9348838' : HD.getObject('prevEnc').getValue('a89ae254-1350-11df-a1f1-0026b9348838')",
417
+ "questionOptions": {
418
+ "concept": "a89ae254-1350-11df-a1f1-0026b9348838",
419
+ "answers": [
420
+ {
421
+ "concept": "a899b35c-1350-11df-a1f1-0026b9348838",
422
+ "label": "Yes"
423
+ },
424
+ {
425
+ "concept": "a899b42e-1350-11df-a1f1-0026b9348838",
426
+ "label": "No"
427
+ }
428
+ ],
429
+ "rendering": "select"
430
+ },
431
+ "type": "obs",
432
+ "validators": []
433
+ },
434
+ {
435
+ "label": "Reason for use:",
436
+ "id": "reasonUse",
437
+ "type": "obs",
438
+ "questionOptions": {
439
+ "concept": "a8a30d1c-1350-11df-a1f1-0026b9348838",
440
+ "rendering": "select",
441
+ "answers": [
442
+ {
443
+ "concept": "a89adc46-1350-11df-a1f1-0026b9348838",
444
+ "label": "Treatment"
445
+ },
446
+ {
447
+ "concept": "a8a19c20-1350-11df-a1f1-0026b9348838",
448
+ "label": "PEP"
449
+ },
450
+ {
451
+ "concept": "a89fbedc-1350-11df-a1f1-0026b9348838",
452
+ "label": "PMTCT"
453
+ }
454
+ ]
455
+ },
456
+ "validators": [],
457
+ "hide": {
458
+ "hideWhenExpression": "onArt!== 'a899b35c-1350-11df-a1f1-0026b9348838'"
459
+ }
460
+ },
461
+ {
462
+ "label": "If patient started ART since last visit, enter start date:",
463
+ "id": "startDate",
464
+ "questionOptions": {
465
+ "concept": "a89d200a-1350-11df-a1f1-0026b9348838",
466
+ "rendering": "date"
467
+ },
468
+ "type": "obs",
469
+ "validators": [
470
+ {
471
+ "type": "date"
472
+ }
473
+ ],
474
+ "hide": {
475
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
476
+ }
477
+ },
478
+ {
479
+ "label": "Line of ART patient is taking:",
480
+ "id": "current_arv_line",
481
+ "historicalExpression": "!_.isEmpty(HD.getObject('prevEnc').getValue('a89b6a62-1350-11df-a1f1-0026b9348838')) ? undefined : HD.getObject('prevEnc').getValue('04616f5d-b961-4f41-bbd7-bcc0dd235577')",
482
+ "questionOptions": {
483
+ "concept": "04616f5d-b961-4f41-bbd7-bcc0dd235577",
484
+ "answers": [
485
+ {
486
+ "concept": "034047bd-3fa1-4b2a-b0f0-2787e9b9f7b3",
487
+ "label": "First line regimen"
488
+ },
489
+ {
490
+ "concept": "8f8a715d-e49a-4b2c-aa3a-83fa9d7a4254",
491
+ "label": "Second line regimen"
492
+ },
493
+ {
494
+ "concept": "a90ebdd2-351f-485a-b850-4938fcca2729",
495
+ "label": "Third line regimen"
496
+ }
497
+ ],
498
+ "rendering": "select"
499
+ },
500
+ "type": "obs",
501
+ "validators": [
502
+ {
503
+ "type": "js_expression",
504
+ "failsWhenExpression": "isEmpty(myValue) && !isEmpty(onArt) && onArt === 'a899b35c-1350-11df-a1f1-0026b9348838'",
505
+ "message": "Patient previously marked as on ART. Please provide the treatment category."
506
+ }
507
+ ],
508
+ "hide": {
509
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
510
+ }
511
+ },
512
+ {
513
+ "label": "Patient's current ART regimen, peds:",
514
+ "id": "current_art_regimen_ped",
515
+ "questionOptions": {
516
+ "concept": "a899cf5e-1350-11df-a1f1-0026b9348838",
517
+ "answers": [
518
+ {
519
+ "concept": "b58a28d2-36de-11e0-93be-0026b9348838",
520
+ "label": "ABC 60mg/3TC 30mg"
521
+ },
522
+ {
523
+ "concept": "25c753d8-870f-11e0-85d3-000d6014b64c",
524
+ "label": "ZDV 60mg/3TC 30mg"
525
+ },
526
+ {
527
+ "concept": "20185c04-9334-11df-8193-000d6014b64c",
528
+ "label": "ZDV 60mg/3TC 30mg/NVP 50mg"
529
+ },
530
+ {
531
+ "concept": "8ddf2f66-9333-11df-8193-000d6014b64c",
532
+ "label": "ZDV 300mg/3TC 150mg/NVP 200mg >25kgs"
533
+ },
534
+ {
535
+ "concept": "fd4cd670-3115-11e0-8090-0026b9348838",
536
+ "label": "3TC 150mg/ZDV 300mg >25kgs"
537
+ },
538
+ {
539
+ "concept": "b9da84e8-3127-11e0-8090-0026b9348838",
540
+ "label": "3TC 300mg/TDF 300mg >25kgs"
541
+ },
542
+ {
543
+ "concept": "e0037172-87ce-11e0-85d3-000d6014b64c",
544
+ "label": "TDF 300mg/3TC 300mg/EFV 600mg >35kgs"
545
+ },
546
+ {
547
+ "concept": "f8b6299e-6bbf-446a-b3f1-a88f5d6b9da2",
548
+ "label": "Lopinavir 80mg/Ritonavir 20mg"
549
+ },
550
+ {
551
+ "concept": "fa8266f6-36df-11e0-93be-0026b9348838",
552
+ "label": "Lopinavir 200mg/Ritonavir 50mg >25kgs"
553
+ },
554
+ {
555
+ "concept": "3cbfb0b9-721e-4d42-92a3-7d37269aab24",
556
+ "label": " Atazanavir 300mg/ritonavir 100mg"
557
+ },
558
+ {
559
+ "concept": "2fc1f68c-9939-44d4-b5f4-e064ed4073ca",
560
+ "label": "Nevirapine 100mg"
561
+ },
562
+ {
563
+ "concept": "0485075a-3111-11e0-8090-0026b9348838",
564
+ "label": "Nevirapine 200mg"
565
+ },
566
+ {
567
+ "concept": "db3c194b-3e1b-4001-9a1c-a5df1728fc28",
568
+ "label": "Efavirenz 200mg"
569
+ },
570
+ {
571
+ "concept": "ff9096b6-d86c-403a-9bda-eab02252dbf3",
572
+ "label": "Efavirenz 250mg"
573
+ },
574
+ {
575
+ "concept": "55e0461f-b28f-42de-a3c6-328d7f17c44b",
576
+ "label": "Efavirenz 350mg"
577
+ },
578
+ {
579
+ "concept": "81a41a82-fd72-4da4-8d47-edd5672549ce",
580
+ "label": "Efavirenz 400mg"
581
+ },
582
+ {
583
+ "concept": "4677ad3e-3120-11e0-8090-0026b9348838",
584
+ "label": "Efavirenz 600mg"
585
+ },
586
+ {
587
+ "concept": "d6262526-3113-11e0-8090-0026b9348838",
588
+ "label": "Lamivudine 150mg"
589
+ },
590
+ {
591
+ "concept": "52441ef8-3126-11e0-8090-0026b9348838",
592
+ "label": " Abacavir 300mg"
593
+ },
594
+ {
595
+ "concept": "21d417bc-3114-11e0-8090-0026b9348838",
596
+ "label": " Zidovudine 300mg "
597
+ },
598
+ {
599
+ "concept": "1baf254e-1429-4fd9-8db1-edf6523cea13",
600
+ "label": " Ritonavir 100mg"
601
+ },
602
+ {
603
+ "concept": "42ef7c4d-d6fb-49c0-a46e-019c42dea203",
604
+ "label": " Ritonavir 80mg"
605
+ },
606
+ {
607
+ "concept": "da698164-870d-11e0-85d3-000d6014b64c",
608
+ "label": " Raltegravir 400mg"
609
+ },
610
+ {
611
+ "concept": "a8afbf9e-1350-11df-a1f1-0026b9348838",
612
+ "label": "Atazanavir "
613
+ }
614
+ ],
615
+ "rendering": "multiCheckbox"
616
+ },
617
+ "type": "obs",
618
+ "validators": [],
619
+ "hide": {
620
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
621
+ }
622
+ },
623
+ {
624
+ "label": "Patient's current ART regimen, adults:",
625
+ "id": "current_art_regimen_adult",
626
+ "historicalExpression": "_.isEmpty(HD.getObject('prevEnc').getValue('a89b6a62-1350-11df-a1f1-0026b9348838')) ? HD.getObject('prevEnc').getValue('a8a08344-1350-11df-a1f1-0026b9348838.a899cf5e-1350-11df-a1f1-0026b9348838') : HD.getObject('prevEnc').getValue('a89b6a62-1350-11df-a1f1-0026b9348838')",
627
+ "questionOptions": {
628
+ "concept": "a899cf5e-1350-11df-a1f1-0026b9348838",
629
+ "answers": [
630
+ {
631
+ "concept": "6a73f32d-1870-4527-af6e-74443251ded2",
632
+ "label": "NVP200/ZDV300/3TC150"
633
+ },
634
+ {
635
+ "concept": "1c4a75d0-cc91-4752-b0a5-4b833326ff7a",
636
+ "label": "TDF300mg/3TC300mg/EFV600mg"
637
+ },
638
+ {
639
+ "concept": "a89cc876-1350-11df-a1f1-0026b9348838",
640
+ "label": "3TC300mg/TDF300mg"
641
+ },
642
+ {
643
+ "concept": "3d587177-984e-4eeb-93f2-3223b6c1dd7c",
644
+ "label": "3TC150mg/D4T30mg"
645
+ },
646
+ {
647
+ "concept": "a896758e-1350-11df-a1f1-0026b9348838",
648
+ "label": "3TC150mg/ZDV300mg"
649
+ },
650
+ {
651
+ "concept": "a897e608-1350-11df-a1f1-0026b9348838",
652
+ "label": "NVP200/D4T30/3TC150"
653
+ },
654
+ {
655
+ "concept": "a8afcf84-1350-11df-a1f1-0026b9348838",
656
+ "label": "Emtri200mg/TDF300(Truvada)"
657
+ },
658
+ {
659
+ "concept": "a897e7c0-1350-11df-a1f1-0026b9348838",
660
+ "label": "Aluvia(Kaletra)200mg/LPV50mg"
661
+ },
662
+ {
663
+ "concept": "a8afc066-1350-11df-a1f1-0026b9348838",
664
+ "label": "Atazanavir300/Ritonavir100"
665
+ },
666
+ {
667
+ "concept": "dabf36cb-dd9a-4542-a8ef-874c1ee5be4a",
668
+ "label": "FTC200mg/RPV25mg/TDF245mg(Eviplera)"
669
+ },
670
+ {
671
+ "concept": "a897f8a0-1350-11df-a1f1-0026b9348838",
672
+ "label": "Abacavir300mg"
673
+ },
674
+ {
675
+ "concept": "a89677e6-1350-11df-a1f1-0026b9348838",
676
+ "label": "Efavirenz600mg"
677
+ },
678
+ {
679
+ "concept": "a89673f4-1350-11df-a1f1-0026b9348838",
680
+ "label": "Lamivudine150mg"
681
+ },
682
+ {
683
+ "concept": "a8967656-1350-11df-a1f1-0026b9348838",
684
+ "label": "Nevirapine200mg"
685
+ },
686
+ {
687
+ "concept": "a8afbd64-1350-11df-a1f1-0026b9348838",
688
+ "label": "Raltegravir 400mg"
689
+ },
690
+ {
691
+ "concept": "a897ea4a-1350-11df-a1f1-0026b9348838",
692
+ "label": "Zidovudine300mg"
693
+ },
694
+ {
695
+ "concept": "68a0a5dd-1e91-43a2-8dce-c6e84a14de04",
696
+ "label": "Darunavir 600mg"
697
+ },
698
+ {
699
+ "concept": "38fbba9c-4b26-412d-9659-8dd649514d66",
700
+ "label": "Etravirine 100mg"
701
+ },
702
+ {
703
+ "concept": "a899e0ac-1350-11df-a1f1-0026b9348838",
704
+ "label": "None"
705
+ },
706
+ {
707
+ "concept": "a8a87a86-1350-11df-a1f1-0026b9348838",
708
+ "label": "Other"
709
+ }
710
+ ],
711
+ "rendering": "multiCheckbox"
712
+ },
713
+ "type": "obs",
714
+ "validators": [],
715
+ "hide": {
716
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
717
+ }
718
+ },
719
+ {
720
+ "type": "obsGroup",
721
+ "label": "ART adherence",
722
+ "questionOptions": {
723
+ "concept": "bc3834dd-ef07-4027-be30-729baa069291",
724
+ "rendering": "group"
725
+ },
726
+ "questions": [
727
+ {
728
+ "label": "Adherence on ART:",
729
+ "id": "artAdherence",
730
+ "questionOptions": {
731
+ "concept": "2c363a0e-7cf9-42cd-9778-1301b09c4484",
732
+ "answers": [
733
+ {
734
+ "concept": "a8b0f882-1350-11df-a1f1-0026b9348838",
735
+ "label": "Good"
736
+ },
737
+ {
738
+ "concept": "a73d20b3-d721-4763-a362-14a0c41a6b5e",
739
+ "label": "Fair"
740
+ },
741
+ {
742
+ "concept": "fdaf8b47-ea14-4d28-80fa-e1da58a30e8b",
743
+ "label": "Poor"
744
+ }
745
+ ],
746
+ "rendering": "select"
747
+ },
748
+ "type": "obs",
749
+ "validators": [
750
+ {
751
+ "type": "js_expression",
752
+ "failsWhenExpression": "!isEmpty(onArt) && onArt === 'a899b35c-1350-11df-a1f1-0026b9348838' && isEmpty(myValue)",
753
+ "message": "Patient on ARVs. Please provide adherence history."
754
+ }
755
+ ],
756
+ "hide": {
757
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
758
+ }
759
+ },
760
+ {
761
+ "label": "Adherence (ART) Reason for poor/fair:",
762
+ "id": "artReasonPoorFair",
763
+ "questionOptions": {
764
+ "concept": "a89ebbc2-1350-11df-a1f1-0026b9348838",
765
+ "answers": [
766
+ {
767
+ "concept": "a89ced88-1350-11df-a1f1-0026b9348838",
768
+ "label": "Alcohol"
769
+ },
770
+ {
771
+ "concept": "a8935fde-1350-11df-a1f1-0026b9348838",
772
+ "label": "Depression"
773
+ },
774
+ {
775
+ "concept": "a89eac04-1350-11df-a1f1-0026b9348838",
776
+ "label": "Felt well"
777
+ },
778
+ {
779
+ "concept": "a89eacc2-1350-11df-a1f1-0026b9348838",
780
+ "label": "Forgot"
781
+ },
782
+ {
783
+ "concept": "7211031b-0685-44bc-a5e9-5a018d0173ea",
784
+ "label": "Gave away"
785
+ },
786
+ {
787
+ "concept": "a8af4cee-1350-11df-a1f1-0026b9348838",
788
+ "label": "Lost/Ran out of pills"
789
+ },
790
+ {
791
+ "concept": "ecafa614-49c5-4eba-84c7-b85b0d9e2c46",
792
+ "label": "Pill Burden"
793
+ },
794
+ {
795
+ "concept": "a89eb8c0-1350-11df-a1f1-0026b9348838",
796
+ "label": "Side Effects"
797
+ },
798
+ {
799
+ "concept": "a89eba46-1350-11df-a1f1-0026b9348838",
800
+ "label": "Stigma"
801
+ },
802
+ {
803
+ "concept": "c0c9eab3-46f6-453c-b29d-dc1c242317c5",
804
+ "label": "Stock out"
805
+ },
806
+ {
807
+ "concept": "a89de2d8-1350-11df-a1f1-0026b9348838",
808
+ "label": "Too ill"
809
+ },
810
+ {
811
+ "concept": "a897fdaa-1350-11df-a1f1-0026b9348838",
812
+ "label": "Travel Problems"
813
+ },
814
+ {
815
+ "concept": "a8aaf3e2-1350-11df-a1f1-0026b9348838",
816
+ "label": "Other"
817
+ }
818
+ ],
819
+ "rendering": "multiCheckbox"
820
+ },
821
+ "type": "obs",
822
+ "validators": [],
823
+ "hide": {
824
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838' || !arrayContains(['a73d20b3-d721-4763-a362-14a0c41a6b5e','fdaf8b47-ea14-4d28-80fa-e1da58a30e8b'], artAdherence) "
825
+ }
826
+ },
827
+ {
828
+ "label": "Adherence (ART): Other (specify):",
829
+ "type": "obs",
830
+ "questionOptions": {
831
+ "concept": "a8a06fc6-1350-11df-a1f1-0026b9348838",
832
+ "rendering": "text"
833
+ },
834
+ "validators": [],
835
+ "hide": {
836
+ "hideWhenExpression": "onArt !== 'a899b35c-1350-11df-a1f1-0026b9348838' || !arrayContains(['a73d20b3-d721-4763-a362-14a0c41a6b5e','fdaf8b47-ea14-4d28-80fa-e1da58a30e8b'], artAdherence)"
837
+ }
838
+ }
839
+ ]
840
+ }
841
+ ]
842
+ },
843
+ {
844
+ "label": "ART Plan",
845
+ "isExpanded": "true",
846
+ "questions": [
847
+ {
848
+ "required": "true",
849
+ "id": "arvPlan",
850
+ "label": "ART plan:",
851
+ "questionOptions": {
852
+ "concept": "a89b75d4-1350-11df-a1f1-0026b9348838",
853
+ "answers": [
854
+ {
855
+ "concept": "a89b7908-1350-11df-a1f1-0026b9348838",
856
+ "label": "Continue regimen"
857
+ },
858
+ {
859
+ "concept": "a898c938-1350-11df-a1f1-0026b9348838",
860
+ "label": "Change dose"
861
+ },
862
+ {
863
+ "concept": "a89b7c50-1350-11df-a1f1-0026b9348838",
864
+ "label": "Change regimen"
865
+ },
866
+ {
867
+ "concept": "a89b7ae8-1350-11df-a1f1-0026b9348838",
868
+ "label": "Change formulation"
869
+ },
870
+ {
871
+ "concept": "a8a00158-1350-11df-a1f1-0026b9348838",
872
+ "label": "Drug substitution"
873
+ },
874
+ {
875
+ "concept": "a899e0ac-1350-11df-a1f1-0026b9348838",
876
+ "label": "Not on ARVS"
877
+ },
878
+ {
879
+ "concept": "a8a00220-1350-11df-a1f1-0026b9348838",
880
+ "label": "Restart"
881
+ },
882
+ {
883
+ "concept": "a89b77aa-1350-11df-a1f1-0026b9348838",
884
+ "label": "Start ARVs"
885
+ },
886
+ {
887
+ "concept": "a89b7d36-1350-11df-a1f1-0026b9348838",
888
+ "label": "Stop all"
889
+ }
890
+ ],
891
+ "rendering": "select"
892
+ },
893
+ "type": "obs",
894
+ "validators": [
895
+ {
896
+ "type": "js_expression",
897
+ "failsWhenExpression": "!isEmpty(onArt) && onArt === 'a899b35c-1350-11df-a1f1-0026b9348838' && !isEmpty(myValue) && arrayContains(['a89b77aa-1350-11df-a1f1-0026b9348838','a899e0ac-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838'], myValue)",
898
+ "message": "Patient marked as on ART in ART History section. Therefore plan can only be drug substitution, continue regimen, change dose, chage regimen, change"
899
+ },
900
+ {
901
+ "type": "js_expression",
902
+ "failsWhenExpression": "!isEmpty(onArt) && onArt === 'a899b42e-1350-11df-a1f1-0026b9348838' && !isEmpty(myValue) && !arrayContains(['a89b77aa-1350-11df-a1f1-0026b9348838','a899e0ac-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838'], myValue)",
903
+ "message": "Patient marked as not on ART in ART History section. Therefore plan can only be None,Start"
904
+ }
905
+ ]
906
+ },
907
+ {
908
+ "label": "Reason to Start ART:",
909
+ "id": "arvStartReason",
910
+ "questionOptions": {
911
+ "concept": "a89b6ce2-1350-11df-a1f1-0026b9348838",
912
+ "answers": [
913
+ {
914
+ "concept": "c9778159-958b-4f59-9053-a6171074726f",
915
+ "label": "CD4 less than 500"
916
+ },
917
+ {
918
+ "concept": "a8af49d8-1350-11df-a1f1-0026b9348838",
919
+ "label": "Discordant couple"
920
+ },
921
+ {
922
+ "concept": "a89b27be-1350-11df-a1f1-0026b9348838",
923
+ "label": "WHO stage 3"
924
+ },
925
+ {
926
+ "concept": "a89b289a-1350-11df-a1f1-0026b9348838",
927
+ "label": "WHO stage 4"
928
+ },
929
+ {
930
+ "concept": "a89fbedc-1350-11df-a1f1-0026b9348838",
931
+ "label": "PMTCT"
932
+ },
933
+ {
934
+ "concept": "a8909060-1350-11df-a1f1-0026b9348838",
935
+ "label": "Hepatitis"
936
+ },
937
+ {
938
+ "concept": "7fa72118-ef2a-4694-993a-014440024bbc",
939
+ "label": "Test and treat"
940
+ }
941
+ ],
942
+ "rendering": "select"
943
+ },
944
+ "type": "obs",
945
+ "validators": [
946
+ {
947
+ "type": "js_expression",
948
+ "failsWhenExpression": "!isEmpty(arvPlan) && isEmpty(myValue) && arrayContains(['a89b77aa-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
949
+ "message": "You indicated patient is (re)starting ART. Please provide reason."
950
+ },
951
+ {
952
+ "type": "js_expression",
953
+ "failsWhenExpression": "!isEmpty(arvPlan) && !isEmpty(myValue) && !arrayContains(['a89b77aa-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
954
+ "message": "You indicated patient is not (re)starting ART, therefore no reason for starting should be selected."
955
+ }
956
+ ],
957
+ "hide": {
958
+ "hideWhenExpression": "!arrayContains(['a89b77aa-1350-11df-a1f1-0026b9348838','a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)"
959
+ }
960
+ },
961
+ {
962
+ "type": "obsGroup",
963
+ "label": "ART change reason",
964
+ "questionOptions": {
965
+ "concept": "a8a07688-1350-11df-a1f1-0026b9348838",
966
+ "rendering": "group"
967
+ },
968
+ "questions": [
969
+ {
970
+ "id": "arvChangeReason",
971
+ "label": "Reason for stopping/change/substitution/interruption:",
972
+ "questionOptions": {
973
+ "concept": "a89b7110-1350-11df-a1f1-0026b9348838",
974
+ "answers": [
975
+ {
976
+ "concept": "a89ce50e-1350-11df-a1f1-0026b9348838",
977
+ "label": "Adherence concerns"
978
+ },
979
+ {
980
+ "concept": "a8981934-1350-11df-a1f1-0026b9348838",
981
+ "label": "Clinical treatment failure"
982
+ },
983
+ {
984
+ "concept": "c0c9eab3-46f6-453c-b29d-dc1c242317c5",
985
+ "label": "Drug out of stock"
986
+ },
987
+ {
988
+ "concept": "a890a96a-1350-11df-a1f1-0026b9348838",
989
+ "label": "Due to new TB"
990
+ },
991
+ {
992
+ "concept": "057dae68-3d6f-4d79-926c-ed75a0ce7fd5",
993
+ "label": "Illness/hospitalization"
994
+ },
995
+ {
996
+ "concept": "c6537e06-9fc2-47da-b679-e2a32824407f",
997
+ "label": "Immunologic failure"
998
+ },
999
+ {
1000
+ "concept": "a8a6f56c-1350-11df-a1f1-0026b9348838",
1001
+ "label": "Lost to follow-up"
1002
+ },
1003
+ {
1004
+ "concept": "a8a07b10-1350-11df-a1f1-0026b9348838",
1005
+ "label": "New drug available"
1006
+ },
1007
+ {
1008
+ "concept": "a8b03af0-1350-11df-a1f1-0026b9348838",
1009
+ "label": "Patient lacks finances"
1010
+ },
1011
+ {
1012
+ "concept": "abe0cbb6-8d08-487a-b18e-7af873945fcc",
1013
+ "label": "Planned Rx interruption"
1014
+ },
1015
+ {
1016
+ "concept": "a8909e8e-1350-11df-a1f1-0026b9348838",
1017
+ "label": "Pregnancy"
1018
+ },
1019
+ {
1020
+ "concept": "e38b3e51-8a27-4bf6-b0c8-e0b285e4bb2f",
1021
+ "label": "Risk of pregnancy"
1022
+ },
1023
+ {
1024
+ "concept": "a89d25fa-1350-11df-a1f1-0026b9348838",
1025
+ "label": "Other patient décisions"
1026
+ },
1027
+ {
1028
+ "concept": "a8aaf3e2-1350-11df-a1f1-0026b9348838",
1029
+ "label": "Other"
1030
+ },
1031
+ {
1032
+ "concept": "a890d1ba-1350-11df-a1f1-0026b9348838",
1033
+ "label": "Toxicity"
1034
+ },
1035
+ {
1036
+ "concept": "93fe19e8-fec4-4e4b-85f1-239e1fabd761",
1037
+ "label": "Virologic failure"
1038
+ }
1039
+ ],
1040
+ "rendering": "select"
1041
+ },
1042
+ "type": "obs",
1043
+ "validators": [
1044
+ {
1045
+ "type": "js_expression",
1046
+ "failsWhenExpression": "!isEmpty(arvPlan) && isEmpty(myValue) && arrayContains(['a898c938-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838','a89b7ae8-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7d36-1350-11df-a1f1-0026b9348838'], arvPlan)",
1047
+ "message": "You indicated patient is changing/changing dose/substituting/stopping arvs, reason for changing should be selected."
1048
+ }
1049
+ ],
1050
+ "hide": {
1051
+ "hideWhenExpression": "!arrayContains(['a898c938-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838','a89b7ae8-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7d36-1350-11df-a1f1-0026b9348838'], arvPlan)"
1052
+ }
1053
+ },
1054
+ {
1055
+ "id": "arvToxicityCause",
1056
+ "label": "If toxicity, please provide cause:",
1057
+ "questionOptions": {
1058
+ "concept": "a8a032fe-1350-11df-a1f1-0026b9348838",
1059
+ "answers": [
1060
+ {
1061
+ "concept": "a877c7f6-1350-11df-a1f1-0026b9348838",
1062
+ "label": "Anaemia"
1063
+ },
1064
+ {
1065
+ "concept": "a8909060-1350-11df-a1f1-0026b9348838",
1066
+ "label": "Hepatitis"
1067
+ },
1068
+ {
1069
+ "concept": "a89d0c0a-1350-11df-a1f1-0026b9348838",
1070
+ "label": "IRIS"
1071
+ },
1072
+ {
1073
+ "concept": "a8a01dfa-1350-11df-a1f1-0026b9348838",
1074
+ "label": "Lactic Acidosis"
1075
+ },
1076
+ {
1077
+ "concept": "a89cee50-1350-11df-a1f1-0026b9348838",
1078
+ "label": "Lipo-dystrophy"
1079
+ },
1080
+ {
1081
+ "concept": "a897fe86-1350-11df-a1f1-0026b9348838",
1082
+ "label": "Neuropathy"
1083
+ },
1084
+ {
1085
+ "concept": "a8ad239c-1350-11df-a1f1-0026b9348838",
1086
+ "label": "Persistent Vomiting"
1087
+ },
1088
+ {
1089
+ "concept": "a895776a-1350-11df-a1f1-0026b9348838",
1090
+ "label": "Rash"
1091
+ },
1092
+ {
1093
+ "concept": "a8a16d0e-1350-11df-a1f1-0026b9348838",
1094
+ "label": "Steven-Johnson syndrome"
1095
+ },
1096
+ {
1097
+ "concept": "a8aaf3e2-1350-11df-a1f1-0026b9348838",
1098
+ "label": "Other"
1099
+ }
1100
+ ],
1101
+ "rendering": "select"
1102
+ },
1103
+ "type": "obs",
1104
+ "validators": [
1105
+ {
1106
+ "type": "js_expression",
1107
+ "failsWhenExpression": "!isEmpty(arvChangeReason)&&isEmpty(myValue) && (arvChangeReason==='a890d1ba-1350-11df-a1f1-0026b9348838')",
1108
+ "message": "You indicated patient is changing /changing dose/substituting/stopping arvs due to toxicity, cause should be selected."
1109
+ },
1110
+ {
1111
+ "type": "js_expression",
1112
+ "failsWhenExpression": "!isEmpty(arvChangeReason) && !isEmpty(myValue) && (arvChangeReason!=='a890d1ba-1350-11df-a1f1-0026b9348838')",
1113
+ "message": "You indicated patient is not changing/dose/substituting/stopping arvs due to toxicity, cause should be selected."
1114
+ }
1115
+ ],
1116
+ "hide": {
1117
+ "hideWhenExpression": "arvChangeReason!=='a890d1ba-1350-11df-a1f1-0026b9348838'"
1118
+ }
1119
+ },
1120
+ {
1121
+ "label": "If toxicity: Other (specify):",
1122
+ "id": "q24cToxOther",
1123
+ "type": "obs",
1124
+ "questionOptions": {
1125
+ "concept": "a8a06fc6-1350-11df-a1f1-0026b9348838",
1126
+ "rendering": "text"
1127
+ },
1128
+ "validators": [
1129
+ {
1130
+ "type": "js_expression",
1131
+ "failsWhenExpression": "!isEmpty(arvToxicityCause) && isEmpty(myValue) && (arvToxicityCause==='a8aaf3e2-1350-11df-a1f1-0026b9348838')",
1132
+ "message": "You indicated patient is changing /changing dose/substituting/stopping arvs due to other toxicity, indicate the other cause."
1133
+ },
1134
+ {
1135
+ "type": "js_expression",
1136
+ "failsWhenExpression": "!isEmpty(arvToxicityCause) && !isEmpty(myValue) && (arvToxicityCause!=='a8aaf3e2-1350-11df-a1f1-0026b9348838')",
1137
+ "message": "You indicated patient is not changing /changing dose/substituting/stopping arvs due to other toxicity, other cause is not required."
1138
+ }
1139
+ ],
1140
+ "hide": {
1141
+ "hideWhenExpression": "arvToxicityCause!=='a8aaf3e2-1350-11df-a1f1-0026b9348838'"
1142
+ }
1143
+ }
1144
+ ]
1145
+ },
1146
+ {
1147
+ "type": "obsGroup",
1148
+ "label": "Eligible for ART",
1149
+ "questionOptions": {
1150
+ "concept": "a8a17a7e-1350-11df-a1f1-0026b9348838",
1151
+ "rendering": "group"
1152
+ },
1153
+ "questions": [
1154
+ {
1155
+ "label": "Eligible for ART but not started:",
1156
+ "id": "artEligibleNotStarted",
1157
+ "questionOptions": {
1158
+ "concept": "a89d26cc-1350-11df-a1f1-0026b9348838",
1159
+ "answers": [
1160
+ {
1161
+ "concept": "a89ce50e-1350-11df-a1f1-0026b9348838",
1162
+ "label": "Adherence Concerns"
1163
+ },
1164
+ {
1165
+ "concept": "a8a8b26c-1350-11df-a1f1-0026b9348838",
1166
+ "label": "On TB Treatment"
1167
+ },
1168
+ {
1169
+ "concept": "a8aaf3e2-1350-11df-a1f1-0026b9348838",
1170
+ "label": "Other"
1171
+ },
1172
+ {
1173
+ "concept": "a89d25fa-1350-11df-a1f1-0026b9348838",
1174
+ "label": "Patient Refused"
1175
+ }
1176
+ ],
1177
+ "rendering": "select"
1178
+ },
1179
+ "type": "obs",
1180
+ "validators": [],
1181
+ "hide": {
1182
+ "hideWhenExpression": "arvPlan !== 'a899e0ac-1350-11df-a1f1-0026b9348838'"
1183
+ }
1184
+ },
1185
+ {
1186
+ "label": "Eligible for ART but not started: Other (specify):",
1187
+ "questionOptions": {
1188
+ "concept": "a8a06fc6-1350-11df-a1f1-0026b9348838",
1189
+ "rendering": "text"
1190
+ },
1191
+ "type": "obs",
1192
+ "id": "q24dOther",
1193
+ "validators": [],
1194
+ "hide": {
1195
+ "hideWhenExpression": "artEligibleNotStarted !== 'a8aaf3e2-1350-11df-a1f1-0026b9348838'"
1196
+ }
1197
+ }
1198
+ ]
1199
+ },
1200
+ {
1201
+ "label": "Plan treatment categories:",
1202
+ "type": "obs",
1203
+ "id": "planCate",
1204
+ "questionOptions": {
1205
+ "concept": "74e3b23f-b94f-49d9-a237-6baaee73f163",
1206
+ "answers": [
1207
+ {
1208
+ "concept": "034047bd-3fa1-4b2a-b0f0-2787e9b9f7b3",
1209
+ "label": "First Line Regimen"
1210
+ },
1211
+ {
1212
+ "concept": "8f8a715d-e49a-4b2c-aa3a-83fa9d7a4254",
1213
+ "label": "Second Line Regimen"
1214
+ },
1215
+ {
1216
+ "concept": "a90ebdd2-351f-485a-b850-4938fcca2729",
1217
+ "label": "Third Line Regimen"
1218
+ }
1219
+ ],
1220
+ "rendering": "select"
1221
+ },
1222
+ "hide": {
1223
+ "hideWhenExpression": "!arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'],arvPlan)"
1224
+ }
1225
+ },
1226
+ {
1227
+ "label": "ART regimen started, peds:",
1228
+ "id": "artStartedPed",
1229
+ "questionOptions": {
1230
+ "concept": "a89b6a62-1350-11df-a1f1-0026b9348838",
1231
+ "answers": [
1232
+ {
1233
+ "concept": "b58a28d2-36de-11e0-93be-0026b9348838",
1234
+ "label": "ABC 60mg/3TC 30mg"
1235
+ },
1236
+ {
1237
+ "concept": "25c753d8-870f-11e0-85d3-000d6014b64c",
1238
+ "label": "ZDV 60mg/3TC 30mg"
1239
+ },
1240
+ {
1241
+ "concept": "20185c04-9334-11df-8193-000d6014b64c",
1242
+ "label": "ZDV 60mg/3TC 30mg/NVP 50mg"
1243
+ },
1244
+ {
1245
+ "concept": "8ddf2f66-9333-11df-8193-000d6014b64c",
1246
+ "label": "ZDV 300mg/3TC 150mg/NVP 200mg >25kgs"
1247
+ },
1248
+ {
1249
+ "concept": "fd4cd670-3115-11e0-8090-0026b9348838",
1250
+ "label": "3TC 150mg/ZDV 300mg >25kgs"
1251
+ },
1252
+ {
1253
+ "concept": "b9da84e8-3127-11e0-8090-0026b9348838",
1254
+ "label": "3TC 300mg/TDF 300mg >25kgs"
1255
+ },
1256
+ {
1257
+ "concept": "e0037172-87ce-11e0-85d3-000d6014b64c",
1258
+ "label": "TDF 300mg/3TC 300mg/EFV 600mg >35kgs"
1259
+ },
1260
+ {
1261
+ "concept": "f8b6299e-6bbf-446a-b3f1-a88f5d6b9da2",
1262
+ "label": "Lopinavir 80mg/Ritonavir 20mg"
1263
+ },
1264
+ {
1265
+ "concept": "fa8266f6-36df-11e0-93be-0026b9348838",
1266
+ "label": "Lopinavir 200mg/Ritonavir 50mg >25kgs"
1267
+ },
1268
+ {
1269
+ "concept": "3cbfb0b9-721e-4d42-92a3-7d37269aab24",
1270
+ "label": " Atazanavir 300mg/ritonavir 100mg"
1271
+ },
1272
+ {
1273
+ "concept": "2fc1f68c-9939-44d4-b5f4-e064ed4073ca",
1274
+ "label": "Nevirapine 100mg"
1275
+ },
1276
+ {
1277
+ "concept": "0485075a-3111-11e0-8090-0026b9348838",
1278
+ "label": "Nevirapine 200mg"
1279
+ },
1280
+ {
1281
+ "concept": "db3c194b-3e1b-4001-9a1c-a5df1728fc28",
1282
+ "label": "Efavirenz 200mg"
1283
+ },
1284
+ {
1285
+ "concept": "ff9096b6-d86c-403a-9bda-eab02252dbf3",
1286
+ "label": "Efavirenz 250mg"
1287
+ },
1288
+ {
1289
+ "concept": "55e0461f-b28f-42de-a3c6-328d7f17c44b",
1290
+ "label": "Efavirenz 350mg"
1291
+ },
1292
+ {
1293
+ "concept": "81a41a82-fd72-4da4-8d47-edd5672549ce",
1294
+ "label": "Efavirenz 400mg"
1295
+ },
1296
+ {
1297
+ "concept": "4677ad3e-3120-11e0-8090-0026b9348838",
1298
+ "label": "Efavirenz 600mg"
1299
+ },
1300
+ {
1301
+ "concept": "d6262526-3113-11e0-8090-0026b9348838",
1302
+ "label": "Lamivudine 150mg"
1303
+ },
1304
+ {
1305
+ "concept": "52441ef8-3126-11e0-8090-0026b9348838",
1306
+ "label": " Abacavir 300mg"
1307
+ },
1308
+ {
1309
+ "concept": "21d417bc-3114-11e0-8090-0026b9348838",
1310
+ "label": " Zidovudine 300mg "
1311
+ },
1312
+ {
1313
+ "concept": "1baf254e-1429-4fd9-8db1-edf6523cea13",
1314
+ "label": " Ritonavir 100mg"
1315
+ },
1316
+ {
1317
+ "concept": "42ef7c4d-d6fb-49c0-a46e-019c42dea203",
1318
+ "label": " Ritonavir 80mg"
1319
+ },
1320
+ {
1321
+ "concept": "da698164-870d-11e0-85d3-000d6014b64c",
1322
+ "label": " Raltegravir 400mg"
1323
+ },
1324
+ {
1325
+ "concept": "a8afbf9e-1350-11df-a1f1-0026b9348838",
1326
+ "label": "Atazanavir "
1327
+ }
1328
+ ],
1329
+ "rendering": "multiCheckbox"
1330
+ },
1331
+ "type": "obs",
1332
+ "validators": [
1333
+ {
1334
+ "type": "js_expression",
1335
+ "failsWhenExpression": "!isEmpty(arvPlan) && isEmpty(myValue) && arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
1336
+ "message": "Based on the plan selected, you must choose a regimen."
1337
+ },
1338
+ {
1339
+ "type": "js_expression",
1340
+ "failsWhenExpression": "!isEmpty(myValue) && !arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
1341
+ "message": "Based on the plan selected, you may not choose a regimen."
1342
+ }
1343
+ ],
1344
+ "hide": {
1345
+ "hideWhenExpression": "!arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'],arvPlan)"
1346
+ }
1347
+ },
1348
+ {
1349
+ "label": "ART regimen started, adult:",
1350
+ "id": "artStartedAdult",
1351
+ "questionOptions": {
1352
+ "concept": "a89b6a62-1350-11df-a1f1-0026b9348838",
1353
+ "answers": [
1354
+ {
1355
+ "concept": "6a73f32d-1870-4527-af6e-74443251ded2",
1356
+ "label": "NVP200/ZDV300/3TC150"
1357
+ },
1358
+ {
1359
+ "concept": "1c4a75d0-cc91-4752-b0a5-4b833326ff7a",
1360
+ "label": "TDF300mg/3TC300mg/EFV600mg"
1361
+ },
1362
+ {
1363
+ "concept": "a89cc876-1350-11df-a1f1-0026b9348838",
1364
+ "label": "3TC300mg/TDF300mg"
1365
+ },
1366
+ {
1367
+ "concept": "3d587177-984e-4eeb-93f2-3223b6c1dd7c",
1368
+ "label": "3TC150mg/D4T30mg"
1369
+ },
1370
+ {
1371
+ "concept": "a896758e-1350-11df-a1f1-0026b9348838",
1372
+ "label": "3TC150mg/ZDV300mg"
1373
+ },
1374
+ {
1375
+ "concept": "a897e608-1350-11df-a1f1-0026b9348838",
1376
+ "label": "NVP200/D4T30/3TC150"
1377
+ },
1378
+ {
1379
+ "concept": "a8afcf84-1350-11df-a1f1-0026b9348838",
1380
+ "label": "Emtri200mg/TDF300(Truvada)"
1381
+ },
1382
+ {
1383
+ "concept": "a897e7c0-1350-11df-a1f1-0026b9348838",
1384
+ "label": "Aluvia(Kaletra)200mg/LPV50mg"
1385
+ },
1386
+ {
1387
+ "concept": "a8afc066-1350-11df-a1f1-0026b9348838",
1388
+ "label": "Atazanavir300/Ritonavir100"
1389
+ },
1390
+ {
1391
+ "concept": "dabf36cb-dd9a-4542-a8ef-874c1ee5be4a",
1392
+ "label": "FTC200mg/RPV25mg/TDF245mg(Eviplera)"
1393
+ },
1394
+ {
1395
+ "concept": "a897f8a0-1350-11df-a1f1-0026b9348838",
1396
+ "label": "Abacavir300mg"
1397
+ },
1398
+ {
1399
+ "concept": "a89677e6-1350-11df-a1f1-0026b9348838",
1400
+ "label": "Efavirenz600mg"
1401
+ },
1402
+ {
1403
+ "concept": "a89673f4-1350-11df-a1f1-0026b9348838",
1404
+ "label": "Lamivudine150mg"
1405
+ },
1406
+ {
1407
+ "concept": "a8967656-1350-11df-a1f1-0026b9348838",
1408
+ "label": "Nevirapine200mg"
1409
+ },
1410
+ {
1411
+ "concept": "a8afbd64-1350-11df-a1f1-0026b9348838",
1412
+ "label": "Raltegravir 400mg"
1413
+ },
1414
+ {
1415
+ "concept": "a897ea4a-1350-11df-a1f1-0026b9348838",
1416
+ "label": "Zidovudine300mg"
1417
+ },
1418
+ {
1419
+ "concept": "68a0a5dd-1e91-43a2-8dce-c6e84a14de04",
1420
+ "label": "Darunavir 600mg"
1421
+ },
1422
+ {
1423
+ "concept": "38fbba9c-4b26-412d-9659-8dd649514d66",
1424
+ "label": "Etravirine 100mg"
1425
+ },
1426
+ {
1427
+ "concept": "a899e0ac-1350-11df-a1f1-0026b9348838",
1428
+ "label": "None"
1429
+ },
1430
+ {
1431
+ "concept": "a8a87a86-1350-11df-a1f1-0026b9348838",
1432
+ "label": "Other"
1433
+ }
1434
+ ],
1435
+ "rendering": "multiCheckbox"
1436
+ },
1437
+ "type": "obs",
1438
+ "validators": [
1439
+ {
1440
+ "type": "js_expression",
1441
+ "failsWhenExpression": "!isEmpty(arvPlan) && isEmpty(myValue) && arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
1442
+ "message": "Based on the plan selected, you must choose a regimen."
1443
+ },
1444
+ {
1445
+ "type": "js_expression",
1446
+ "failsWhenExpression": "!isEmpty(myValue) && !arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'], arvPlan)",
1447
+ "message": "Based on the plan selected, you may not choose a regimen."
1448
+ }
1449
+ ],
1450
+ "hide": {
1451
+ "hideWhenExpression": "!arrayContains(['a89b7ae8-1350-11df-a1f1-0026b9348838', 'a898c938-1350-11df-a1f1-0026b9348838','a89b77aa-1350-11df-a1f1-0026b9348838','a8a00158-1350-11df-a1f1-0026b9348838','a89b7c50-1350-11df-a1f1-0026b9348838', 'a8a00220-1350-11df-a1f1-0026b9348838'],arvPlan)"
1452
+ }
1453
+ }
1454
+ ]
1455
+ },
1456
+ {
1457
+ "label": "ART Prophylactic History",
1458
+ "questions": [
1459
+ {
1460
+ "type": "obsGroup",
1461
+ "label": "Newborn Prophylactic Antiretroviral History",
1462
+ "questionOptions": {
1463
+ "concept": "a89c9414-1350-11df-a1f1-0026b9348838",
1464
+ "rendering": "group"
1465
+ },
1466
+ "questions": [
1467
+ {
1468
+ "label": "Newborn prophylactic ARV use:",
1469
+ "id": "NewbornProhpArv",
1470
+ "type": "obs",
1471
+ "questionOptions": {
1472
+ "rendering": "select",
1473
+ "concept": "a89c8b7c-1350-11df-a1f1-0026b9348838",
1474
+ "answers": [
1475
+ {
1476
+ "concept": "a899b35c-1350-11df-a1f1-0026b9348838",
1477
+ "label": "Yes"
1478
+ },
1479
+ {
1480
+ "concept": "a899b42e-1350-11df-a1f1-0026b9348838",
1481
+ "label": "No"
1482
+ },
1483
+ {
1484
+ "concept": "a899b50a-1350-11df-a1f1-0026b9348838",
1485
+ "label": "Unknown"
1486
+ }
1487
+ ]
1488
+ },
1489
+ "validators": []
1490
+ },
1491
+ {
1492
+ "label": "Newborn ARV use:",
1493
+ "id": "NewbornArvUse",
1494
+ "questionOptions": {
1495
+ "concept": "a89addfe-1350-11df-a1f1-0026b9348838",
1496
+ "answers": [
1497
+ {
1498
+ "concept": "a89673f4-1350-11df-a1f1-0026b9348838",
1499
+ "label": "Lamivudine"
1500
+ },
1501
+ {
1502
+ "concept": "a8967656-1350-11df-a1f1-0026b9348838",
1503
+ "label": "Nevirapine"
1504
+ },
1505
+ {
1506
+ "concept": "a897ea4a-1350-11df-a1f1-0026b9348838",
1507
+ "label": "Zidovudine"
1508
+ },
1509
+ {
1510
+ "concept": "a897e7c0-1350-11df-a1f1-0026b9348838",
1511
+ "label": "Lopinavir and ritonavir"
1512
+ },
1513
+ {
1514
+ "concept": "a8967980-1350-11df-a1f1-0026b9348838",
1515
+ "label": "Nelfinavir"
1516
+ },
1517
+ {
1518
+ "concept": "a8967156-1350-11df-a1f1-0026b9348838",
1519
+ "label": "d4T-40(Stavudine)"
1520
+ },
1521
+ {
1522
+ "concept": "a8967156-1350-11df-a1f1-0026b9348838",
1523
+ "label": "d4T-30(Stavudine)"
1524
+ },
1525
+ {
1526
+ "concept": "a8967156-1350-11df-a1f1-0026b9348838",
1527
+ "label": "Stavudine"
1528
+ },
1529
+ {
1530
+ "concept": "a8a87a86-1350-11df-a1f1-0026b9348838",
1531
+ "label": "Other"
1532
+ }
1533
+ ],
1534
+ "rendering": "multiCheckbox"
1535
+ },
1536
+ "type": "obs",
1537
+ "validators": [],
1538
+ "hide": {
1539
+ "hideWhenExpression": "NewbornProhpArv !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
1540
+ }
1541
+ },
1542
+ {
1543
+ "label": "ARV dose quantification:",
1544
+ "id": "ArvDose",
1545
+ "type": "obs",
1546
+ "questionOptions": {
1547
+ "rendering": "select",
1548
+ "concept": "a89ad8cc-1350-11df-a1f1-0026b9348838",
1549
+ "answers": [
1550
+ {
1551
+ "concept": "a89ad9a8-1350-11df-a1f1-0026b9348838",
1552
+ "label": "One dose"
1553
+ },
1554
+ {
1555
+ "concept": "a89ada8e-1350-11df-a1f1-0026b9348838",
1556
+ "label": "Two doses"
1557
+ },
1558
+ {
1559
+ "concept": "a89adb6a-1350-11df-a1f1-0026b9348838",
1560
+ "label": "More than two doses"
1561
+ }
1562
+ ]
1563
+ },
1564
+ "validators": [],
1565
+ "hide": {
1566
+ "hideWhenExpression": "NewbornProhpArv !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
1567
+ }
1568
+ },
1569
+ {
1570
+ "label": "Number of days on treatment:",
1571
+ "id": "ArvDays",
1572
+ "type": "obs",
1573
+ "questionOptions": {
1574
+ "rendering": "numeric",
1575
+ "concept": "a8a05e82-1350-11df-a1f1-0026b9348838",
1576
+ "answers": []
1577
+ },
1578
+ "validators": [],
1579
+ "hide": {
1580
+ "hideWhenExpression": "NewbornProhpArv !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
1581
+ }
1582
+ },
1583
+ {
1584
+ "label": "Number of weeks on treatment:",
1585
+ "id": "ArvDays",
1586
+ "type": "obs",
1587
+ "questionOptions": {
1588
+ "rendering": "numeric",
1589
+ "concept": "a89add22-1350-11df-a1f1-0026b9348838",
1590
+ "answers": []
1591
+ },
1592
+ "validators": [],
1593
+ "hide": {
1594
+ "hideWhenExpression": "NewbornProhpArv !== 'a899b35c-1350-11df-a1f1-0026b9348838'"
1595
+ }
1596
+ }
1597
+ ]
1598
+ },
1599
+ {
1600
+ "type": "obsGroup",
1601
+ "label": "Maternal Partum Antiretroviral History",
1602
+ "questionOptions": {
1603
+ "concept": "a89c8802-1350-11df-a1f1-0026b9348838",
1604
+ "rendering": "group"
1605
+ },
1606
+ "questions": [
1607
+ {
1608
+ "label": "Antiretroviral Use During Pregnancy",
1609
+ "id": "MothersArvUse",
1610
+ "type": "obs",
1611
+ "questionOptions": {
1612
+ "rendering": "select",
1613
+ "concept": "a89a9e48-1350-11df-a1f1-0026b9348838",
1614
+ "answers": [
1615
+ {
1616
+ "concept": "a89aadc0-1350-11df-a1f1-0026b9348838",
1617
+ "label": "On ARVs"
1618
+ },
1619
+ {
1620
+ "concept": "a899e0ac-1350-11df-a1f1-0026b9348838",
1621
+ "label": "None"
1622
+ },
1623
+ {
1624
+ "concept": "a899b50a-1350-11df-a1f1-0026b9348838",
1625
+ "label": "Unknown"
1626
+ }
1627
+ ]
1628
+ }
1629
+ },
1630
+ {
1631
+ "label": "Partum dosing period:",
1632
+ "id": "PartumDosingPeriod",
1633
+ "type": "obs",
1634
+ "questionOptions": {
1635
+ "rendering": "select",
1636
+ "concept": "a89ad55c-1350-11df-a1f1-0026b9348838",
1637
+ "answers": [
1638
+ {
1639
+ "concept": "a89ad638-1350-11df-a1f1-0026b9348838",
1640
+ "label": "Antepartum"
1641
+ },
1642
+ {
1643
+ "concept": "a89ad714-1350-11df-a1f1-0026b9348838",
1644
+ "label": "Intrapartum"
1645
+ },
1646
+ {
1647
+ "concept": "a89ad7f0-1350-11df-a1f1-0026b9348838",
1648
+ "label": "Postpartum"
1649
+ }
1650
+ ]
1651
+ },
1652
+ "validators": [],
1653
+ "hide": {
1654
+ "hideWhenExpression": "MothersArvUse !== 'a89aadc0-1350-11df-a1f1-0026b9348838'"
1655
+ }
1656
+ },
1657
+ {
1658
+ "label": "Partum ARV use:",
1659
+ "id": "PartumArvUse",
1660
+ "type": "obs",
1661
+ "questionOptions": {
1662
+ "rendering": "select",
1663
+ "concept": "a89ad480-1350-11df-a1f1-0026b9348838",
1664
+ "answers": [
1665
+ {
1666
+ "concept": "a8967656-1350-11df-a1f1-0026b9348838",
1667
+ "label": "Nevirapine"
1668
+ },
1669
+ {
1670
+ "concept": "a89673f4-1350-11df-a1f1-0026b9348838",
1671
+ "label": "Lamivudine"
1672
+ },
1673
+ {
1674
+ "concept": "a897ea4a-1350-11df-a1f1-0026b9348838",
1675
+ "label": "Zidovudine"
1676
+ }
1677
+ ]
1678
+ },
1679
+ "validators": [],
1680
+ "hide": {
1681
+ "hideWhenExpression": "MothersArvUse !== 'a89aadc0-1350-11df-a1f1-0026b9348838'"
1682
+ }
1683
+ },
1684
+ {
1685
+ "label": "Number of weeks on treatment:",
1686
+ "id": "ArvDays",
1687
+ "type": "obs",
1688
+ "questionOptions": {
1689
+ "rendering": "numeric",
1690
+ "concept": "a89add22-1350-11df-a1f1-0026b9348838",
1691
+ "answers": []
1692
+ },
1693
+ "validators": [],
1694
+ "hide": {
1695
+ "hideWhenExpression": "MothersArvUse !== 'a89aadc0-1350-11df-a1f1-0026b9348838'"
1696
+ }
1697
+ }
1698
+ ]
1699
+ }
1700
+ ]
1701
+ }
1702
+ ]
1703
+ }
1704
+ ]
1705
+ }