@icap-ethiopia/esm-ethiohri-intake 1.0.0-pre.8 → 1.0.0

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 (95) hide show
  1. package/LICENSE +400 -400
  2. package/README.md +46 -46
  3. package/dist/main.js +4914 -1
  4. package/dist/main.js.map +1 -1
  5. package/dist/node_modules_dayjs_dayjs_min_js.js +14 -0
  6. package/dist/node_modules_dayjs_dayjs_min_js.js.map +1 -0
  7. package/dist/openmrs-esm-ethio-template-app.js +4696 -1
  8. package/dist/openmrs-esm-ethio-template-app.js.buildmanifest.json +233 -249
  9. package/dist/openmrs-esm-ethio-template-app.js.map +1 -1
  10. package/dist/routes.json +1 -1
  11. package/dist/src_forms_family-information_tsx.js +934 -0
  12. package/dist/src_forms_family-information_tsx.js.map +1 -0
  13. package/dist/src_forms_intake-a-form_tsx.js +2367 -0
  14. package/dist/src_forms_intake-a-form_tsx.js.map +1 -0
  15. package/dist/src_forms_intake-b-form_tsx.js +2684 -0
  16. package/dist/src_forms_intake-b-form_tsx.js.map +1 -0
  17. package/dist/src_forms_intake-form_scss-src_forms_hooks_createEncounter_ts-src_forms_hooks_defaultValuesFr-54076e.js +2871 -0
  18. package/dist/src_forms_intake-form_scss-src_forms_hooks_createEncounter_ts-src_forms_hooks_defaultValuesFr-54076e.js.map +1 -0
  19. package/dist/src_forms_phdp-form_tsx.js +470 -0
  20. package/dist/src_forms_phdp-form_tsx.js.map +1 -0
  21. package/dist/src_index_ts.js +255 -0
  22. package/dist/src_index_ts.js.map +1 -0
  23. package/dist/src_intake_index_tsx.js +2738 -0
  24. package/dist/src_intake_index_tsx.js.map +1 -0
  25. package/dist/src_root_component_tsx.js +615 -0
  26. package/dist/src_root_component_tsx.js.map +1 -0
  27. package/dist/src_utils_Delete-Encounter_modal_tsx.js +396 -0
  28. package/dist/src_utils_Delete-Encounter_modal_tsx.js.map +1 -0
  29. package/dist/translations_am_json.js +14 -0
  30. package/dist/translations_en_json.js +14 -0
  31. package/dist/translations_es_json.js +14 -0
  32. package/dist/translations_fr_json.js +14 -0
  33. package/dist/translations_he_json.js +14 -0
  34. package/dist/translations_km_json.js +14 -0
  35. package/dist/vendors-node_modules_carbon_react_es_index_js-node_modules_swr_dist_core_index_mjs.js +132608 -0
  36. package/dist/vendors-node_modules_carbon_react_es_index_js-node_modules_swr_dist_core_index_mjs.js.map +1 -0
  37. package/dist/vendors-node_modules_openmrs_esm-framework_src_internal_ts.js +35952 -0
  38. package/dist/vendors-node_modules_openmrs_esm-framework_src_internal_ts.js.map +1 -0
  39. package/dist/vendors-node_modules_openmrs_esm-patient-common-lib_src_index_ts-node_modules_openmrs_esm-pat-24e5c8.js +4695 -0
  40. package/dist/vendors-node_modules_openmrs_esm-patient-common-lib_src_index_ts-node_modules_openmrs_esm-pat-24e5c8.js.map +1 -0
  41. package/dist/vendors-node_modules_openmrs_node_modules_css-loader_dist_runtime_api_js-node_modules_openmrs-205702.js +3059 -0
  42. package/dist/vendors-node_modules_openmrs_node_modules_css-loader_dist_runtime_api_js-node_modules_openmrs-205702.js.map +1 -0
  43. package/dist/vendors-node_modules_react-i18next_dist_es_index_js.js +1424 -0
  44. package/dist/vendors-node_modules_react-i18next_dist_es_index_js.js.map +1 -0
  45. package/dist/vendors-node_modules_react-router-dom_dist_index_js.js +6574 -0
  46. package/dist/vendors-node_modules_react-router-dom_dist_index_js.js.map +1 -0
  47. package/dist/vendors-node_modules_react_index_js.js +2770 -0
  48. package/dist/vendors-node_modules_react_index_js.js.map +1 -0
  49. package/package.json +121 -121
  50. package/src/index.ts +34 -34
  51. package/dist/151.js +0 -2
  52. package/dist/151.js.LICENSE.txt +0 -3
  53. package/dist/151.js.map +0 -1
  54. package/dist/159.js +0 -1
  55. package/dist/159.js.map +0 -1
  56. package/dist/197.js +0 -1
  57. package/dist/222.js +0 -2
  58. package/dist/222.js.LICENSE.txt +0 -5
  59. package/dist/222.js.map +0 -1
  60. package/dist/282.js +0 -2
  61. package/dist/282.js.LICENSE.txt +0 -32
  62. package/dist/282.js.map +0 -1
  63. package/dist/300.js +0 -1
  64. package/dist/319.js +0 -1
  65. package/dist/319.js.map +0 -1
  66. package/dist/335.js +0 -1
  67. package/dist/353.js +0 -1
  68. package/dist/353.js.map +0 -1
  69. package/dist/404.js +0 -2
  70. package/dist/404.js.LICENSE.txt +0 -45
  71. package/dist/404.js.map +0 -1
  72. package/dist/410.js +0 -1
  73. package/dist/410.js.map +0 -1
  74. package/dist/475.js +0 -1
  75. package/dist/475.js.map +0 -1
  76. package/dist/540.js +0 -2
  77. package/dist/540.js.LICENSE.txt +0 -9
  78. package/dist/540.js.map +0 -1
  79. package/dist/55.js +0 -1
  80. package/dist/652.js +0 -1
  81. package/dist/692.js +0 -1
  82. package/dist/692.js.map +0 -1
  83. package/dist/712.js +0 -1
  84. package/dist/712.js.map +0 -1
  85. package/dist/912.js +0 -1
  86. package/dist/912.js.map +0 -1
  87. package/dist/917.js +0 -1
  88. package/dist/917.js.map +0 -1
  89. package/dist/937.js +0 -1
  90. package/dist/937.js.map +0 -1
  91. package/dist/940.js +0 -1
  92. package/dist/940.js.map +0 -1
  93. package/dist/979.js +0 -1
  94. package/dist/979.js.map +0 -1
  95. package/dist/99.js +0 -1
