@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 @@
1
+ {"version":3,"file":"src_forms_family-information_tsx.js","mappings":"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","sources":["webpack://@icap-ethiopia/esm-ethiohri-intake/./src/forms/family-information.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\r\nimport {\r\n Stack,\r\n Form,\r\n TextInput,\r\n RadioButtonGroup,\r\n RadioButton,\r\n NumberInput,\r\n Button,\r\n Select,\r\n SelectItem,\r\n TextArea,\r\n} from '@carbon/react';\r\nimport { useForm, Controller, useWatch } from 'react-hook-form';\r\nimport { OpenmrsDatePicker, usePatient, useSession, closeWorkspace } from '@openmrs/esm-framework';\r\nimport styles from './intake-form.scss';\r\nimport type { FamilyMembersFormData, IntakeFormProps } from '../types';\r\nimport { ButtonSet } from '@carbon/react';\r\nimport {\r\n familyMemberConceptsUuid,\r\n familyMemberHealthStatusOpt,\r\n familyMembersDefaultValues,\r\n familyMemberTypeOpt,\r\n genderOpt,\r\n hivTestResultOpt,\r\n yesNoOptions,\r\n} from './utils/form-constant';\r\nimport { FAMILY_INFO_ENCOUNTER_TYPE, familyMemberFormUuid } from '../constants';\r\nimport { useFetchLocation } from './hooks/useFetchLocation';\r\nimport { useLatestObs } from '../utils/data-table.resource';\r\nimport { defaultValuesFromEncounter } from './hooks/defaultValuesFromEncounter';\r\nimport { Accordion } from '@carbon/react';\r\nimport { AccordionItem, InlineLoading } from '@carbon/react';\r\nimport { createEncounter } from './hooks/createEncounter';\r\n\r\nconst FamilyInformationForm: React.FC<IntakeFormProps> = ({ encounter, type, mutateEncounters }) => {\r\n const encounterDate = new Date().toISOString();\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const patient = usePatient();\r\n const session = useSession();\r\n const { facilityInfo } = useFetchLocation();\r\n\r\n const {\r\n control,\r\n handleSubmit,\r\n watch,\r\n resetField,\r\n setValue,\r\n formState: { errors, touchedFields },\r\n } = useForm<FamilyMembersFormData>({\r\n defaultValues: encounter\r\n ? defaultValuesFromEncounter<FamilyMembersFormData>(\r\n encounter,\r\n familyMembersDefaultValues,\r\n familyMemberConceptsUuid,\r\n )\r\n : familyMembersDefaultValues,\r\n mode: 'all',\r\n });\r\n const familyInfoFormData = useWatch({ control });\r\n const visibilityRules = useMemo(\r\n () => ({\r\n counsellationDate: (data: FamilyMembersFormData) =>\r\n data.counselledForHIV === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n hivTestDate: (data: FamilyMembersFormData) => data.testedForHIV === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n hivTestResult: (data: FamilyMembersFormData) => data.testedForHIV === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n enrolledInCare: (data: FamilyMembersFormData) => data.hivTestResult !== '5e4fc757-0b14-49ae-b3b7-419666f41e15',\r\n dateEnrolledInCare: (data: FamilyMembersFormData) =>\r\n data.enrolledInCare === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n artStarted: (data: FamilyMembersFormData) => data.hivTestResult !== '5e4fc757-0b14-49ae-b3b7-419666f41e15',\r\n artStartDate: (data: FamilyMembersFormData) => data.artStarted === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n uniqueArtNumber: (data: FamilyMembersFormData) => data.artStarted === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\r\n }),\r\n [],\r\n );\r\n\r\n useEffect(() => {\r\n Object.keys(visibilityRules).forEach((field: any) => {\r\n const isVisible = visibilityRules[field](familyInfoFormData);\r\n if (!isVisible && familyInfoFormData[field] !== null && familyInfoFormData[field] !== undefined) {\r\n setValue(field, null, { shouldValidate: false, shouldDirty: false });\r\n }\r\n });\r\n }, [familyInfoFormData, visibilityRules, setValue]);\r\n\r\n const onSubmit = async (data: FamilyMembersFormData) => {\r\n setIsSubmitting(true); // Set submitting state to true\r\n try {\r\n const touchedData = Object.keys(touchedFields).reduce((acc, key) => {\r\n if (touchedFields[key] && key in data) {\r\n acc[key] = data[key];\r\n }\r\n return acc;\r\n }, {} as FamilyMembersFormData);\r\n await createEncounter<FamilyMembersFormData>(data, {\r\n namespace: 'rfe-forms',\r\n touchedFields,\r\n encounter,\r\n conceptsUuid: familyMemberConceptsUuid,\r\n encounterType: FAMILY_INFO_ENCOUNTER_TYPE,\r\n formUuid: familyMemberFormUuid,\r\n encounterDate,\r\n patientUuid: patient.patientUuid,\r\n providerUuid: session.currentProvider.uuid,\r\n locationUuid: facilityInfo.uuid,\r\n visibilityRules,\r\n encounterUuid: encounter?.uuid,\r\n mutateEncounters,\r\n workspaceName: 'family-form-workspace',\r\n editMode: type?.edit,\r\n });\r\n } catch (error) {\r\n console.error('Error submitting form:', error);\r\n } finally {\r\n setIsSubmitting(false); // Reset submitting state\r\n }\r\n };\r\n\r\n return (\r\n <Form onSubmit={handleSubmit(onSubmit)} className={styles.formNew}>\r\n <div className={styles.scrollableContent}>\r\n <Stack gap={1} className={styles.container}>\r\n <h2 className={styles.heading}>FAMILY MEMBERS HIV STATUS AT ENROLLMENT AND FOLLOW-UP VISIT</h2>\r\n <Accordion>\r\n <AccordionItem title=\"FAMILY MEMBERS HIV STATUS\" open className={styles.formContainer}>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`familyMemberType`}\r\n control={control}\r\n rules={{ required: 'Relationship type is required' }}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={\r\n <span className={styles.label}>\r\n Relationship type <div className={styles.required}>*</div>\r\n </span>\r\n }\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors?.familyMemberType}\r\n invalidText={errors.familyMemberType?.message}\r\n >\r\n {familyMemberTypeOpt.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`familyMemberAge`}\r\n control={control}\r\n rules={{\r\n validate: (value) => {\r\n if (value === null || typeof value === 'undefined') {\r\n return true; // Allow empty\r\n }\r\n const num = Number(value);\r\n if (isNaN(num)) {\r\n return 'Temperature should be a valid number';\r\n }\r\n if (num < 0 || num > 200) {\r\n return 'Age should be between 0 and 200';\r\n }\r\n return true;\r\n },\r\n }}\r\n render={({ field }) => (\r\n <NumberInput\r\n allowEmpty\r\n id={`familyMemberAge`}\r\n label={<span className={styles.label}>Age in Years (at enrollment)</span>}\r\n min={0}\r\n max={200}\r\n value={field.value}\r\n onChange={(_, { value }) => {\r\n field.onChange(value);\r\n field.onBlur();\r\n }}\r\n onKeyDown={(e) => {\r\n if (['e', 'E', '+', '-'].includes(e.key) || (e.key.length === 1 && !/\\d/.test(e.key))) {\r\n e.preventDefault();\r\n }\r\n }}\r\n onBlur={() => field.onBlur()}\r\n invalid={!!errors.familyMemberAge}\r\n invalidText={errors.familyMemberAge?.message}\r\n readOnly={type?.view}\r\n />\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`familyMemberGender`}\r\n control={control}\r\n rules={{ required: 'Sex is required' }}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={\r\n <span className={styles.label}>\r\n Sex <div className={styles.required}>*</div>\r\n </span>\r\n }\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.familyMemberGender}\r\n invalidText={errors.familyMemberGender?.message}\r\n >\r\n {genderOpt.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`familyMemberHealthStatus`}\r\n control={control}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={<span className={styles.label}>Health status at enrollment</span>}\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.familyMemberHealthStatus}\r\n invalidText={errors.familyMemberHealthStatus?.message}\r\n >\r\n {familyMemberHealthStatusOpt.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`counselledForHIV`}\r\n control={control}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={<span className={styles.label}>Counseled for HIV?</span>}\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.counselledForHIV}\r\n invalidText={errors.counselledForHIV?.message}\r\n >\r\n {yesNoOptions.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n {familyInfoFormData.counselledForHIV === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' && (\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`counsellationDate`}\r\n control={control}\r\n rules={{\r\n validate: (value) => {\r\n if (!value) return true; // Allow empty date\r\n const counsellingDate = new Date(value);\r\n const hivTestDate = familyInfoFormData.hivTestDate\r\n ? new Date(familyInfoFormData.hivTestDate)\r\n : null;\r\n const enrolledDate = familyInfoFormData.dateEnrolledInCare\r\n ? new Date(familyInfoFormData.dateEnrolledInCare)\r\n : null;\r\n const artStartDate = familyInfoFormData.artStartDate\r\n ? new Date(familyInfoFormData.artStartDate)\r\n : null;\r\n\r\n if (hivTestDate && counsellingDate > hivTestDate) {\r\n return 'Counselling date must be on or before HIV test date';\r\n }\r\n if (enrolledDate && counsellingDate > enrolledDate) {\r\n return 'Counselling date must be on or before date enrolled in care';\r\n }\r\n if (artStartDate && counsellingDate > artStartDate) {\r\n return 'Counselling date must be on or before ART start date';\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n render={({ field }) => (\r\n <OpenmrsDatePicker\r\n id={`counsellationDate`}\r\n labelText={<span className={styles.label}>Date counselled for HIV</span>}\r\n value={field.value}\r\n maxDate={encounterDate}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n onBlur={() => field.onBlur()}\r\n invalid={!!errors.counsellationDate}\r\n invalidText={errors.counsellationDate?.message}\r\n isReadOnly={type?.view}\r\n />\r\n )}\r\n />\r\n </div>\r\n )}\r\n\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`testedForHIV`}\r\n control={control}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={<span className={styles.label}>Tested for HIV?</span>}\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.testedForHIV}\r\n invalidText={errors.testedForHIV?.message}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n >\r\n {yesNoOptions.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n\r\n {familyInfoFormData.testedForHIV === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' && (\r\n <>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`hivTestDate`}\r\n control={control}\r\n rules={{\r\n validate: (value) => {\r\n if (!value) return true; // Allow empty date\r\n const hivTestDate = new Date(value);\r\n const counsellingDate = familyInfoFormData.counsellationDate\r\n ? new Date(familyInfoFormData.counsellationDate)\r\n : null;\r\n\r\n // Check if hivTestDate is on or after counsellingDate\r\n if (counsellingDate && hivTestDate < counsellingDate) {\r\n return 'HIV test date must be on or after counselling date';\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n render={({ field }) => (\r\n <OpenmrsDatePicker\r\n id={`hivTestDate`}\r\n labelText={<span className={styles.label}>Date tested for HIV</span>}\r\n value={field.value}\r\n maxDate={encounterDate}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n onBlur={() => field.onBlur()}\r\n invalid={!!errors.hivTestDate}\r\n invalidText={errors.hivTestDate?.message}\r\n isReadOnly={type?.view}\r\n />\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`hivTestResult`}\r\n control={control}\r\n render={({ field }) => (\r\n <Select\r\n id={`hivTestResult`}\r\n labelText={<span className={styles.label}>HIV test Result</span>}\r\n disabled={type?.view}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n {...field}\r\n invalid={!!errors.hivTestResult}\r\n invalidText={errors.hivTestResult?.message}\r\n >\r\n <SelectItem text=\"Select\" value=\"\" />\r\n {hivTestResultOpt.map((item) => (\r\n <SelectItem key={item.concept} value={item.concept} text={item.label} />\r\n ))}\r\n </Select>\r\n )}\r\n />\r\n </div>\r\n </>\r\n )}\r\n {familyInfoFormData.hivTestResult !== '5e4fc757-0b14-49ae-b3b7-419666f41e15' && (\r\n <>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`enrolledInCare`}\r\n control={control}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={<span className={styles.label}>Enrolled in care?</span>}\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.enrolledInCare}\r\n invalidText={errors.enrolledInCare?.message}\r\n >\r\n {yesNoOptions.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n\r\n {familyInfoFormData.enrolledInCare === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' && (\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`dateEnrolledInCare`}\r\n control={control}\r\n rules={{\r\n validate: (value) => {\r\n if (!value) return true; // Allow empty date\r\n const enrolledDate = new Date(value);\r\n const counsellingDate = familyInfoFormData.counsellationDate\r\n ? new Date(familyInfoFormData.counsellationDate)\r\n : null;\r\n const hivTestDate = familyInfoFormData.hivTestDate\r\n ? new Date(familyInfoFormData.hivTestDate)\r\n : null;\r\n\r\n // Check if dateEnrolledInCare is on or after counsellingDate and hivTestDate\r\n if (counsellingDate && enrolledDate < counsellingDate) {\r\n return 'Date enrolled in care must be on or after counselling date';\r\n }\r\n if (hivTestDate && enrolledDate < hivTestDate) {\r\n return 'Date enrolled in care must be on or after HIV test date';\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n render={({ field }) => (\r\n <OpenmrsDatePicker\r\n id={`dateEnrolledInCare`}\r\n labelText={<span className={styles.label}>Date enrolled in care</span>}\r\n value={field.value}\r\n maxDate={encounterDate}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n onBlur={() => field.onBlur()}\r\n invalid={!!errors.dateEnrolledInCare}\r\n invalidText={errors.dateEnrolledInCare?.message}\r\n isReadOnly={type?.view}\r\n />\r\n )}\r\n />\r\n </div>\r\n )}\r\n\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`artStarted`}\r\n control={control}\r\n render={({ field }) => (\r\n <RadioButtonGroup\r\n orientation=\"vertical\"\r\n legendText={<span className={styles.label}>Started ART?</span>}\r\n {...field}\r\n disabled={type?.view}\r\n invalid={!!errors.artStarted}\r\n invalidText={errors.artStarted?.message}\r\n >\r\n {yesNoOptions.map((item) => (\r\n <RadioButton\r\n key={item.concept}\r\n labelText={item.label}\r\n value={item.concept}\r\n checked={field.value === item.concept}\r\n />\r\n ))}\r\n </RadioButtonGroup>\r\n )}\r\n />\r\n </div>\r\n {familyInfoFormData.artStarted === '1065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' && (\r\n <>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`artStartDate`}\r\n rules={{\r\n validate: (value) => {\r\n if (!value) return true; // Allow empty date\r\n const artStartDate = new Date(value);\r\n const counsellingDate = familyInfoFormData.counsellationDate\r\n ? new Date(familyInfoFormData.counsellationDate)\r\n : null;\r\n const hivTestDate = familyInfoFormData.hivTestDate\r\n ? new Date(familyInfoFormData.hivTestDate)\r\n : null;\r\n const enrolledDate = familyInfoFormData.dateEnrolledInCare\r\n ? new Date(familyInfoFormData.dateEnrolledInCare)\r\n : null;\r\n\r\n // Check if artStartDate is on or after counsellingDate, hivTestDate, and dateEnrolledInCare\r\n if (counsellingDate && artStartDate < counsellingDate) {\r\n return 'ART start date must be on or after counselling date';\r\n }\r\n if (hivTestDate && artStartDate < hivTestDate) {\r\n return 'ART start date must be on or after HIV test date';\r\n }\r\n if (enrolledDate && artStartDate < enrolledDate) {\r\n return 'ART start date must be on or after date enrolled in care';\r\n }\r\n\r\n return true;\r\n },\r\n }}\r\n control={control}\r\n render={({ field }) => (\r\n <OpenmrsDatePicker\r\n id={`artStartDate`}\r\n labelText={<span className={styles.label}>Date started ART</span>}\r\n value={field.value}\r\n maxDate={encounterDate}\r\n onChange={(date) => {\r\n field.onChange(date);\r\n field.onBlur();\r\n }}\r\n onBlur={() => field.onBlur()}\r\n invalid={!!errors.artStartDate}\r\n invalidText={errors.artStartDate?.message}\r\n isReadOnly={type?.view}\r\n />\r\n )}\r\n />\r\n </div>\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`uniqueArtNumber`}\r\n control={control}\r\n rules={{\r\n validate: (value) => {\r\n if (!value) return true; // allow null or empty string\r\n const digits = value.replace(/\\/+/g, '');\r\n return (digits.length === 12 || digits.length === 13) && /^[0-9/]*$/.test(value)\r\n ? true\r\n : 'Must contain 12 or 13 digits';\r\n },\r\n }}\r\n render={({ field }) => (\r\n <TextInput\r\n id={`uniqueArtNumber`}\r\n labelText={<span className={styles.label}>Unique ART Number</span>}\r\n {...field}\r\n readOnly={type?.view}\r\n placeholder=\"e.g., 12/34/567/890123\"\r\n invalid={!!errors.uniqueArtNumber}\r\n invalidText={errors.uniqueArtNumber?.message}\r\n />\r\n )}\r\n />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n )}\r\n <div className={styles.fieldWrapper}>\r\n <Controller\r\n name={`remark`}\r\n control={control}\r\n rules={{ maxLength: { value: 250, message: 'Please use a maximum of 250 characters' } }}\r\n render={({ field }) => (\r\n <TextArea\r\n id={`remark`}\r\n labelText={<span className={styles.label}>Remark</span>}\r\n rows={1}\r\n {...field}\r\n readOnly={type?.view}\r\n invalid={!!errors.remark}\r\n invalidText={errors.remark?.message}\r\n />\r\n )}\r\n />\r\n </div>\r\n </AccordionItem>\r\n </Accordion>\r\n </Stack>\r\n </div>\r\n <div className={styles.stickyButtonSet}>\r\n <Button kind=\"secondary\" onClick={() => closeWorkspace('family-form-workspace')} className={styles.button}>\r\n Discard\r\n </Button>\r\n {!type?.view && (\r\n <Button className={styles.button} kind=\"primary\" type=\"submit\" disabled={isSubmitting}>\r\n {isSubmitting ? <InlineLoading /> : type?.edit ? 'Update' : 'Save'}\r\n </Button>\r\n )}\r\n </div>\r\n </Form>\r\n );\r\n};\r\n\r\nexport default FamilyInformationForm;\r\n"],"names":["React","useEffect","useMemo","useState","Stack","Form","TextInput","RadioButtonGroup","RadioButton","NumberInput","Button","Select","SelectItem","TextArea","useForm","Controller","useWatch","OpenmrsDatePicker","usePatient","useSession","closeWorkspace","styles","familyMemberConceptsUuid","familyMemberHealthStatusOpt","familyMembersDefaultValues","familyMemberTypeOpt","genderOpt","hivTestResultOpt","yesNoOptions","FAMILY_INFO_ENCOUNTER_TYPE","familyMemberFormUuid","useFetchLocation","defaultValuesFromEncounter","Accordion","AccordionItem","InlineLoading","createEncounter","FamilyInformationForm","encounter","type","mutateEncounters","encounterDate","Date","toISOString","isSubmitting","setIsSubmitting","patient","session","facilityInfo","defaultValues","mode","control","handleSubmit","watch","resetField","setValue","formState","errors","touchedFields","familyInfoFormData","visibilityRules","counsellationDate","data","counselledForHIV","hivTestDate","testedForHIV","hivTestResult","enrolledInCare","dateEnrolledInCare","artStarted","artStartDate","uniqueArtNumber","Object","keys","forEach","field","isVisible","undefined","shouldValidate","shouldDirty","onSubmit","touchedData","error","reduce","acc","key","namespace","conceptsUuid","encounterType","formUuid","patientUuid","providerUuid","currentProvider","uuid","locationUuid","encounterUuid","workspaceName","editMode","edit","console","className","formNew","div","scrollableContent","gap","container","h2","heading","title","open","formContainer","fieldWrapper","name","rules","required","render","orientation","legendText","span","label","disabled","view","invalid","familyMemberType","invalidText","message","map","item","concept","labelText","value","checked","validate","num","Number","isNaN","allowEmpty","id","min","max","onChange","_","onBlur","onKeyDown","e","includes","length","test","preventDefault","familyMemberAge","readOnly","familyMemberGender","familyMemberHealthStatus","counsellingDate","enrolledDate","maxDate","date","isReadOnly","text","digits","replace","placeholder","maxLength","rows","remark","stickyButtonSet","kind","onClick","button"],"sourceRoot":""}