@argusoft/medplat-core 1.0.32 → 1.0.33
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.
- package/dist/{AccessRights-DBjTQA1-.js → AccessRights-BC43Jhml.js} +264 -199
- package/dist/AccessRights-BC43Jhml.js.map +1 -0
- package/dist/{BrandsPage-CdcAvaml-ZtVTX6vX.js → BrandsPage-CdcAvaml-CYT80CMH.js} +3 -3
- package/dist/{BrandsPage-CdcAvaml-ZtVTX6vX.js.map → BrandsPage-CdcAvaml-CYT80CMH.js.map} +1 -1
- package/dist/{CategoriesPage-BprQEYJw-CclreTv1.js → CategoriesPage-BprQEYJw-BRAukJB1.js} +3 -3
- package/dist/{CategoriesPage-BprQEYJw-CclreTv1.js.map → CategoriesPage-BprQEYJw-BRAukJB1.js.map} +1 -1
- package/dist/ChangePasswordModalCore-rypTxA2O.js +238 -0
- package/dist/ChangePasswordModalCore-rypTxA2O.js.map +1 -0
- package/dist/{DashboardPage-CTiGSx71-CsYohJ5e.js → DashboardPage-CTiGSx71-DX-TzGOH.js} +3 -3
- package/dist/{DashboardPage-CTiGSx71-CsYohJ5e.js.map → DashboardPage-CTiGSx71-DX-TzGOH.js.map} +1 -1
- package/dist/{FacilityPicker-BXa2VF7i-Dab_Jwa5.js → FacilityPicker-BXa2VF7i-D0JUIqLv.js} +2 -2
- package/dist/{FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map → FacilityPicker-BXa2VF7i-D0JUIqLv.js.map} +1 -1
- package/dist/FaqList-CeDEuhU_.js +237 -0
- package/dist/FaqList-CeDEuhU_.js.map +1 -0
- package/dist/FaqSkeletons-hLCEcRr-.js +19 -0
- package/dist/FaqSkeletons-hLCEcRr-.js.map +1 -0
- package/dist/FaqView-sDzBVyXV.js +617 -0
- package/dist/FaqView-sDzBVyXV.js.map +1 -0
- package/dist/{FeatureMenu-Kc73yPHH.js → FeatureMenu-CaI-ZhSZ.js} +2 -2
- package/dist/{FeatureMenu-Kc73yPHH.js.map → FeatureMenu-CaI-ZhSZ.js.map} +1 -1
- package/dist/{ImmunizationConfigurationBase-lKsJZMak.js → ImmunizationConfigurationBase-Clkk0-n6.js} +2352 -2332
- package/dist/{ImmunizationConfigurationBase-lKsJZMak.js.map → ImmunizationConfigurationBase-Clkk0-n6.js.map} +1 -1
- package/dist/{InventoryPage-JadYMCzU-CzJQfQ2A.js → InventoryPage-JadYMCzU-CWcCauMI.js} +4 -4
- package/dist/{InventoryPage-JadYMCzU-CzJQfQ2A.js.map → InventoryPage-JadYMCzU-CWcCauMI.js.map} +1 -1
- package/dist/ManageFaq-4cT6bntx.js +1583 -0
- package/dist/ManageFaq-4cT6bntx.js.map +1 -0
- package/dist/ManageFaq.css +1 -0
- package/dist/{ManageUser-Dm0l833u.js → ManageUser-DchUMAyC.js} +2 -2
- package/dist/{ManageUser-Dm0l833u.js.map → ManageUser-DchUMAyC.js.map} +1 -1
- package/dist/{MemberProfileCard-01d_jz3w-DYHtbgMX.js → MemberProfileCard-01d_jz3w-CQi_zu6x.js} +3 -3
- package/dist/{MemberProfileCard-01d_jz3w-DYHtbgMX.js.map → MemberProfileCard-01d_jz3w-CQi_zu6x.js.map} +1 -1
- package/dist/{PaymentCreatePage-D6NZBUC3-DxXf2kvH.js → PaymentCreatePage-D6NZBUC3-_98S21Sa.js} +4 -4
- package/dist/{PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map → PaymentCreatePage-D6NZBUC3-_98S21Sa.js.map} +1 -1
- package/dist/{PaymentsPage-CHieGNrn-BnYCtqHd.js → PaymentsPage-CHieGNrn-ChCXEyck.js} +3 -3
- package/dist/{PaymentsPage-CHieGNrn-BnYCtqHd.js.map → PaymentsPage-CHieGNrn-ChCXEyck.js.map} +1 -1
- package/dist/{PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js → PickupBatchLinesEditor-QPaqFtUO-BEtI5mIU.js} +2 -2
- package/dist/{PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map → PickupBatchLinesEditor-QPaqFtUO-BEtI5mIU.js.map} +1 -1
- package/dist/{PickupCreatePage-C7_67u_u-OId8-e2a.js → PickupCreatePage-C7_67u_u-DbDIZ1WC.js} +5 -5
- package/dist/{PickupCreatePage-C7_67u_u-OId8-e2a.js.map → PickupCreatePage-C7_67u_u-DbDIZ1WC.js.map} +1 -1
- package/dist/{PickupsPage-BWblMlic-CWkgeBw0.js → PickupsPage-BWblMlic-KehDMebm.js} +4 -4
- package/dist/{PickupsPage-BWblMlic-CWkgeBw0.js.map → PickupsPage-BWblMlic-KehDMebm.js.map} +1 -1
- package/dist/{PmGuard-BvUUbU80-BpYNaDzl.js → PmGuard-BvUUbU80-DJipZoSg.js} +2 -2
- package/dist/{PmGuard-BvUUbU80-BpYNaDzl.js.map → PmGuard-BvUUbU80-DJipZoSg.js.map} +1 -1
- package/dist/{ProductEditPage-Dbq4vUAA-BoBmTPPL.js → ProductEditPage-Dbq4vUAA-DusAdAvm.js} +4 -4
- package/dist/{ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map → ProductEditPage-Dbq4vUAA-DusAdAvm.js.map} +1 -1
- package/dist/{ProductsPage-BI22nPb4-CQBjnc-n.js → ProductsPage-BI22nPb4-D3GnWz34.js} +4 -4
- package/dist/{ProductsPage-BI22nPb4-CQBjnc-n.js.map → ProductsPage-BI22nPb4-D3GnWz34.js.map} +1 -1
- package/dist/{PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js → PurchaseCreatePage-C0EK9z4w-D4PlZsOH.js} +4 -4
- package/dist/{PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map → PurchaseCreatePage-C0EK9z4w-D4PlZsOH.js.map} +1 -1
- package/dist/{PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js → PurchaseRequestDetailPage-DhBuOGHZ-CAmlL4fP.js} +3 -3
- package/dist/{PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map → PurchaseRequestDetailPage-DhBuOGHZ-CAmlL4fP.js.map} +1 -1
- package/dist/{PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js → PurchaseRequestsPage-Bj9HUMxb-BCAhEEkL.js} +3 -3
- package/dist/{PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map → PurchaseRequestsPage-Bj9HUMxb-BCAhEEkL.js.map} +1 -1
- package/dist/{PurchasesPage-Djl1AqD_-DXeYFMrX.js → PurchasesPage-Djl1AqD_-DxBRFRDy.js} +3 -3
- package/dist/{PurchasesPage-Djl1AqD_-DXeYFMrX.js.map → PurchasesPage-Djl1AqD_-DxBRFRDy.js.map} +1 -1
- package/dist/{SaleCreatePage-DHBLmlBr-BlgjVsq6.js → SaleCreatePage-DHBLmlBr-aEGmvJQq.js} +4 -4
- package/dist/{SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map → SaleCreatePage-DHBLmlBr-aEGmvJQq.js.map} +1 -1
- package/dist/{SalesPage-eF9Yr42z-BQ9FlXC3.js → SalesPage-eF9Yr42z-CvOr82vo.js} +3 -3
- package/dist/{SalesPage-eF9Yr42z-BQ9FlXC3.js.map → SalesPage-eF9Yr42z-CvOr82vo.js.map} +1 -1
- package/dist/{SettingsPage-Cre-UE3r-9ntnLYsQ.js → SettingsPage-Cre-UE3r-CGTVp5Zw.js} +3 -3
- package/dist/{SettingsPage-Cre-UE3r-9ntnLYsQ.js.map → SettingsPage-Cre-UE3r-CGTVp5Zw.js.map} +1 -1
- package/dist/{StorageUnitsPage-CTEVuemZ-B4osG74N.js → StorageUnitsPage-CTEVuemZ-C7zkwKMz.js} +5 -5
- package/dist/{StorageUnitsPage-CTEVuemZ-B4osG74N.js.map → StorageUnitsPage-CTEVuemZ-C7zkwKMz.js.map} +1 -1
- package/dist/{SubMenu-OO2zhKiu.js → SubMenu-DZIhur09.js} +2 -2
- package/dist/{SubMenu-OO2zhKiu.js.map → SubMenu-DZIhur09.js.map} +1 -1
- package/dist/{TransactionsPage-Zuu7sjID-B-ACzvd1.js → TransactionsPage-Zuu7sjID-BDmUK7s1.js} +3 -3
- package/dist/{TransactionsPage-Zuu7sjID-B-ACzvd1.js.map → TransactionsPage-Zuu7sjID-BDmUK7s1.js.map} +1 -1
- package/dist/{TransferCreatePage-DlT0nCDj-B2SdPgYB.js → TransferCreatePage-DlT0nCDj-evHPJc99.js} +4 -4
- package/dist/{TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map → TransferCreatePage-DlT0nCDj-evHPJc99.js.map} +1 -1
- package/dist/{TransfersPage-DqaSvHda-G2tFa5Jq.js → TransfersPage-DqaSvHda-DAUn5SSr.js} +3 -3
- package/dist/{TransfersPage-DqaSvHda-G2tFa5Jq.js.map → TransfersPage-DqaSvHda-DAUn5SSr.js.map} +1 -1
- package/dist/{VaccineEducation-T_UE57Ef.js → VaccineEducation-DWkNNasF.js} +2 -2
- package/dist/{VaccineEducation-T_UE57Ef.js.map → VaccineEducation-DWkNNasF.js.map} +1 -1
- package/dist/VaccineEducationConfigurator-BFCvu5Mw.js +1450 -0
- package/dist/VaccineEducationConfigurator-BFCvu5Mw.js.map +1 -0
- package/dist/VaccineEducationConfigurator.css +1 -4
- package/dist/{VaccineEducationList-Ok7_5EFb.js → VaccineEducationList-BxZHahCh.js} +2 -2
- package/dist/{VaccineEducationList-Ok7_5EFb.js.map → VaccineEducationList-BxZHahCh.js.map} +1 -1
- package/dist/{VialsPage-LoDaUqVv-DmMXbK8j.js → VialsPage-LoDaUqVv-Dw00Zc06.js} +4 -4
- package/dist/{VialsPage-LoDaUqVv-DmMXbK8j.js.map → VialsPage-LoDaUqVv-Dw00Zc06.js.map} +1 -1
- package/dist/{VaccineEducationConfigurator-CWc20_rv.js → ckeditor5-_x14lrzc.js} +4014 -5372
- package/dist/ckeditor5-_x14lrzc.js.map +1 -0
- package/dist/ckeditor5.css +4 -0
- package/dist/faqMedia-FDpje7v0.js +234 -0
- package/dist/faqMedia-FDpje7v0.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/{index.lib-BySa9-Z-.js → index.lib-QDEODnRT.js} +343 -303
- package/dist/index.lib-QDEODnRT.js.map +1 -0
- package/dist/{listValueStore-5d4vNGQM-WclZ5nBG.js → listValueStore-5d4vNGQM-DB08drLf.js} +2 -2
- package/dist/{listValueStore-5d4vNGQM-WclZ5nBG.js.map → listValueStore-5d4vNGQM-DB08drLf.js.map} +1 -1
- package/dist/proxy-C4gcRXzG.js +5265 -0
- package/dist/proxy-C4gcRXzG.js.map +1 -0
- package/package.json +3 -2
- package/dist/AccessRights-DBjTQA1-.js.map +0 -1
- package/dist/ChangePasswordModalCore-DZGOkbRY.js +0 -5494
- package/dist/ChangePasswordModalCore-DZGOkbRY.js.map +0 -1
- package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +0 -1
- package/dist/index.lib-BySa9-Z-.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.lib-BySa9-Z-.js","sources":["../routes/routes.jsx","../../app-shell/src/store/reducers/immunizationSlice.js","../src/views/ImmunizationConfiguration/utils/validationUtils.js","../src/views/ImmunizationConfiguration/service/ImmunizationUtil.js"],"sourcesContent":["import { lazy } from \"react\";\n\nconst VerifyRoute = lazy(\n () => import(\"@/views/feature-components/VerifyRoute.jsx\"),\n);\nconst Roles = lazy(() => import(\"../src/views/Roles/RoleManagement\"));\nconst QueryBuilder = lazy(\n () => import(\"../src/views/QueryBuilder/QueryBuilder\"),\n);\nconst UserList = lazy(() => import(\"../src/views/Users/UserList\"));\nconst ManageUser = lazy(() => import(\"../src/views/Users/ManageUser\"));\nconst QueryManagement = lazy(\n () => import(\"../src/views/QueryManagement/QueryManagement\"),\n);\nconst FeatureMenu = lazy(() => import(\"../src/views/Features/FeatureMenu\"));\nconst ActivityAnalytics = lazy(() => import(\"../src/views/ActivityAnalytics/index\"));\nconst NewServerManagement = lazy(\n () => import(\"../src/views/Features/NewServerManagement\"),\n);\nconst ManageDynamicFeature = lazy(\n () => import(\"../src/views/Features/ManageDynamicFeature\"),\n);\nconst SecurityAuditLogList = lazy(\n () => import(\"../src/views/SecurityAuditLog/SecurityAuditLogList\"),\n);\nconst EventConfigurations = lazy(\n () => import(\"../src/views/Events/EventConfigurations\"),\n);\nconst ManageEventConfiguration = lazy(\n () => import(\"../src/views/Events/ManageEventConfiguration\"),\n);\nconst EntityManagement = lazy(\n () => import('../src/views/Mobile/EntityManagement/EntityManagement.jsx')\n);\nconst MobileAnalytics = lazy(\n () => import('../src/views/Mobile/Analytics/MobileAnalytics.jsx')\n);\nconst MobileMenuManagement = lazy(\n () => import('../src/views/MobileMenuManagement/MobileMenuManagement')\n);\nconst AddMenuConfiguration = lazy(\n () => import('../src/views/MobileMenuManagement/AddMenuConfiguration')\n);\nconst ManageTranslation = lazy(\n () => import(\"../src/views/Translation/ManageTranslation\"),\n);\nconst WidgetList = lazy(\n () => import(\"../src/views/Widgets/WidgetList\")\n);\nconst NotificationList = lazy(\n () => import(\"../src/views/Notifications/NotificationList\"),\n);\nconst ImmunizationConfigurationsList = lazy(\n () => import(\"../src/views/Immunization/ImmunizationConfigurationsList\"),\n);\nconst ManageImmunization = lazy(\n () => import(\"../src/views/Immunization/manageImmunization\"),\n);\nconst ImmunizationConfiguration = lazy(\n () =>\n import(\"../src/views/ImmunizationConfiguration/ImmunizationConfigurationBase.jsx\"),\n);\nconst VaccineEducationList = lazy(\n () => import(\"../src/views/VaccineEducation/components/VaccineEducationList\"),\n);\nconst VaccineEducationConfigurator = lazy(\n () => import(\"../src/views/VaccineEducation/components/VaccineEducationConfigurator\"),\n);\nconst FhirServerList = lazy(\n () => import(\"../src/views/FhirResource/FhirServerList\"),\n);\nconst FhirServerWizard = lazy(\n () => import(\"../src/views/FhirResource/FhirServerWizard\"),\n);\nconst FhirServerProfile = lazy(\n () => import(\"../src/views/FhirResource/FhirServerProfile\"),\n);\nconst FhirRawResourceList = lazy(\n () => import(\"../src/views/FhirResource/FhirRawResourceList\"),\n);\nconst LocationWiseExpectedTarget = lazy(\n () => import(\"../src/views/LocationWiseExpectedTarget/LocationWiseExpectedTargetPage\"),\n);\n\nconst corecustom2Routes = [\n {\n path: \"medplat/manage/role\",\n element: (\n <VerifyRoute\n headerTitle={\"Roles\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/role\"\n component={Roles}\n />\n ),\n },\n {\n path: \"medplat/manage/query\",\n element: (\n <VerifyRoute\n headerTitle={\"Query Master\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/query\"\n component={QueryBuilder}\n />\n ),\n },\n {\n path: \"medplat/manage/users\",\n element: (\n <VerifyRoute\n headerTitle={\"Users\"}\n pageTitle={\"UserList\"}\n url=\"medplat/manage/users\"\n component={UserList}\n />\n ),\n },\n {\n path: \"medplat/manage/user\",\n element: (\n <VerifyRoute\n headerTitle={\"Users\"}\n pageTitle={\"ManageUser\"}\n url=\"medplat/manage/users\"\n component={ManageUser}\n />\n ),\n },\n {\n path: \"medplat/manage/user/:id\",\n element: (\n <VerifyRoute\n headerTitle={\"Users\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/users\"\n component={ManageUser}\n />\n ),\n },\n {\n path: \"medplat/querymanagement\",\n element: (\n <VerifyRoute\n headerTitle={\"Query Management\"}\n pageTitle={\"General\"}\n url=\"medplat/querymanagement\"\n component={QueryManagement}\n />\n ),\n },\n {\n path: \"medplat/manage/menu\",\n element: (\n <VerifyRoute\n headerTitle={\"Features\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/menu\"\n component={FeatureMenu}\n />\n ),\n },\n {\n path: \"medplat/manage/menu/addfeature\",\n element: (\n <VerifyRoute\n headerTitle={\"Features\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/menu\"\n component={ManageDynamicFeature}\n />\n ),\n },\n {\n path: \"medplat/manage/menu/addDynamicFeature\",\n element: (\n <VerifyRoute\n headerTitle={\"Features\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/menu\"\n component={ManageDynamicFeature}\n />\n ),\n },\n {\n path: \"medplat/notification/all\",\n element: (\n <VerifyRoute\n headerTitle={\"Event Configuration\"}\n pageTitle={\"General\"}\n url=\"medplat/notification/all\"\n component={EventConfigurations}\n />\n ),\n },\n {\n path: \"medplat/views/config\",\n element: (\n <VerifyRoute\n headerTitle={\"Event Configuration\"}\n pageTitle={\"General\"}\n url=\"medplat/notification\"\n component={ManageEventConfiguration}\n />\n ),\n },\n {\n path: \"medplat/views/config/:id\",\n element: (\n <VerifyRoute\n headerTitle={\"Event Configuration\"}\n pageTitle={\"General\"}\n url=\"medplat/notification\"\n component={ManageEventConfiguration}\n />\n ),\n },\n {\n path: \"medplat/admin/newServerManagement\",\n element: (\n <VerifyRoute\n headerTitle={\"Server Management\"}\n url=\"medplat/admin/newServerManagement\"\n component={NewServerManagement}\n />\n ),\n },\n {\n path: 'medplat/admin/mobileEntityManagement',\n element: (\n <VerifyRoute\n pageTitle={'General'}\n url=\"medplat/admin/mobileEntityManagement\"\n component={EntityManagement}\n headerTitle={'Mobile Database Management'}\n />\n ),\n },\n {\n path: 'medplat/admin/mobileAnalytics',\n element: (\n <VerifyRoute\n url=\"medplat/admin/mobileAnalytics\"\n component={MobileAnalytics}\n headerTitle={'Mobile Analytics'}\n />\n ),\n },\n {\n path: 'medplat/admin/mobileMenuManagement',\n element: (\n <VerifyRoute\n url=\"medplat/admin/mobileMenuManagement\"\n component={<MobileMenuManagement />}\n headerTitle={'Mobile Menu Management'}\n />\n ),\n },\n {\n path: 'medplat/admin/mobileMenuManagement/addMenuConfiguration',\n element: <AddMenuConfiguration />,\n },\n {\n path: \"medplat/manage/manageTranslation\",\n element: (\n <VerifyRoute\n headerTitle={\"Manage Translation\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/manageTranslation\"\n component={ManageTranslation}\n />\n ),\n },\n {\n path: \"medplat/manage/managewidgets\",\n element: (\n <VerifyRoute\n headerTitle={\"Widgets\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/manage-widgets\"\n component={WidgetList}\n />\n ),\n },\n {\n path: \"medplat/manage/notification\",\n element: (\n <VerifyRoute\n headerTitle={\"Notification Configuration\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/notification\"\n component={NotificationList}\n />\n ),\n },\n {\n path: \"medplat/manage/immunizationConfiguratorList\",\n element: (\n <VerifyRoute\n headerTitle={\"Immunizations\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/manageTranslation\"\n component={ImmunizationConfigurationsList}\n />\n ),\n },\n {\n path: \"medplat/manage/manageImmunization\",\n element: (\n <VerifyRoute\n headerTitle={\"Immunizations\"}\n pageTitle={\"General\"}\n url=\"medplat/training/question\"\n component={ManageImmunization}\n />\n ),\n },\n {\n path: \"medplat/manage/manageImmunization/:id\",\n element: (\n <VerifyRoute\n headerTitle={\"Immunizations\"}\n pageTitle={\"General\"}\n url=\"medplat/training/question\"\n component={ManageImmunization}\n />\n ),\n },\n {\n path: \"medplat/manage/immunizationConfiguration\",\n element: (\n <VerifyRoute\n headerTitle={\"Immunization Configuration\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/immunizationConfiguration\"\n component={ImmunizationConfiguration}\n />\n ),\n },\n {\n path: \"medplat/manage/vaccineEducation\",\n element: (\n <VerifyRoute\n headerTitle={\"Vaccine Education\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/immunizationConfiguration\"\n component={VaccineEducationList}\n />\n ),\n },\n {\n path: \"medplat/manage/vaccineEducation/:vaccineId\",\n element: (\n <VerifyRoute\n headerTitle={\"Vaccine Education\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/immunizationConfiguration\"\n component={VaccineEducationConfigurator}\n />\n ),\n },\n {\n path: \"medplat/manage/securityAuditLogs\",\n element: (\n <VerifyRoute\n headerTitle={\"Security Audit Logs\"}\n pageTitle={\"Security Audit Logs\"}\n url=\"medplat/manage/securityAuditLogs\"\n component={SecurityAuditLogList}\n />\n ),\n },\n {\n path: \"medplat/manage/activityAnalytics\",\n element: (\n <VerifyRoute\n headerTitle={\"Activity Analytics\"}\n url=\"medplat/manage/activityAnalytics\"\n component={ActivityAnalytics}\n />\n ),\n },\n {\n path: \"medplat/admin/fhirResource\",\n element: (\n <VerifyRoute\n headerTitle={\"FHIR Sync\"}\n pageTitle={\"General\"}\n url=\"medplat/admin/fhirResource\"\n component={FhirServerList}\n />\n ),\n },\n {\n path: \"medplat/admin/fhirResource/new\",\n element: (\n <VerifyRoute\n headerTitle={\"Connect FHIR Server\"}\n pageTitle={\"General\"}\n url=\"medplat/admin/fhirResource\"\n component={FhirServerWizard}\n />\n ),\n },\n {\n path: \"medplat/admin/fhirResource/:serverId\",\n element: (\n <VerifyRoute\n headerTitle={\"FHIR Server\"}\n pageTitle={\"General\"}\n url=\"medplat/admin/fhirResource\"\n component={FhirServerProfile}\n />\n ),\n },\n {\n path: \"medplat/admin/fhirResource/:serverId/staging\",\n element: (\n <VerifyRoute\n headerTitle={\"FHIR Staging Inbox\"}\n pageTitle={\"General\"}\n url=\"medplat/admin/fhirResource\"\n component={FhirRawResourceList}\n />\n ),\n },\n {\n path: \"medplat/manage/locationWiseExpectedTarget\",\n element: (\n <VerifyRoute\n headerTitle={\"Location Wise Expected Target\"}\n pageTitle={\"General\"}\n url=\"medplat/manage/locationWiseExpectedTarget\"\n component={LocationWiseExpectedTarget}\n />\n ),\n },\n];\n\nexport default corecustom2Routes;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst createInitialState = () => ({\n vaccines: [],\n selectedVaccineIds: [],\n views: [\n {\n id: 'landing',\n name: 'Dashboard',\n },\n {\n id: 'schedule-config',\n name: 'Schedule Config',\n },\n {\n id: 'summary',\n name: 'Configuration Summary',\n },\n ],\n currentViewId: 'summary',\n scheduledVaccines: [],\n baseDateMaster: [],\n recipientMaster: [],\n dbTablesMaster: [],\n filtersMaster: [],\n featureRights: {},\n isConfigLoaded: false,\n validationErrors: {},\n});\n\nconst initialState = createInitialState();\n\nconst upsertByIdOrCode = (items = [], incoming = {}) => {\n const matchIndex = items.findIndex(\n (item) =>\n (incoming.id !== undefined && item?.id === incoming.id) ||\n (incoming.code && item?.code === incoming.code),\n );\n\n if (matchIndex === -1) {\n return [...items, incoming];\n }\n\n return items.map((item, index) =>\n index === matchIndex\n ? {\n ...item,\n ...incoming,\n }\n : item,\n );\n};\n\nconst immunizationSlice = createSlice({\n name: 'immunization',\n initialState,\n reducers: {\n toggleVaccine: (state, action) => {\n const id = action.payload;\n if (!Array.isArray(state.selectedVaccineIds)) state.selectedVaccineIds = [];\n\n const index = state.selectedVaccineIds.indexOf(id);\n if (index > -1) {\n state.selectedVaccineIds.splice(index, 1);\n } else {\n state.selectedVaccineIds.push(id);\n }\n },\n setVaccines: (state, action) => {\n const vaccines = Array.isArray(action.payload) ? action.payload : [];\n state.vaccines = vaccines;\n if (state.selectedVaccineIds.length === 0) {\n state.selectedVaccineIds = vaccines\n .filter((vaccine) => vaccine.isActive)\n .map((vaccine) => vaccine.id);\n }\n },\n setSelectedVaccineIds: (state, action) => {\n state.selectedVaccineIds = action.payload;\n },\n addCustomVaccine: (state, action) => {\n const payload = action.payload || {};\n const {\n name,\n vaccine_name,\n disease,\n target_prevention,\n id,\n baseDateCode,\n base_date_code,\n recipientType,\n recipient_type,\n } = payload;\n const finalName = name || vaccine_name || 'Unnamed Vaccine';\n const finalCategory = disease || target_prevention || 'General';\n\n const vaccines = Array.isArray(state.vaccines) ? state.vaccines : [];\n const validIds = vaccines.map((v) => Number(v?.id)).filter((id) => !Number.isNaN(id));\n const nextId = validIds.length > 0 ? Math.max(...validIds) + 1 : 1;\n\n const finalId = id || nextId;\n const newVaccine = {\n id: finalId,\n name: finalName,\n category: finalCategory,\n doses: 0,\n doseType: 'FIXED',\n scheduleType: 'ROUTINE',\n doseDetails: {},\n regions: [],\n dependencies: [],\n isActive: payload.isActive !== undefined ? payload.isActive : false,\n baseDateCode: baseDateCode || base_date_code || null,\n recipientType: recipientType || recipient_type || '',\n };\n\n if (!Array.isArray(state.vaccines)) state.vaccines = [];\n state.vaccines.push(newVaccine);\n },\n setCurrentView: (state, action) => {\n state.currentViewId = action.payload;\n },\n updateScheduledVaccine: (state, action) => {\n const updatedVaccine = action.payload;\n const index = state.scheduledVaccines.findIndex((v) => v.id === updatedVaccine.id);\n if (index !== -1) {\n state.scheduledVaccines[index] = {\n ...state.scheduledVaccines[index],\n ...updatedVaccine,\n };\n } else {\n state.scheduledVaccines.push(updatedVaccine);\n }\n },\n setBaseDatesMaster: (state, action) => {\n state.baseDateMaster = action.payload;\n },\n setRecipientMaster: (state, action) => {\n state.recipientMaster = action.payload;\n },\n setDbTablesMaster: (state, action) => {\n state.dbTablesMaster = action.payload;\n },\n setFiltersMaster: (state, action) => {\n state.filtersMaster = action.payload;\n },\n upsertBaseDateMasterItem: (state, action) => {\n state.baseDateMaster = upsertByIdOrCode(state.baseDateMaster, action.payload);\n },\n upsertRecipientMasterItem: (state, action) => {\n state.recipientMaster = upsertByIdOrCode(state.recipientMaster, action.payload);\n },\n updateBaseDateMasterStatus: (state, action) => {\n const { code, is_active } = action.payload;\n state.baseDateMaster = state.baseDateMaster.map((item) =>\n item.code === code ? { ...item, is_active } : item,\n );\n },\n upsertFilterMasterItem: (state, action) => {\n state.filtersMaster = upsertByIdOrCode(state.filtersMaster, action.payload);\n },\n updateFilterMasterStatus: (state, action) => {\n const { code, is_active } = action.payload;\n state.filtersMaster = state.filtersMaster.map((item) =>\n item.code === code ? { ...item, is_active } : item,\n );\n },\n setFeatureRights: (state, action) => {\n state.featureRights = action.payload || {};\n },\n setImmunizationConfigLoaded: (state, action) => {\n state.isConfigLoaded = action.payload;\n },\n resetImmunizationState: () => createInitialState(),\n activateSelectedVaccines: (state) => {\n state.vaccines = state.vaccines.map((v) => ({\n ...v,\n isActive: state.selectedVaccineIds.includes(v.id),\n }));\n },\n setVaccineStatus: (state, action) => {\n const { vaccineId, status } = action.payload;\n const vIndex = state.vaccines.findIndex((v) => v.id === vaccineId);\n if (vIndex !== -1) {\n state.vaccines[vIndex].isActive = status;\n }\n\n if (!Array.isArray(state.selectedVaccineIds)) state.selectedVaccineIds = [];\n const sIndex = state.selectedVaccineIds.indexOf(vaccineId);\n if (status && sIndex === -1) {\n state.selectedVaccineIds.push(vaccineId);\n } else if (!status && sIndex !== -1) {\n state.selectedVaccineIds.splice(sIndex, 1);\n }\n },\n setValidationErrors: (state, action) => {\n const { vaccineId, errors } = action.payload;\n state.validationErrors[vaccineId] = errors;\n },\n clearValidationErrors: (state, action) => {\n const vaccineId = action.payload;\n if (vaccineId) {\n delete state.validationErrors[vaccineId];\n } else {\n state.validationErrors = {};\n }\n },\n },\n});\n\nexport const {\n toggleVaccine,\n setVaccines,\n addCustomVaccine,\n setCurrentView,\n updateScheduledVaccine,\n setBaseDatesMaster,\n setRecipientMaster,\n setDbTablesMaster,\n setFiltersMaster,\n upsertBaseDateMasterItem,\n upsertRecipientMasterItem,\n updateBaseDateMasterStatus,\n upsertFilterMasterItem,\n updateFilterMasterStatus,\n setFeatureRights,\n setImmunizationConfigLoaded,\n resetImmunizationState,\n activateSelectedVaccines,\n setSelectedVaccineIds,\n setValidationErrors,\n clearValidationErrors,\n setVaccineStatus,\n} = immunizationSlice.actions;\nexport default immunizationSlice.reducer;\n","export const getDays = (val) => {\n if (!val) return 0;\n if (typeof val === 'string' && val.toLowerCase() === 'birth') return 0;\n return Number.parseInt(val) || 0;\n};\n\nexport const getDaysVal = (val, unit) => {\n if (!val) return 0;\n if (typeof val === 'string' && val.toLowerCase() === 'birth') return 0;\n const num = Number.parseInt(val) || 0;\n if (unit === 'weeks') return num * 7;\n if (unit === 'months') return num * 30;\n if (unit === 'years') return num * 365;\n return num;\n};\n\nexport const isBlankDuration = (val) => val === undefined || val === null || String(val).trim() === '';\n\n// The unit dropdown value that stands in for an open-ended window. It is never\n// persisted — `eligibleTo === null` is the stored fact, and this is derived from it.\nexport const LIFELONG_UNIT = 'lifelong';\n\n// Distinguishes \"eligible for life\" (null) from \"not filled in yet\" (\"\" / undefined),\n// which still has to fail the required check.\nexport const isLifelong = (eligibleTo) => eligibleTo === null;\n\n// Marker used inside the overall-eligibility summary string. Must not contain \"to\",\n// which is what that string is split on for display.\nexport const LIFELONG_ELIGIBILITY = 'LIFELONG';\n\n// `windowInDays` is null for a lifelong dose, meaning there is no ceiling to check against.\nexport const validateOverdueWindow = (dose, perDoseUnits = {}, windowInDays) => {\n const errors = {};\n const hasFrom = !isBlankDuration(dose.overdueFrom);\n const hasTill = !isBlankDuration(dose.overdueTill);\n\n if (!hasFrom) {\n if (hasTill) {\n errors.overdueTill = 'Set Overdue From first';\n }\n return errors;\n }\n\n const fromInDays = getDaysVal(dose.overdueFrom, perDoseUnits.overdueFrom || 'days');\n const tillInDays = getDaysVal(dose.overdueTill, perDoseUnits.overdueTill || 'days');\n\n if (fromInDays <= 0) {\n errors.overdueFrom = 'Must be greater than 0';\n } else if (windowInDays > 0 && fromInDays >= windowInDays) {\n errors.overdueFrom = 'Must be within the eligibility window';\n }\n\n if (!hasTill) {\n errors.overdueTill = 'Overdue Till is required';\n } else if (tillInDays <= fromInDays) {\n errors.overdueTill = 'Must be greater than Overdue From';\n } else if (windowInDays > 0 && tillInDays > windowInDays) {\n errors.overdueTill = 'Must be within the eligibility window';\n }\n\n return errors;\n};\n\nexport const validateDoseDetails = (doseDetails, doseType, doseCount, durationUnits = {}) => {\n if (doseCount === 0) return null;\n const errors = [];\n const details = Array.isArray(doseDetails) ? doseDetails : [doseDetails];\n\n // Global fallback units (used for FIXED, or FLEXIBLE doses missing per-dose units)\n const globalEligibleFromUnit = durationUnits.eligibleFrom || 'days';\n const globalEligibleToUnit = durationUnits.eligibleTo || 'days';\n const globalIntervalUnit = durationUnits.interval || 'days';\n\n // Where the open-ended tail of the series begins, or -1 when nothing is lifelong.\n const firstLifelongIdx = details.findIndex((dose) => isLifelong(dose?.eligibleTo));\n\n details.forEach((dose, idx) => {\n // Use per-dose units if present (FLEXIBLE), otherwise fall back to global (FIXED)\n const perDoseUnits = dose.units || {};\n const eligibleFromUnit = perDoseUnits.eligibleFrom || globalEligibleFromUnit;\n const eligibleToUnit = perDoseUnits.eligibleTo || globalEligibleToUnit;\n const intervalUnit = perDoseUnits.interval || globalIntervalUnit;\n const doseErrors = {};\n const startInDays = getDaysVal(dose.eligibleFrom, eligibleFromUnit);\n const endInDays = getDaysVal(dose.eligibleTo, eligibleToUnit);\n const hasNoEnd = isLifelong(dose.eligibleTo);\n\n if ((dose.eligibleFrom === undefined || dose.eligibleFrom === null || dose.eligibleFrom === '') && idx !== 0) {\n doseErrors.eligibleFrom = 'Eligible From is required';\n }\n\n if (\n !hasNoEnd &&\n (dose.eligibleTo === undefined || dose.eligibleTo === '' || getDaysVal(dose.eligibleTo, eligibleToUnit) === 0)\n ) {\n doseErrors.eligibleTo = 'Eligible To is required';\n }\n\n const isLastFlexibleRow = doseType === 'FLEXIBLE' && idx === details.length - 1;\n\n const isIntervalRequired =\n (doseType === 'FIXED' && doseCount > 1) || (!isLastFlexibleRow && doseType === 'FLEXIBLE');\n\n if (isIntervalRequired) {\n const intervalVal = Number.parseInt(dose.interval) || 0;\n const intervalInDays = getDaysVal(dose.interval, intervalUnit);\n if (\n dose.interval === undefined ||\n dose.interval === null ||\n dose.interval === '' ||\n intervalVal === 0 ||\n dose.interval === '0 days'\n ) {\n doseErrors.interval = 'Interval is required';\n } else if (\n doseType === 'FIXED' &&\n doseCount > 1 &&\n // An open-ended window always has room for every dose.\n !hasNoEnd &&\n (doseCount - 1) * intervalInDays > endInDays - startInDays\n ) {\n doseErrors.interval = `Number of doses not possible in the window. Total interval exceeds available window (${endInDays - startInDays} days).`;\n }\n }\n\n if (!hasNoEnd && endInDays <= startInDays && dose.eligibleFrom && dose.eligibleTo) {\n doseErrors.eligibleTo = 'Must be strictly greater than ELIGIBLE FROM';\n }\n\n // Lifelong runs to the end of the series. A bounded dose sitting behind an open-ended one\n // can be pushed past its own window by an unbounded wait — the series then goes out of\n // scope and every dose after it is missed, so the vaccine can never be completed. The\n // dose table cascades this automatically; this catches configs saved before it existed.\n // Reported last so it wins over the required/ordering messages above, which describe the\n // same field but not the reason it cannot be filled in at all.\n if (doseType === 'FLEXIBLE' && !hasNoEnd && firstLifelongIdx !== -1 && idx > firstLifelongIdx) {\n doseErrors.eligibleTo = 'Doses after a lifelong dose must also be lifelong';\n }\n\n if (doseType === 'FLEXIBLE') {\n // A lifelong dose has no ceiling, so the overdue bounds are only checked against 0.\n Object.assign(doseErrors, validateOverdueWindow(dose, perDoseUnits, hasNoEnd ? null : endInDays - startInDays));\n }\n\n if (idx > 0 && doseType === 'FLEXIBLE') {\n const prevDose = details[idx - 1];\n const prevPerDoseUnits = prevDose.units || {};\n const prevFromUnit = prevPerDoseUnits.eligibleFrom || globalEligibleFromUnit;\n const prevIntervalUnit = prevPerDoseUnits.interval || globalIntervalUnit;\n const prevStartInDays = getDaysVal(prevDose.eligibleFrom, prevFromUnit);\n const prevIntervalDays = getDaysVal(prevDose.interval, prevIntervalUnit);\n if (startInDays < prevStartInDays + prevIntervalDays) {\n doseErrors.eligibleFrom = 'Must be greater than previous ELIGIBLE FROM and INTERVAL';\n }\n\n if (prevDose.isBooster && !dose.isBooster) {\n doseErrors.isBooster = 'A regular dose cannot follow a booster dose';\n }\n }\n\n if (Object.keys(doseErrors).length > 0) {\n errors[idx] = doseErrors;\n }\n });\n\n return errors.length > 0 ? errors : null;\n};\n\nexport const validateDependencies = (dependencies) => {\n const errors = [];\n const seenVaccines = new Set();\n\n dependencies.forEach((dep, idx) => {\n const depErrors = {};\n if (!dep.vaccine) {\n depErrors.vaccine = 'Vaccine selection is required';\n } else {\n if (seenVaccines.has(dep.vaccine)) {\n depErrors.vaccine = 'This vaccine is already added as a dependency';\n }\n seenVaccines.add(dep.vaccine);\n }\n\n const isMinEmpty = dep.minGap === '' || dep.minGap === null || dep.minGap === undefined;\n const isMaxEmpty = dep.maxGap === '' || dep.maxGap === null || dep.maxGap === undefined;\n\n const minGap = getDays(dep.minGap);\n const maxGap = getDays(dep.maxGap);\n\n if (dep.requirement === 'Should be given' || dep.requirement === 'Optional') {\n if (isMinEmpty) {\n depErrors.minGap = 'Gap cannot be empty';\n } else if (minGap <= 0) {\n depErrors.minGap = 'Must be greater than 0';\n }\n\n if (!isMinEmpty && !isMaxEmpty && minGap > 0 && maxGap > 0 && maxGap <= minGap) {\n depErrors.maxGap = 'Max gap must be greater than Min Gap';\n }\n } else {\n // For \"Should not be given\", values can be empty or zero.\n if (!isMinEmpty && minGap < 0) {\n depErrors.minGap = 'Gap cannot be negative';\n }\n if (!isMaxEmpty && maxGap < 0) {\n depErrors.maxGap = 'Gap cannot be negative';\n }\n }\n\n if (Object.keys(depErrors).length > 0) {\n errors[idx] = depErrors;\n }\n });\n\n return errors.some((e) => e && Object.keys(e).length > 0) ? errors : null;\n};\n\nexport const validateCodeSets = (codeSets) => {\n const errors = [];\n const seenTypes = new Set();\n\n (codeSets || []).forEach((cs, idx) => {\n const csErrors = {};\n if (!cs.type) {\n csErrors.type = 'Type is required';\n } else {\n if (seenTypes.has(cs.type)) {\n csErrors.type = 'This type is already added';\n }\n seenTypes.add(cs.type);\n }\n\n if (!cs.value || cs.value.trim() === '') {\n csErrors.value = 'Value is required';\n }\n\n if (Object.keys(csErrors).length > 0) {\n errors[idx] = csErrors;\n }\n });\n\n return errors.some((e) => e && Object.keys(e).length > 0) ? errors : null;\n};\n\n/**\n * The optional repeating booster on a FLEXIBLE schedule. Absent is valid — most vaccines have\n * none — so only a configured one is checked.\n */\n// The booster values carry their unit in the string — \"12 months\" — so the unit is taken\n// from the value itself rather than from a separate units object as a dose's would be.\nconst inDays = (val) => {\n const parts = String(val ?? '').trim().split(/\\s+/);\n return getDaysVal(val, parts.length > 1 ? parts[parts.length - 1] : 'days');\n};\n\nconst validateRecurringBooster = (vaccine) => {\n const booster = vaccine.recurringBooster;\n if (!booster || vaccine.doseType !== 'FLEXIBLE') {\n return null;\n }\n\n const errors = {};\n const from = Number.parseInt(booster.eligibleFrom, 10);\n const interval = Number.parseInt(booster.interval, 10);\n\n if (!(from >= 0)) {\n errors.eligibleFrom = 'Eligible From is required';\n }\n if (!(interval > 0)) {\n errors.interval = 'Interval must be greater than 0';\n }\n // Null is lifelong and always valid; a number has to leave room for at least one dose.\n if (!isLifelong(booster.eligibleTo)) {\n const to = Number.parseInt(booster.eligibleTo, 10);\n if (!(to > 0)) {\n errors.eligibleTo = 'Eligible To is required, or set it to No end';\n } else if (inDays(booster.eligibleTo) <= inDays(booster.eligibleFrom)) {\n errors.eligibleTo = 'Must be strictly greater than Eligible From';\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n};\n\n/**\n * @param vaccine the draft being saved\n * @param includeSchedule whether this save rebuilds a product's schedule. False when no\n * product is open — a rename or a removal — where the panel's per-product fields are\n * leftovers from whatever was loaded last and validating them would block the save with\n * errors about a schedule nobody edited.\n */\nexport const validateVaccineForm = (vaccine, includeSchedule = true) => {\n const errors = {};\n\n if (!vaccine.name || vaccine.name.trim() === '') {\n errors.name = 'Vaccine Name is required';\n }\n\n if (!vaccine.recipientType) {\n errors.recipientType = 'Recipient Type is required';\n }\n\n if (!vaccine.baseDateCode) {\n errors.baseDateCode = 'Base Date is required';\n }\n\n const codeSetErrors = validateCodeSets(vaccine.codeSets || []);\n if (codeSetErrors) {\n errors.codeSets = codeSetErrors;\n }\n\n if (!includeSchedule) {\n return Object.keys(errors).length > 0 ? errors : null;\n }\n\n const isRecurring = vaccine.doseType === 'RECURRING';\n\n // A recurring schedule has no dose count by definition — the interval decides how many\n // doses there turn out to be, and that depends on the member.\n if (!isRecurring && (!vaccine.doses || vaccine.doses === 0)) {\n errors.doses = 'At least one dose is required';\n }\n\n // A recurring schedule is laid out as a single fixed-style row, so it validates as one dose\n // whatever `doses` happens to hold.\n const doseErrors = validateDoseDetails(\n vaccine.doseDetails,\n isRecurring ? 'FIXED' : vaccine.doseType,\n isRecurring ? 1 : vaccine.doses,\n vaccine.durationUnits\n );\n if (doseErrors) {\n errors.doseDetails = doseErrors;\n }\n\n // Without a repeat there is nothing to generate, so an interval of zero is the one value a\n // recurring schedule cannot hold: it would mean the same dose is available again the instant\n // it is given, forever.\n //\n // doseDetails holds a single dose as a bare object and several as an array — the same\n // duality validateDoseDetails normalises above. Reading [0] alone found nothing on the object\n // form, so the interval read as NaN and the error stood however large the number was.\n const recurringRow = Array.isArray(vaccine.doseDetails)\n ? vaccine.doseDetails[0]\n : vaccine.doseDetails;\n\n if (isRecurring && !(Number.parseInt(recurringRow?.interval, 10) > 0)) {\n errors.doseDetails = {\n ...(errors.doseDetails || {}),\n 0: { ...(errors.doseDetails?.[0] || {}), interval: 'Interval must be greater than 0' },\n };\n }\n\n const boosterErrors = validateRecurringBooster(vaccine);\n if (boosterErrors) {\n errors.recurringBooster = boosterErrors;\n }\n\n const depErrors = validateDependencies(vaccine.dependencies || []);\n if (depErrors) {\n errors.dependencies = depErrors;\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n};\n","import { execute, executeAll } from \"@/common/services/GlobalApis\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\nimport { LIFELONG_ELIGIBILITY, isLifelong } from \"../utils/validationUtils\";\n\nconst safeParseJson = (value, fallback) => {\n if (value == null) {\n return fallback;\n }\n\n if (typeof value !== \"string\") {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return fallback;\n }\n};\n\nconst toStableId = (...parts) => parts.filter(Boolean).join(\"_\");\n\nconst normaliseEligibilityValue = (value) => {\n // Checked before the null branch below: a lifelong end is a real configured value,\n // not a missing one.\n if (isLifelong(value)) {\n return LIFELONG_ELIGIBILITY;\n }\n\n if (\n value === undefined ||\n value === \"\" ||\n value === \"N.A.\" ||\n value === \"null days\"\n ) {\n return \"N.A.\";\n }\n\n return value;\n};\n\nconst calculateOverallEligibility = (\n doseDetails,\n doseType = \"FLEXIBLE\",\n doses = 1,\n) => {\n // A recurring schedule has no dose count by definition, so the usual \"nothing configured\n // yet\" guard would read every one of them as N.A. Its window is the one thing it does have.\n const isRecurring = doseType === \"RECURRING\";\n\n if (doses === 0 && !isRecurring) {\n return \"N.A.\";\n }\n\n if (!doseDetails) {\n return \"N.A.\";\n }\n\n // One window rather than one per dose. Recurring is FIXED with the count taken away, and\n // both are held as a single row — sometimes a bare object, sometimes an array of one.\n if (doseType === \"FIXED\" || isRecurring) {\n const details = Array.isArray(doseDetails) ? doseDetails[0] : doseDetails;\n if (!details) {\n return \"N.A.\";\n }\n\n const eligibleFrom = normaliseEligibilityValue(details.eligibleFrom);\n const eligibleTo = normaliseEligibilityValue(details.eligibleTo);\n\n if (eligibleFrom === \"N.A.\" && eligibleTo === \"N.A.\") {\n return \"N.A.\";\n }\n\n return `${eligibleFrom} to ${eligibleTo}`;\n }\n\n if (!Array.isArray(doseDetails) || doseDetails.length === 0) {\n return \"N.A.\";\n }\n\n const first = normaliseEligibilityValue(doseDetails[0].eligibleFrom);\n const last = normaliseEligibilityValue(\n doseDetails[doseDetails.length - 1].eligibleTo,\n );\n\n if (first === \"N.A.\" && last === \"N.A.\") {\n return \"N.A.\";\n }\n\n return `${first} to ${last}`;\n};\n\nconst DEFAULT_DURATION_UNITS = {\n eligibleFrom: \"days\",\n eligibleTo: \"days\",\n interval: \"days\",\n};\n\n// A vaccine created but never configured has an empty `schedule`. The screen still needs\n// something to edit, so it gets the same shape a freshly migrated row would have.\nconst buildEmptyScheduleEntry = () => ({\n productId: null,\n noOfDoses: 0,\n doseType: \"FIXED\",\n doseEligibleFrom: undefined,\n doseEligibleTo: undefined,\n minGap: 0,\n durationUnits: { ...DEFAULT_DURATION_UNITS },\n dose: [],\n location: [],\n validations: [],\n});\n\n/**\n * Maps one element of the `schedule` column — the configuration for a single product — into\n * the shape the summary screen edits. With product management disabled there is exactly one\n * such entry, carrying productId null.\n */\nconst mapScheduleEntry = (entry, vaccineId, entryIndex) => {\n const doseTypeLower = String(entry.doseType || \"\").toLowerCase();\n // RECURRING is FIXED with the dose count taken away — one window and one interval — so it\n // is read into the same single-row shape and edited by the same controls.\n const isFixed =\n doseTypeLower === \"fixed\" ||\n doseTypeLower === \"na\" ||\n doseTypeLower === \"recurring\" ||\n !entry.doseType;\n\n const durationUnits = safeParseJson(entry.durationUnits, {\n ...DEFAULT_DURATION_UNITS,\n });\n\n // Not toStableId — it drops falsy parts, which would collapse entry 0 onto the bare id.\n const entryKey = `${vaccineId}s${entryIndex}`;\n\n const doseDetails = isFixed\n ? [\n {\n id: toStableId(\"fixed\", entryKey),\n eligibleFrom:\n entry.doseEligibleFrom !== undefined && entry.doseEligibleFrom !== null\n ? `${entry.doseEligibleFrom} ${durationUnits.eligibleFrom || \"days\"}`\n : \"\",\n // NULL is the stored form of a lifelong window — see the FLEXIBLE branch below.\n eligibleTo:\n entry.doseEligibleTo === null\n ? null\n : entry.doseEligibleTo !== undefined\n ? `${entry.doseEligibleTo} ${durationUnits.eligibleTo || \"days\"}`\n : \"\",\n interval: entry.minGap || 0,\n },\n ]\n : safeParseJson(entry.dose, []).map((dose, index) => {\n const perDoseUnits = {\n eligibleFrom:\n dose.eligible_from_unit || durationUnits.eligibleFrom || \"days\",\n eligibleTo:\n dose.eligible_to_unit || durationUnits.eligibleTo || \"days\",\n interval: dose.interval_unit || durationUnits.interval || \"days\",\n overdueFrom: dose.overdue_from_unit || \"days\",\n overdueTill: dose.overdue_till_unit || \"days\",\n };\n return {\n id: dose.id || toStableId(\"dose\", entryKey, index),\n isBooster:\n dose.isBooster === true ||\n dose.is_booster === true ||\n (typeof dose.dose === \"string\" &&\n dose.dose.toUpperCase().startsWith(\"B\")),\n alias: dose.alias || dose.booster_alias || \"\",\n eligibleFrom:\n dose.eligible_from !== undefined\n ? `${dose.eligible_from} ${perDoseUnits.eligibleFrom}`\n : \"\",\n // NULL is the stored form of a lifelong window; it must survive as null rather\n // than becoming the string \"null days\".\n eligibleTo:\n dose.eligible_to === null\n ? null\n : dose.eligible_to !== undefined\n ? `${dose.eligible_to} ${perDoseUnits.eligibleTo}`\n : \"\",\n overdueFrom:\n dose.overdue_from !== undefined && dose.overdue_from !== null\n ? `${dose.overdue_from} ${perDoseUnits.overdueFrom}`\n : \"\",\n overdueTill:\n dose.overdue_till !== undefined && dose.overdue_till !== null\n ? `${dose.overdue_till} ${perDoseUnits.overdueTill}`\n : \"\",\n interval: dose.min_gap || 0,\n units: perDoseUnits,\n };\n });\n\n const regions = safeParseJson(entry.location, [])\n .filter((location) => location && typeof location === \"object\")\n .map((location, index) => ({\n id: toStableId(\"region\", entryKey, index),\n locationId: location.locationId,\n locationIdArr: location.locationIdArr,\n locationList: location.locationList,\n fullPath: location.locationList?.replaceAll(\" => \", \" → \"),\n }));\n\n const dependencies = safeParseJson(entry.validations, []).map(\n (dependency, index) => ({\n id: toStableId(\"dep\", entryKey, index),\n vaccine: dependency.vaccine || \"\",\n requirement: dependency.requirement || \"Should be given\",\n minGap: Number.parseInt(dependency.minGap, 10) || 0,\n maxGap: Number.parseInt(dependency.maxGap, 10) || 0,\n message: dependency.message || \"\",\n }),\n );\n\n const doses = entry.noOfDoses || 0;\n const doseType = entry.doseType && entry.doseType !== \"NA\" ? entry.doseType : \"FIXED\";\n\n // The optional repeating tail on a FLEXIBLE schedule. Stored with its units alongside each\n // value; read back into the \"12 months\" strings the duration controls edit.\n const booster = entry.recurringBooster\n ? safeParseJson(entry.recurringBooster, null)\n : null;\n const recurringBooster =\n booster && booster.eligibleFrom !== undefined && booster.eligibleFrom !== null\n ? {\n eligibleFrom: `${booster.eligibleFrom} ${booster.eligibleFromUnit || \"days\"}`,\n // NULL is the stored form of a lifelong window, exactly as for a dose.\n eligibleTo:\n booster.eligibleTo === null || booster.eligibleTo === undefined\n ? null\n : `${booster.eligibleTo} ${booster.eligibleToUnit || \"days\"}`,\n interval: `${booster.interval ?? 0} ${booster.intervalUnit || \"days\"}`,\n }\n : null;\n\n return {\n productId: entry.productId ?? null,\n doses,\n doseType,\n doseDetails,\n durationUnits,\n recurringBooster,\n regions,\n dependencies,\n eligibility: calculateOverallEligibility(doseDetails, doseType, doses),\n };\n};\n\nconst mapImmunizationVaccineConfig = (vaccine) => {\n const parsedSchedule = safeParseJson(vaccine.schedule, []);\n const scheduleEntries =\n Array.isArray(parsedSchedule) && parsedSchedule.length > 0\n ? parsedSchedule\n : [buildEmptyScheduleEntry()];\n\n const productSchedules = scheduleEntries.map((entry, index) =>\n mapScheduleEntry(entry || {}, vaccine.id, index),\n );\n\n const parsedFilters = safeParseJson(vaccine.filters, []);\n const filters = Array.isArray(parsedFilters)\n ? parsedFilters\n : parsedFilters?.codes || [];\n\n const parsedCodeSets = safeParseJson(vaccine.code_sets, []);\n const codeSets = Array.isArray(parsedCodeSets) ? parsedCodeSets : [];\n\n // The first entry doubles as the vaccine's headline configuration. With product management\n // off it is the only one, so these top-level fields stay exactly what they always were.\n const [primarySchedule] = productSchedules;\n\n return {\n ...vaccine,\n name: vaccine.vaccine_name || vaccine.name || \"N.A.\",\n category:\n vaccine.target_prevention ||\n vaccine.disease ||\n vaccine.category ||\n \"N.A.\",\n productSchedules,\n doses: primarySchedule.doses,\n doseType: primarySchedule.doseType,\n doseDetails: primarySchedule.doseDetails,\n eligibility: primarySchedule.eligibility,\n isActive: vaccine.is_active !== undefined ? vaccine.is_active : true,\n // True while this vaccine has configuration saved but not yet published. Everything above\n // is already the draft's values — FETCH_IMMUNISATION_MASTER prefers the draft — so this is\n // the only thing telling the screen that what it is showing is not what members see.\n hasUnpublishedChanges: Boolean(vaccine.has_unpublished_changes),\n regions: primarySchedule.regions,\n dependencies: primarySchedule.dependencies,\n filters,\n codeSets,\n durationUnits: primarySchedule.durationUnits,\n baseDateCode: vaccine.base_date_code,\n recipientType: vaccine.recipient_type || \"\",\n scheduleType:\n vaccine.schedule_type === \"NON_ROUTINE\" ? \"NON_ROUTINE\" : \"ROUTINE\",\n };\n};\n\nconst getVaccines = () => {\n return execute({\n code: \"FETCH_IMMUNISATION_MASTER\",\n parameters: {},\n });\n};\n\nconst getBaseDates = () => {\n return execute({\n code: \"FETCH_IMMUNISATION_BASE_DATE\",\n parameters: {},\n });\n};\n\nconst getRecipients = () => {\n return execute({\n code: \"FETCH_IMMUNISATION_RECEPIENT_MASTER\",\n parameters: {},\n });\n};\n\nconst getImmunizationReferenceData = () => {\n return executeAll([\n {\n code: \"FETCH_IMMUNISATION_BASE_DATE\",\n parameters: {},\n sequence: 1,\n },\n {\n code: \"GET_ALL_IMMUNISATION_FILTERS\",\n parameters: {},\n sequence: 2,\n },\n {\n code: \"FETCH_IMMUNISATION_MASTER\",\n parameters: {},\n sequence: 3,\n },\n {\n code: \"FETCH_IMMUNISATION_RECEPIENT_MASTER\",\n parameters: {},\n sequence: 4,\n },\n ]);\n};\n\nconst addImmunization = (data) => {\n return execute({\n code: \"INSERT_IMMUNIZATION_MASTER\",\n parameters: data,\n });\n};\n\nconst updateImmunization = (data) => {\n return execute({\n code: \"UPDATE_IMMUNIZATION_DOSE\",\n ...data,\n });\n};\n\nconst checkImmunizationConfigurationInitiation = (data) => {\n return execute({\n code: \"CHECK_IMMUNIZATION_CONFIGURATION_INITIATION\",\n ...data,\n });\n};\n\nconst updateVaccineStatus = (data) => {\n return execute({\n code: \"UPDATE_IMMUNIZATION_STATUS\",\n ...data,\n });\n};\n\nconst updateVaccineStatusFromArray = (data) => {\n return execute({\n code: \"UPDATE_IMMUNIZATION_STATUS_FOR_ARRAY\",\n ...data,\n });\n};\n\nconst updateImmunizationConfigurationInitiation = (data) => {\n return execute({\n code: \"UPDATE_IMMUNIZATION_CONFIGURATION_INITIATION\",\n ...data,\n });\n};\n\nconst saveBaseDate = (data) => {\n return execute({\n code: \"SAVE_IMMUNISATION_BASE_DATE\",\n parameters: data,\n });\n};\n\nconst saveRecipient = (data) => {\n return execute({\n code: \"SAVE_IMMUNISATION_RECEPIENT_MASTER\",\n parameters: data,\n });\n};\n\nconst updateRecipient = (data) => {\n return execute({\n code: \"UPDATE_IMMUNISATION_RECEPIENT_MASTER\",\n parameters: data,\n });\n};\n\nconst updateBaseDate = (data) => {\n return execute({\n code: \"UPDATE_IMMUNISATION_BASE_DATE\",\n parameters: data,\n });\n};\n\nconst getAllTablesAndColumns = () => {\n return execute({\n code: \"retrieve_all_tables_and_columns\",\n parameters: {},\n });\n};\n\nconst getFilters = () => {\n return execute({\n code: \"GET_ALL_IMMUNISATION_FILTERS\",\n parameters: {},\n });\n};\n\nconst addFilter = (data) => {\n return execute({\n code: \"ADD_IMMUNISATION_FILTER\",\n parameters: data,\n });\n};\n\nconst updateFilter = (data) => {\n return execute({\n code: \"UPDATE_IMMUNISATION_FILTER\",\n parameters: data,\n });\n};\n\nconst getImmunisationV2List = (data) => {\n return api.post(\"/medplatform/v2/immunisation/list\", data);\n};\n\nconst revalidateImmunisationV2List = (data) => {\n return api.post(\"/medplatform/v2/immunisation/revalidate\", data);\n};\n\n/**\n * Tells the configured reviewers that a vaccine's configuration was saved.\n *\n * Only the vaccine name and the list of change descriptions travel: the recipients come from\n * system configuration and the editor's name from the session, neither of which the browser\n * should be able to choose.\n */\nconst notifyConfigChange = (data) => {\n return api.post(\"/medplatform/v2/immunisation/config-change-notification\", data);\n};\n\nexport const ImmunizationUtil = {\n calculateOverallEligibility,\n mapImmunizationVaccineConfig,\n getVaccines,\n getBaseDates,\n getRecipients,\n getImmunizationReferenceData,\n addImmunization,\n updateImmunization,\n checkImmunizationConfigurationInitiation,\n updateVaccineStatus,\n updateVaccineStatusFromArray,\n updateImmunizationConfigurationInitiation,\n saveBaseDate,\n saveRecipient,\n updateRecipient,\n updateBaseDate,\n getAllTablesAndColumns,\n getFilters,\n addFilter,\n updateFilter,\n getImmunisationV2List,\n revalidateImmunisationV2List,\n notifyConfigChange,\n};\n"],"names":["VerifyRoute","lazy","Roles","QueryBuilder","n","UserList","ManageUser","QueryManagement","FeatureMenu","ActivityAnalytics","NewServerManagement","ManageDynamicFeature","SecurityAuditLogList","EventConfigurations","ManageEventConfiguration","EntityManagement","MobileAnalytics","MobileMenuManagement","AddMenuConfiguration","ManageTranslation","WidgetList","NotificationList","ImmunizationConfigurationsList","ManageImmunization","ImmunizationConfiguration","VaccineEducationList","VaccineEducationConfigurator","FhirServerList","FhirServerWizard","FhirServerProfile","FhirRawResourceList","LocationWiseExpectedTarget","corecustom2Routes","jsx","createInitialState","initialState","upsertByIdOrCode","items","incoming","matchIndex","item","index","immunizationSlice","createSlice","state","action","id","vaccines","vaccine","payload","name","vaccine_name","disease","target_prevention","baseDateCode","base_date_code","recipientType","recipient_type","finalName","finalCategory","validIds","v","nextId","newVaccine","updatedVaccine","code","is_active","vaccineId","status","vIndex","sIndex","errors","toggleVaccine","setVaccines","addCustomVaccine","setCurrentView","updateScheduledVaccine","setBaseDatesMaster","setRecipientMaster","setDbTablesMaster","setFiltersMaster","upsertBaseDateMasterItem","upsertRecipientMasterItem","updateBaseDateMasterStatus","upsertFilterMasterItem","updateFilterMasterStatus","setFeatureRights","setImmunizationConfigLoaded","resetImmunizationState","activateSelectedVaccines","setSelectedVaccineIds","setValidationErrors","clearValidationErrors","setVaccineStatus","immunizationSlice_default","getDays","val","getDaysVal","unit","num","isBlankDuration","LIFELONG_UNIT","isLifelong","eligibleTo","LIFELONG_ELIGIBILITY","validateOverdueWindow","dose","perDoseUnits","windowInDays","hasFrom","hasTill","fromInDays","tillInDays","validateDoseDetails","doseDetails","doseType","doseCount","durationUnits","details","globalEligibleFromUnit","globalEligibleToUnit","globalIntervalUnit","firstLifelongIdx","idx","eligibleFromUnit","eligibleToUnit","intervalUnit","doseErrors","startInDays","endInDays","hasNoEnd","isLastFlexibleRow","intervalVal","intervalInDays","prevDose","prevPerDoseUnits","prevFromUnit","prevIntervalUnit","prevStartInDays","prevIntervalDays","validateDependencies","dependencies","seenVaccines","dep","depErrors","isMinEmpty","isMaxEmpty","minGap","maxGap","e","validateCodeSets","codeSets","seenTypes","cs","csErrors","inDays","parts","validateRecurringBooster","booster","from","interval","validateVaccineForm","includeSchedule","codeSetErrors","isRecurring","recurringRow","_a","boosterErrors","safeParseJson","value","fallback","toStableId","normaliseEligibilityValue","calculateOverallEligibility","doses","eligibleFrom","first","last","DEFAULT_DURATION_UNITS","buildEmptyScheduleEntry","mapScheduleEntry","entry","entryIndex","doseTypeLower","isFixed","entryKey","regions","location","dependency","recurringBooster","mapImmunizationVaccineConfig","parsedSchedule","productSchedules","parsedFilters","filters","parsedCodeSets","primarySchedule","getVaccines","execute","getBaseDates","getRecipients","getImmunizationReferenceData","executeAll","addImmunization","data","updateImmunization","checkImmunizationConfigurationInitiation","updateVaccineStatus","updateVaccineStatusFromArray","updateImmunizationConfigurationInitiation","saveBaseDate","saveRecipient","updateRecipient","updateBaseDate","getAllTablesAndColumns","getFilters","addFilter","updateFilter","getImmunisationV2List","api","revalidateImmunisationV2List","notifyConfigChange","ImmunizationUtil"],"mappings":"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"}
|