@@ -0,0 +1,934 @@
1
+ "use strict";
2
+ (globalThis["webpackChunk_icap_ethiopia_esm_ethiohri_intake"] = globalThis["webpackChunk_icap_ethiopia_esm_ethiohri_intake"] || []).push([["src_forms_family-information_tsx"],{
3
+
4
+ /***/ "./src/forms/family-information.tsx":
5
+ /*!******************************************!*\
6
+ !*** ./src/forms/family-information.tsx ***!
7
+ \******************************************/
8
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
+
10
+ __webpack_require__.r(__webpack_exports__);
11
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
13
+ /* harmony export */ });
14
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
15
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
16
+ /* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @carbon/react */ "./node_modules/@carbon/react/es/index.js");
17
+ /* harmony import */ var react_hook_form__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-hook-form */ "./node_modules/react-hook-form/dist/index.esm.mjs");
18
+ /* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-framework */ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework");
19
+ /* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__);
20
+ /* harmony import */ var _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./intake-form.scss */ "./src/forms/intake-form.scss");
21
+ /* harmony import */ var _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/form-constant */ "./src/forms/utils/form-constant.ts");
22
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "./src/constants.ts");
23
+ /* harmony import */ var _hooks_useFetchLocation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useFetchLocation */ "./src/forms/hooks/useFetchLocation.ts");
24
+ /* harmony import */ var _hooks_defaultValuesFromEncounter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks/defaultValuesFromEncounter */ "./src/forms/hooks/defaultValuesFromEncounter.ts");
25
+ /* harmony import */ var _hooks_createEncounter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/createEncounter */ "./src/forms/hooks/createEncounter.ts");
26
+ function _array_like_to_array(arr, len) {
27
+ if (len == null || len > arr.length) len = arr.length;
28
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
29
+ return arr2;
30
+ }
31
+ function _array_with_holes(arr) {
32
+ if (Array.isArray(arr)) return arr;
33
+ }
34
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
35
+ try {
36
+ var info = gen[key](arg);
37
+ var value = info.value;
38
+ } catch (error) {
39
+ reject(error);
40
+ return;
41
+ }
42
+ if (info.done) {
43
+ resolve(value);
44
+ } else {
45
+ Promise.resolve(value).then(_next, _throw);
46
+ }
47
+ }
48
+ function _async_to_generator(fn) {
49
+ return function() {
50
+ var self = this, args = arguments;
51
+ return new Promise(function(resolve, reject) {
52
+ var gen = fn.apply(self, args);
53
+ function _next(value) {
54
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
55
+ }
56
+ function _throw(err) {
57
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
58
+ }
59
+ _next(undefined);
60
+ });
61
+ };
62
+ }
63
+ function _define_property(obj, key, value) {
64
+ if (key in obj) {
65
+ Object.defineProperty(obj, key, {
66
+ value: value,
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true
70
+ });
71
+ } else {
72
+ obj[key] = value;
73
+ }
74
+ return obj;
75
+ }
76
+ function _iterable_to_array_limit(arr, i) {
77
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
78
+ if (_i == null) return;
79
+ var _arr = [];
80
+ var _n = true;
81
+ var _d = false;
82
+ var _s, _e;
83
+ try {
84
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
85
+ _arr.push(_s.value);
86
+ if (i && _arr.length === i) break;
87
+ }
88
+ } catch (err) {
89
+ _d = true;
90
+ _e = err;
91
+ } finally{
92
+ try {
93
+ if (!_n && _i["return"] != null) _i["return"]();
94
+ } finally{
95
+ if (_d) throw _e;
96
+ }
97
+ }
98
+ return _arr;
99
+ }
100
+ function _non_iterable_rest() {
101
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
102
+ }
103
+ function _object_spread(target) {
104
+ for(var i = 1; i < arguments.length; i++){
105
+ var source = arguments[i] != null ? arguments[i] : {};
106
+ var ownKeys = Object.keys(source);
107
+ if (typeof Object.getOwnPropertySymbols === "function") {
108
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
109
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
110
+ }));
111
+ }
112
+ ownKeys.forEach(function(key) {
113
+ _define_property(target, key, source[key]);
114
+ });
115
+ }
116
+ return target;
117
+ }
118
+ function ownKeys(object, enumerableOnly) {
119
+ var keys = Object.keys(object);
120
+ if (Object.getOwnPropertySymbols) {
121
+ var symbols = Object.getOwnPropertySymbols(object);
122
+ if (enumerableOnly) {
123
+ symbols = symbols.filter(function(sym) {
124
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
125
+ });
126
+ }
127
+ keys.push.apply(keys, symbols);
128
+ }
129
+ return keys;
130
+ }
131
+ function _object_spread_props(target, source) {
132
+ source = source != null ? source : {};
133
+ if (Object.getOwnPropertyDescriptors) {
134
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
135
+ } else {
136
+ ownKeys(Object(source)).forEach(function(key) {
137
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
138
+ });
139
+ }
140
+ return target;
141
+ }
142
+ function _sliced_to_array(arr, i) {
143
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
144
+ }
145
+ function _unsupported_iterable_to_array(o, minLen) {
146
+ if (!o) return;
147
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
148
+ var n = Object.prototype.toString.call(o).slice(8, -1);
149
+ if (n === "Object" && o.constructor) n = o.constructor.name;
150
+ if (n === "Map" || n === "Set") return Array.from(n);
151
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
152
+ }
153
+ function _ts_generator(thisArg, body) {
154
+ var f, y, t, g, _ = {
155
+ label: 0,
156
+ sent: function() {
157
+ if (t[0] & 1) throw t[1];
158
+ return t[1];
159
+ },
160
+ trys: [],
161
+ ops: []
162
+ };
163
+ return(g = {
164
+ next: verb(0),
165
+ "throw": verb(1),
166
+ "return": verb(2)
167
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
168
+ return this;
169
+ }), g);
170
+ function verb(n) {
171
+ return function(v) {
172
+ return step([
173
+ n,
174
+ v
175
+ ]);
176
+ };
177
+ }
178
+ function step(op) {
179
+ if (f) throw new TypeError("Generator is already executing.");
180
+ while(_)try {
181
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
182
+ if (y = 0, t) op = [
183
+ op[0] & 2,
184
+ t.value
185
+ ];
186
+ switch(op[0]){
187
+ case 0:
188
+ case 1:
189
+ t = op;
190
+ break;
191
+ case 4:
192
+ _.label++;
193
+ return {
194
+ value: op[1],
195
+ done: false
196
+ };
197
+ case 5:
198
+ _.label++;
199
+ y = op[1];
200
+ op = [
201
+ 0
202
+ ];
203
+ continue;
204
+ case 7:
205
+ op = _.ops.pop();
206
+ _.trys.pop();
207
+ continue;
208
+ default:
209
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
210
+ _ = 0;
211
+ continue;
212
+ }
213
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
214
+ _.label = op[1];
215
+ break;
216
+ }
217
+ if (op[0] === 6 && _.label < t[1]) {
218
+ _.label = t[1];
219
+ t = op;
220
+ break;
221
+ }
222
+ if (t && _.label < t[2]) {
223
+ _.label = t[2];
224
+ _.ops.push(op);
225
+ break;
226
+ }
227
+ if (t[2]) _.ops.pop();
228
+ _.trys.pop();
229
+ continue;
230
+ }
231
+ op = body.call(thisArg, _);
232
+ } catch (e) {
233
+ op = [
234
+ 6,
235
+ e
236
+ ];
237
+ y = 0;
238
+ } finally{
239
+ f = t = 0;
240
+ }
241
+ if (op[0] & 5) throw op[1];
242
+ return {
243
+ value: op[0] ? op[1] : void 0,
244
+ done: true
245
+ };
246
+ }
247
+ }
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+ var FamilyInformationForm = function(param) {
261
+ var encounter = param.encounter, type = param.type, mutateEncounters = param.mutateEncounters;
262
+ var _type, _type1;
263
+ var encounterDate = new Date().toISOString();
264
+ var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), 2), isSubmitting = _useState[0], setIsSubmitting = _useState[1];
265
+ var patient = (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.usePatient)();
266
+ var session = (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.useSession)();
267
+ var facilityInfo = (0,_hooks_useFetchLocation__WEBPACK_IMPORTED_MODULE_6__.useFetchLocation)().facilityInfo;
268
+ var _useForm = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_9__.useForm)({
269
+ defaultValues: encounter ? (0,_hooks_defaultValuesFromEncounter__WEBPACK_IMPORTED_MODULE_7__.defaultValuesFromEncounter)(encounter, _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMembersDefaultValues, _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMemberConceptsUuid) : _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMembersDefaultValues,
270
+ mode: "all"
271
+ }), control = _useForm.control, handleSubmit = _useForm.handleSubmit, watch = _useForm.watch, resetField = _useForm.resetField, setValue = _useForm.setValue, _useForm_formState = _useForm.formState, errors = _useForm_formState.errors, touchedFields = _useForm_formState.touchedFields;
272
+ var familyInfoFormData = (0,react_hook_form__WEBPACK_IMPORTED_MODULE_9__.useWatch)({
273
+ control: control
274
+ });
275
+ var visibilityRules = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {
276
+ return {
277
+ counsellationDate: function(data) {
278
+ return data.counselledForHIV === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
279
+ },
280
+ hivTestDate: function(data) {
281
+ return data.testedForHIV === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
282
+ },
283
+ hivTestResult: function(data) {
284
+ return data.testedForHIV === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
285
+ },
286
+ enrolledInCare: function(data) {
287
+ return data.hivTestResult !== "5e4fc757-0b14-49ae-b3b7-419666f41e15";
288
+ },
289
+ dateEnrolledInCare: function(data) {
290
+ return data.enrolledInCare === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
291
+ },
292
+ artStarted: function(data) {
293
+ return data.hivTestResult !== "5e4fc757-0b14-49ae-b3b7-419666f41e15";
294
+ },
295
+ artStartDate: function(data) {
296
+ return data.artStarted === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
297
+ },
298
+ uniqueArtNumber: function(data) {
299
+ return data.artStarted === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
300
+ }
301
+ };
302
+ }, []);
303
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {
304
+ Object.keys(visibilityRules).forEach(function(field) {
305
+ var isVisible = visibilityRules[field](familyInfoFormData);
306
+ if (!isVisible && familyInfoFormData[field] !== null && familyInfoFormData[field] !== undefined) {
307
+ setValue(field, null, {
308
+ shouldValidate: false,
309
+ shouldDirty: false
310
+ });
311
+ }
312
+ });
313
+ }, [
314
+ familyInfoFormData,
315
+ visibilityRules,
316
+ setValue
317
+ ]);
318
+ var onSubmit = function() {
319
+ var _ref = _async_to_generator(function(data) {
320
+ var _encounter, _type, touchedData, error;
321
+ return _ts_generator(this, function(_state) {
322
+ switch(_state.label){
323
+ case 0:
324
+ setIsSubmitting(true); // Set submitting state to true
325
+ _state.label = 1;
326
+ case 1:
327
+ _state.trys.push([
328
+ 1,
329
+ 3,
330
+ 4,
331
+ 5
332
+ ]);
333
+ touchedData = Object.keys(touchedFields).reduce(function(acc, key) {
334
+ if (touchedFields[key] && key in data) {
335
+ acc[key] = data[key];
336
+ }
337
+ return acc;
338
+ }, {});
339
+ return [
340
+ 4,
341
+ (0,_hooks_createEncounter__WEBPACK_IMPORTED_MODULE_8__.createEncounter)(data, {
342
+ namespace: "rfe-forms",
343
+ touchedFields: touchedFields,
344
+ encounter: encounter,
345
+ conceptsUuid: _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMemberConceptsUuid,
346
+ encounterType: _constants__WEBPACK_IMPORTED_MODULE_5__.FAMILY_INFO_ENCOUNTER_TYPE,
347
+ formUuid: _constants__WEBPACK_IMPORTED_MODULE_5__.familyMemberFormUuid,
348
+ encounterDate: encounterDate,
349
+ patientUuid: patient.patientUuid,
350
+ providerUuid: session.currentProvider.uuid,
351
+ locationUuid: facilityInfo.uuid,
352
+ visibilityRules: visibilityRules,
353
+ encounterUuid: (_encounter = encounter) === null || _encounter === void 0 ? void 0 : _encounter.uuid,
354
+ mutateEncounters: mutateEncounters,
355
+ workspaceName: "family-form-workspace",
356
+ editMode: (_type = type) === null || _type === void 0 ? void 0 : _type.edit
357
+ })
358
+ ];
359
+ case 2:
360
+ _state.sent();
361
+ return [
362
+ 3,
363
+ 5
364
+ ];
365
+ case 3:
366
+ error = _state.sent();
367
+ console.error("Error submitting form:", error);
368
+ return [
369
+ 3,
370
+ 5
371
+ ];
372
+ case 4:
373
+ setIsSubmitting(false); // Reset submitting state
374
+ return [
375
+ 7
376
+ ];
377
+ case 5:
378
+ return [
379
+ 2
380
+ ];
381
+ }
382
+ });
383
+ });
384
+ return function onSubmit(data) {
385
+ return _ref.apply(this, arguments);
386
+ };
387
+ }();
388
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Form, {
389
+ onSubmit: handleSubmit(onSubmit),
390
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].formNew
391
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
392
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].scrollableContent
393
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Stack, {
394
+ gap: 1,
395
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].container
396
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", {
397
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].heading
398
+ }, "FAMILY MEMBERS HIV STATUS AT ENROLLMENT AND FOLLOW-UP VISIT"), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Accordion, null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.AccordionItem, {
399
+ title: "FAMILY MEMBERS HIV STATUS",
400
+ open: true,
401
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].formContainer
402
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
403
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
404
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
405
+ name: "familyMemberType",
406
+ control: control,
407
+ rules: {
408
+ required: "Relationship type is required"
409
+ },
410
+ render: function(param) {
411
+ var field = param.field;
412
+ var _type, _errors, _errors_familyMemberType;
413
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
414
+ orientation: "vertical",
415
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
416
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
417
+ }, "Relationship type ", /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
418
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].required
419
+ }, "*"))
420
+ }, field), {
421
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
422
+ invalid: !!((_errors = errors) === null || _errors === void 0 ? void 0 : _errors.familyMemberType),
423
+ invalidText: (_errors_familyMemberType = errors.familyMemberType) === null || _errors_familyMemberType === void 0 ? void 0 : _errors_familyMemberType.message
424
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMemberTypeOpt.map(function(item) {
425
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
426
+ key: item.concept,
427
+ labelText: item.label,
428
+ value: item.concept,
429
+ checked: field.value === item.concept
430
+ });
431
+ }));
432
+ }
433
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
434
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
435
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
436
+ name: "familyMemberAge",
437
+ control: control,
438
+ rules: {
439
+ validate: function(value) {
440
+ if (value === null || typeof value === "undefined") {
441
+ return true; // Allow empty
442
+ }
443
+ var num = Number(value);
444
+ if (isNaN(num)) {
445
+ return "Temperature should be a valid number";
446
+ }
447
+ if (num < 0 || num > 200) {
448
+ return "Age should be between 0 and 200";
449
+ }
450
+ return true;
451
+ }
452
+ },
453
+ render: function(param) {
454
+ var field = param.field;
455
+ var _errors_familyMemberAge, _type;
456
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.NumberInput, {
457
+ allowEmpty: true,
458
+ id: "familyMemberAge",
459
+ label: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
460
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
461
+ }, "Age in Years (at enrollment)"),
462
+ min: 0,
463
+ max: 200,
464
+ value: field.value,
465
+ onChange: function(_, param) {
466
+ var value = param.value;
467
+ field.onChange(value);
468
+ field.onBlur();
469
+ },
470
+ onKeyDown: function(e) {
471
+ if ([
472
+ "e",
473
+ "E",
474
+ "+",
475
+ "-"
476
+ ].includes(e.key) || e.key.length === 1 && !/\d/.test(e.key)) {
477
+ e.preventDefault();
478
+ }
479
+ },
480
+ onBlur: function() {
481
+ return field.onBlur();
482
+ },
483
+ invalid: !!errors.familyMemberAge,
484
+ invalidText: (_errors_familyMemberAge = errors.familyMemberAge) === null || _errors_familyMemberAge === void 0 ? void 0 : _errors_familyMemberAge.message,
485
+ readOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view
486
+ });
487
+ }
488
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
489
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
490
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
491
+ name: "familyMemberGender",
492
+ control: control,
493
+ rules: {
494
+ required: "Sex is required"
495
+ },
496
+ render: function(param) {
497
+ var field = param.field;
498
+ var _type, _errors_familyMemberGender;
499
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
500
+ orientation: "vertical",
501
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
502
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
503
+ }, "Sex ", /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
504
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].required
505
+ }, "*"))
506
+ }, field), {
507
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
508
+ invalid: !!errors.familyMemberGender,
509
+ invalidText: (_errors_familyMemberGender = errors.familyMemberGender) === null || _errors_familyMemberGender === void 0 ? void 0 : _errors_familyMemberGender.message
510
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.genderOpt.map(function(item) {
511
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
512
+ key: item.concept,
513
+ labelText: item.label,
514
+ value: item.concept,
515
+ checked: field.value === item.concept
516
+ });
517
+ }));
518
+ }
519
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
520
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
521
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
522
+ name: "familyMemberHealthStatus",
523
+ control: control,
524
+ render: function(param) {
525
+ var field = param.field;
526
+ var _type, _errors_familyMemberHealthStatus;
527
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
528
+ orientation: "vertical",
529
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
530
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
531
+ }, "Health status at enrollment")
532
+ }, field), {
533
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
534
+ invalid: !!errors.familyMemberHealthStatus,
535
+ invalidText: (_errors_familyMemberHealthStatus = errors.familyMemberHealthStatus) === null || _errors_familyMemberHealthStatus === void 0 ? void 0 : _errors_familyMemberHealthStatus.message
536
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.familyMemberHealthStatusOpt.map(function(item) {
537
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
538
+ key: item.concept,
539
+ labelText: item.label,
540
+ value: item.concept,
541
+ checked: field.value === item.concept
542
+ });
543
+ }));
544
+ }
545
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
546
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
547
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
548
+ name: "counselledForHIV",
549
+ control: control,
550
+ render: function(param) {
551
+ var field = param.field;
552
+ var _type, _errors_counselledForHIV;
553
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
554
+ orientation: "vertical",
555
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
556
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
557
+ }, "Counseled for HIV?")
558
+ }, field), {
559
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
560
+ invalid: !!errors.counselledForHIV,
561
+ invalidText: (_errors_counselledForHIV = errors.counselledForHIV) === null || _errors_counselledForHIV === void 0 ? void 0 : _errors_counselledForHIV.message
562
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.yesNoOptions.map(function(item) {
563
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
564
+ key: item.concept,
565
+ labelText: item.label,
566
+ value: item.concept,
567
+ checked: field.value === item.concept
568
+ });
569
+ }));
570
+ }
571
+ })), familyInfoFormData.counselledForHIV === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
572
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
573
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
574
+ name: "counsellationDate",
575
+ control: control,
576
+ rules: {
577
+ validate: function(value) {
578
+ if (!value) return true; // Allow empty date
579
+ var counsellingDate = new Date(value);
580
+ var hivTestDate = familyInfoFormData.hivTestDate ? new Date(familyInfoFormData.hivTestDate) : null;
581
+ var enrolledDate = familyInfoFormData.dateEnrolledInCare ? new Date(familyInfoFormData.dateEnrolledInCare) : null;
582
+ var artStartDate = familyInfoFormData.artStartDate ? new Date(familyInfoFormData.artStartDate) : null;
583
+ if (hivTestDate && counsellingDate > hivTestDate) {
584
+ return "Counselling date must be on or before HIV test date";
585
+ }
586
+ if (enrolledDate && counsellingDate > enrolledDate) {
587
+ return "Counselling date must be on or before date enrolled in care";
588
+ }
589
+ if (artStartDate && counsellingDate > artStartDate) {
590
+ return "Counselling date must be on or before ART start date";
591
+ }
592
+ return true;
593
+ }
594
+ },
595
+ render: function(param) {
596
+ var field = param.field;
597
+ var _errors_counsellationDate, _type;
598
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.OpenmrsDatePicker, {
599
+ id: "counsellationDate",
600
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
601
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
602
+ }, "Date counselled for HIV"),
603
+ value: field.value,
604
+ maxDate: encounterDate,
605
+ onChange: function(date) {
606
+ field.onChange(date);
607
+ field.onBlur();
608
+ },
609
+ onBlur: function() {
610
+ return field.onBlur();
611
+ },
612
+ invalid: !!errors.counsellationDate,
613
+ invalidText: (_errors_counsellationDate = errors.counsellationDate) === null || _errors_counsellationDate === void 0 ? void 0 : _errors_counsellationDate.message,
614
+ isReadOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view
615
+ });
616
+ }
617
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
618
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
619
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
620
+ name: "testedForHIV",
621
+ control: control,
622
+ render: function(param) {
623
+ var field = param.field;
624
+ var _type, _errors_testedForHIV;
625
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
626
+ orientation: "vertical",
627
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
628
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
629
+ }, "Tested for HIV?")
630
+ }, field), {
631
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
632
+ invalid: !!errors.testedForHIV,
633
+ invalidText: (_errors_testedForHIV = errors.testedForHIV) === null || _errors_testedForHIV === void 0 ? void 0 : _errors_testedForHIV.message,
634
+ onChange: function(date) {
635
+ field.onChange(date);
636
+ field.onBlur();
637
+ }
638
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.yesNoOptions.map(function(item) {
639
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
640
+ key: item.concept,
641
+ labelText: item.label,
642
+ value: item.concept,
643
+ checked: field.value === item.concept
644
+ });
645
+ }));
646
+ }
647
+ })), familyInfoFormData.testedForHIV === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
648
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
649
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
650
+ name: "hivTestDate",
651
+ control: control,
652
+ rules: {
653
+ validate: function(value) {
654
+ if (!value) return true; // Allow empty date
655
+ var hivTestDate = new Date(value);
656
+ var counsellingDate = familyInfoFormData.counsellationDate ? new Date(familyInfoFormData.counsellationDate) : null;
657
+ // Check if hivTestDate is on or after counsellingDate
658
+ if (counsellingDate && hivTestDate < counsellingDate) {
659
+ return "HIV test date must be on or after counselling date";
660
+ }
661
+ return true;
662
+ }
663
+ },
664
+ render: function(param) {
665
+ var field = param.field;
666
+ var _errors_hivTestDate, _type;
667
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.OpenmrsDatePicker, {
668
+ id: "hivTestDate",
669
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
670
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
671
+ }, "Date tested for HIV"),
672
+ value: field.value,
673
+ maxDate: encounterDate,
674
+ onChange: function(date) {
675
+ field.onChange(date);
676
+ field.onBlur();
677
+ },
678
+ onBlur: function() {
679
+ return field.onBlur();
680
+ },
681
+ invalid: !!errors.hivTestDate,
682
+ invalidText: (_errors_hivTestDate = errors.hivTestDate) === null || _errors_hivTestDate === void 0 ? void 0 : _errors_hivTestDate.message,
683
+ isReadOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view
684
+ });
685
+ }
686
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
687
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
688
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
689
+ name: "hivTestResult",
690
+ control: control,
691
+ render: function(param) {
692
+ var field = param.field;
693
+ var _type, _errors_hivTestResult;
694
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Select, _object_spread_props(_object_spread({
695
+ id: "hivTestResult",
696
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
697
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
698
+ }, "HIV test Result"),
699
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
700
+ onChange: function(date) {
701
+ field.onChange(date);
702
+ field.onBlur();
703
+ }
704
+ }, field), {
705
+ invalid: !!errors.hivTestResult,
706
+ invalidText: (_errors_hivTestResult = errors.hivTestResult) === null || _errors_hivTestResult === void 0 ? void 0 : _errors_hivTestResult.message
707
+ }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.SelectItem, {
708
+ text: "Select",
709
+ value: ""
710
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.hivTestResultOpt.map(function(item) {
711
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.SelectItem, {
712
+ key: item.concept,
713
+ value: item.concept,
714
+ text: item.label
715
+ });
716
+ }));
717
+ }
718
+ }))), familyInfoFormData.hivTestResult !== "5e4fc757-0b14-49ae-b3b7-419666f41e15" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
719
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
720
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
721
+ name: "enrolledInCare",
722
+ control: control,
723
+ render: function(param) {
724
+ var field = param.field;
725
+ var _type, _errors_enrolledInCare;
726
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
727
+ orientation: "vertical",
728
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
729
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
730
+ }, "Enrolled in care?")
731
+ }, field), {
732
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
733
+ invalid: !!errors.enrolledInCare,
734
+ invalidText: (_errors_enrolledInCare = errors.enrolledInCare) === null || _errors_enrolledInCare === void 0 ? void 0 : _errors_enrolledInCare.message
735
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.yesNoOptions.map(function(item) {
736
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
737
+ key: item.concept,
738
+ labelText: item.label,
739
+ value: item.concept,
740
+ checked: field.value === item.concept
741
+ });
742
+ }));
743
+ }
744
+ })), familyInfoFormData.enrolledInCare === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
745
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
746
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
747
+ name: "dateEnrolledInCare",
748
+ control: control,
749
+ rules: {
750
+ validate: function(value) {
751
+ if (!value) return true; // Allow empty date
752
+ var enrolledDate = new Date(value);
753
+ var counsellingDate = familyInfoFormData.counsellationDate ? new Date(familyInfoFormData.counsellationDate) : null;
754
+ var hivTestDate = familyInfoFormData.hivTestDate ? new Date(familyInfoFormData.hivTestDate) : null;
755
+ // Check if dateEnrolledInCare is on or after counsellingDate and hivTestDate
756
+ if (counsellingDate && enrolledDate < counsellingDate) {
757
+ return "Date enrolled in care must be on or after counselling date";
758
+ }
759
+ if (hivTestDate && enrolledDate < hivTestDate) {
760
+ return "Date enrolled in care must be on or after HIV test date";
761
+ }
762
+ return true;
763
+ }
764
+ },
765
+ render: function(param) {
766
+ var field = param.field;
767
+ var _errors_dateEnrolledInCare, _type;
768
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.OpenmrsDatePicker, {
769
+ id: "dateEnrolledInCare",
770
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
771
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
772
+ }, "Date enrolled in care"),
773
+ value: field.value,
774
+ maxDate: encounterDate,
775
+ onChange: function(date) {
776
+ field.onChange(date);
777
+ field.onBlur();
778
+ },
779
+ onBlur: function() {
780
+ return field.onBlur();
781
+ },
782
+ invalid: !!errors.dateEnrolledInCare,
783
+ invalidText: (_errors_dateEnrolledInCare = errors.dateEnrolledInCare) === null || _errors_dateEnrolledInCare === void 0 ? void 0 : _errors_dateEnrolledInCare.message,
784
+ isReadOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view
785
+ });
786
+ }
787
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
788
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
789
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
790
+ name: "artStarted",
791
+ control: control,
792
+ render: function(param) {
793
+ var field = param.field;
794
+ var _type, _errors_artStarted;
795
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButtonGroup, _object_spread_props(_object_spread({
796
+ orientation: "vertical",
797
+ legendText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
798
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
799
+ }, "Started ART?")
800
+ }, field), {
801
+ disabled: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
802
+ invalid: !!errors.artStarted,
803
+ invalidText: (_errors_artStarted = errors.artStarted) === null || _errors_artStarted === void 0 ? void 0 : _errors_artStarted.message
804
+ }), _utils_form_constant__WEBPACK_IMPORTED_MODULE_4__.yesNoOptions.map(function(item) {
805
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.RadioButton, {
806
+ key: item.concept,
807
+ labelText: item.label,
808
+ value: item.concept,
809
+ checked: field.value === item.concept
810
+ });
811
+ }));
812
+ }
813
+ })), familyInfoFormData.artStarted === "1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
814
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
815
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
816
+ name: "artStartDate",
817
+ rules: {
818
+ validate: function(value) {
819
+ if (!value) return true; // Allow empty date
820
+ var artStartDate = new Date(value);
821
+ var counsellingDate = familyInfoFormData.counsellationDate ? new Date(familyInfoFormData.counsellationDate) : null;
822
+ var hivTestDate = familyInfoFormData.hivTestDate ? new Date(familyInfoFormData.hivTestDate) : null;
823
+ var enrolledDate = familyInfoFormData.dateEnrolledInCare ? new Date(familyInfoFormData.dateEnrolledInCare) : null;
824
+ // Check if artStartDate is on or after counsellingDate, hivTestDate, and dateEnrolledInCare
825
+ if (counsellingDate && artStartDate < counsellingDate) {
826
+ return "ART start date must be on or after counselling date";
827
+ }
828
+ if (hivTestDate && artStartDate < hivTestDate) {
829
+ return "ART start date must be on or after HIV test date";
830
+ }
831
+ if (enrolledDate && artStartDate < enrolledDate) {
832
+ return "ART start date must be on or after date enrolled in care";
833
+ }
834
+ return true;
835
+ }
836
+ },
837
+ control: control,
838
+ render: function(param) {
839
+ var field = param.field;
840
+ var _errors_artStartDate, _type;
841
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.OpenmrsDatePicker, {
842
+ id: "artStartDate",
843
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
844
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
845
+ }, "Date started ART"),
846
+ value: field.value,
847
+ maxDate: encounterDate,
848
+ onChange: function(date) {
849
+ field.onChange(date);
850
+ field.onBlur();
851
+ },
852
+ onBlur: function() {
853
+ return field.onBlur();
854
+ },
855
+ invalid: !!errors.artStartDate,
856
+ invalidText: (_errors_artStartDate = errors.artStartDate) === null || _errors_artStartDate === void 0 ? void 0 : _errors_artStartDate.message,
857
+ isReadOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view
858
+ });
859
+ }
860
+ })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
861
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
862
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
863
+ name: "uniqueArtNumber",
864
+ control: control,
865
+ rules: {
866
+ validate: function(value) {
867
+ if (!value) return true; // allow null or empty string
868
+ var digits = value.replace(/\/+/g, "");
869
+ return (digits.length === 12 || digits.length === 13) && /^[0-9/]*$/.test(value) ? true : "Must contain 12 or 13 digits";
870
+ }
871
+ },
872
+ render: function(param) {
873
+ var field = param.field;
874
+ var _type, _errors_uniqueArtNumber;
875
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.TextInput, _object_spread_props(_object_spread({
876
+ id: "uniqueArtNumber",
877
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
878
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
879
+ }, "Unique ART Number")
880
+ }, field), {
881
+ readOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
882
+ placeholder: "e.g., 12/34/567/890123",
883
+ invalid: !!errors.uniqueArtNumber,
884
+ invalidText: (_errors_uniqueArtNumber = errors.uniqueArtNumber) === null || _errors_uniqueArtNumber === void 0 ? void 0 : _errors_uniqueArtNumber.message
885
+ }));
886
+ }
887
+ })))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
888
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].fieldWrapper
889
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_hook_form__WEBPACK_IMPORTED_MODULE_9__.Controller, {
890
+ name: "remark",
891
+ control: control,
892
+ rules: {
893
+ maxLength: {
894
+ value: 250,
895
+ message: "Please use a maximum of 250 characters"
896
+ }
897
+ },
898
+ render: function(param) {
899
+ var field = param.field;
900
+ var _type, _errors_remark;
901
+ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.TextArea, _object_spread_props(_object_spread({
902
+ id: "remark",
903
+ labelText: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
904
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].label
905
+ }, "Remark"),
906
+ rows: 1
907
+ }, field), {
908
+ readOnly: (_type = type) === null || _type === void 0 ? void 0 : _type.view,
909
+ invalid: !!errors.remark,
910
+ invalidText: (_errors_remark = errors.remark) === null || _errors_remark === void 0 ? void 0 : _errors_remark.message
911
+ }));
912
+ }
913
+ })))))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
914
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].stickyButtonSet
915
+ }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Button, {
916
+ kind: "secondary",
917
+ onClick: function() {
918
+ return (0,_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__.closeWorkspace)("family-form-workspace");
919
+ },
920
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].button
921
+ }, "Discard"), !((_type = type) === null || _type === void 0 ? void 0 : _type.view) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.Button, {
922
+ className: _intake_form_scss__WEBPACK_IMPORTED_MODULE_3__["default"].button,
923
+ kind: "primary",
924
+ type: "submit",
925
+ disabled: isSubmitting
926
+ }, isSubmitting ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_1__.InlineLoading, null) : ((_type1 = type) === null || _type1 === void 0 ? void 0 : _type1.edit) ? "Update" : "Save")));
927
+ };
928
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FamilyInformationForm);
929
+
930
+
931
+ /***/ })
932
+
933
+ }]);
934
+ //# sourceMappingURL=src_forms_family-information_tsx.js.map