From 3f645242f6761b3464c04ce3f8546cb02282b4eb Mon Sep 17 00:00:00 2001 From: pearl-truss Date: Tue, 7 Nov 2023 10:35:53 -0500 Subject: [PATCH 1/5] update state program list --- .../src/common-code/data/statePrograms.json | 152 +++++++----------- 1 file changed, 56 insertions(+), 96 deletions(-) diff --git a/services/app-web/src/common-code/data/statePrograms.json b/services/app-web/src/common-code/data/statePrograms.json index bab5224255..8d1120ff4f 100644 --- a/services/app-web/src/common-code/data/statePrograms.json +++ b/services/app-web/src/common-code/data/statePrograms.json @@ -137,16 +137,6 @@ "fullName": "AIDS Healthcare Foundation ", "name": "AHF" }, - { - "id": "53a6a9ce-e2f9-47af-9795-12901e13a986", - "fullName": "Whole Child Model", - "name": "WCM" - }, - { - "id": "7cec9b0c-3833-4933-bc05-a9287a76d3ec", - "fullName": "Health Homes", - "name": "HHP" - }, { "id": "40ca8541-3f42-45e7-8baa-835337c299c6", "fullName": "Specialty Mental Health Services", @@ -237,14 +227,9 @@ "name": "Florida", "programs": [ { - "id": "c23b4688-b33c-4be8-b7cc-2760efb4932d", - "fullName": "Non-Emergency Medical Transportation - Medical Transportation Management", - "name": "NEMT MTM" - }, - { - "id": "79041bc2-a3c7-43bf-b88a-1151cdedbcb1", - "fullName": "Non-Emergency Medical Transportation - LogistiCare", - "name": "NEMT LC" + "id": "", + "fullName": "Non-Emergency Medical Transportation", + "name": "NEMT" }, { "id": "037af66b-81eb-4472-8b80-01edf17d12d9", @@ -306,7 +291,7 @@ { "id": "47995323-dd69-4ea5-afeb-eef15d6da27f", "fullName": "Hawaii QUEST Integration", - "name": "Quest" + "name": "QI" }, { "id": "2bf8cc98-2330-4e58-9e2c-96f25daa7b28", @@ -353,7 +338,7 @@ { "id": "9cc424d8-b833-41be-994d-0f7d689b7c82", "fullName": "Behavioral Health Plan", - "name": "IBHP" + "name": "BHP" }, { "id": "e53f0506-84a5-47de-8400-e71f15c8d590", @@ -364,11 +349,6 @@ "id": "d0c0f2cb-c295-4c23-a301-24214aa5fa3d", "fullName": "Healthy Connections", "name": "Healthy Connections" - }, - { - "id": "4412b5cc-885f-4fa4-9f99-0c0f558dec18", - "fullName": "Non-Emergency Medical Transportation", - "name": "NEMT" } ], "code": "ID" @@ -431,7 +411,7 @@ "programs": [ { "id": "acb14791-7d88-4c10-a127-68f0a694d62f", - "fullName": "KY Non-Emergency Transportation Program", + "fullName": "Non-Emergency Medical Transportation Program", "name": "NEMT " }, { @@ -468,7 +448,7 @@ "programs": [ { "id": "1076bd88-69c7-470f-839c-481c0ad13b97", - "fullName": "MassHealth Managed Care (MassHealth MCO Program)", + "fullName": "MassHealth Managed Care Organization Program", "name": "MCO" }, { @@ -481,14 +461,9 @@ "fullName": "Primary Care Accountable Care Organizations", "name": "PCACO" }, - { - "id": "40391715-cde1-4248-b683-e106584ac66c", - "fullName": "Senior Care Options", - "name": "SCO" - }, { "id": "4e76c974-5741-4272-8c8a-9005d70259b6", - "fullName": "MassHealth BH/SUD PIHP", + "fullName": "Managed Behavioral Health Program", "name": "MBHP" } ], @@ -501,11 +476,6 @@ "id": "d64e707e-0f42-4c57-88f9-09bc065f3f22", "fullName": "HealthChoice", "name": "HealthChoice" - }, - { - "id": "663546f5-a8de-4f33-93ae-c506ec48353e", - "fullName": "Hopkins Elder Plus", - "name": "Hopkins Elder Plus" } ], "code": "MD" @@ -636,13 +606,13 @@ "programs": [ { "id": "75358ece-92f0-4c89-a45b-817f80d8be37", - "fullName": "1915(b)/(c) Medicaid Waiver for MH/DD/SA Services", + "fullName": "Behavioral Health Medicaid Managed Care Program", "name": "LME/MCO" }, { "id": "b4e8d1e4-0520-4fa6-b472-d3b655d3efdc", "fullName": "Managed Care PrePaid Health Plan", - "name": "PHP" + "name": "MC PHP" }, { "id": "fae74329-159c-42c1-9f7a-eb1e82afd2c5", @@ -703,19 +673,19 @@ "name": "New Hampshire", "programs": [ { - "id": "8469324c-39a3-46f2-88b4-ed5bbb7dbe46", - "fullName": "New Hampshire Medicaid Care Management", - "name": "MCM " + "id": "", + "fullName": "Dental", + "name": "Dental" }, { - "id": "df14e72a-91e2-4c61-a833-12d38eae3e1b", - "fullName": "New Hampshire Health Protection Program Premium Assistance Demonstration for QHP", - "name": "NHHPPP" + "id": "8469324c-39a3-46f2-88b4-ed5bbb7dbe46", + "fullName": "Medicaid Care Management", + "name": "MCM " }, { - "id": "e5097a9c-704e-4b20-a5f5-63262559d055", - "fullName": "Heritage Health Adult ", - "name": "HHA" + "id": "", + "fullName": "Granite Advantage Health Plan Program", + "name": "GAHCP" } ], "code": "NH" @@ -812,15 +782,25 @@ { "name": "Ohio", "programs": [ + { + "id": "", + "fullName": "Ohio Resilience through Integrated Systems and Excellence", + "name": "OhioRISE" + }, { "id": "c4ebe21a-5dd1-4308-a851-c31983b3b974", "fullName": "Ohio Medicaid Managed Care Program", - "name": "MyCare" + "name": "MMC" }, { "id": "d9e3bbf5-f3a3-404c-a510-998d603a3673", "fullName": "MyCare Ohio Opt-Out Program", - "name": "MMC" + "name": "MyCare" + }, + { + "id": "", + "fullName": "Single Pharmacy Benefit Manager", + "name": "SPBM" } ], "code": "OH" @@ -832,6 +812,21 @@ "id": "6d1f77e3-1e97-4f57-9da0-e49358ab97e2", "fullName": "SoonerCare Choice", "name": "SoonerCare Choice" + }, + { + "id": "", + "fullName": "SoonerSelect Dental", + "name": "SoonerSelect Dental" + }, + { + "id": "", + "fullName": "SoonerSelect Children's Specialty", + "name": "SoonerSelect Children's Specialty" + }, + { + "id": "", + "fullName": "SoonerSelect Medical", + "name": "SoonerSelect Medical" } ], "code": "OK" @@ -841,8 +836,8 @@ "programs": [ { "id": "7ae073dd-dbff-4bc9-86b8-d27954dd5776", - "fullName": "Oregon Health Plan", - "name": "Oregon Health Plan" + "fullName": "Healthier Oregon Program", + "name": "HOP" }, { "id": "46246196-3b63-40be-8db1-c09cec281dae", @@ -860,14 +855,9 @@ { "name": "Pennsylvania", "programs": [ - { - "id": "867b91fa-f470-4553-8e99-5e15afd891b5", - "fullName": "Living Independence for the Elderly", - "name": "LIFE" - }, { "id": "ef45f326-8b3a-44a9-aac6-8fa73400680a", - "fullName": "HealthChoices - Physical Health", + "fullName": "HealthChoices Physical Health", "name": "PH" }, { @@ -877,7 +867,7 @@ }, { "id": "65f965cd-7823-4777-bfb1-688b36bb92b2", - "fullName": "Behavioral Health HealthChoices", + "fullName": "HealthChoices Behavioral Health", "name": "BH" } ], @@ -948,16 +938,6 @@ "id": "3fe3d26b-175f-4550-92a2-9f86b273c0f0", "fullName": "TennCare II", "name": "TennCare" - }, - { - "id": "288f4a6c-1772-46bb-bf88-e57d375a91a6", - "fullName": "TennCare CHOICES", - "name": "CHOICES" - }, - { - "id": "1bf0f2f9-849d-48e6-a233-601af51fd477", - "fullName": "Non-CHOICES  ", - "name": "Non-CHOICES" } ], "code": "TN" @@ -1040,11 +1020,6 @@ "id": "2f4bfd6c-c25a-44b1-9010-7367d13e7325", "fullName": "CHIP Dental", "name": "CHIP Dental" - }, - { - "id": "c20d27e3-ce47-4f6c-911c-e09bcb38e6ff", - "fullName": "Expansion Prepaid Mental Health Planas", - "name": "ExPMHP" } ], "code": "UT" @@ -1071,12 +1046,7 @@ { "id": "2dacc6c3-ed0b-4c95-a17c-47f8d3340511", "fullName": "Global Commitment to Health", - "name": "GCH" - }, - { - "id": "e5027571-9a8b-4022-a3a9-5d6f8a0f83b5", - "fullName": "Vermont Medicaid Next Generation Accountable Care Organization (VMNG)", - "name": "ACO" + "name": "GCTH" } ], "code": "VT" @@ -1087,17 +1057,12 @@ { "id": "7877a1e5-bdda-4668-b379-e35bde146536", "fullName": "Apple Health Integrated Managed Care (FIMC)", - "name": "AHIMC" - }, - { - "id": "64249023-8194-4ed5-8268-0e3099b83093", - "fullName": "Behavioral Health Services Only", - "name": "BHSO" + "name": "Apple Health" }, { "id": "9f5c066a-9e62-4f1a-8f77-090718b11c1a", "fullName": "Apple Health Integrated Foster Care", - "name": "AHIFC" + "name": "IFC" }, { "id": "5601ebf2-5f94-49cb-9994-bc5d4b874bc0", @@ -1113,7 +1078,7 @@ { "id": "03152a0a-0888-4b24-87a8-1a7371e9b8e4", "fullName": "BadgerCare Plus", - "name": "BCP" + "name": "BadgerCare" }, { "id": "9843c1dc-981c-4d2f-a04f-83b2a8ff254d", @@ -1123,18 +1088,13 @@ { "id": "8d289aae-c5f5-4af8-a7a2-8b347273dfee", "fullName": "Family Care Partnership Program", - "name": "Partnership" + "name": "Family Care Partnership" }, { "id": "e00f0ae0-7282-4087-8e1f-232ce967d5c3", "fullName": "Family Care", "name": "Family Care" }, - { - "id": "0f55782c-3bd8-4e6b-952e-7b3facfa0d4e", - "fullName": "Children Come First", - "name": "CCF" - }, { "id": "dc7d4bf5-c2bc-4b36-871b-f0761d040ecd", "fullName": "WrapAround Milwaukee", @@ -1158,7 +1118,7 @@ }, { "id": "76fd2c76-decd-41c4-924b-82820d8fe3f0", - "fullName": "Specialized Managed Care Plan for Children and Youth Program (Mountain Health Promise )", + "fullName": "Mountain Health Promise", "name": "MHP" }, { From 5c335fe289cb5f452622b06f64c218f6c22d19d5 Mon Sep 17 00:00:00 2001 From: pearl-truss Date: Tue, 7 Nov 2023 10:36:23 -0500 Subject: [PATCH 2/5] update documentation for updating state programs --- docs/technical-design/howto-update-state-programs.md | 2 +- scripts/import-programs.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/technical-design/howto-update-state-programs.md b/docs/technical-design/howto-update-state-programs.md index 24a33b1b3b..2b769c6adb 100644 --- a/docs/technical-design/howto-update-state-programs.md +++ b/docs/technical-design/howto-update-state-programs.md @@ -11,6 +11,6 @@ The source of truth for that file comes from a CSV maintained by product and des 1. Download the latest version of csv from google docs when prompted by product/design. 2. Run the script following the command listed in the `import-programs.ts`. -3. Overwrite existing state programs JSON with the new output. Your usage of the script will likely look something like this: `cd scripts && yarn tsc && node import-programs.js ~/Desktop/State\ programs,\ population,\ and\ nicknames.csv > ../services/app-web/src/common-code/data/statePrograms.json` +3. Overwrite existing state programs JSON with the new output. Your usage of the script will likely look something like this: `cd scripts && yarn tsc && node import-programs.js path/to/data.csv > ../services/app-web/src/common-code/data/statePrograms.json` 4. Double check the diff. It's important not to delete any programs that have already been used for a submission because although programs are not in the database, we still store references to the program ID in postgres as if they are stable. Also, we want to be sure we are only changing programs expected to change. 5. Make a PR to update the statePrograms file in the codebase diff --git a/scripts/import-programs.ts b/scripts/import-programs.ts index 6b76d8755d..519ae35c2e 100644 --- a/scripts/import-programs.ts +++ b/scripts/import-programs.ts @@ -2,13 +2,16 @@ This script is used to generate a list of MC-Review state programs. To read more about this script and why it's used see "How to update state programs" technical design docs. To run: - yarn tsc && node ./import-programs.js path/to/data.csv + yarn tsc && node ./import-programs.js path/to/data.csv > ../services/app-web/src/common-code/data/statePrograms.json The input file is expected to be a valid CSV with at least the following columns: 1 State (two-character state code, uppercase) 2 Program (full program name) 3 Nickname (acronym or abbreviation e.g. "CME") +Documentation for this script can be found here: +https://github.com/Enterprise-CMCS/managed-care-review/blob/main/docs/technical-design/howto-update-state-programs.md + Additional columns aren't used and should be ignored. */ From d5f52de0b2d9eebba2115c0efa961d146c3453a3 Mon Sep 17 00:00:00 2001 From: pearl-truss Date: Tue, 7 Nov 2023 10:53:31 -0500 Subject: [PATCH 3/5] manually add ids for newly created programs --- .../src/common-code/data/statePrograms.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/services/app-web/src/common-code/data/statePrograms.json b/services/app-web/src/common-code/data/statePrograms.json index 8d1120ff4f..21341c8ad0 100644 --- a/services/app-web/src/common-code/data/statePrograms.json +++ b/services/app-web/src/common-code/data/statePrograms.json @@ -227,7 +227,7 @@ "name": "Florida", "programs": [ { - "id": "", + "id": "712277fb-f43f-4eb5-98c5-6c6a97509201", "fullName": "Non-Emergency Medical Transportation", "name": "NEMT" }, @@ -673,7 +673,7 @@ "name": "New Hampshire", "programs": [ { - "id": "", + "id": "fa2a5d94-ff57-4a4b-9f94-26f4a8de7668", "fullName": "Dental", "name": "Dental" }, @@ -683,7 +683,7 @@ "name": "MCM " }, { - "id": "", + "id": "f9a8ace4-1de4-443f-bf82-67fbb9558ff6", "fullName": "Granite Advantage Health Plan Program", "name": "GAHCP" } @@ -783,7 +783,7 @@ "name": "Ohio", "programs": [ { - "id": "", + "id": "889f525e-08c7-4e62-9df9-b67186a87975", "fullName": "Ohio Resilience through Integrated Systems and Excellence", "name": "OhioRISE" }, @@ -798,7 +798,7 @@ "name": "MyCare" }, { - "id": "", + "id": "f8fb337f-6f69-4b3d-9cdd-0b257f3ba9da", "fullName": "Single Pharmacy Benefit Manager", "name": "SPBM" } @@ -814,17 +814,17 @@ "name": "SoonerCare Choice" }, { - "id": "", + "id": "58b4e72f-219d-4648-84ae-deea4a703965", "fullName": "SoonerSelect Dental", "name": "SoonerSelect Dental" }, { - "id": "", + "id": "70239e21-dd55-47ae-9156-ef910eb69e49", "fullName": "SoonerSelect Children's Specialty", "name": "SoonerSelect Children's Specialty" }, { - "id": "", + "id": "4e274fe6-3645-432b-8629-b4b13bc0ee77", "fullName": "SoonerSelect Medical", "name": "SoonerSelect Medical" } From 764de60a947ae3fe2bd6476f7fe27ed252bbf23c Mon Sep 17 00:00:00 2001 From: pearl-truss Date: Tue, 7 Nov 2023 10:55:45 -0500 Subject: [PATCH 4/5] update documentation --- docs/technical-design/howto-update-state-programs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/technical-design/howto-update-state-programs.md b/docs/technical-design/howto-update-state-programs.md index 2b769c6adb..5eb222c6b5 100644 --- a/docs/technical-design/howto-update-state-programs.md +++ b/docs/technical-design/howto-update-state-programs.md @@ -13,4 +13,5 @@ The source of truth for that file comes from a CSV maintained by product and des 2. Run the script following the command listed in the `import-programs.ts`. 3. Overwrite existing state programs JSON with the new output. Your usage of the script will likely look something like this: `cd scripts && yarn tsc && node import-programs.js path/to/data.csv > ../services/app-web/src/common-code/data/statePrograms.json` 4. Double check the diff. It's important not to delete any programs that have already been used for a submission because although programs are not in the database, we still store references to the program ID in postgres as if they are stable. Also, we want to be sure we are only changing programs expected to change. -5. Make a PR to update the statePrograms file in the codebase +5. For any newly created programs, manually populate the `id` field usings a UUID generator +6. Make a PR to update the statePrograms file in the codebase From e428d6e4f1bf3b612f704d02d79cca292dc44df1 Mon Sep 17 00:00:00 2001 From: pearl-truss Date: Tue, 7 Nov 2023 11:41:39 -0500 Subject: [PATCH 5/5] fix api test --- services/app-api/src/resolvers/user/fetchCurrentUser.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/app-api/src/resolvers/user/fetchCurrentUser.test.ts b/services/app-api/src/resolvers/user/fetchCurrentUser.test.ts index f93bc1ec7e..373c4d0791 100644 --- a/services/app-api/src/resolvers/user/fetchCurrentUser.test.ts +++ b/services/app-api/src/resolvers/user/fetchCurrentUser.test.ts @@ -16,7 +16,7 @@ describe('currentUser', () => { expect(res.data?.fetchCurrentUser.email).toBe('james@example.com') expect(res.data?.fetchCurrentUser.state.code).toBe('FL') - expect(res.data?.fetchCurrentUser.state.programs).toHaveLength(6) + expect(res.data?.fetchCurrentUser.state.programs).toHaveLength(5) }) it('returns programs for MI', async () => {