@@ -30,7 +30,7 @@
## Overview
-This project will serve as a starting point for the redesign of onemac.cms.gov
+The macpro-mako project, a.k.a. MAKO, a.k.a. Micro, is a redesign of MACPRO Onemac. The mission to be a modern submission and review portal for select CMS data remains the same, but the architecture is different in some important ways.
@@ -38,9 +38,9 @@ This project will serve as a starting point for the redesign of onemac.cms.gov
## Contributing
-Work items for this project are tracked in Jira. Check out the [project kanban board](https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/216) to view all work items affecting this repo.
+Work items for this project are tracked in Jira. Check out the [project kanban board](https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/257) to view all work items affecting this repo.
-If you don't have access to Jira, would like access to Jira, or would like to drop us an idea without pursuing Jira access, please visit the [slack channel](https://cmsgov.slack.com/archives/C0403M0D007).
+If you don't have access to Jira, would like access to Jira, or would like to drop us an idea without pursuing Jira access, please visit the [slack channel](https://cmsgov.slack.com/archives/C05ECGY0F5F).
## License
diff --git a/docs/_config.yml b/docs/_config.yml
index 2b148f7eae..000638a669 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -10,8 +10,8 @@
# Thanks, and have fun!
# - MACPro Platform Team
-title: Macpro OM Template
-description: A new project for the platform team, description TBD.
+title: MAKO
+description: A new project by the CMS MACPRO platform team.
# baseurl: "/just-the-docs" # the subpath of your site, e.g. /blog
url: "https://enterprise-cmcs.github.io/" # the base hostname & protocol for your site, e.g. http://example.com
keep_files: ["docs/metrics/_next"]
@@ -41,8 +41,8 @@ team:
members: # This list automatically populates the Team Introduction page. Add/Edit as appropriate.
- role: Product Owner
description: Responsible for project scope, direction, and delivery.
- name: Berry Davenport
- email: bdavenport@gswell.com
+ name: Anna Hawk
+ email: ahawk@gswell.com
- role: Tech Lead
description: Leads tooling, tech, and arch discussions and decisions.
name: Ben Paige
@@ -52,28 +52,20 @@ team:
meetings:
- name: Standup
days: Daily
- time: 10:30am - 11:00am ET
- link: Ask for the Hangouts invite on Slack.
- - name: Refinement
- days: Tues, Thurs
- time: 11:00am - 11:30am ET
- link: Ask for the Hangouts invite on Slack.
- - name: Retro
- days: every other Wed
- time: 3:00pm - 4:00pm ET
- link: Ask for the Hangouts invite on Slack.
- - name: Planning
- days: every other Thurs
- time: 10:30am - 1:00pm ET
+ time: 11:30am - 12:00pm ET
+ link: Bookmarked in Slack Channel.
+ - name: Touchpoint
+ days: Wed
+ time: 10:00am - 10:30am ET
link: Ask for the Hangouts invite on Slack.
repo:
org: Enterprise-CMCS
- name: macpro-om-template
- url: https://github.com/Enterprise-CMCS/macpro-om-template
+ name: macpro-mako
+ url: https://github.com/Enterprise-CMCS/macpro-mako
slack:
- channel_url: https://cmsgov.slack.com/archives/C02QU8VNPV4
+ channel_url: https://cmsgov.slack.com/archives/C05ECGY0F5F
remote_theme: just-the-docs/just-the-docs
permalink: pretty
@@ -100,11 +92,11 @@ heading_anchors: true
# Aux links for the upper right navigation
aux_links:
"GitHub":
- - "https://github.com/Enterprise-CMCS/macpro-base-template"
+ - "https://github.com/Enterprise-CMCS/macpro-mako"
"Jira":
- - "https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/246"
+ - "https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/257"
"Slack":
- - "https://cmsgov.slack.com/archives/C02QU8VNPV4"
+ - "https://cmsgov.slack.com/archives/C05ECGY0F5F"
aux_links_new_tab: false
# Sort order for navigation links
@@ -113,11 +105,11 @@ nav_sort: case_sensitive # Capital letters sorted before lowercase
# External navigation links
nav_external_links:
- title: GitHub
- url: https://github.com/Enterprise-CMCS/macpro-om-template
+ url: https://github.com/Enterprise-CMCS/macpro-mako
- title: Jira
- url: https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/216
+ url: https://qmacbis.atlassian.net/jira/software/c/projects/OY2/boards/257
- title: Slack
- url: https://cmsgov.slack.com/archives/C02QU8VNPV4
+ url: https://cmsgov.slack.com/archives/C05ECGY0F5F
# Footer content
# appears at the bottom of every page's main content
@@ -130,7 +122,7 @@ last_edit_time_format: "%b %e %Y at %I:%M %p" # uses ruby's time format: https:/
# Footer "Edit this page on GitHub" link text
gh_edit_link: true # show or hide edit this page link
gh_edit_link_text: "Edit this page on GitHub"
-gh_edit_repository: "https://github.com/Enterprise-CMCS/macpro-om-template" # the github URL for your repo
+gh_edit_repository: "https://github.com/Enterprise-CMCS/macpro-mako" # the github URL for your repo
gh_edit_branch: "master" # the branch that your docs is served from
gh_edit_source: docs # the source that your files originate from
gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately
diff --git a/docs/_deploy-metrics/yarn.lock b/docs/_deploy-metrics/yarn.lock
index 0003fe9a19..3ba01770a8 100644
--- a/docs/_deploy-metrics/yarn.lock
+++ b/docs/_deploy-metrics/yarn.lock
@@ -3697,14 +3697,14 @@ scheduler@^0.23.0:
loose-envify "^1.1.0"
semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.7, semver@^7.3.8:
- version "7.5.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
- integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"
@@ -4077,9 +4077,9 @@ which@^2.0.1:
isexe "^2.0.0"
word-wrap@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
- integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
+ integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
wrappy@1:
version "1.0.2"
diff --git a/docs/assets/diagram.svg b/docs/assets/diagram.svg
index ad2997467d..0c94dac8bb 100644
--- a/docs/assets/diagram.svg
+++ b/docs/assets/diagram.svg
@@ -1,4 +1,4 @@
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/assets/setup.sh b/docs/assets/setup.sh
index babc592fd2..01cac72dd2 100755
--- a/docs/assets/setup.sh
+++ b/docs/assets/setup.sh
@@ -21,7 +21,7 @@ if [ "$CI" != "true" ]; then
case $selectedshell in
"zsh")
shell=$selectedshell
- shellprofile="$HOME/.zshrc"
+ shellprofile="$HOME/.zshenv"
macprorcfile="$HOME/.macprorc"
;;
diff --git a/docs/assets/update-diagram.md b/docs/assets/update-diagram.md
new file mode 100644
index 0000000000..02defad14b
--- /dev/null
+++ b/docs/assets/update-diagram.md
@@ -0,0 +1,31 @@
+---
+layout: default
+title: Updating Diagram
+nav_order: 1
+---
+
+# Updating Architecture Diagram
+{: .no_toc }
+
+## Table of contents
+{: .no_toc .text-delta }
+
+- TOC
+{:toc}
+
+## Purpose
+The goal of this document is to guide users on how to update the maco architectural diagram using eraser.io
+
+## What is eraser.io
+Eraser is a tool that enables developers to create docs and diagrams at the speed of thought via a minimal UI, keyboard-driven flows, markdown, and diagram-as-code. To access the editable version of the MAKO use the link provided below
+[Architecture Diagram](https://app.eraser.io/workspace/saCiL3CRpdt2oLGOGt6D?elements=UYl7J6SS3K2ovIk2DEydLg)
+
+## Updating Architectural Diagram
+1. Go to the link provided above
+2. Make desired changes to the diagram using the tools provided by eraser.io
+3. Copy diagram
+ - Select the entire diagram (highlight all images)
+ - Right click on any area of the diagram while highlighted
+ - Select "Copy/Past As" and select "Copy As SVG"
+4. Go to docs > assets > diagram-twomac.svg
+ - Replace the copied item eraser.io with the item in line 4 to 6
diff --git a/docs/docs/overview.md b/docs/docs/overview.md
index ceed287f85..de9b3c22ea 100644
--- a/docs/docs/overview.md
+++ b/docs/docs/overview.md
@@ -20,7 +20,7 @@ The 10,000ft view
## Overview
-The {{ site.repo.name }} project is TBD.
+The {{ site.repo.name }} project is a redesign of MACPRO Onemac. The mission to be a modern submission and review portal for select CMS data remains the same, but the architecture is different in some important ways.
## Architecture
diff --git a/docs/docs/services/alerts.md b/docs/docs/services/alerts.md
index 8177b70ec2..599989763d 100644
--- a/docs/docs/services/alerts.md
+++ b/docs/docs/services/alerts.md
@@ -2,7 +2,6 @@
layout: default
title: alerts
parent: Services
-nav_order: 1
---
# alerts
@@ -12,7 +11,7 @@ nav_order: 1
The alerts service deploys a Simple Notification Service (SNS) topic to REGION_A. This topic can be leveraged by any other service for sending alerts.
-#### Notes
+#### Detail
- To subscribe an email, phone number, or something else to the topic, find the SNS topic using the AWS Console and add the subscription manually.
- No SNS subscriptions are made by the deployment process. The topic is created, and several other services are configured to publish notifications to the topic, but the topic itself is not automatically configured to fan out any notifications. Here's why:
diff --git a/docs/docs/services/api.md b/docs/docs/services/api.md
index 3225ab4562..dc048d0676 100644
--- a/docs/docs/services/api.md
+++ b/docs/docs/services/api.md
@@ -2,57 +2,29 @@
layout: default
title: api
parent: Services
-nav_order: 6
---
-# API
+# api
{: .no_toc }
-## Table of contents
-{: .no_toc .text-delta }
+## Summary
-- TOC
-{:toc}
+The api service deploys a lambda-backed API Gateway that is used by the frontend to interact with the data layer. Access to any of its endpoints is guarded at a high level by AWS Cognito, ensuring only authenticated users may reach it. The lambda functions that back each endpoint enforce further fine-grain access according to business rules.
-## Overview
-This stack is used to deploy a RESTful API service to AWS. The service includes a set of functions that can be used to interact with the API, and it is secured with various AWS security policies.
-## Service
-The service name is ${self:custom.project}-api, where ${self:custom.project} is a parameter provided by the user. This ensures that the service name is unique to the user's project.
+## Detail
-## Package
-The package section is used to configure how the deployment package for the service is generated. The "individually: true" setting is used to generate separate packages for each function in the service. This makes it easier to deploy and update individual functions without having to deploy the entire service.
+The largest component of the api service is the API Gateway itself. This is a standard deployment of a regional, REST API Gateway. We do not apply custom certificates or DNS names to the api gateway endpoint (yet); instead, our application uses the amazon generated SSL endpoint.
-## Plugins
-The plugins section is used to specify the plugins that will be used during the deployment of the service. The following plugins are used:
+There are three endpoints on the api. Each is guarded by AWS IAM, meaning that while the API Gateway is publicly available, the API will not forward your request to the backing lambda unless you provide valid credentials obtained through AWS Cognito. This way, only users with an account that we can authenticate may successfully call endpoints. The three endpoints are:
+- /search (POST): This endpoint accepts search queries from clients in the form of OpenSearch Query DSL queries. Once the query is received, the lambda adds extra query filters to ensure fine grain auth. This works by looking up the user making the call in Cognito, determining what type of user (cms or state) is making the call, determining what states that user has access to (if appropriate), and modifying the query in a way that will only return results for those states. By design, the only thing the search endpoint adds is related to authentication; the rest of the query building is left to the frontend for faster and more flexible development.
+- /item (POST): The item endpoint is used to fetch details for exactly one record. While you can form a query to do this and use the search endpoint, the item endpoint is for convenience. Simply make a post call containing the ID of the desired record to the item endpoint, and the record will be returned. Note that fine grain auth is still enforced in an identical way to search, whereby you will only obtain results for that ID if you should have access to that ID.
+- /getAttachmentUrl (POST): This endpoint is used to generate a presigned url for direct client downloading of S3 data, enforcing fine grain auth along the way. This is how we securely allow download of submission attachment data. From the details page, a user may click a file to download. Once clicked, their client makes a post to /getAttachmentUrl with the attachment metadata. The lambda function determines if the caller should or should not have access based on identical logic as the other endpoints (the UI would not display something they cannot download, but this guards against bad actors). If access is allowed, the lambda function generates a presigned url good for 60 seconds and returns it to the client browser, at which point files are downloaded automatically.
-serverless-bundle: A plugin that optimizes the packaging and deployment process for serverless applications.
-serverless-stack-termination-protection: A plugin that applies CloudFormation termination protection to the specified stages, ensuring that accidental deletions of the service do not occur.
-"@stratiformdigital/serverless-iam-helper": A plugin that simplifies the creation and management of AWS IAM roles and policies.
-"@stratiformdigital/serverless-s3-security-helper": A plugin that adds security best practices to S3 buckets.
+All endpoints and backing functions interact with the OpenSearch data layer. As such, and because OpenSearch is deployed within a VPC, all lambda functions of the api service are VPC based. The functions share a security group that allows outbound traffic.
-## Provider
-The provider section is used to configure the cloud provider (AWS), and any additional settings for the provider. The following settings are used:
-
-- name: aws
--runtime: nodejs18.x
-region: ${env:REGION_A} (This setting retrieves the region value from an environment variable called "REGION_A").
-stackTags: Specifies tags to be applied to the CloudFormation stack. The tags include PROJECT and SERVICE, which are set to the custom.project and service values, respectively.
-iam: Specifies IAM related settings for the CloudFormation stack. The role setting specifies the path and permissions boundary for the IAM role. The statements setting specifies the permissions granted to the role. In this case, the role is granted permission to access all CloudWatch resources.
-Custom:
-The custom section is used to specify custom settings for the service. The following settings are used:
-
-project: ${env:PROJECT} (This setting retrieves the project value from an environment variable called "PROJECT").
-accountId: !Sub "${AWS::AccountId}" (This setting retrieves the account ID for the AWS account in which the stack is deployed).
-stage: ${opt:stage, self:provider.stage} (This setting specifies the deployment stage for the service. It is retrieved from an option called "stage", and if the option is not set, it defaults to the value specified in provider.stage).
-serverlessTerminationProtection: Specifies the stages to which CloudFormation termination protection will be applied.
-
-## Endpoints
-The service is defining an API with five endpoints: getPosts, getPost, createPost, deletePost, and updatePost, which will handle GET, POST, PUT and DELETE requests for /posts and /posts/{id} paths.
-
-## Resources
-The resources section is used to specify the additional AWS resources that the service requires. In this case, two gateway responses are created for 4xx and 5xx responses.
-
-## Outputs
-The output values include the name and URL of the API Gateway, as well as the AWS region in which the stack is deployed.
+All function share an IAM role. This is for convenicence; we can do one role per function if we find that valuable. The permissions include:
+- OpenSearch permissions to allow access to the data layer
+- Cognito permissions to look up user attributes; allows for enforcement of fine grain auth.
+- AssumeRole permissions for a very specific cross account role, which is required to generate the presigned urls for the legacy OneMac data.
diff --git a/docs/docs/services/auth.md b/docs/docs/services/auth.md
new file mode 100644
index 0000000000..19509f323e
--- /dev/null
+++ b/docs/docs/services/auth.md
@@ -0,0 +1,22 @@
+---
+layout: default
+title: auth
+parent: Services
+---
+
+# auth
+{: .no_toc }
+
+## Summary
+The auth service builds the infrastructure for our authentication and authorization solution: Amazon Cognito. A user pool and identity pool is deployed, and may conditionally be pointed to IDM (external identity provider).
+
+## Detail
+The core of the api service is a cognito user pool and identity pool, which work together to provide an auth solution:
+- user pool: this is the user directory, where all active users and their attributes are stored.
+ - This is where we specify the user attribute schema, informed by but not beholden to IDM.
+ - The attribute schema is difficiult to update, and often requires deleting the user pool. This is acceptable for two reasons. One, updating the attribute schema would be a rare event. Two, since in higher environments all users are federated, the user pool itself holds no unique data; as such, it is safe to delete and simply rebuild without having data loss.
+- identity pool: this is associated with the user pool, and allows us to grant certain AWS permissions to authenticated and/or unauthenticated entities.
+ - authenticated users may assume a role that gives them permissions to invoke the api gateway, as well as see information about their own cognito user.
+ - unauthenticated user may assume a role that gives them no permissions.
+
+In the near future, higher environments will configure IDM as an external identity provider. Ephemeral/dev environments will continue to use only the cognito user pool.
\ No newline at end of file
diff --git a/docs/docs/services/dashboard.md b/docs/docs/services/dashboard.md
index e8dc260ade..26e7c7363c 100644
--- a/docs/docs/services/dashboard.md
+++ b/docs/docs/services/dashboard.md
@@ -2,18 +2,11 @@
layout: default
title: dashboard
parent: Services
-nav_order: 2
---
# dashboard
{: .no_toc }
-## Table of contents
-{: .no_toc .text-delta }
-
-- TOC
-{:toc}
-
## Why do I need this?
Part of any good project is a way to determine how well it is working. The purpose of a `CloudWatch Dashboard` is to determine the performance, health, and a variety of other aspects that factor into the product being delivered. What we have done here is provided an easy to use solution that will make creating a dashboard easy and deploying it even easier.
diff --git a/docs/docs/services/data.md b/docs/docs/services/data.md
new file mode 100644
index 0000000000..5f4c705397
--- /dev/null
+++ b/docs/docs/services/data.md
@@ -0,0 +1,14 @@
+---
+layout: default
+title: data
+parent: Services
+---
+
+# data
+{: .no_toc }
+
+## Summary
+The data service deploys our OpenSearch data layer and supporting infrastructure.
+
+## Detail
+OpenSearch, Amazon's managed Elasticsearch offering, was selected as the data layer tech.
\ No newline at end of file
diff --git a/docs/docs/services/services.md b/docs/docs/services/services.md
index 69997ce4c0..fc33657339 100644
--- a/docs/docs/services/services.md
+++ b/docs/docs/services/services.md
@@ -12,4 +12,4 @@ permalink: docs/services
Details on each Serverless service
{: .fs-6 .fw-300 }
-The {{ site.repo.name }} project is a [serverless monorepo](https://serverless-stack.com/chapters/organizing-serverless-projects.html). It is, for the most part, a collection of standalone Serverless Framework services bound together in a repository. Loose coupling of the services is facilitated using one or several tools, which include CloudFormation outputs, AWS Systems Manager Parameter Store paramters, and AWS Secrets Manager stores. This section will describe each service in a high level of detail.
+The {{ site.repo.name }} project is a [serverless monorepo](https://serverless-stack.com/chapters/organizing-serverless-projects.html). It is, for the most part, a collection of standalone Serverless Framework micro services bound together in a repository. Loose coupling of the micro services is facilitated using one or several tools, which include CloudFormation outputs, AWS Systems Manager Parameter Store paramters, and AWS Secrets Manager stores. This section will describe each service in a high level of detail.
diff --git a/docs/docs/services/ui-infra.md b/docs/docs/services/ui-infra.md
index bc772459cd..f429853627 100644
--- a/docs/docs/services/ui-infra.md
+++ b/docs/docs/services/ui-infra.md
@@ -2,23 +2,16 @@
layout: default
title: ui-infra
parent: Services
-nav_order: 5
---
# UI Infra
{: .no_toc }
-## Table of contents
-{: .no_toc .text-delta }
-
-- TOC
-{:toc}
-
-## Overview
+## Summary
This service provides the appropriate infrastructure for the UI application running on AWS. It creates several resources including an S3 bucket, a bucket policy, a logging bucket, a logging bucket policy, and an IAM role with permissions.
-## Components
+## Details
- AWS IAM role with permissions for CloudWatch logs and an IAM boundary policy.
- Serverless plugins to help with deploying and managing the infrastructure.
diff --git a/docs/docs/services/ui.md b/docs/docs/services/ui.md
index 2ef2714842..de40993a1a 100644
--- a/docs/docs/services/ui.md
+++ b/docs/docs/services/ui.md
@@ -2,18 +2,11 @@
layout: default
title: ui
parent: Services
-nav_order: 4
---
# UI
{: .no_toc }
-## Table of contents
-{: .no_toc .text-delta }
-
-- TOC
-{:toc}
-
## Overview
This service deploys a static web application to an S3 bucket with a CloudFront distribution in front of it for CDN caching and performance optimization. The template uses the serverless framework and includes several plugins to help with deployment and configuration.
diff --git a/docs/docs/z-new-project-creation.md b/docs/docs/z-new-project-creation.md
deleted file mode 100644
index c8886d0f3c..0000000000
--- a/docs/docs/z-new-project-creation.md
+++ /dev/null
@@ -1,247 +0,0 @@
----
-layout: default
-title: New Project Creation
-nav_order: 99
----
-
-# New Project Creation
-
-Standard Operating Procedure for MACPRO Project Creation.
-
-## Introduction
- On MACPRO, we get a lot of ideas. These stem both from the client and our development teams, both aimed at delivering on the project’s charter. These ideas often require a new project to be created. Project in this context refers to a github repository with its own distinct delivery repository and lifecycle. This document aims to be a guide for starting a new project, or a guide on how to take an idea and start delivering it.
-## Audience
-This SOP is suited for anyone involved with project creation. Parts will be non technical process oriented, and other parts will require technical knowledge and experience. CMS Jira requests will need to be made, so someone with appropriate access will need to be involved.
-## Summary
-
-1. Request a new GitHub repository for the project
-1. Request a new set of AWS accounts (if applicable).
-1. Create a new Slack channel for the project.
-1. Bootstrap the new project with the base template.
-
-## Video Walkthrough
-
-A video walkthrough of this new project creation procedure is provided, to accompany the docs. It's our longest video walkthrough, so it's cut into 12 minute parts:
-
-[Part 1 - New Project Setup](https://user-images.githubusercontent.com/48921055/215788850-de1fc49a-18c2-419e-af74-da35816a4a03.mp4){:target="_blank"}
-
-[Part 2 - New Project Setup](https://user-images.githubusercontent.com/48921055/215788887-2fae5af6-eb89-40ff-87ba-314a96d06b06.mp4){:target="_blank"}
-
-[Part 3 - New Project Setup](https://user-images.githubusercontent.com/48921055/215788913-b7e2f76a-614a-4139-8a34-cedeb79e5e60.mp4){:target="_blank"}
-
-[Part 4 - New Project Setup](https://user-images.githubusercontent.com/48921055/215788926-4060eef2-c47a-4067-b17f-a138f91db69b.mp4){:target="_blank"}
-
-[Part 5 - New Project Setup](https://user-images.githubusercontent.com/48921055/215788936-71f91418-8fdd-4cc1-901a-b843de355ed7.mp4){:target="_blank"}
-
-## Details
-
-### Step 1: Request a new GitHub repository for the project.
-Creating a new project will always involve creating a new GitHub repository, so this step must always be completed. Before making the request for the new repo, you need to decide a few things:
-- Should the repo be public or private? CMS, as a rule, likes to open source its projects, and keep some projects private by exception. So, if the project you’re creating is allowed to be public from a security stance, it should probably be public. If there’s any reason it should not be public, it should be private. The answer to this question is not always straightforward. Sometimes we have a project that doesn’t contain any secret or sensitive information, but it sheds light on the deployed, operational architecture of systems that do have such information. In that case we may decide to keep the project private. The public or private decision should be considered carefully.
-- Should GitHub Actions be enabled? The answer is almost certainly yes. New MACPRO projects use GitHub Actions as it’s CI/CD appliance. In the future, Actions may be substituted for a different tool, but for now Actions is required. This question is mainly being listed since the request for Actions to be enabled on the repo is done as a distinct task.
-- Who should be the initial repository admin? The repo creation process requires adding at least one MACPRO user as a repository administrator. This administrator can then add the appropriate team members to the repo.
-- What should the project be called? This may already have an answer, one that you decided before referencing this document. But consider the repo name anyways. Keep in mind:
-- Newly created projects will be created within the {{ site.repo.org }} GitHub organization, so it usually doesn’t make sense to include ‘cms’ in the repository name.
-- All lowercase letters is a standard
-- The name of the project/repo will be used a lot. It should be accurate, but
-sometimes less is more.
-
-Once you've considered the above points, [follow this how-to guide](https://qmacbis.atlassian.net/l/cp/QDuKKWGH) to create a new Git repo.
-
-
-### Step 2: Request a new set of AWS accounts, if applicable
-The ‘if applicable part’ is important.
-
-You’ll need to decide if this new project requires its own set of AWS accounts. For background, CMS creates AWS accounts in sets of three: a ‘dev’ account, an ‘impl’ account, and a ‘prod’ account. These are created when requested by MACPRO to support new products.
-However, not all new projects require its own set of accounts. While a new service or idea may be best organized in its own repository, it's sometimes unnecessary to organize it in its own AWS accounts. For example: there exists a set of ‘Bigmac’ accounts (bigmac-dev, bigmac-val, bigmac-prod). Within this set of accounts, however, several projects (repositories) are deployed. The cms-bigmac project, mmdl-connectors, seatool-connectors, and seatool-compare are each an individual project and repository, but leverage the same set of accounts. This was done because from a security standpoint, there’s no harm in them coexisting. And from a business management perspective, having less AWS Accounts when it’s acceptably secure is preferred.
-In general, answer this: can my new project leverage an existing set of AWS Accounts without compromising security? Keep in mind, our developer access is organized at the account level. So for instance, anyone who gets access to Project B also gets access to Project A if B and A are deployed to the same set of AWS Accounts.
-If you do have a set of AWS Accounts you can use, great! Move along to step 3. If you need to create new AWS Accounts, [follow this procedure](https://cloud.cms.gov/aws-account-creation) published by CMS.
-
-### Step 3: Create a new Slack channel for the project.
-Slack is used on MACPRO as a primary means of communication. While Slack is neither a "System of Record" nor approved for sensitive information or inappropriate use, it nonetheless is crucial to MACPRO development.
-While there are many Slack channels for various purposes, we typically create one dedicated slack channel per project or repository. This channel is typically subscribed to GitHub repository events, such as releases, and is where developers can send messages regarding the product. As such, creating a new Slack channel is part of the project creation SOP
-
-Someone with appropriate permissions can follow this procedure to create a new Slack Channel:
-1. Login to the CMS Slack workspace (cmsgov.slack.com)
-1. Next to ‘Channels, click the ‘+’ sign.
-1. Create a new channel.
- 1. Set the visibility (public/private) accordingly. There's no rule here, but a public repo's channel should likely be public, and a private repo's channel should likely be private.
- 1. Name it the same as the project repository.
-1. Once created, make a note of the new channel’s URL
- 1. Find the channel on the sidebar
- 1. Right click -> Copy -> Copy Link. You may put this link somewhere like a notepad as you will use it later. But don’t worry, this can always be found again.
-1. You may add anyone who should have access to the channel.
-
-### Step 4: Bootstrap the new repository.
-New MACPRO project repositories are bootstrapped with code from our base template repository. This base template repository is a github repo itself; it’s maintained by the MACPRO Platform Team as the standard MACPRO project structure. It includes patterns for deployment, deployment of dev branches, testing, security scanning, and so forth. There’s a lot of functionality packed into it, without commenting much on the actual application architecture. This is done deliberately, so projects may use the template as a starting point, and build the new project’s services on top of it. In the future, there may be other templates that are more specific, such as a webapp template or a kafka consumer template, but for now there is only the single base template. This step involved getting the latest copy of that template and pushing it to the new project repository.
-
-For the purposes of these instructions, we will assume your new repository (created in the steps above) is called acme, and is in the Enterprise-CMCS organization. We will also assume the template repository you will bootstrap your project with is called macpro-base-template, in the same org.
-1. Ensure all GitHub Actions are enabled for your new repository.
- - Go to the repo in GitHub in a browser.
- - Click Settings
- - Click Actions (left hand side) -> General
- - Select 'Allow all actions and reusable workflows', if not already selected. If this option is not already set and not selectable, you will need to open a ticket with the CMS Cloud team.
-1. Ensure 'master' is set as the default branch for the new repository.
- - Go to the repo in GitHub in a web browser.
- - Click Settings
- - Click Branches (left hand side)
- - Set master as the default, if not already set.
-1. Enable GitHub Pages to run on the master branch.
- - Go to the repo in GitHub in a web browser.
- - Click Settings
- - Click Pages (left hand side)
- - Under the Source dropdown, select GitHub Actions
-1. Configure Dependabot
- - Go to the repo in GitHub in a web browser.
- - Click Settings
- - Click Code security and analysis
- - Enable Dependency Graph
- - Enable Dependabot alerts
- - Disable Dependabot security updates
- - Disable version updates
-1. Clone your new repository.
- ```
- git clone git@github.com:Enterprise-CMCS/acme.git
- ```
-1. Create val and production branches off of master, then go back to master.
- ```
- cd acme
- git checkout -b val
- git push --set-upstream origin val
- git checkout -b production
- git push --set-upstream origin production
- git checkout master
- ```
-1. Push macpro-base-template's production branch to your new repository's master branch.
- ```
- cd acme
- git checkout master
- git remote add base git@github.com:Enterprise-CMCS/macpro-base-template.git
- git fetch base
- git push origin base/production:master --force
- git reset --hard origin/master
- ```
-1. Fetch your (newly built) GitHub Pages site's url.
- - Wait for the 'GitHub Pages' workflow, which triggered when you pushed, to finish.
- - Go to the repo in GitHub in a web browser.
- - Click Settings
- - Click Pages
- - You should see text that says "You site is live at https://xxxxxx". Copy this url to a notepad; you'll need it in a later step.
-1. Add and configure the repository in Code Climate.
- - Go to [https://codeclimate.com/](https://codeclimate.com/)
- - Click Login -> Quality (top right).
- - On the 'Pick an Organization' page, select the organization to which your new repository belongs. However, if your repository is public, select Open Source.
- - Click Add a Repository
- - Find your repo and click Add Repo.
- - You should be taken to the landing page for your repo in Code Climate. Sometimes adding a repo gets your browser stuck. If that happens, just start back at [https://codeclimate.com/](https://codeclimate.com/) and find the repository again. This time, though, you won't need to add it.
- - Click Repo Settings
- - Ensure the default branch is set to 'master' and click save.
- - Go back to Repo Settings
- - Click GitHub
- - Enable all features, including installing the webhook, and save all.
- - Go back to Repo Settings
- - Click Badges
- - Copy the HTML version of the Maintainability tag. Keep this in a notepad for use later in these instructions.
-1. Update project specific values in your codebase.
- - Open your cloned copy of the acme project in an editor.
- - Open and edit acme/.envrc
- - Update the value for PROJECT.
- - This value is used extensively in deployment, as it drives project namespacing. It is what enables us to run many products in one AWS account ,if need be.
- - This value is typically related to your project name. However, it does not need to match exactly, or really at all.
- - To that point, a shorter name is preferred, as it will be put in many resource names. For instance: this repository, macpro-base-template, has a PROJECT value of just 'base'. That's enough to be indicative of what project owns a resource with that tag, but not so long to be askward.
- - Once you've chosen a new project name during project creation, changing it can be extremely difficult. So take a minute and make sure it's what you want.
- - Open and edit src/services/.oidc
- - Find the line that reads `SubjectClaimFilters: "repo:Enterprise-CMCS/macpro-base-template:*"`
- - Update that line to reflect your new project org and repo: `SubjectClaimFilters: "repo:Enterprise-CMCS/acme:*"`
- - Open and edit acme/README.md
- - Find all `https://enterprise-cmcs.github.io/macpro-base-template/` and replace all with the url to your GitHub Pages docs site.
- - Find all `https://cmsgov.slack.com/archives/C04D6HXJ3GA` and replace all with the url to your project Slack channel.
- - Find the block:
- ```
-
-
-
- ``` and replace with the CodeClimate badge block you copied from CodeClimate in a previous step.
- - Update the text in the Overview and Contributing sections, as appropriate.
- - Open and edit the project's top level package.json file to be accurate. Updates should include name, description, repository.url, and homepage.
- - Open and edit the Jekyll config file, docs/_config.yml. Rather than list each place where a value might need replacing/updating, we recommend you walk through this file in detail. It's a config file, so most of it's information will need updating.
- - Update the docs site overview information, located at docs/docs/overview.md - subsection Overview. we recommend reusing the overview you put in the README
-1. Deploy the OIDC service, and stage the created oidc role information in GitHub Secrets.
- - This requires a fully configured workstation and a developer to run commands. Be sure the workstation has successfully run through the workspace setup procedure.
- - Go to the repository, give direnv authorization to modify your shell, and install all dependencies for the project.
- - ```
- cd acme
- direnv allow
- run install
- ```
- - For the 'dev' AWS environment:
- - Get AWS access keys from Kion, and export them to a terminal.
- - ```
- cd acme/src/services/.oidc
- CI=true sls deploy --stage master
- ```
- - Upon the above deploy command's completion, run the serverless info command to retrieve the ServiceRoleArn value.
- - `sls info --stage master --verbose`
- - Find and copy the value for ServiceRoleArn to a notepad.
- - Go to your repository in a browser.
- - Navigate: Settings -> Secrets and variables -> Actions -> New repository secret
- - Set a secret named AWS_OIDC_ROLE_TO_ASSUME, and set it's value to the ServiceRoleARN value you copied from the above step. Click add secret.
- - This secret will be used by any branch that otherwise doesn't have a higher order secret (val and production will, in this next steps).
- - For the 'impl' (or maybe called 'val') AWS environment: (NOTE: Please read carefully, as the exact commands and github console steps are different than dev above.)
- - Get AWS access keys from Kion, and export them to a terminal.
- - ```
- cd acme/src/services/.oidc
- CI=true sls deploy --stage val
- ```
- - Upon the above deploy command's completion, run the serverless info command to retrieve the ServiceRoleArn value.
- - `sls info --stage val --verbose`
- - Find and copy the value for ServiceRoleArn to a notepad.
- - Go to your repository in a browser.
- - Navigate: Settings -> Environments -> New environment
- - Create a new environment named val.
- - Add a new secret under 'Environment secrets'. It's name should be AWS_OIDC_ROLE_TO_ASSUME and it's value should should be the ServiceRoleARN value you copied from the above step.
- - This is a great time to set environment protection rules and required reviewers, but we will skip detaili on that at this stage, as that's optional.
- - For the 'production' (or maybe called 'prod') AWS environment: (NOTE: Please read carefully, as the exact commands and github console steps are different than dev and impl above.)
- - Get AWS access keys from Kion, and export them to a terminal.
- - ```
- cd acme/src/services/.oidc
- CI=true sls deploy --stage production
- ```
- - Upon the above deploy command's completion, run the serverless info command to retrieve the ServiceRoleArn value.
- - `sls info --stage production --verbose`
- - Find and copy the value for ServiceRoleArn to a notepad.
- - Go to your repository in a browser.
- - Navigate: Settings -> Environments -> New environment
- - Create a new environment named production.
- - Add a new secret under 'Environment secrets'. It's name should be AWS_OIDC_ROLE_TO_ASSUME and it's value should should be the ServiceRoleARN value you copied from the above step.
- - This is a great time to set environment protection rules and required reviewers, but we will skip detaili on that at this stage, as that's optional.
-1. (optional) Add a SLACK_WEBHOOK GitHub Secret.
- - Go to your repository in a browser.
- - Navigate: Settings -> Secrets and variables -> Actions -> New repository secret
- - Set a secret named SLACK_WEBHOOK, and paste the value you have.
-1. Commit and push all changes to your repository, and monitor GitHub Actions for success/failure.
-1. Force push the master branch to val, and monitor GitHub Actions for success/failure:
- ```
- cd acme
- git checkout val
- git reset --hard origin/master
- git push --force
- ```
-1. Force push the master branch to production, and monitor GitHub Actions for success/failure:
- ```
- cd acme
- git checkout production
- git reset --hard origin/master
- git push --force
- ```
-1. Add branch protection rules for each of the master, val, and production branches:
- - Go to your repository in a browser.
- - Navigate: Settings -> Branches, and add a new rule for each of the higher environment branches
- - Click Add rule
- - For 'Branch name pattern', enter the branch you want to protect, such as master.
- - Select any rules you'd like to enforce. We recommend at least requiring a pull request before merging.
- - Repeat the above for val and production branches.
-
-
-### Conclusion
-If you’ve followed this document, you should have a new GitHub project deployed to AWS and ready for further development. This document is a WIP, and assuredly has errors and omissions, and will change over time. You can help this by reaching out to the MACPRO Platform team on Slack and letting us know about issues you find.
diff --git a/docs/index.md b/docs/index.md
index 336ee24588..446d34eaf1 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -18,7 +18,9 @@ permalink: /
## Welcome!
-The {{ site.repo.name }} project is a serverless monorepo accelerator. The actual application is fairly 'hello world', but the repository support and configuration is full featured. This is by design, to allow for simpler project creation from the template. Full CI/CD support with GitHub Actions, automated security scanning, docs site in GitHub Pages, PR/Issue templates, infrastructure and application deployment workflows, etc. is all included.
+The {{ site.repo.name }} project, a.k.a. MAKO, a.k.a. Micro, is a redesign of MACPRO Onemac. The mission to be a modern submission and review portal for select CMS data remains the same, but the architecture is different in some important ways.
+
+This documentation site is a WIP and currently shows outdated information, as the project hasn't quite reached the 'norming' phase yet. Thank you for your patience.
---
diff --git a/package.json b/package.json
index e641e96e66..6291c3d09e 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
"test:watch": "turbo test:watch",
"test:gui": "turbo test:gui",
"e2e": "turbo e2e",
+ "e2e:ui": "turbo e2e:ui",
"coverage": "vitest run --coverage",
"test-gui": "vitest --ui",
"test-tsc": "tsc --skipLibCheck --noEmit"
@@ -34,7 +35,6 @@
"@enterprise-cmcs/serverless-waf-plugin": "^1.3.0",
"@serverless/compose": "^1.3.0",
"@stratiformdigital/serverless-iam-helper": "^3.2.0",
- "@stratiformdigital/serverless-idempotency-helper": "^3.1.0",
"@stratiformdigital/serverless-online": "^3.1.0",
"@stratiformdigital/serverless-s3-security-helper": "^4.0.0",
"@stratiformdigital/serverless-stage-destroyer": "^2.0.0",
@@ -43,14 +43,16 @@
"@vitest/coverage-c8": "^0.29.8",
"@vitest/ui": "^0.29.8",
"aws-sdk-client-mock": "^2.0.1",
+ "esbuild": "^0.19.3",
"prettier": "2.7.1",
"semantic-release": "^19.0.5",
"serverless": "^3.17.0",
- "serverless-bundle": "^6.0.0",
"serverless-disable-functions": "^1.0.0",
+ "serverless-esbuild": "^1.47.0",
"serverless-plugin-scripts": "^1.0.2",
"serverless-plugin-typescript": "^2.1.4",
"serverless-plugin-warmup": "^7.1.0",
+ "serverless-scriptable-plugin": "^1.3.1",
"serverless-stack-termination-protection": "^2.0.2",
"turbo": "^1.9.3",
"vitest": "^0.29.8"
diff --git a/serverless-compose.yml b/serverless-compose.yml
index e07f4ee5b1..7d1e4400cd 100644
--- a/serverless-compose.yml
+++ b/serverless-compose.yml
@@ -3,14 +3,25 @@ services:
path: src/services/alerts
dashboard:
path: src/services/dashboard
- database:
- path: src/services/database
- api:
- path: src/services/api
params:
- issuesTableName: ${database.IssuesTableName}
+ CloudfrontDistributionId: ${ui-infra.CloudFrontDistributionId}
+ data:
+ path: src/services/data
+ params:
+ ECSFailureTopicArn: ${alerts.ECSFailureTopicArn}
ui-infra:
path: src/services/ui-infra
+ api:
+ path: src/services/api
+ params:
+ ECSFailureTopicArn: ${alerts.ECSFailureTopicArn}
+ osDomainArn: ${data.OpenSearchDomainArn}
+ osDomain: ${data.OpenSearchDomainEndpoint}
+ auth:
+ path: src/services/auth
+ params:
+ ApplicationEndpointUrl: ${ui-infra.ApplicationEndpointUrl}
+ ApiName: ${api.ApiGatewayRestApiName}
ui:
path: src/services/ui
params:
@@ -19,7 +30,10 @@ services:
ApplicationEndpointUrl: ${ui-infra.ApplicationEndpointUrl}
ApiRegion: ${api.Region}
ApiUrl: ${api.ApiGatewayRestApiUrl}
- # params: # params will be added once other services are
- # ecsFailureTopicArn: ${alerts.ECSFailureTopicArn}
- # mskClusterArn: ${bigmac.MskClusterArn}
- # brokerString: ${bigmac.BrokerString}
+ ApiName: ${api.ApiGatewayRestApiName}
+ CognitoRegion: ${auth.Region}
+ CognitoIdentityPoolId: ${auth.IdentityPoolId}
+ CognitoUserPoolId: ${auth.UserPoolId}
+ CognitoUserPoolClientId: ${auth.UserPoolClientId}
+ CognitoUserPoolClientDomain: ${auth.UserPoolClientDomain}
+ BootstrapUsersPassword: ${auth.BootstrapUsersPassword}
diff --git a/src/cli/run.ts b/src/cli/run.ts
index 21986afb3f..beffc10602 100644
--- a/src/cli/run.ts
+++ b/src/cli/run.ts
@@ -44,9 +44,15 @@ yargs(process.argv.slice(2))
},
async (options) => {
await install_deps_for_services();
+ await refreshOutputs(options.stage);
+ await runner.run_command_and_output(
+ `config vars`,
+ ["sls", "ui", "package", "--stage", options.stage],
+ "."
+ );
await runner.run_command_and_output(
- `ui config`,
- ["sls", "deploy", "--stage", options.stage],
+ `config vars`,
+ ["sls", "ui", "useLocalhost", "--stage", options.stage],
"."
);
await runner.run_command_and_output(
@@ -98,10 +104,26 @@ yargs(process.argv.slice(2))
.command(
"e2e",
"run e2e tests.",
- {},
- async () => {
+ {
+ ui: { type: "boolean", demandOption: false, default: false },
+ },
+ async (argv: any) => {
await install_deps_for_services();
- await runner.run_command_and_output(`e2e tests`, ["yarn", "e2e"], ".");
+ await runner.run_command_and_output(
+ `Install playwright`,
+ ["yarn", "playwright", "install", "--with-deps"],
+ "."
+ );
+
+ if (argv.ui) {
+ await runner.run_command_and_output(
+ `e2e:ui tests`,
+ ["yarn", "e2e:ui"],
+ "."
+ );
+ } else {
+ await runner.run_command_and_output(`e2e tests`, ["yarn", "e2e"], ".");
+ }
}
)
.command("test-gui", "open unit-testing gui for vitest.", {}, async () => {
@@ -132,7 +154,7 @@ yargs(process.argv.slice(2))
if (options.service) {
filters.push({
Key: "SERVICE",
- Value: `${options.service}`,
+ Value: `${process.env.PROJECT}-${options.service}`,
});
}
await destroyer.destroy(`${process.env.REGION_A}`, options.stage, {
diff --git a/src/libs/cognito-lib.ts b/src/libs/cognito-lib.ts
new file mode 100644
index 0000000000..bc9a037c1f
--- /dev/null
+++ b/src/libs/cognito-lib.ts
@@ -0,0 +1,35 @@
+import { CognitoIdentityProviderClient, AdminCreateUserCommand, AdminSetUserPasswordCommand, AdminUpdateUserAttributesCommand } from "@aws-sdk/client-cognito-identity-provider";
+const client = new CognitoIdentityProviderClient({ region: process.env.region });
+
+export async function createUser(params: any): Promise {
+ try {
+ const command = new AdminCreateUserCommand(params);
+ await client.send(command);
+ console.log(`User ${params.Username} created successfully.`);
+ } catch (error) {
+ console.error(`Error creating user:`, error);
+ }
+}
+
+export async function setPassword(params: any): Promise {
+ try {
+ // Set the user's password
+ const command = new AdminSetUserPasswordCommand(params);
+ await client.send(command);
+
+ console.log(`Password for user ${params.Username} set successfully.`);
+ } catch (error) {
+ console.error("Error setting user's password:", error);
+ }
+}
+
+export async function updateUserAttributes(params: any): Promise {
+ try {
+ // Update the user's attributes
+ const command = new AdminUpdateUserAttributesCommand(params);
+ await client.send(command);
+ console.log(`Attributes for user ${params.Username} updated successfully.`);
+ } catch (error) {
+ console.error("Error updating user's attributes:", error);
+ }
+}
diff --git a/src/libs/dynamodb-lib.ts b/src/libs/dynamodb-lib.ts
deleted file mode 100644
index b5870fa655..0000000000
--- a/src/libs/dynamodb-lib.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import {
- DynamoDBClient,
- PutItemCommand,
- GetItemCommand,
- GetItemCommandInput,
-} from "@aws-sdk/client-dynamodb";
-import {
- marshall,
- unmarshall,
- NativeAttributeValue,
-} from "@aws-sdk/util-dynamodb";
-
-const client = new DynamoDBClient({ region: process.env.region });
-
-export async function putItem({
- tableName,
- item,
-}: {
- tableName: string;
- item: { [key: string]: NativeAttributeValue };
-}) {
- const params = {
- TableName: tableName,
- Item: marshall(item, {
- removeUndefinedValues: true,
- }),
- };
-
- try {
- const command = new PutItemCommand(params);
- const result = await client.send(command);
- if (result)
- console.log(
- `Record processed for result: `,
- JSON.stringify(result, null, 2)
- );
- return result;
- } catch (error) {
- console.error("ERROR updating record in dynamodb: ", error);
- throw error;
- }
-}
-
-export async function getItem({
- tableName,
- key,
-}: {
- tableName: string;
- key: {
- [key: string]: NativeAttributeValue;
- };
-}) {
- const getItemCommandInput: GetItemCommandInput = {
- TableName: tableName,
- Key: marshall(key),
- };
-
- const item = (await client.send(new GetItemCommand(getItemCommandInput)))
- .Item;
- if (!item) return null;
-
- /* Converting the DynamoDB record to a JavaScript object. */
- return unmarshall(item);
-}
diff --git a/src/libs/index.ts b/src/libs/index.ts
index 509b5f6021..f0614b68b4 100644
--- a/src/libs/index.ts
+++ b/src/libs/index.ts
@@ -1,2 +1,3 @@
-export * from "./dynamodb-lib";
+export * from "./cognito-lib";
+export * from "./opensearch-lib";
export * from "./env";
diff --git a/src/libs/opensearch-lib.ts b/src/libs/opensearch-lib.ts
new file mode 100644
index 0000000000..09cc8ad37f
--- /dev/null
+++ b/src/libs/opensearch-lib.ts
@@ -0,0 +1,120 @@
+import { Client, Connection, ApiResponse } from "@opensearch-project/opensearch";
+import { defaultProvider } from "@aws-sdk/credential-provider-node";
+import * as aws4 from "aws4";
+import { OutgoingHttpHeader } from 'http';
+import axios from 'axios';
+import { aws4Interceptor } from "aws4-axios";
+import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts";
+let client:Client;
+
+export async function getClient(host:string) {
+ return new Client({
+ ...createAwsConnector((await defaultProvider()())),
+ node: host,
+ });
+}
+
+function createAwsConnector(credentials: any) {
+ class AmazonConnection extends Connection {
+ buildRequestObject(params: any) {
+ const request = super.buildRequestObject(params);
+ request.headers = request.headers || {};
+ request.headers["host"] = request.hostname;
+
+ return aws4.sign(request, credentials);
+ }
+ }
+ return {
+ Connection: AmazonConnection,
+ };
+}
+
+export async function updateData(host:string, indexObject:any) {
+ client = client || (await getClient(host));
+ // Add a document to the index.
+ var response = await client.update(indexObject);
+}
+
+export async function bulkUpdateData(host:string, index:string, arrayOfDocuments:any) {
+ client = client || (await getClient(host));
+ var response = await client.helpers.bulk({
+ datasource: arrayOfDocuments,
+ onDocument (doc:any) {
+ // The update operation always requires a tuple to be returned, with the
+ // first element being the action and the second being the update options.
+ return [
+ {
+ update: { _index: index, _id: doc.id }
+ },
+ { doc_as_upsert: true }
+ ]
+ }
+ });
+ console.log(response);
+}
+
+export async function deleteIndex(host:string, index:string) {
+ client = client || (await getClient(host));
+ var response = await client.indices.delete({index});
+}
+
+export async function mapRole(host:string, masterRoleToAssume:string, osRoleName:string, iamRoleName: string) {
+ try {
+ const sts = new STSClient({
+ region: process.env.region,
+ });
+ const assumedRoleCommandData = await sts.send(
+ new AssumeRoleCommand({
+ RoleArn: masterRoleToAssume,
+ RoleSessionName: "RoleMappingSession",
+ ExternalId: "foo",
+ })
+ );
+ const interceptor = aws4Interceptor({
+ options: {
+ region: process.env.region,
+ },
+ credentials: {
+ accessKeyId: assumedRoleCommandData?.Credentials?.AccessKeyId || "",
+ secretAccessKey: assumedRoleCommandData?.Credentials?.SecretAccessKey || "",
+ sessionToken: assumedRoleCommandData?.Credentials?.SessionToken,
+ },
+ });
+ axios.interceptors.request.use(interceptor);
+ const patchResponse = await axios.patch(`${host}/_plugins/_security/api/rolesmapping/${osRoleName}`, [
+ {
+ op: "add",
+ path: "/and_backend_roles",
+ value: [iamRoleName]
+ }
+
+ ]);
+ return patchResponse.data;
+ } catch (error) {
+ console.error('Error making PUT request:', error);
+ throw error;
+ }
+}
+
+export async function search(host:string, index:string, query:any){
+ client = client || (await getClient(host));
+ try {
+ const response = await client.search({
+ index: index,
+ body: query,
+ });
+ return response.body;
+ } catch(e) {
+ console.log({e})
+ }
+}
+
+export async function getItem(host:string, index:string, id:string){
+ client = client || (await getClient(host));
+ try {
+ const response = await client.get({id, index})
+ return response.body;
+ } catch(e) {
+ console.log({e})
+ }
+}
\ No newline at end of file
diff --git a/src/libs/package.json b/src/libs/package.json
index cb2d0f3eb0..66e456d1a3 100644
--- a/src/libs/package.json
+++ b/src/libs/package.json
@@ -2,8 +2,14 @@
"name": "libs",
"version": "0.0.0",
"dependencies": {
+ "@aws-sdk/client-cognito-identity-provider": "^3.350.0",
"@aws-sdk/client-dynamodb": "^3.281.0",
- "@aws-sdk/util-dynamodb": "^3.281.0"
+ "@aws-sdk/credential-provider-node": "^3.369.0",
+ "@aws-sdk/util-dynamodb": "^3.281.0",
+ "@opensearch-project/opensearch": "^2.3.0",
+ "@types/aws4": "^1.11.3",
+ "aws4": "^1.12.0",
+ "aws4-axios": "^3.2.24"
},
"devDependencies": {
"@vitest/ui": "^0.30.1",
diff --git a/src/packages/eslint-config-custom-server/index.js b/src/packages/eslint-config-custom-server/index.js
index 2f55303c41..b815eb46fb 100644
--- a/src/packages/eslint-config-custom-server/index.js
+++ b/src/packages/eslint-config-custom-server/index.js
@@ -12,7 +12,6 @@ module.exports = {
},
plugins: ["@typescript-eslint"],
rules: {
- indent: ["error", 2],
"linebreak-style": ["error", "unix"],
quotes: ["error", "double"],
semi: ["error", "always"],
diff --git a/src/packages/eslint-config-custom/index.js b/src/packages/eslint-config-custom/index.js
index 01a7a3f63f..07bc51e5d8 100644
--- a/src/packages/eslint-config-custom/index.js
+++ b/src/packages/eslint-config-custom/index.js
@@ -16,7 +16,6 @@ module.exports = {
},
plugins: ["react", "@typescript-eslint"],
rules: {
- indent: ["error", 2],
"linebreak-style": ["error", "unix"],
quotes: ["error", "double"],
semi: ["error", "always"],
diff --git a/src/packages/shared-types/.gitignore b/src/packages/shared-types/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/packages/shared-types/errors.ts b/src/packages/shared-types/errors.ts
new file mode 100644
index 0000000000..1ed5695391
--- /dev/null
+++ b/src/packages/shared-types/errors.ts
@@ -0,0 +1,3 @@
+export type ReactQueryApiError = {
+ response: { data: { message: string } };
+};
diff --git a/src/packages/shared-types/index.ts b/src/packages/shared-types/index.ts
index b67758e0ed..a7f2153021 100644
--- a/src/packages/shared-types/index.ts
+++ b/src/packages/shared-types/index.ts
@@ -1 +1,6 @@
export * from "./issue";
+export * from "./user";
+export * from "./errors";
+export * from "./seatool";
+export * from "./onemac";
+export * from "./opensearch";
diff --git a/src/packages/shared-types/issue.ts b/src/packages/shared-types/issue.ts
index b576df7eb5..c93a4574de 100644
--- a/src/packages/shared-types/issue.ts
+++ b/src/packages/shared-types/issue.ts
@@ -1,83 +1,39 @@
import { z } from "zod";
-export const issueSchema = z.object({
- id: z.string().uuid(),
+const baseIssueSchema = {
title: z.string().min(1, { message: "Title is required" }),
description: z.string().min(1, { message: "Description is required" }),
- type: z
- .string()
- .refine((val) => ["look", "functionality", "other"].includes(val), {
- message: "Type must be one of \"look\", \"functionality\", or \"other\"",
- }),
- priority: z
- .string()
- .refine((val) => ["low", "medium", "high"].includes(val), {
- message: "Priority must be one of \"low\", \"medium\", or \"high\"",
- }),
+ type: z.enum(["look", "functionality", "other"], {
+ required_error: "type is required",
+ }),
+ priority: z.enum(["low", "medium", "high"], {
+ required_error: "priority is required",
+ }),
resolved: z.boolean().default(false),
- createdAt: z.string(),
+};
+
+export const issueSchema = z.object({
+ id: z.string().uuid(),
+ createdAt: z.number(),
+ updatedAt: z.number().optional(),
+ ...baseIssueSchema,
});
export type Issue = z.infer;
+export const validateIssue = issueSchema.parse;
//////////////////////
export const createIssueSchema = z.object({
- title: z
- .string()
- .min(1, { message: "Title is required" })
- .refine((value) => value !== "error", {
- message: "Title cannot be \"error\"",
- }),
- description: z.string().min(1, { message: "Description is required" }),
- type: z
- .string()
- .refine((val) => ["look", "functionality", "other"].includes(val), {
- message: "Type must be one of \"look\", \"functionality\", or \"other\"",
- }),
- priority: z
- .string()
- .refine((val) => ["low", "medium", "high"].includes(val), {
- message: "Priority must be one of \"low\", \"medium\", or \"high\"",
- }),
- resolved: z.boolean().default(false),
+ ...baseIssueSchema,
});
export type CreateIssue = z.infer;
export const validateCreateIssue = createIssueSchema.parse;
-////////////////////
-
-export const getIssueSchema = z.object({
- id: z.string().min(1),
- title: z.string().min(1, { message: "Title is required" }),
- description: z.string().min(1, { message: "Description is required" }),
- type: z
- .string()
- .refine((val) => ["look", "functionality", "other"].includes(val), {
- message: "Type must be one of \"look\", \"functionality\", or \"other\"",
- }),
- priority: z
- .string()
- .refine((val) => ["low", "medium", "high"].includes(val), {
- message: "Priority must be one of \"low\", \"medium\", or \"high\"",
- }),
- resolved: z.boolean().default(false),
- createdAt: z.string(),
- updatedAt: z.string().optional(),
-});
-
-export type GetIssue = z.infer;
-export const validateGetIssue = getIssueSchema.parse;
-
///////////////////////
-export const listIssueSchema = getIssueSchema.array();
+export const listIssueSchema = issueSchema.array();
export type IssueList = [z.infer];
export const validateListIssues = listIssueSchema.parse;
-
-///////////////////////
-
-export type UpdateIssue = z.infer;
-export const validateUpdateIssue = getIssueSchema.parse;
diff --git a/src/packages/shared-types/onemac.ts b/src/packages/shared-types/onemac.ts
new file mode 100644
index 0000000000..ba783b627b
--- /dev/null
+++ b/src/packages/shared-types/onemac.ts
@@ -0,0 +1,80 @@
+import { z } from "zod";
+import { s3ParseUrl } from "shared-utils/s3-url-parser";
+
+const onemacAttachmentSchema = z.object({
+ s3Key: z.string(),
+ filename: z.string(),
+ title: z.string(),
+ contentType: z.string(),
+ url: z.string().url(),
+});
+
+export const onemacSchema = z.object({
+ additionalInformation: z.string().nullable().default(null),
+ submitterName: z.string(),
+ submitterEmail: z.string(),
+ attachments: z.array(onemacAttachmentSchema).nullish(),
+ raiResponses: z
+ .array(
+ z.object({
+ additionalInformation: z.string().nullable().default(null),
+ submissionTimestamp: z.number(),
+ attachments: z.array(onemacAttachmentSchema),
+ })
+ )
+ .nullish(),
+});
+
+export const transformOnemac = (id: string) => {
+ return onemacSchema.transform((data) => ({
+ id,
+ attachments:
+ data.attachments?.map((attachment) => {
+ const uploadDate = parseInt(attachment.s3Key.split("/")[0]);
+ const parsedUrl = s3ParseUrl(attachment.url);
+ if (!parsedUrl) return null;
+ const { bucket, key } = parsedUrl;
+
+ return {
+ ...attachment,
+ uploadDate,
+ bucket,
+ key,
+ };
+ }) ?? null,
+ raiResponses:
+ data.raiResponses?.map((response) => {
+ return {
+ additionalInformation: response.additionalInformation,
+ submissionTimestamp: response.submissionTimestamp,
+ attachments:
+ response.attachments?.map((attachment) => {
+ const uploadDate = parseInt(attachment.s3Key.split("/")[0]);
+ const parsedUrl = s3ParseUrl(attachment.url);
+ if (!parsedUrl) return null;
+ const { bucket, key } = parsedUrl;
+
+ return {
+ ...attachment,
+ uploadDate,
+ bucket,
+ key,
+ };
+ }) ?? null,
+ };
+ }) ?? null,
+ additionalInformation: data.additionalInformation,
+ submitterEmail: data.submitterEmail,
+ submitterName: data.submitterName,
+ origin: "oneMAC",
+ }));
+};
+
+export type OneMacSink = z.infer;
+export type OneMacTransform = z.infer>;
+export type OneMacRecordsToDelete = Omit<
+ {
+ [Property in keyof OneMacTransform]: undefined;
+ },
+ "id"
+> & { id: string };
diff --git a/src/packages/shared-types/opensearch.ts b/src/packages/shared-types/opensearch.ts
new file mode 100644
index 0000000000..5b3464da32
--- /dev/null
+++ b/src/packages/shared-types/opensearch.ts
@@ -0,0 +1,83 @@
+import { SeaToolTransform } from "./seatool";
+import { OneMacTransform } from "./onemac";
+
+export type OsHit = {
+ _index: string;
+ _id: string;
+ _score: number;
+ _source: T;
+ sort: Array;
+};
+export type OsHits = {
+ hits: OsHit[];
+ max_score: number;
+ total: { value: number; relation: "eq" };
+};
+
+export type OsResponse = {
+ _shards: {
+ total: number;
+ failed: number;
+ successful: number;
+ skipped: number;
+ };
+ hits: OsHits;
+ total: {
+ value: number;
+ };
+ max_score: number | null;
+ took: number;
+ timed_out: boolean;
+ aggregations?: OsAggResult;
+};
+
+export type OsMainSourceItem = OneMacTransform & SeaToolTransform;
+export type OsMainSearchResponse = OsResponse;
+export type SearchData = OsHits;
+
+export type OsFilterType =
+ | "term"
+ | "terms"
+ | "match"
+ | "range"
+ | "search"
+ | "global_search"
+ | "exists";
+
+export type OsRangeValue = { gte?: string; lte?: string };
+export type OsFilterValue = string | string[] | number | boolean | OsRangeValue;
+export type OsField =
+ | keyof OsMainSourceItem
+ | `${keyof OsMainSourceItem}.keyword`;
+
+export type OsFilterable = {
+ type: OsFilterType;
+ field: OsField;
+ value: OsFilterValue;
+ prefix: "must" | "must_not" | "should" | "filter";
+};
+
+export type OsQueryState = {
+ sort: { field: OsField; order: "asc" | "desc" };
+ pagination: { number: number; size: number };
+ filters: OsFilterable[];
+ search?: string;
+};
+
+export type OsAggQuery = {
+ name: string;
+ type: OsFilterType;
+ field: OsField;
+ size: number;
+};
+
+export type OsAggBucket = { key: string; doc_count: number };
+
+export type OsAggResult = Record<
+ string,
+ {
+ doc_count_error_upper_bound: number;
+ sum_other_doc_count: number;
+ buckets: OsAggBucket[];
+ }
+>;
diff --git a/src/packages/shared-types/package.json b/src/packages/shared-types/package.json
index 554b897b06..8990fe7c23 100644
--- a/src/packages/shared-types/package.json
+++ b/src/packages/shared-types/package.json
@@ -4,8 +4,17 @@
"private": true,
"license": "MIT",
"devDependencies": {
+ "base-64": "^1.0.0",
"eslint": "^8.38.0",
"eslint-config-custom-server": "*",
+ "vitest": "^0.34.1",
"zod": "^3.21.4"
+ },
+ "scripts": {
+ "test": "vitest"
+ },
+ "dependencies": {
+ "s3-url-parser": "^1.0.3",
+ "shared-utils": "*"
}
}
diff --git a/src/packages/shared-types/seatool.ts b/src/packages/shared-types/seatool.ts
new file mode 100644
index 0000000000..4834960e3e
--- /dev/null
+++ b/src/packages/shared-types/seatool.ts
@@ -0,0 +1,182 @@
+import { z } from "zod";
+import { getStatus } from "./statusHelper";
+
+type AuthorityType = "SPA" | "WAIVER" | "MEDICAID" | "CHIP";
+
+const authorityLookup = (val: number | null): null | string => {
+ if (!val) return null;
+
+ const lookup: Record = {
+ 122: "WAIVER",
+ 123: "WAIVER",
+ 124: "CHIP",
+ 125: "MEDICAID",
+ };
+
+ return lookup[val];
+};
+
+function getLeadAnalyst(eventData: SeaToolSink) {
+ let leadAnalystOfficerId: null | number = null;
+ let leadAnalystName: null | string = null;
+
+ if (
+ eventData.LEAD_ANALYST &&
+ Array.isArray(eventData.LEAD_ANALYST) &&
+ eventData.STATE_PLAN.LEAD_ANALYST_ID
+ ) {
+ const leadAnalyst = eventData.LEAD_ANALYST.find(
+ (analyst) => analyst.OFFICER_ID === eventData.STATE_PLAN.LEAD_ANALYST_ID
+ );
+
+ if (leadAnalyst) {
+ leadAnalystOfficerId = leadAnalyst.OFFICER_ID;
+ leadAnalystName = `${leadAnalyst.FIRST_NAME} ${leadAnalyst.LAST_NAME}`;
+ }
+ }
+ return {
+ leadAnalystOfficerId,
+ leadAnalystName,
+ };
+}
+
+const getRaiDate = (data: SeaToolSink) => {
+ let raiReceivedDate: null | string = null;
+ let raiRequestedDate: null | string = null;
+
+ const raiDate =
+ data.RAI?.sort((a, b) => {
+ if (a.RAI_REQUESTED_DATE === null && b.RAI_REQUESTED_DATE === null) {
+ return 0; // Both dates are null, so they're considered equal
+ }
+ if (a.RAI_REQUESTED_DATE === null) {
+ return 1; // a comes after b because its date is null
+ }
+ if (b.RAI_REQUESTED_DATE === null) {
+ return -1; // b comes after a because its date is null
+ }
+ return a.RAI_REQUESTED_DATE - b.RAI_REQUESTED_DATE; // Normal comparison
+ })[data.RAI.length - 1] ?? null;
+
+ if (raiDate && raiDate.RAI_RECEIVED_DATE) {
+ raiReceivedDate = new Date(raiDate.RAI_RECEIVED_DATE).toISOString();
+ }
+ if (raiDate && raiDate.RAI_REQUESTED_DATE) {
+ raiRequestedDate = new Date(raiDate.RAI_REQUESTED_DATE).toISOString();
+ }
+ return {
+ raiReceivedDate,
+ raiRequestedDate,
+ };
+};
+
+export const seatoolSchema = z.object({
+ LEAD_ANALYST: z
+ .array(
+ z.object({
+ OFFICER_ID: z.number(),
+ FIRST_NAME: z.string(),
+ LAST_NAME: z.string(),
+ })
+ )
+ .nullable(),
+ STATES: z
+ .array(
+ z.object({
+ STATE_CODE: z.string(),
+ STATE_NAME: z.string(),
+ REGION_ID: z.string(),
+ PRIORITY_FLAG: z.boolean(),
+ })
+ )
+ .nonempty(),
+ PLAN_TYPES: z
+ .array(
+ z.object({
+ PLAN_TYPE_NAME: z.string(),
+ })
+ )
+ .nonempty()
+ .nullable(),
+ STATE_PLAN: z.object({
+ SUBMISSION_DATE: z.number().nullable(),
+ PLAN_TYPE: z.number().nullable(),
+ LEAD_ANALYST_ID: z.number().nullable(),
+ CHANGED_DATE: z.number().nullable(),
+ APPROVED_EFFECTIVE_DATE: z.number().nullable(),
+ PROPOSED_DATE: z.number().nullable(),
+ }),
+ SPW_STATUS: z
+ .array(
+ z.object({
+ SPW_STATUS_DESC: z.string().nullable(),
+ })
+ )
+ .nullable(),
+ RAI: z
+ .array(
+ z.object({
+ RAI_RECEIVED_DATE: z.number().nullable(),
+ RAI_REQUESTED_DATE: z.number().nullable(),
+ })
+ )
+ .nullable(),
+ ACTIONTYPES: z
+ .array(
+ z.object({
+ ACTION_ID: z.number(),
+ ACTION_NAME: z.string(),
+ PLAN_TYPE_ID: z.number(),
+ })
+ )
+ .nullable(),
+});
+
+const getDateStringOrNullFromEpoc = (epocDate: number | null) => {
+ if (epocDate !== null) {
+ return new Date(epocDate).toISOString();
+ }
+ return null;
+};
+
+export const transformSeatoolData = (id: string) => {
+ return seatoolSchema.transform((data) => {
+ const { leadAnalystName, leadAnalystOfficerId } = getLeadAnalyst(data);
+ const { raiReceivedDate, raiRequestedDate } = getRaiDate(data);
+ const { stateStatus, cmsStatus } = getStatus(
+ data.SPW_STATUS?.[0].SPW_STATUS_DESC
+ );
+ return {
+ id,
+ actionType: data.ACTIONTYPES?.[0].ACTION_NAME,
+ actionTypeId: data.ACTIONTYPES?.[0].ACTION_ID,
+ approvedEffectiveDate: getDateStringOrNullFromEpoc(
+ data.STATE_PLAN.APPROVED_EFFECTIVE_DATE
+ ),
+ authority: authorityLookup(data.STATE_PLAN.PLAN_TYPE),
+ changedDate: getDateStringOrNullFromEpoc(data.STATE_PLAN.CHANGED_DATE),
+ leadAnalystOfficerId,
+ leadAnalystName,
+ planType: data.PLAN_TYPES?.[0].PLAN_TYPE_NAME,
+ planTypeId: data.STATE_PLAN.PLAN_TYPE,
+ proposedDate: getDateStringOrNullFromEpoc(data.STATE_PLAN.PROPOSED_DATE),
+ raiReceivedDate,
+ raiRequestedDate,
+ state: data.STATES?.[0].STATE_CODE,
+ stateStatus,
+ cmsStatus,
+ submissionDate: getDateStringOrNullFromEpoc(
+ data.STATE_PLAN.SUBMISSION_DATE
+ ),
+ };
+ });
+};
+
+export type SeaToolTransform = z.infer>;
+export type SeaToolSink = z.infer;
+export type SeaToolRecordsToDelete = Omit<
+ {
+ [Property in keyof SeaToolTransform]: undefined;
+ },
+ "id"
+> & { id: string };
diff --git a/src/packages/shared-types/statusHelper.ts b/src/packages/shared-types/statusHelper.ts
new file mode 100644
index 0000000000..d521ddd2bf
--- /dev/null
+++ b/src/packages/shared-types/statusHelper.ts
@@ -0,0 +1,45 @@
+const SEATOOL_STATUS = {
+ PENDING: "Pending",
+ PENDING_RAI: "Pending-RAI",
+ APPROVED: "Approved",
+ DISAPPROVED: "Disapproved",
+ WITHDRAWN: "Withdrawn",
+ TERMINATED: "Terminated",
+ PENDING_CONCURRENCE: "Pending-Concurrence",
+ UNSUBMITTED: "Unsubmitted",
+ PENDING_APPROVAL: "Pending-Approval",
+ UNKNOWN: "Unknown",
+ PENDING_OFF_THE_CLOCK: "Pending-Off the Clock",
+};
+
+const statusToDisplayToStateUser = {
+ [SEATOOL_STATUS.PENDING]: "Under Review",
+ [SEATOOL_STATUS.PENDING_RAI]: "RAI Issued",
+ [SEATOOL_STATUS.APPROVED]: "Approved",
+ [SEATOOL_STATUS.DISAPPROVED]: "Disapproved",
+ [SEATOOL_STATUS.WITHDRAWN]: "Package Withdrawn",
+ [SEATOOL_STATUS.TERMINATED]: "Waiver Terminated",
+ [SEATOOL_STATUS.PENDING_CONCURRENCE]: "Under Review",
+ [SEATOOL_STATUS.UNSUBMITTED]: "Unsubmitted",
+ [SEATOOL_STATUS.PENDING_APPROVAL]: "Under Review",
+ [SEATOOL_STATUS.PENDING_OFF_THE_CLOCK]: "Pending - Off the Clock",
+};
+
+const statusToDisplayToCmsUser = {
+ [SEATOOL_STATUS.PENDING]: "Pending",
+ [SEATOOL_STATUS.PENDING_RAI]: "Pending - RAI",
+ [SEATOOL_STATUS.APPROVED]: "Approved",
+ [SEATOOL_STATUS.DISAPPROVED]: "Disapproved",
+ [SEATOOL_STATUS.WITHDRAWN]: "Package Withdrawn",
+ [SEATOOL_STATUS.TERMINATED]: "Waiver Terminated",
+ [SEATOOL_STATUS.PENDING_CONCURRENCE]: "Pending - Concurrence",
+ [SEATOOL_STATUS.UNSUBMITTED]: "Unsubmitted",
+ [SEATOOL_STATUS.PENDING_APPROVAL]: "Pending - Approval",
+ [SEATOOL_STATUS.PENDING_OFF_THE_CLOCK]: "Pending - Off the Clock",
+};
+
+export const getStatus = (seatoolStatus?: string | null) => {
+ const stateStatus = statusToDisplayToStateUser[seatoolStatus ?? "Unknown"];
+ const cmsStatus = statusToDisplayToCmsUser[seatoolStatus ?? "Unknown"];
+ return { stateStatus, cmsStatus };
+};
diff --git a/src/packages/shared-types/tests/onemac.test.ts b/src/packages/shared-types/tests/onemac.test.ts
new file mode 100644
index 0000000000..c90bd76c83
--- /dev/null
+++ b/src/packages/shared-types/tests/onemac.test.ts
@@ -0,0 +1,13 @@
+import { it, describe, expect } from "vitest";
+import onemacRecords from "./test-onemac.json";
+import { transformOnemac } from "../onemac";
+
+describe("onemac has valid data", () => {
+ it("has valid data", () => {
+ for (const record of onemacRecords) {
+ const transformedData = transformOnemac("randomid").parse(record);
+
+ expect(transformedData).toHaveProperty(["attachments"]);
+ }
+ });
+});
diff --git a/src/packages/shared-types/tests/seatool.test.ts b/src/packages/shared-types/tests/seatool.test.ts
new file mode 100644
index 0000000000..bb9dcde983
--- /dev/null
+++ b/src/packages/shared-types/tests/seatool.test.ts
@@ -0,0 +1,20 @@
+import { describe, expect, it } from "vitest";
+import seaToolRecords from "./test-seatool.json";
+import { seatoolSchema, transformSeatoolData } from "../seatool";
+
+describe("seatool has valid data", () => {
+ it("can be validated against schema", () => {
+ const parsedRecord = seatoolSchema.parse(seaToolRecords[0]);
+
+ expect(parsedRecord.PLAN_TYPES?.[0].PLAN_TYPE_NAME).toBeDefined();
+ });
+
+ it("can be transformed into a new object", () => {
+ for (const record of seaToolRecords) {
+ const transformedRecord = transformSeatoolData("randomid").parse(record);
+
+ expect(transformedRecord.id).toEqual("randomid");
+ // expect(transformedRecord.planType).toEqual("Medicaid_SPA");
+ }
+ });
+});
diff --git a/src/packages/shared-types/tests/test-onemac.json b/src/packages/shared-types/tests/test-onemac.json
new file mode 100644
index 0000000000..8fc2768196
--- /dev/null
+++ b/src/packages/shared-types/tests/test-onemac.json
@@ -0,0 +1,3329 @@
+[
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1634926411688/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634926411688/15MB.pdf"
+ },
+ {
+ "s3Key": "1634926411689/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634926411689/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-10-2686",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1634926418704,
+ "clockEndTimestamp": 1642706018704,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-10-2686",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-10-2686",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1638545563506/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638545563506/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.32240",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218923,
+ "submissionTimestamp": 1638545567401,
+ "clockEndTimestamp": 1646321567401,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.32240",
+ "sk": "OneMAC#1638545567401",
+ "pk": "MD.32240",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638545567401,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2012-10-03",
+ "componentType": "waiverappk",
+ "componentId": "ME-0276.R03.02",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX P3- Maine request to amend HCB",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2012-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "ME-0276.R03.02",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1638545563506/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638545563506/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.32240",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Under Review",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1638545567401,
+ "clockEndTimestamp": 1646321567401,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.32240",
+ "lastEventTimestamp": 1657824888790,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.32240",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Current State Plan",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-67-5524",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226590,
+ "submissionTimestamp": 1636128530350,
+ "clockEndTimestamp": 1643908130350,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-67-5524",
+ "sk": "OneMAC#1636128530350",
+ "pk": "MD-67-5524",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1636128530350,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2008-06-27",
+ "componentType": "waiverappk",
+ "componentId": "MA-0064.92.R4.01",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Massachusetts submitted an ame",
+ "description": null,
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2007-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2007-07-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MA-0064.92.R4.01",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Current State Plan",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128529009/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128529009/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-67-5524",
+ "currentStatus": "Submitted",
+ "latestRaiResponseTimestamp": 1636128545397,
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1636128530350,
+ "clockEndTimestamp": 1643908130350,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-67-5524",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1636128544436/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128544436/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128544436/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128544436/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1636128545397
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-67-5524",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipsparai",
+ "attachments": [
+ {
+ "s3Key": "1636128544436/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128544436/adobe.pdf"
+ },
+ {
+ "s3Key": "1636128544436/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636128544436/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-67-5524",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973227011,
+ "submissionTimestamp": 1636128545397,
+ "clockEndTimestamp": 1643908145397,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipsparai",
+ "GSI1sk": "MD-67-5524",
+ "sk": "OneMAC#1636128545397",
+ "pk": "MD-67-5524",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1636128545397,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2013-11-06",
+ "componentType": "medicaidspa",
+ "componentId": "LA-13-32",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Attachment 4.19-C Reimbursemen",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Billy Bob Farrell"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2013-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "LA-13-32",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1643317148757/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643317148757/15MB.pdf"
+ },
+ {
+ "s3Key": "1643317148758/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643317148758/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-55-3946",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973231583,
+ "submissionTimestamp": 1643317153829,
+ "clockEndTimestamp": 1651089553829,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-55-3946",
+ "sk": "OneMAC#1643317153829",
+ "pk": "MD-55-3946",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1643317153829,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1643317148757/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643317148757/15MB.pdf"
+ },
+ {
+ "s3Key": "1643317148758/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643317148758/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-55-3946",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1643317153829,
+ "clockEndTimestamp": 1651089553829,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-55-3946",
+ "lastEventTimestamp": 1643317153829,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-55-3946",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "chipspa",
+ "componentId": "PR-18-9011-06a",
+ "currentStatus": "Under Review",
+ "subject": "FMG Reports 34a",
+ "description": "Test Case 34a",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "PR-18-9011-06a",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "waivernew",
+ "componentId": "DC-2019-0608",
+ "currentStatus": "Pending - Concurrence",
+ "subject": "Pending Approval 608",
+ "description": "Testing",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "DC-2019-0608",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "finalDispositionDate": "2012-10-09",
+ "componentType": "medicaidspa",
+ "componentId": "CO-12-018",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Remove the entirety of section",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2012-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2012-07-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "CO-12-018",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638387880392/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638387880392/15MB.pdf"
+ },
+ {
+ "s3Key": "1638387880393/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638387880393/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-23-5964",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1638387886564,
+ "clockEndTimestamp": 1646163886564,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-23-5964",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-23-5964",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638387880392/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638387880392/15MB.pdf"
+ },
+ {
+ "s3Key": "1638387880393/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638387880393/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-23-5964",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973215806,
+ "submissionTimestamp": 1638387886564,
+ "clockEndTimestamp": 1646163886564,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-23-5964",
+ "sk": "OneMAC#1638387886564",
+ "pk": "MD-23-5964",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638387886564,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2007-11-27",
+ "componentType": "waiverappk",
+ "componentId": "KY-0333.90.R1.01",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Request to: (1) add goods and",
+ "description": null,
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2007-10-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2007-10-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "KY-0333.90.R1.01",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1638993068758/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638993068758/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.86880",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218072,
+ "submissionTimestamp": 1638993072995,
+ "clockEndTimestamp": 1646769072995,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.86880",
+ "sk": "OneMAC#1638993072995",
+ "pk": "MD.86880",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638993072995,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638293285464/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638293285464/15MB.pdf"
+ },
+ {
+ "s3Key": "1638293285464/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638293285464/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-42-5682",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973229902,
+ "submissionTimestamp": 1638293291696,
+ "clockEndTimestamp": 1646069291696,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-42-5682",
+ "sk": "OneMAC#1638293291696",
+ "pk": "MD-42-5682",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638293291696,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1638993068758/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638993068758/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.86880",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Under Review",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1638993072995,
+ "clockEndTimestamp": 1646769072995,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.86880",
+ "lastEventTimestamp": 1657824888790,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.86880",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638293285464/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638293285464/15MB.pdf"
+ },
+ {
+ "s3Key": "1638293285464/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638293285464/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-42-5682",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1638293291696,
+ "clockEndTimestamp": 1646069291696,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-42-5682",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-42-5682",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1639603061544/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1639603061544/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.62290",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973222344,
+ "submissionTimestamp": 1639603067763,
+ "clockEndTimestamp": 1647375467763,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.62290",
+ "sk": "OneMAC#1639603067763",
+ "pk": "MD.62290",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1639603067763,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waiverrai",
+ "attachments": [
+ {
+ "s3Key": "1639603089679/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Waiver RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1639603089679/adobe.pdf"
+ }
+ ],
+ "componentId": "MD.62290",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973223932,
+ "parentType": "waiverrenewal",
+ "submissionTimestamp": 1639603091277,
+ "clockEndTimestamp": 1647375491277,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaiverrai",
+ "GSI1sk": "MD.62290",
+ "sk": "OneMAC#1639603091277",
+ "pk": "MD.62290",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1639603091277,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636721631293/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636721631293/15MB.pdf"
+ },
+ {
+ "s3Key": "1636721631295/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636721631295/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-81-1759",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226523,
+ "submissionTimestamp": 1636721661672,
+ "clockEndTimestamp": 1644497661672,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-81-1759",
+ "sk": "OneMAC#1636721661672",
+ "pk": "MD-81-1759",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1636721661672,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waiverrenewal",
+ "attachments": [
+ {
+ "s3Key": "1639603061544/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1639603061544/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.62290",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1639603067763,
+ "clockEndTimestamp": 1647375467763,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.62290",
+ "lastEventTimestamp": 1639603091277,
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1639603089679/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Waiver RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1639603089679/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1639603091277
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD.62290",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636721631293/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636721631293/15MB.pdf"
+ },
+ {
+ "s3Key": "1636721631295/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636721631295/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-81-1759",
+ "currentStatus": "Submitted",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1636721661672,
+ "clockEndTimestamp": 1644497661672,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-81-1759",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-81-1759",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1646146433374/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/picture.jpg"
+ },
+ {
+ "s3Key": "1646146433374/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/adobe.pdf"
+ },
+ {
+ "s3Key": "1646146433374/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-34-4852",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973221889,
+ "submissionTimestamp": 1646146435332,
+ "clockEndTimestamp": 1653918835332,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-34-4852",
+ "sk": "OneMAC#1646146435332",
+ "pk": "MD-34-4852",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1646146435332,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638364302646/textnotes.txt",
+ "filename": "textnotes.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302646/textnotes.txt"
+ },
+ {
+ "s3Key": "1638364302646/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302646/15MB.pdf"
+ },
+ {
+ "s3Key": "1638364302647/textnotes.txt",
+ "filename": "textnotes.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/textnotes.txt"
+ },
+ {
+ "s3Key": "1638364302647/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "SPA Pages",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/picture.jpg"
+ },
+ {
+ "s3Key": "1638364302647/test3.docx",
+ "filename": "test3.docx",
+ "title": "SPA Pages",
+ "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/test3.docx"
+ }
+ ],
+ "componentId": "MD-57-8134",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218623,
+ "submissionTimestamp": 1638364307669,
+ "clockEndTimestamp": 1646140307669,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-57-8134",
+ "sk": "OneMAC#1638364307669",
+ "pk": "MD-57-8134",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638364307669,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipsparai",
+ "attachments": [
+ {
+ "s3Key": "1646146461022/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146461022/adobe.pdf"
+ },
+ {
+ "s3Key": "1646146461022/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146461022/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-34-4852",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973223649,
+ "submissionTimestamp": 1646146462194,
+ "clockEndTimestamp": 1653918862194,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipsparai",
+ "GSI1sk": "MD-34-4852",
+ "sk": "OneMAC#1646146462194",
+ "pk": "MD-34-4852",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1646146462194,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidsparai",
+ "attachments": [
+ {
+ "s3Key": "1645043182784/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043182784/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-21-7381",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973227144,
+ "submissionTimestamp": 1645043183677,
+ "clockEndTimestamp": 1652815583677,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidsparai",
+ "GSI1sk": "MD-21-7381",
+ "sk": "OneMAC#1645043183677",
+ "pk": "MD-21-7381",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1645043183677,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1645043130735/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043130735/15MB.pdf"
+ },
+ {
+ "s3Key": "1645043130736/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043130736/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-21-7381",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973224970,
+ "submissionTimestamp": 1645043138085,
+ "clockEndTimestamp": 1652815538085,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-21-7381",
+ "sk": "OneMAC#1645043138085",
+ "pk": "MD-21-7381",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1645043138085,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "OK-12-10",
+ "currentStatus": "-- --",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "OK-12-10",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1646146433374/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/picture.jpg"
+ },
+ {
+ "s3Key": "1646146433374/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/adobe.pdf"
+ },
+ {
+ "s3Key": "1646146433374/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146433374/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-34-4852",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1646146435332,
+ "clockEndTimestamp": 1653918835332,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-34-4852",
+ "lastEventTimestamp": 1646146462194,
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1646146461022/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146461022/adobe.pdf"
+ },
+ {
+ "s3Key": "1646146461022/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1646146461022/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1646146462194
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-34-4852",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1637608173361/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1637608173361/15MB.pdf"
+ },
+ {
+ "s3Key": "1637608173362/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1637608173362/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-83-5322",
+ "currentStatus": "Submitted",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1637608179778,
+ "clockEndTimestamp": 1645384179778,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-83-5322",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-83-5322",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1638364302646/textnotes.txt",
+ "filename": "textnotes.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302646/textnotes.txt"
+ },
+ {
+ "s3Key": "1638364302646/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302646/15MB.pdf"
+ },
+ {
+ "s3Key": "1638364302647/textnotes.txt",
+ "filename": "textnotes.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/textnotes.txt"
+ },
+ {
+ "s3Key": "1638364302647/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "SPA Pages",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/picture.jpg"
+ },
+ {
+ "s3Key": "1638364302647/test3.docx",
+ "filename": "test3.docx",
+ "title": "SPA Pages",
+ "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638364302647/test3.docx"
+ }
+ ],
+ "componentId": "MD-57-8134",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1638364307669,
+ "clockEndTimestamp": 1646140307669,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-57-8134",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-57-8134",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1645043130735/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043130735/15MB.pdf"
+ },
+ {
+ "s3Key": "1645043130736/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043130736/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-21-7381",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1645043138085,
+ "clockEndTimestamp": 1652815538085,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-21-7381",
+ "lastEventTimestamp": 1645043183677,
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1645043182784/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1645043182784/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1645043183677
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-21-7381",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1637608173361/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1637608173361/15MB.pdf"
+ },
+ {
+ "s3Key": "1637608173362/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1637608173362/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-83-5322",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973227563,
+ "submissionTimestamp": 1637608179778,
+ "clockEndTimestamp": 1645384179778,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-83-5322",
+ "sk": "OneMAC#1637608179778",
+ "pk": "MD-83-5322",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1637608179778,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "ME-dev-123123",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "ME-dev-123123",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1648566865989/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1648566865989/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.81150",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973231047,
+ "submissionTimestamp": 1648566869800,
+ "clockEndTimestamp": 1656342869800,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.81150",
+ "sk": "OneMAC#1648566869800",
+ "pk": "MD.81150",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1648566869800,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1648566865989/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1648566865989/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.81150",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1648566869800,
+ "clockEndTimestamp": 1656342869800,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.81150",
+ "lastEventTimestamp": 1648566869800,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.81150",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MO-12-15",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Increase the personal needs al",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2012-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MO-12-15",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1641393707058/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393707058/15MB.pdf"
+ },
+ {
+ "s3Key": "1641393707058/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393707058/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-78-5651",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226222,
+ "submissionTimestamp": 1641393713123,
+ "clockEndTimestamp": 1649166113123,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-78-5651",
+ "sk": "OneMAC#1641393713123",
+ "pk": "MD-78-5651",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1641393713123,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "VA-09-19",
+ "currentStatus": "-- --",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "VA-09-19",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1641393707058/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393707058/15MB.pdf"
+ },
+ {
+ "s3Key": "1641393707058/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393707058/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-78-5651",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1641393713123,
+ "clockEndTimestamp": 1649166113123,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-78-5651",
+ "lastEventTimestamp": 1641393737633,
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1641393736025/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393736025/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1641393737633
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-78-5651",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidsparai",
+ "attachments": [
+ {
+ "s3Key": "1641393736025/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641393736025/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-78-5651",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226829,
+ "submissionTimestamp": 1641393737633,
+ "clockEndTimestamp": 1649166137633,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidsparai",
+ "GSI1sk": "MD-78-5651",
+ "sk": "OneMAC#1641393737633",
+ "pk": "MD-78-5651",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1641393737633,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MD-51-5937",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is a test, test, test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-51-5937",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "TX-26-0036",
+ "currentStatus": "Under Review",
+ "subject": "test",
+ "description": "test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1681402639487,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "TX-26-0036",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "waiveramendment",
+ "componentId": "MI-11.R06.M01",
+ "currentStatus": "-- --",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MI-11.R06.M01",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "VA-21-3480",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "VA-21-3480",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1643064903774/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643064903774/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.38880",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1643064910096,
+ "clockEndTimestamp": 1650837310096,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.38880",
+ "lastEventTimestamp": 1643064910096,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.38880",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "SC-14-0005",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Addition of adult preventative",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Frances Crystal"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "SC-14-0005",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "finalDispositionDate": "2014-07-22",
+ "componentType": "chipspa",
+ "componentId": "WY-13-0008-MC2",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX WY CHIP MAGI XXI Medicaid Expa",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Stacey Green", "Janice Adams"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-01-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2014-01-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "WY-13-0008-MC2",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1643064903774/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1643064903774/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.38880",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226847,
+ "submissionTimestamp": 1643064910096,
+ "clockEndTimestamp": 1650837310096,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.38880",
+ "sk": "OneMAC#1643064910096",
+ "pk": "MD.38880",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1643064910096,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2013-03-11",
+ "componentType": "medicaidspa",
+ "componentId": "FL-12-012",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Federally Qualified Health Cen",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Frances Crystal", "Marguerite Schervish", "Sidney Staton"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2012-12-06",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2012-12-06",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "FL-12-012",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1641224502981/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641224502981/15MB.pdf"
+ },
+ {
+ "s3Key": "1641224502981/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641224502981/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-14-3229",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226583,
+ "submissionTimestamp": 1641224508544,
+ "clockEndTimestamp": 1648996908544,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-14-3229",
+ "sk": "OneMAC#1641224508544",
+ "pk": "MD-14-3229",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1641224508544,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2014-12-17",
+ "componentType": "medicaidspa",
+ "componentId": "CO-14-0045",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Govt Operated Providers for Co",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2014-07-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "CO-14-0045",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1641224502981/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641224502981/15MB.pdf"
+ },
+ {
+ "s3Key": "1641224502981/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1641224502981/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-14-3229",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1641224508544,
+ "clockEndTimestamp": 1648996908544,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-14-3229",
+ "lastEventTimestamp": 1641224508544,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-14-3229",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MD-60-5619",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-60-5619",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "finalDispositionDate": "2010-01-15",
+ "componentType": "medicaidspa",
+ "componentId": "KS-09-03",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Methods and standards for esta",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2009-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "approvedEffectiveDate": "2009-07-01",
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "KS-09-03",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "finalDispositionDate": "2014-06-30",
+ "componentType": "waiverappk",
+ "componentId": "NJ-0032.R05.01",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Global Options for Long-Term C",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-06-30",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "NJ-0032.R05.01",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "Relax. This is only a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1613506484023/file0.txt",
+ "filename": "file0.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file0.txt"
+ },
+ {
+ "s3Key": "1613506484023/file1.txt",
+ "filename": "file1.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file1.txt"
+ },
+ {
+ "s3Key": "1613506484023/file10.txt",
+ "filename": "file10.txt",
+ "title": "Cover Letter",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file10.txt"
+ },
+ {
+ "s3Key": "1613506484023/file2.txt",
+ "filename": "file2.txt",
+ "title": "Existing State Plan Page(s)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file2.txt"
+ },
+ {
+ "s3Key": "1613506484024/file3.txt",
+ "filename": "file3.txt",
+ "title": "Document Demonstrating Good-Faith Tribal Engagement",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file3.txt"
+ },
+ {
+ "s3Key": "1613506484024/file4.txt",
+ "filename": "file4.txt",
+ "title": "Tribal Consultation",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file4.txt"
+ },
+ {
+ "s3Key": "1613506484024/file5.txt",
+ "filename": "file5.txt",
+ "title": "Public Notice",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file5.txt"
+ },
+ {
+ "s3Key": "1613506484024/file6.txt",
+ "filename": "file6.txt",
+ "title": "Standard Funding Questions (SFQs)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file6.txt"
+ },
+ {
+ "s3Key": "1613506484024/file7.txt",
+ "filename": "file7.txt",
+ "title": "Other",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file7.txt"
+ }
+ ],
+ "componentId": "VA-21-3762-6068",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973212246,
+ "submissionTimestamp": 1613506484813,
+ "clockEndTimestamp": 1621278884813,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "VA-21-3762-6068",
+ "sk": "OneMAC#1613506484813",
+ "pk": "VA-21-3762-6068",
+ "submitterName": "StateSubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1613506484813,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "Relax. This is only a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1613506484023/file0.txt",
+ "filename": "file0.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file0.txt"
+ },
+ {
+ "s3Key": "1613506484023/file1.txt",
+ "filename": "file1.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file1.txt"
+ },
+ {
+ "s3Key": "1613506484023/file10.txt",
+ "filename": "file10.txt",
+ "title": "Cover Letter",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file10.txt"
+ },
+ {
+ "s3Key": "1613506484023/file2.txt",
+ "filename": "file2.txt",
+ "title": "Existing State Plan Page(s)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484023/file2.txt"
+ },
+ {
+ "s3Key": "1613506484024/file3.txt",
+ "filename": "file3.txt",
+ "title": "Document Demonstrating Good-Faith Tribal Engagement",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file3.txt"
+ },
+ {
+ "s3Key": "1613506484024/file4.txt",
+ "filename": "file4.txt",
+ "title": "Tribal Consultation",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file4.txt"
+ },
+ {
+ "s3Key": "1613506484024/file5.txt",
+ "filename": "file5.txt",
+ "title": "Public Notice",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file5.txt"
+ },
+ {
+ "s3Key": "1613506484024/file6.txt",
+ "filename": "file6.txt",
+ "title": "Standard Funding Questions (SFQs)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file6.txt"
+ },
+ {
+ "s3Key": "1613506484024/file7.txt",
+ "filename": "file7.txt",
+ "title": "Other",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A2ba92514-961b-4955-8954-3840bdb84b4e/1613506484024/file7.txt"
+ }
+ ],
+ "componentId": "VA-21-3762-6068",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1613506484813,
+ "clockEndTimestamp": 1621278884813,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "VA-21-3762-6068",
+ "lastEventTimestamp": 1613506484813,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "VA-21-3762-6068",
+ "submitterName": "StateSubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MD-36-4631-A",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is a test, test, test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-36-4631-A",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1651195078431/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078431/picture.jpg"
+ },
+ {
+ "s3Key": "1651195078432/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078432/adobe.pdf"
+ },
+ {
+ "s3Key": "1651195078432/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078432/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-63-2071",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1651195079994,
+ "clockEndTimestamp": 1658971079994,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-63-2071",
+ "lastEventTimestamp": 1651195079994,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-63-2071",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is a temporary extension test",
+ "componentType": "waiverextension",
+ "attachments": [
+ {
+ "s3Key": "1648564191177/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "Waiver Extension Request",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1648564191177/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.10220",
+ "auditArray": [
+ "UPDATED 1680287160142: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680270031559: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680205877267: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680115344369: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680010842218: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679613068692: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679611875043: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679609163523: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679582888374: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679578022061: currentStatus changed from \"Submitted\" to \"TE Requested\""
+ ],
+ "currentStatus": "TE Requested",
+ "convertTimestamp": 1673973227052,
+ "submissionTimestamp": 1648564195171,
+ "clockEndTimestamp": 1656340195171,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaiverextension",
+ "GSI1sk": "MD.10220",
+ "sk": "OneMAC#1648564195171",
+ "pk": "MD.10220",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1648564195171,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is a temporary extension test",
+ "componentType": "waiverextension",
+ "attachments": [
+ {
+ "s3Key": "1648564191177/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "Waiver Extension Request",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1648564191177/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.10220",
+ "currentStatus": "TE Requested",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1648564195171,
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.10220",
+ "lastEventTimestamp": 1648564195171,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.10220",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1648563688510/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1648563688510/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.10220",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973224344,
+ "submissionTimestamp": 1648563695451,
+ "clockEndTimestamp": 1656339695451,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.10220",
+ "sk": "OneMAC#1648563695451",
+ "pk": "MD.10220",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1648563695451,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1651195078431/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078431/picture.jpg"
+ },
+ {
+ "s3Key": "1651195078432/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078432/adobe.pdf"
+ },
+ {
+ "s3Key": "1651195078432/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1651195078432/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-63-2071",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218210,
+ "submissionTimestamp": 1651195079994,
+ "clockEndTimestamp": 1658971079994,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-63-2071",
+ "sk": "OneMAC#1651195079994",
+ "pk": "MD-63-2071",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1651195079994,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is a test, test, testPRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless ",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1629131394530/file.docx",
+ "filename": "file.docx",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1629131394530/file.docx"
+ }
+ ],
+ "componentId": "MD.42330",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973217981,
+ "submissionTimestamp": 1629131395161,
+ "clockEndTimestamp": 1636910995161,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.42330",
+ "sk": "OneMAC#1629131395161",
+ "pk": "MD.42330",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1629131395161,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is a test, test, testPRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless ",
+ "componentType": "waiverextension",
+ "attachments": [
+ {
+ "s3Key": "1629131438034/file.docx",
+ "filename": "file.docx",
+ "title": "Waiver Extension Request",
+ "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1629131438034/file.docx"
+ }
+ ],
+ "componentId": "MD.42330",
+ "currentStatus": "TE Requested",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1629131438604,
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.42330",
+ "lastEventTimestamp": 1629131438604,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.42330",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is a test, test, testPRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless ",
+ "componentType": "waiverextension",
+ "attachments": [
+ {
+ "s3Key": "1629131438034/file.docx",
+ "filename": "file.docx",
+ "title": "Waiver Extension Request",
+ "contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1629131438034/file.docx"
+ }
+ ],
+ "componentId": "MD.42330",
+ "auditArray": [
+ "UPDATED 1680287160142: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680270031560: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680205877267: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680115344370: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1680010842218: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679613068693: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679611875043: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679609163523: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679582888374: currentStatus changed from \"Submitted\" to \"TE Requested\"",
+ "UPDATED 1679578022062: currentStatus changed from \"Submitted\" to \"TE Requested\""
+ ],
+ "currentStatus": "TE Requested",
+ "convertTimestamp": 1673973219205,
+ "submissionTimestamp": 1629131438604,
+ "clockEndTimestamp": 1636911038604,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaiverextension",
+ "GSI1sk": "MD.42330",
+ "sk": "OneMAC#1629131438604",
+ "pk": "MD.42330",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1629131438604,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1638800656858/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656858/picture.jpg"
+ },
+ {
+ "s3Key": "1638800656859/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656859/adobe.pdf"
+ },
+ {
+ "s3Key": "1638800656859/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656859/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-11-5931",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218050,
+ "submissionTimestamp": 1638800657831,
+ "clockEndTimestamp": 1646576657831,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-11-5931",
+ "sk": "OneMAC#1638800657831",
+ "pk": "MD-11-5931",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638800657831,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipsparai",
+ "attachments": [
+ {
+ "s3Key": "1638800683655/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800683655/adobe.pdf"
+ },
+ {
+ "s3Key": "1638800683655/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800683655/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-11-5931",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973218810,
+ "submissionTimestamp": 1638800684457,
+ "clockEndTimestamp": 1646576684457,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipsparai",
+ "GSI1sk": "MD-11-5931",
+ "sk": "OneMAC#1638800684457",
+ "pk": "MD-11-5931",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1638800684457,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1638800656858/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656858/picture.jpg"
+ },
+ {
+ "s3Key": "1638800656859/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656859/adobe.pdf"
+ },
+ {
+ "s3Key": "1638800656859/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800656859/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-11-5931",
+ "currentStatus": "Under Review",
+ "latestRaiResponseTimestamp": 1638800684457,
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1638800657831,
+ "clockEndTimestamp": 1646576657831,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-11-5931",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1638800683655/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800683655/adobe.pdf"
+ },
+ {
+ "s3Key": "1638800683655/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1638800683655/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1638800684457
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-11-5931",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1634588147080/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Current State Plan",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147080/adobe.pdf"
+ },
+ {
+ "s3Key": "1634588147082/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147082/adobe.pdf"
+ },
+ {
+ "s3Key": "1634588147082/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147082/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-50-6431",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973217863,
+ "submissionTimestamp": 1634588148085,
+ "clockEndTimestamp": 1642367748085,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-50-6431",
+ "sk": "OneMAC#1634588148085",
+ "pk": "MD-50-6431",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1634588148085,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1634588147080/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Current State Plan",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147080/adobe.pdf"
+ },
+ {
+ "s3Key": "1634588147082/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147082/adobe.pdf"
+ },
+ {
+ "s3Key": "1634588147082/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1634588147082/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-50-6431",
+ "currentStatus": "Submitted",
+ "subject": "-- --",
+ "description": "-- --",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1634588148085,
+ "clockEndTimestamp": 1642367748085,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-50-6431",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-50-6431",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636127849452/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636127849452/15MB.pdf"
+ },
+ {
+ "s3Key": "1636127849453/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636127849453/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-30-4114",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973214989,
+ "submissionTimestamp": 1636127856554,
+ "clockEndTimestamp": 1643907456554,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-30-4114",
+ "sk": "OneMAC#1636127856554",
+ "pk": "MD-30-4114",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1636127856554,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636127849452/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636127849452/15MB.pdf"
+ },
+ {
+ "s3Key": "1636127849453/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636127849453/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-30-4114",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1636127856554,
+ "clockEndTimestamp": 1643907456554,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-30-4114",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-30-4114",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "WI-14-0019",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Payment of Nursing Facility an",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "WI-14-0019",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipsparai",
+ "attachments": [
+ {
+ "s3Key": "1650575913361/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575913361/adobe.pdf"
+ },
+ {
+ "s3Key": "1650575913361/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575913361/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-84-5014",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973224968,
+ "submissionTimestamp": 1650575914061,
+ "clockEndTimestamp": 1658351914061,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipsparai",
+ "GSI1sk": "MD-84-5014",
+ "sk": "OneMAC#1650575914061",
+ "pk": "MD-84-5014",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1650575914061,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636571876729/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636571876729/15MB.pdf"
+ },
+ {
+ "s3Key": "1636571876730/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636571876730/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-48-8946",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973231305,
+ "submissionTimestamp": 1636571894157,
+ "clockEndTimestamp": 1644347894157,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-48-8946",
+ "sk": "OneMAC#1636571894157",
+ "pk": "MD-48-8946",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1636571894157,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1650575879113/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879113/picture.jpg"
+ },
+ {
+ "s3Key": "1650575879114/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879114/adobe.pdf"
+ },
+ {
+ "s3Key": "1650575879114/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879114/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-84-5014",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973224171,
+ "submissionTimestamp": 1650575880583,
+ "clockEndTimestamp": 1658351880583,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitchipspa",
+ "GSI1sk": "MD-84-5014",
+ "sk": "OneMAC#1650575880583",
+ "pk": "MD-84-5014",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1650575880583,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1636571876729/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636571876729/15MB.pdf"
+ },
+ {
+ "s3Key": "1636571876730/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1636571876730/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-48-8946",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1636571894157,
+ "clockEndTimestamp": 1644347894157,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-48-8946",
+ "lastEventTimestamp": 1636571894157,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-48-8946",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MD-57-4961",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "This is a test, test, test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-57-4961",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MD-21-9999",
+ "currentStatus": "Under Review",
+ "subject": null,
+ "description": "Hello World",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD-21-9999",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1642622159645/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1642622159645/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.29280",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973229285,
+ "submissionTimestamp": 1642622164522,
+ "clockEndTimestamp": 1650394564522,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitwaivernew",
+ "GSI1sk": "MD.29280",
+ "sk": "OneMAC#1642622164522",
+ "pk": "MD.29280",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1642622164522,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MT-14-0044",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Primary Care Service Payment E",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2015-01-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MT-14-0044",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "finalDispositionDate": "2014-04-08",
+ "componentType": "waiverappk",
+ "componentId": "AR-0400.02.04",
+ "currentStatus": "Package Withdrawn",
+ "subject": null,
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Billy Bob Farrell"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-07-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "AR-0400.02.04",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "chipspa",
+ "attachments": [
+ {
+ "s3Key": "1650575879113/picture.jpg",
+ "filename": "picture.jpg",
+ "title": "Current State Plan",
+ "contentType": "image/jpeg",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879113/picture.jpg"
+ },
+ {
+ "s3Key": "1650575879114/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879114/adobe.pdf"
+ },
+ {
+ "s3Key": "1650575879114/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Cover Letter",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575879114/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-84-5014",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1650575880583,
+ "clockEndTimestamp": 1658351880583,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-84-5014",
+ "lastEventTimestamp": 1650575914061,
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1650575913361/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Revised Amended State Plan Language",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575913361/adobe.pdf"
+ },
+ {
+ "s3Key": "1650575913361/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "Official RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1650575913361/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1650575914061
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-84-5014",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "TX-11-59",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX P-1 Physicians & Pratitioners",
+ "description": null,
+ "waiverExtensions": [],
+ "reviewTeam": [
+ "Cheryl Rupley",
+ "John Castro",
+ "Rene Spencer",
+ "Karen Prisby"
+ ],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2011-10-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "TX-11-59",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "waivernew",
+ "attachments": [
+ {
+ "s3Key": "1642622159645/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "1915(b)(4) FFS Selective Contracting (Streamlined) waiver application pre-print (Initial, Renewal, Amendment)",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1642622159645/15MB.pdf"
+ }
+ ],
+ "componentId": "MD.29280",
+ "waiverAuthority": "1915(b)(4)",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1642622164522,
+ "clockEndTimestamp": 1650394564522,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#waiver",
+ "GSI1sk": "MD.29280",
+ "lastEventTimestamp": 1642622164522,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MD.29280",
+ "submitterName": "Statesubmitter Nightwatch",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "MI-10-001",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX Remove ICF/MR related language",
+ "description": null,
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2010-04-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "MI-10-001",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "componentType": "medicaidspa",
+ "componentId": "PA-14-0012-MM1",
+ "currentStatus": "Approved",
+ "subject": "XX_SEA_VAL_XX MAGI Based Eligibility Groups ",
+ "description": "XX_SEA_VAL_XX This is some text",
+ "waiverExtensions": [],
+ "reviewTeam": ["Mary Corddry"],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "2014-01-01",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "PA-14-0012-MM1",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1635352815650/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352815650/15MB.pdf"
+ },
+ {
+ "s3Key": "1635352815651/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352815651/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-57-7063",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973224684,
+ "submissionTimestamp": 1635352822914,
+ "clockEndTimestamp": 1643132422914,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "MD-57-7063",
+ "sk": "OneMAC#1635352822914",
+ "pk": "MD-57-7063",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1635352822914,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidsparai",
+ "attachments": [
+ {
+ "s3Key": "1635352841078/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352841078/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-57-7063",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973226230,
+ "submissionTimestamp": 1635352841908,
+ "clockEndTimestamp": 1643132441908,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidsparai",
+ "GSI1sk": "MD-57-7063",
+ "sk": "OneMAC#1635352841908",
+ "pk": "MD-57-7063",
+ "submitterName": "Statesubmitter Nightwatch",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1635352841908,
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "finalDispositionDate": "2018-04-18",
+ "componentType": "waiverrenewal",
+ "componentId": "HI-9002",
+ "currentStatus": "Package Withdrawn",
+ "subject": "HI-9002",
+ "description": "required",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "HI-9002",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "This is just a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1635352815650/15MB.pdf",
+ "filename": "15MB.pdf",
+ "title": "CMS Form 179",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352815650/15MB.pdf"
+ },
+ {
+ "s3Key": "1635352815651/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "SPA Pages",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352815651/adobe.pdf"
+ }
+ ],
+ "componentId": "MD-57-7063",
+ "currentStatus": "Under Review",
+ "latestRaiResponseTimestamp": 1635352841908,
+ "subject": null,
+ "description": "This is just a test",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 1635352822914,
+ "clockEndTimestamp": 1643132422914,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "MD-57-7063",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [
+ {
+ "additionalInformation": "This is just a test",
+ "attachments": [
+ {
+ "s3Key": "1635352841078/adobe.pdf",
+ "filename": "adobe.pdf",
+ "title": "RAI Response",
+ "contentType": "application/pdf",
+ "url": "https://uploads-develop-attachments-116229642442.s3.us-east-1.amazonaws.com/protected/us-east-1%3A86a190fe-b195-42bf-9685-9761bf0ff14b/1635352841078/adobe.pdf"
+ }
+ ],
+ "submissionTimestamp": 1635352841908
+ }
+ ],
+ "sk": "Package",
+ "pk": "MD-57-7063",
+ "submitterName": "Statesubmitter Nightwatch",
+ "cpocName": "-- --",
+ "submitterEmail": "statesubmitter@nightwatch.test"
+ },
+ {
+ "additionalInformation": "Relax. This is only a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1612800700066/file0.txt",
+ "filename": "file0.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700066/file0.txt"
+ },
+ {
+ "s3Key": "1612800700107/file1.txt",
+ "filename": "file1.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file1.txt"
+ },
+ {
+ "s3Key": "1612800700107/file10.txt",
+ "filename": "file10.txt",
+ "title": "Cover Letter",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file10.txt"
+ },
+ {
+ "s3Key": "1612800700107/file2.txt",
+ "filename": "file2.txt",
+ "title": "Existing State Plan Page(s)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file2.txt"
+ },
+ {
+ "s3Key": "1612800700107/file3.txt",
+ "filename": "file3.txt",
+ "title": "Document Demonstrating Good-Faith Tribal Engagement",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file3.txt"
+ },
+ {
+ "s3Key": "1612800700107/file4.txt",
+ "filename": "file4.txt",
+ "title": "Tribal Consultation",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file4.txt"
+ },
+ {
+ "s3Key": "1612800700107/file5.txt",
+ "filename": "file5.txt",
+ "title": "Public Notice",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file5.txt"
+ },
+ {
+ "s3Key": "1612800700107/file6.txt",
+ "filename": "file6.txt",
+ "title": "Standard Funding Questions (SFQs)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file6.txt"
+ },
+ {
+ "s3Key": "1612800700107/file7.txt",
+ "filename": "file7.txt",
+ "title": "Other",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file7.txt"
+ }
+ ],
+ "componentId": "VA-21-1673",
+ "currentStatus": "Submitted",
+ "convertTimestamp": 1673973209405,
+ "submissionTimestamp": 1612800701871,
+ "clockEndTimestamp": 1620573101871,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#submitmedicaidspa",
+ "GSI1sk": "VA-21-1673",
+ "sk": "OneMAC#1612800701871",
+ "pk": "VA-21-1673",
+ "submitterName": "Randy Revoked",
+ "originallyFrom": "cms-spa-form-develop-change-requests",
+ "eventTimestamp": 1612800701871,
+ "submitterEmail": "statesubmitterrevoked@cms.hhs.local"
+ },
+ {
+ "componentType": "chipspa",
+ "componentId": "PR-18-9014-04A",
+ "currentStatus": "Pending - Concurrence",
+ "subject": "FMG Reports 53a",
+ "description": "Test Case 53a",
+ "waiverExtensions": [],
+ "reviewTeam": [],
+ "submissionTimestamp": 0,
+ "proposedEffectiveDate": "none",
+ "lastEventTimestamp": 1657824888790,
+ "withdrawalRequests": [],
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "PR-18-9014-04A",
+ "submitterName": "-- --",
+ "cpocName": "-- --",
+ "submitterEmail": "-- --"
+ },
+ {
+ "additionalInformation": "Relax. This is only a test",
+ "componentType": "medicaidspa",
+ "attachments": [
+ {
+ "s3Key": "1612800700066/file0.txt",
+ "filename": "file0.txt",
+ "title": "CMS Form 179",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700066/file0.txt"
+ },
+ {
+ "s3Key": "1612800700107/file1.txt",
+ "filename": "file1.txt",
+ "title": "SPA Pages",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file1.txt"
+ },
+ {
+ "s3Key": "1612800700107/file10.txt",
+ "filename": "file10.txt",
+ "title": "Cover Letter",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file10.txt"
+ },
+ {
+ "s3Key": "1612800700107/file2.txt",
+ "filename": "file2.txt",
+ "title": "Existing State Plan Page(s)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file2.txt"
+ },
+ {
+ "s3Key": "1612800700107/file3.txt",
+ "filename": "file3.txt",
+ "title": "Document Demonstrating Good-Faith Tribal Engagement",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file3.txt"
+ },
+ {
+ "s3Key": "1612800700107/file4.txt",
+ "filename": "file4.txt",
+ "title": "Tribal Consultation",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file4.txt"
+ },
+ {
+ "s3Key": "1612800700107/file5.txt",
+ "filename": "file5.txt",
+ "title": "Public Notice",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file5.txt"
+ },
+ {
+ "s3Key": "1612800700107/file6.txt",
+ "filename": "file6.txt",
+ "title": "Standard Funding Questions (SFQs)",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file6.txt"
+ },
+ {
+ "s3Key": "1612800700107/file7.txt",
+ "filename": "file7.txt",
+ "title": "Other",
+ "contentType": "text/plain",
+ "url": "https://uploads-develop-attachmentsbucket-10wg5kiraihu1.s3.amazonaws.com/protected/us-east-1%3A4480cb87-b4ab-4556-acef-d91f38901059/1612800700107/file7.txt"
+ }
+ ],
+ "componentId": "VA-21-1673",
+ "currentStatus": "Submitted",
+ "waiverExtensions": [],
+ "submissionTimestamp": 1612800701871,
+ "clockEndTimestamp": 1620573101871,
+ "proposedEffectiveDate": "none",
+ "GSI1pk": "OneMAC#spa",
+ "GSI1sk": "VA-21-1673",
+ "lastEventTimestamp": 1612800701871,
+ "raiResponses": [],
+ "sk": "Package",
+ "pk": "VA-21-1673",
+ "submitterName": "Randy Revoked",
+ "submitterEmail": "statesubmitterrevoked@cms.hhs.local"
+ }
+]
diff --git a/src/packages/shared-types/tests/test-seatool.json b/src/packages/shared-types/tests/test-seatool.json
new file mode 100644
index 0000000000..82921eb2a3
--- /dev/null
+++ b/src/packages/shared-types/tests/test-seatool.json
@@ -0,0 +1,7749 @@
+[
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4087",
+ "SUBMISSION_DATE": 1625164258000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625164258000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "81DAEA50-7927-4DB9-A229-0EC7689FBDD7"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4455",
+ "SUBMISSION_DATE": 1636137448000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636137448000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "673D3E71-4484-465A-8210-94C71465C344"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4575-A",
+ "SUBMISSION_DATE": 1626140645000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626140645000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "1AF8C66F-B456-4443-9D44-BC3F194C99DF"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4651",
+ "SUBMISSION_DATE": 1624295568000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624295568000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "287838FC-A9AC-4784-8236-C6D9ED73106D"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4932",
+ "SUBMISSION_DATE": 1624651979000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624651979000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "8B41A22F-2F16-42F6-B941-26008B730A4C"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-4976",
+ "SUBMISSION_DATE": 1637951998000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637951998000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "0E88A1FC-BF01-4E63-9EFA-A53E18E45FA8"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5005-1297",
+ "SUBMISSION_DATE": 1624467866000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624467866000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "4C9835E8-5F80-4825-9F58-F710A25C9490"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5079-A",
+ "SUBMISSION_DATE": 1625173712000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625173712000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C5DF7819-CBF1-473A-9022-53F98CDACCFA"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5322",
+ "SUBMISSION_DATE": 1637608179000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637608179000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "924F13A4-46EA-40E8-BD03-2D477F3006E2"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5552",
+ "SUBMISSION_DATE": 1638471334000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638471334000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "3E235F11-E28F-4359-93DE-F50908A1643F"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5773",
+ "SUBMISSION_DATE": 1636137987000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636137987000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "5339DDFD-FA83-4B51-A63B-A030F09BF3CA"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-5787",
+ "SUBMISSION_DATE": 1636398066000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636398066000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "AD519469-A306-42F8-86A5-FADA9E6F7114"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6146",
+ "SUBMISSION_DATE": 1637780648000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637780648000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "8D248ADB-2FCC-4C77-88FF-FA7C4F05585A"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6271-3344",
+ "SUBMISSION_DATE": 1626292243000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626292243000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C1038CA4-95CD-4632-BDF9-15BD5CAE9758"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6513",
+ "SUBMISSION_DATE": 1638917844000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638917844000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "3434637A-5B2E-41F0-BC91-7807458488D8"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6651-2613",
+ "SUBMISSION_DATE": 1624899476000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624899476000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "B4DB7614-394A-4A48-B511-C3884870D375"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6776",
+ "SUBMISSION_DATE": 1638478834000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638478834000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C53C2C5E-BBBF-44CA-AF02-286FF502E56E"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-6795-6972",
+ "SUBMISSION_DATE": 1624471968000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624471968000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "34A118D4-26B8-4748-9FAC-56D178FB3522"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7218-6799",
+ "SUBMISSION_DATE": 1626210051000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626210051000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "7BFC8CC7-D1C5-428E-941E-0CD5799CB179"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7381",
+ "SUBMISSION_DATE": 1624294730000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624294730000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "8895A5ED-CBC9-4A04-9A4B-C8F9DD757530"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7412",
+ "SUBMISSION_DATE": 1626113829000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626113829000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "2FF54B27-41E5-4675-AA7D-821D3F4565F9"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7459",
+ "SUBMISSION_DATE": 1633637296000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1633637296000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "47185824-462F-49EF-AFC0-E4BADA659F06"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7549-A",
+ "SUBMISSION_DATE": 1624978145000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624978145000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C484862D-C7F6-450D-B2C6-513D695B5B4A"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7581",
+ "SUBMISSION_DATE": 1625087021000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625087021000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C273BD45-C10D-4922-9E28-E94CC112C8CB"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7682",
+ "SUBMISSION_DATE": 1639164123000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1639164123000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "6663AC38-0B4E-4DEA-83B4-4A046CA094A6"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7710-5738",
+ "SUBMISSION_DATE": 1625245082000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625245082000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C511F68D-F695-4B66-9D7A-467007381EB0"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7716",
+ "SUBMISSION_DATE": 1638813549000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638813549000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "ABBCCEE6-9337-41E4-BD93-847A0FAE1BB3"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7767-6466",
+ "SUBMISSION_DATE": 1622180647000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1622180647000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "83358A74-AE5E-4F06-8ECF-856E250C92FF"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7770-1901",
+ "SUBMISSION_DATE": 1622180851000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1622180851000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "95AA4FEA-7B67-4479-A952-2F3307492D86"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7876",
+ "SUBMISSION_DATE": 1638974347000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638974347000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "BA117531-B6A9-49BF-AA20-5BD18D337FDB"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7910",
+ "SUBMISSION_DATE": 1635271412000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1635271412000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "83B470ED-01DE-4FC8-B873-2371FBA3AE04"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7915",
+ "SUBMISSION_DATE": 1624418923000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624418923000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "978C99CE-4E13-4B5F-B969-F0869C721725"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7956",
+ "SUBMISSION_DATE": 1625064589000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625064589000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "625B57C2-A681-478F-9902-40EEBC90962F"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7985",
+ "SUBMISSION_DATE": 1636473517000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636473517000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "8AEDD7EA-C4B6-470E-B3B3-1034663ABC5D"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-7990-A",
+ "SUBMISSION_DATE": 1626186533000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626186533000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "94E1C6CE-F9B8-412D-8101-9EC648E5E8DB"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8033",
+ "SUBMISSION_DATE": 1625849663000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625849663000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "9AEC1094-4B07-4334-8219-747E95771215"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8046",
+ "SUBMISSION_DATE": 1636746579000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636746579000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "008C63CB-4CB8-4E28-B790-8BBD0F1C4482"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8369",
+ "SUBMISSION_DATE": 1626209615000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, testPRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless it displays a valid OMB control number. The valid OMB control number for this information collection is 0938-1188. The time required to complete this information collection is estimated to average 40 hours per response, including the time to review instructions, search existing data resources, gather the data needed, and complete and review the information collection. If you have comments concerning the accuracy of the time estimate(s) or suggestions for improving this form, please write to: CMS, 7500 Security Boulevard, Attn: PRA Reports Clearance Officer, Mail Stop C4-26-05, Baltimore, Maryland 21244-1850. PRA Disclosure Statement: According to the Paperwork Reduction Act of 1995, no persons are required to respond to a collection of information unless ",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626209615000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "B1CA8379-DF5A-4AFB-9928-4CF8C1F61005"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8433",
+ "SUBMISSION_DATE": 1625167070000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625167070000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "6630F14D-DC99-4428-AAA1-37919D7E209A"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8439",
+ "SUBMISSION_DATE": 1637706543000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637706543000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "27169062-5E55-4640-A03F-3558E8D98C84"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-83-8875",
+ "SUBMISSION_DATE": 1636144965000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636144965000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C85948AA-3F60-425C-9DD5-34F5A5AC0737"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-1430",
+ "SUBMISSION_DATE": 1637352085000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637352085000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "F3D57F9A-1E2B-408C-A0AD-4923AB24BF9B"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-1469",
+ "SUBMISSION_DATE": 1638475986000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638475986000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "F62BDB2E-F5A8-4DC0-8237-9331F136330A"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-1839",
+ "SUBMISSION_DATE": 1625860055000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625860055000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "39B28B8A-A538-4000-9826-2FE2556E310C"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-1951",
+ "SUBMISSION_DATE": 1624977876000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624977876000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "02CA9F35-78CA-477D-B729-E2F116027DE3"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-2087-3294",
+ "SUBMISSION_DATE": 1625859814000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625859814000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "2A1DF409-14D3-466A-B8AB-4EFDA300A129"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-2142",
+ "SUBMISSION_DATE": 1637184425000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1637184425000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "A3AC1886-BC1A-489B-AD46-60DE14B1D995"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-2238",
+ "SUBMISSION_DATE": 1638472432000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638472432000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "EAF8A7F5-CA44-4919-AB73-170B308F29BD"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-2313",
+ "SUBMISSION_DATE": 1626117865000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1626117865000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "922AC65C-59E4-4F3E-8C53-D2A876ED9FEB"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-2438-A",
+ "SUBMISSION_DATE": 1624385784000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624385784000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C9275C4B-D5EF-4D8E-B2F8-98FDACBA225E"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3032-A",
+ "SUBMISSION_DATE": 1624474682000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624474682000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "9F527CDF-A883-4B5F-BEDB-D3D10545F602"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3147-5620",
+ "SUBMISSION_DATE": 1625833161000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": null,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625833161000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "93645B79-0AE6-4F51-B155-34F3DCCA42F4"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": null
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3336",
+ "SUBMISSION_DATE": 1634833788000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1634833788000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "5C154330-58FE-4005-B930-CD69324F88F4"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3369-A",
+ "SUBMISSION_DATE": 1624392257000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1624392257000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "CB0B0E4B-5DB2-44C3-82D0-95B45E4B215C"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3589",
+ "SUBMISSION_DATE": 1636401160000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1636401160000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "DEE55876-0E3A-47E7-9A0B-4064B3CBF12D"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3781",
+ "SUBMISSION_DATE": 1638471556000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638471556000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "090A8D88-4E1B-4123-9B14-C9AB3974E905"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3843",
+ "SUBMISSION_DATE": 1625666779000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is a test, test, test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1625666779000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "4F2F26EF-E0C9-4B06-8710-2DDFC0DC6097"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-3845",
+ "SUBMISSION_DATE": 1634583887000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1634583887000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "45E521BC-4C0D-4524-AD93-32CB53789109"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-4032",
+ "SUBMISSION_DATE": 1638456977000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 125,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638456977000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "123383D5-3B9B-41A8-A715-0CBA0F237961"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 125, "PLAN_TYPE_NAME": "Medicaid SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-4174",
+ "SUBMISSION_DATE": 1638293139000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638293139000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "C5D766C2-8CC8-4092-9E05-B61E01A03001"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ },
+ {
+ "STATE_PLAN": {
+ "ID_NUMBER": "MD-84-4920",
+ "SUBMISSION_DATE": 1638475432000,
+ "START_CLOCK_DATE": null,
+ "REGION_ID": "3",
+ "COMPONENT_ID": null,
+ "STATE_CODE": "MD",
+ "PROPOSED_DATE": null,
+ "PLAN_TYPE": 124,
+ "ACTION_TYPE": null,
+ "CO_SUBMISSION_DATE": null,
+ "LEAD_ANALYST_ID": null,
+ "APPROVAL_STATUS_TYPE": null,
+ "APPROVED_EFFECTIVE_DATE": null,
+ "ACTUAL_EFFECTIVE_DATE": null,
+ "DAYS_EXTENSION_NUMBER": null,
+ "TITLE_NAME": null,
+ "ALERT_90_DAYS_DATE": null,
+ "ALERT_MILESTONE1_DAYS": null,
+ "ALERT_MILESTONE2_DAYS": null,
+ "ALERT_MILESTONE3_DAYS": null,
+ "ALERT_MILESTONE4_DAYS": null,
+ "END_DATE": null,
+ "REMARKS_MEMO": null,
+ "STATUS_MEMO": null,
+ "SUMMARY_MEMO": "This is just a test",
+ "PRIORITY_COMMENTS_MEMO": null,
+ "BUDGET_NEUTRALITY_ESTABLISHED_FLAG": false,
+ "BUDGET_NEUTRALITY_STATUS_MEMO": null,
+ "BUDGET_IMPACT": null,
+ "BUDGET_IMPACT_VALUE": null,
+ "CHANGED_DATE": 1657824888790,
+ "SPA_TYPE_ID": null,
+ "TYPE_ID": null,
+ "STATUS_DATE": 1638475432000,
+ "SPW_STATUS_ID": 1,
+ "PRIORITY_CODE_ID": null,
+ "PRIORITY_COMPLEXITY_ID": null,
+ "REVIEW_POSITION_ID": null,
+ "FRT_DATE": null,
+ "CURRENT_WAIVER_TE": null,
+ "CURRENT_WAIVER_EXPIRES_DATE": null,
+ "TE_END_DATE": null,
+ "OCD_REVIEW_ID": null,
+ "OCD_REVIEW_COMMENTS_MEMO": null,
+ "COMPANION_LETTER_REQUESTED_DATE": null,
+ "COMPANION_LETTER_RECEIVED_DATE": null,
+ "RO_ANALYST_ID": null,
+ "SPW_IMPORT": null,
+ "MMDL_IMPORT": false,
+ "APPROVAL_DOCS_RECEIVED": null,
+ "BLOCKING_SPAS_MEMO": null,
+ "CALL_HELD": null,
+ "CALL_HELD_REASON_ID": null,
+ "CODE_AFTER_INIT_ASSESS_ID": null,
+ "DATE_OF_CODING_CHANGE": null,
+ "INITIAL_SUBMISSION_COMPLETE": null,
+ "MISSING_INFORMATION": null,
+ "BACKUP_PROGRAM_ANALYST_ID": null,
+ "BACKUP_FM_ANALYST_ID": null,
+ "PENDING_CONCURRENCE_DATE": null,
+ "GAP": null,
+ "ATTACHED_SPA": null,
+ "UPL_ACCEPTED": null,
+ "TEMPLATE_ISSUES": null,
+ "TEMPLATE_ISSUES_MEMO": null,
+ "TEMPLATE_ISSUES_RESOLVED": null,
+ "GAP2": null,
+ "GAP3": null,
+ "GAP_NA": false,
+ "GAP2_NA": false,
+ "GAP3_NA": false,
+ "GUIDANCE_DOCS_SUBMITTED": false,
+ "PUBLICHEALTH_STATEEMERGENCY": false,
+ "SUBMISSION_TYPE": null,
+ "FISCAL_YEAR": null,
+ "FISCAL_QUARTER": null,
+ "DATE_SENT_PSCCAS": null,
+ "ELIMINATED_COST": false,
+ "ADDED_COST": false,
+ "ORGANIZATION_CHANGE": false,
+ "UUID": "E52B5506-D8B6-456C-8C31-ECE9D209456A"
+ },
+ "ACTION_OFFICERS": null,
+ "COMPONENTS_SP": null,
+ "SP1115": null,
+ "SP_APD_SUB_TYPE": null,
+ "SP_EARLY_ALERTS": null,
+ "RAI": null,
+ "SP_APD": null,
+ "SP_IMPACT_FUNDING": null,
+ "STOP_RESUME_DATES": null,
+ "ACTIONTYPES": null,
+ "CALLHELDREASONS": null,
+ "CODEAFTERINITACCESS": null,
+ "COMPONENTS": null,
+ "OCD_REVIEW": null,
+ "RO_ANALYST": null,
+ "PROGRAM_ANALYST": null,
+ "FM_ANALYST": null,
+ "LEAD_ANALYST": null,
+ "PRIORITY_CODES": null,
+ "PRIORITY_COMPLEXITY": null,
+ "REVIEW_POSITION": null,
+ "REGION": [
+ {
+ "REGION_ID": "3",
+ "REGION_NAME": "Philadelphia",
+ "ALERTS_INBOX_ADDRESS": "SPA_Waivers_Philadelphia_R03@cms.hhs.gov"
+ }
+ ],
+ "SPA_TYPE": null,
+ "SPW_STATUS": [{ "SPW_STATUS_ID": 1, "SPW_STATUS_DESC": "Pending" }],
+ "STATES": [
+ {
+ "STATE_CODE": "MD",
+ "REGION_ID": "3",
+ "STATE_NAME": "Maryland",
+ "PRIORITY_FLAG": false
+ }
+ ],
+ "SP_TYPE": null,
+ "STATE_PLAN_SERVICETYPES": null,
+ "STATE_PLAN_SERVICE_SUBTYPES": null,
+ "PLAN_TYPES": [{ "PLAN_TYPE_ID": 124, "PLAN_TYPE_NAME": "CHIP SPA" }]
+ }
+]
diff --git a/src/packages/shared-types/user.ts b/src/packages/shared-types/user.ts
new file mode 100644
index 0000000000..ac9e0bce27
--- /dev/null
+++ b/src/packages/shared-types/user.ts
@@ -0,0 +1,29 @@
+export enum UserRoles {
+ CMS_READ_ONLY = "cms-read-only",
+ CMS_REVIEWER = "cms-reviewer",
+ HELPDESK = "helpdesk",
+ CMS_SYSTEM_ADMIN = "cms-system-admin",
+ CMS_ROLE_APPROVER = "cms-role-approver",
+ STATE_SUBMITTER = "state-submitter",
+ STATE_SYSTEM_ADMIN = "state-system-admin",
+}
+
+export type UserRolesString = `${UserRoles}${"," | ""}`;
+
+export type CognitoUserAttributes = {
+ sub: string;
+ "custom:cms-roles": UserRolesString; // comma-separated list of UserRoles ex. "cms-reviewer,helpdesk" or "state-submitter"
+ email_verified: boolean;
+ "custom:state"?: string; // ex. "VA" or "VA,MD,CA" or undefined
+ given_name: string;
+ family_name: string;
+ email: string;
+};
+
+export const CMS_ROLES = [
+ UserRoles.CMS_READ_ONLY,
+ UserRoles.CMS_REVIEWER,
+ UserRoles.CMS_ROLE_APPROVER,
+ UserRoles.CMS_SYSTEM_ADMIN,
+ UserRoles.HELPDESK,
+];
diff --git a/src/packages/shared-utils/index.ts b/src/packages/shared-utils/index.ts
new file mode 100644
index 0000000000..e92804002c
--- /dev/null
+++ b/src/packages/shared-utils/index.ts
@@ -0,0 +1,2 @@
+export * from "./is-cms-user";
+export * from "./s3-url-parser";
diff --git a/src/packages/shared-utils/is-cms-user.ts b/src/packages/shared-utils/is-cms-user.ts
new file mode 100644
index 0000000000..306a605721
--- /dev/null
+++ b/src/packages/shared-utils/is-cms-user.ts
@@ -0,0 +1,12 @@
+import { CMS_ROLES, CognitoUserAttributes } from "../shared-types";
+
+export const isCmsUser = (user: CognitoUserAttributes) => {
+ const userRoles = user["custom:cms-roles"];
+
+ for (const cmsRole of CMS_ROLES) {
+ if (userRoles.includes(cmsRole)) {
+ return true;
+ }
+ }
+ return false;
+};
diff --git a/src/packages/shared-utils/package.json b/src/packages/shared-utils/package.json
new file mode 100644
index 0000000000..4f5b354128
--- /dev/null
+++ b/src/packages/shared-utils/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "shared-utils",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "devDependencies": {}
+}
diff --git a/src/packages/shared-utils/s3-url-parser.ts b/src/packages/shared-utils/s3-url-parser.ts
new file mode 100644
index 0000000000..cd7a0472c3
--- /dev/null
+++ b/src/packages/shared-utils/s3-url-parser.ts
@@ -0,0 +1,54 @@
+export function s3ParseUrl(url: string) {
+ const _decodedUrl = decodeURIComponent(url);
+
+ // http://s3.amazonaws.com/bucket/key1/key2
+ const _match_1 = _decodedUrl.match(
+ /^https?:\/\/s3.amazonaws.com\/([^\/]+)\/?(.*?)$/
+ );
+ if (_match_1) {
+ return {
+ bucket: _match_1[1],
+ key: _match_1[2],
+ region: "",
+ };
+ }
+
+ // http://s3-aws-region.amazonaws.com/bucket/key1/key2
+ const _match_2 = _decodedUrl.match(
+ /^https?:\/\/s3-([^.]+).amazonaws.com\/([^\/]+)\/?(.*?)$/
+ );
+ if (_match_2) {
+ return {
+ bucket: _match_2[2],
+ key: _match_2[3],
+ region: _match_2[1],
+ };
+ }
+
+ // http://bucket.s3.amazonaws.com/key1/key2
+ const _match_3 = _decodedUrl.match(
+ /^https?:\/\/([^.]+).s3.amazonaws.com\/?(.*?)$/
+ );
+ if (_match_3) {
+ return {
+ bucket: _match_3[1],
+ key: _match_3[2],
+ region: "",
+ };
+ }
+
+ // http://bucket.s3-aws-region.amazonaws.com/key1/key2 or,
+ // http://bucket.s3.aws-region.amazonaws.com/key1/key2
+ const _match_4 = _decodedUrl.match(
+ /^https?:\/\/([^.]+).(?:s3-|s3\.)([^.]+).amazonaws.com\/?(.*?)$/
+ );
+ if (_match_4) {
+ return {
+ bucket: _match_4[1],
+ key: _match_4[3],
+ region: _match_4[2],
+ };
+ }
+
+ return null;
+}
diff --git a/src/services/.log-policy/package.json b/src/services/.log-policy/package.json
new file mode 100644
index 0000000000..f8ba9b28d2
--- /dev/null
+++ b/src/services/.log-policy/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "log-policy",
+ "dependencies": {},
+ "devDependencies": {}
+}
diff --git a/src/services/.log-policy/serverless.yml b/src/services/.log-policy/serverless.yml
new file mode 100644
index 0000000000..4b7d1ecdd7
--- /dev/null
+++ b/src/services/.log-policy/serverless.yml
@@ -0,0 +1,34 @@
+service: ${self:custom.project}-log-policy
+
+frameworkVersion: "3"
+
+plugins:
+ - serverless-stack-termination-protection
+ - "@stratiformdigital/serverless-s3-security-helper"
+
+provider:
+ name: aws
+ region: us-east-1
+ stackTags:
+ PROJECT: ${self:custom.project}
+ SERVICE: ${self:service}
+
+custom:
+ project: ${env:PROJECT}
+ serverlessTerminationProtection:
+ stages: # Apply CloudFormation termination protection for these stages
+ - master
+ - val
+ - production
+resources:
+ Resources:
+ OpenSearchLogGroupPolicy:
+ Type: AWS::Logs::ResourcePolicy
+ Properties:
+ PolicyName: ${self:service}-os-log-policy
+ PolicyDocument: !Sub "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Sid\": \"OpenSearchToCloudwatch\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": [ \"es.amazonaws.com\" ] }, \"Action\": [\"logs:PutLogEvents\",\"logs:CreateLogStream\"], \"Resource\": [ \"*\" ] } ] }"
+ VendedLogsPolicy:
+ Type: AWS::Logs::ResourcePolicy
+ Properties:
+ PolicyName: ${self:service}-vendedlogs-policy
+ PolicyDocument: !Sub "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AWSLogDeliveryWrite\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"delivery.logs.amazonaws.com\"},\"Action\":[\"logs:CreateLogStream\",\"logs:PutLogEvents\"],\"Resource\":[\"arn:aws:logs:us-east-1:${AWS::AccountId}:log-group:/aws/vendedlogs/*\",\"arn:aws:logs:${self:provider.region}:${AWS::AccountId}:log-group:/aws/http-api/*:log-stream:*\"],\"Condition\":{\"StringEquals\":{\"aws:SourceAccount\":\"${AWS::AccountId}\"},\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:logs:${self:provider.region}:${AWS::AccountId}:*\"}}}]}"
\ No newline at end of file
diff --git a/src/services/.log-policy/yarn.lock b/src/services/.log-policy/yarn.lock
new file mode 100644
index 0000000000..fb57ccd13a
--- /dev/null
+++ b/src/services/.log-policy/yarn.lock
@@ -0,0 +1,4 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
diff --git a/src/services/.oidc/serverless.yml b/src/services/.oidc/serverless.yml
index 769af81692..a38b9c2f57 100644
--- a/src/services/.oidc/serverless.yml
+++ b/src/services/.oidc/serverless.yml
@@ -2,9 +2,6 @@ service: ${self:custom.project}-oidc
frameworkVersion: "3"
-package:
- individually: true
-
plugins:
- serverless-stack-termination-protection
- "@stratiformdigital/serverless-s3-security-helper"
@@ -36,7 +33,7 @@ custom:
- arn:aws:iam::${aws:accountId}:policy/ADO-Restriction-Policy
- arn:aws:iam::${aws:accountId}:policy/CMSApprovedAWSServices
- arn:aws:iam::aws:policy/AdministratorAccess
- SubjectClaimFilters: "repo:Enterprise-CMCS/macpro-base-template:${param:claimFilter}"
+ SubjectClaimFilters: "repo:Enterprise-CMCS/macpro-mako:${param:claimFilter}"
resources:
Resources:
GitHubActionsServiceRole:
diff --git a/src/services/alerts/serverless.yml b/src/services/alerts/serverless.yml
index 8a07e05997..abdee53a6a 100644
--- a/src/services/alerts/serverless.yml
+++ b/src/services/alerts/serverless.yml
@@ -2,9 +2,6 @@ service: ${self:custom.project}-alerts
frameworkVersion: "3"
-package:
- individually: true
-
plugins:
- serverless-stack-termination-protection
- "@stratiformdigital/serverless-s3-security-helper"
diff --git a/src/services/api/handlers/createIssue.ts b/src/services/api/handlers/createIssue.ts
deleted file mode 100644
index fb9b7026f0..0000000000
--- a/src/services/api/handlers/createIssue.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import type { APIGatewayEvent } from "aws-lambda";
-import { response } from "../libs/handler";
-import { createIssueSchema } from "shared-types";
-import { IssueService } from "../services/issueService";
-import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
-
-const dynamoInstance = new DynamoDBClient({ region: process.env.region });
-
-export const createIssue = async (event: APIGatewayEvent) => {
- try {
- const validIssue = createIssueSchema.parse(JSON.parse(event.body));
-
- const newIssue = await new IssueService(dynamoInstance).createIssue({
- issue: validIssue,
- tableName: process.env.tableName,
- });
-
- return response({
- statusCode: 201,
- body: newIssue,
- });
- } catch (error) {
- console.error({ error });
- return response({
- statusCode: 404,
- body: error,
- });
- }
-};
-
-export const handler = createIssue;
diff --git a/src/services/api/handlers/deleteIssue.ts b/src/services/api/handlers/deleteIssue.ts
deleted file mode 100644
index c4dd0918c0..0000000000
--- a/src/services/api/handlers/deleteIssue.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { z, ZodError } from "zod";
-import { response } from "../libs/handler";
-import { IssueService } from "../services/issueService";
-import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
-
-const dynamoInstance = new DynamoDBClient({ region: process.env.region });
-
-export const deleteIssue = async ({ pathParameters }) => {
- try {
- const validParams = z.object({
- id: z.string().uuid(),
- });
-
- const params = validParams.parse(pathParameters);
-
- await new IssueService(dynamoInstance).deleteIssue({
- id: params.id,
- tableName: process.env.tableName,
- });
-
- return response({
- statusCode: 204,
- });
- } catch (error) {
- console.error({ error });
- if (error instanceof ZodError) {
- return response({
- statusCode: 404,
- body: { message: error },
- });
- }
- }
-};
-
-export const handler = deleteIssue;
diff --git a/src/services/api/handlers/getAttachmentUrl.ts b/src/services/api/handlers/getAttachmentUrl.ts
new file mode 100644
index 0000000000..b1d3f10465
--- /dev/null
+++ b/src/services/api/handlers/getAttachmentUrl.ts
@@ -0,0 +1,126 @@
+import { response } from "../libs/handler";
+import { APIGatewayEvent } from "aws-lambda";
+import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts";
+import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
+import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
+
+import * as os from "./../../../libs/opensearch-lib";
+import { getStateFilter } from "../libs/auth/user";
+import { OsMainSourceItem, OsResponse } from "shared-types";
+if (!process.env.osDomain) {
+ throw "ERROR: osDomain env variable is required,";
+}
+
+// Handler function to get Seatool data
+export const handler = async (event: APIGatewayEvent) => {
+ try {
+ const body = JSON.parse(event.body);
+
+ let query: any = {};
+ query = {
+ query: {
+ bool: {
+ must: [
+ {
+ ids: {
+ values: [body.id],
+ },
+ },
+ ],
+ },
+ },
+ };
+ const stateFilter = await getStateFilter(event);
+ if (stateFilter) {
+ query.query.bool.must.push(stateFilter);
+ }
+
+ const results = (await os.search(
+ process.env.osDomain,
+ "main",
+ query
+ )) as OsResponse;
+
+ if (!results) {
+ return response({
+ statusCode: 404,
+ body: { message: "No record found for the given id" },
+ });
+ }
+
+ const allAttachments = [
+ ...results.hits.hits[0]._source.attachments,
+ ...results.hits.hits[0]._source.raiResponses
+ .map((R) => R.attachments)
+ .flat(),
+ ];
+
+ if (
+ !allAttachments.some((e) => {
+ return e.bucket === body.bucket && e.key === body.key;
+ })
+ ) {
+ return response({
+ statusCode: 500,
+ body: {
+ message: "Attachment details not found for given record id.",
+ },
+ });
+ }
+
+ // Now we can generate the presigned url
+ const url = await generatePresignedS3Url(body.bucket, body.key, 60);
+
+ return response({
+ statusCode: 200,
+ body: { url },
+ });
+ } catch (error) {
+ console.error({ error });
+ return response({
+ statusCode: 500,
+ body: { message: "Internal server error" },
+ });
+ }
+};
+
+async function generatePresignedS3Url(bucket, key, expirationInSeconds) {
+ // Create an S3 client
+ const roleToAssumeArn = process.env.onemacLegacyS3AccessRoleArn;
+
+ // Create an STS client to make the AssumeRole API call
+ const stsClient = new STSClient({});
+
+ // Assume the role
+ const assumedRoleResponse = await stsClient.send(
+ new AssumeRoleCommand({
+ RoleArn: roleToAssumeArn,
+ RoleSessionName: "AssumedRoleSession",
+ })
+ );
+
+ // Extract the assumed role credentials
+ const assumedCredentials = assumedRoleResponse.Credentials;
+
+ // Create S3 client using the assumed role's credentials
+ const assumedS3Client = new S3Client({
+ credentials: {
+ accessKeyId: assumedCredentials.AccessKeyId,
+ secretAccessKey: assumedCredentials.SecretAccessKey,
+ sessionToken: assumedCredentials.SessionToken,
+ },
+ });
+
+ // Create a command to get the object (you can adjust this according to your use case)
+ const getObjectCommand = new GetObjectCommand({
+ Bucket: bucket,
+ Key: key,
+ });
+
+ // Generate a presigned URL
+ const presignedUrl = await getSignedUrl(assumedS3Client, getObjectCommand, {
+ expiresIn: expirationInSeconds,
+ });
+
+ return presignedUrl;
+}
diff --git a/src/services/api/handlers/getIssue.ts b/src/services/api/handlers/getIssue.ts
deleted file mode 100644
index e8c4307a13..0000000000
--- a/src/services/api/handlers/getIssue.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { z, ZodError } from "zod";
-import { response } from "../libs/handler";
-import { IssueService } from "../services/issueService";
-import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
-
-const dynamoInstance = new DynamoDBClient({ region: process.env.region });
-
-export const getIssue = async ({ pathParameters }) => {
- try {
- const validParams = z.object({
- id: z.string().uuid(),
- });
-
- const params = validParams.parse(pathParameters);
-
- const input = {
- id: params.id,
- tableName: process.env.tableName,
- };
- const foundIssue = await new IssueService(dynamoInstance).getIssue(input);
-
- return response({
- statusCode: 200,
- body: foundIssue,
- });
- } catch (error) {
- console.error({ error });
- if (error instanceof ZodError) {
- return response({
- statusCode: 404,
- body: { message: error },
- });
- }
-
- return response({
- statusCode: 404,
- body: { message: "Issue not found" },
- });
- }
-};
-
-export const handler = getIssue;
diff --git a/src/services/api/handlers/getIssues.ts b/src/services/api/handlers/getIssues.ts
deleted file mode 100644
index 049d1ff261..0000000000
--- a/src/services/api/handlers/getIssues.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { response } from "../libs/handler";
-import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
-import { IssueService } from "../services/issueService";
-import { Issue } from "shared-types";
-
-const dynamoInstance = new DynamoDBClient({ region: process.env.region });
-
-export const getIssues = async () => {
- try {
- const issues = await new IssueService(dynamoInstance).getIssues({
- tableName: process.env.tableName,
- });
-
- return response({
- statusCode: 200,
- body: issues,
- });
- } catch (error) {
- console.error({ error });
- return response({
- statusCode: 404,
- body: { message: JSON.stringify(error) },
- });
- }
-};
-
-export const handler = getIssues;
diff --git a/src/services/api/handlers/item.ts b/src/services/api/handlers/item.ts
new file mode 100644
index 0000000000..25977bf772
--- /dev/null
+++ b/src/services/api/handlers/item.ts
@@ -0,0 +1,55 @@
+import { response } from "../libs/handler";
+import { APIGatewayEvent } from "aws-lambda";
+import * as os from "../../../libs/opensearch-lib";
+import { getStateFilter } from "../libs/auth/user";
+import { OsHit, OsMainSourceItem } from "shared-types";
+
+if (!process.env.osDomain) {
+ throw "ERROR: osDomain env variable is required,";
+}
+
+export const getItemData = async (event: APIGatewayEvent) => {
+ try {
+ const body = JSON.parse(event.body);
+
+ const stateFilter = await getStateFilter(event);
+
+ const result = (await os.getItem(
+ process.env.osDomain,
+ "main",
+ body.id
+ )) as OsHit & { found: boolean };
+
+ if (
+ stateFilter &&
+ !stateFilter.terms.state.includes(
+ result._source.state.toLocaleLowerCase()
+ )
+ ) {
+ return response({
+ statusCode: 401,
+ body: { message: "Not authorized to view this resource" },
+ });
+ }
+
+ if (!result.found) {
+ return response({
+ statusCode: 404,
+ body: { message: "No record found for the given id" },
+ });
+ } else {
+ return response({
+ statusCode: 200,
+ body: result,
+ });
+ }
+ } catch (error) {
+ console.error({ error });
+ return response({
+ statusCode: 500,
+ body: { message: "Internal server error" },
+ });
+ }
+};
+
+export const handler = getItemData;
diff --git a/src/services/api/handlers/repack.js b/src/services/api/handlers/repack.js
new file mode 100644
index 0000000000..e914961e96
--- /dev/null
+++ b/src/services/api/handlers/repack.js
@@ -0,0 +1,68 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
+const fs = require("fs");
+const path = require("path");
+const extract = require("extract-zip");
+const glob = require("glob");
+var zip = require("bestzip");
+
+async function repackFunctions(archives) {
+ let serverlessDir = this.serverless.serviceDir;
+ let dotServerlessDir = `${serverlessDir}/.serverless`;
+ let repackDir = `${serverlessDir}/.repack`;
+ // Tell the zip command to forego creating directory entries in the archive, via the ZIPOPT variable.
+ // See: https://linux.die.net/man/1/zip
+ process.env.ZIPOPT = "-D";
+ // Arbitrary, fixed time, used later when setting atime and mtime on files.
+ const time = new Date(1990, 1, 1);
+ // Make sure the temp dir for repacking is recreated cleanly.
+ try {
+ await fs.rmdirSync(repackDir, { recursive: true });
+ } catch (err) {
+ if (err.code !== "ENOENT") {
+ throw err;
+ }
+ }
+ await fs.mkdirSync(repackDir, { recursive: true });
+ // Iterate over each zip. Using a for loop since we need to await inside of it.
+ for (let index = 0; index < archives.length; index++) {
+ console.log(archives[0]);
+ let archive = `${dotServerlessDir}/${archives[index]}`;
+ let funcName = path.basename(archives[index], ".zip");
+ let extractDir = `${repackDir}/${funcName}`;
+ await extract(archive, { dir: extractDir });
+
+ // // Find all files in the archive, and reset last accessed and modified timestamps.
+ // // These timestamps affect the archive's commit hash, and setting them to a fixed
+ // // value is key to achieving idempotency.
+ let files = glob.sync(`${extractDir}/**/*`, {
+ dot: true,
+ silent: true,
+ follow: true,
+ });
+ files.forEach((file) => {
+ fs.utimesSync(file, time, time);
+ });
+
+ // // Repack the zip file.
+ // // Note: The env variable ZIPOPT, set near the top of this file, will take affect
+ // // and will not include direcory entries in the zip.
+ var zipArgs = {
+ source: ".",
+ cwd: extractDir,
+ destination: `../${funcName}.zip.new`,
+ };
+ await zip(zipArgs).catch(function (err) {
+ console.error(err.stack);
+ process.exit(1);
+ });
+
+ // Copy the repacked zip file to the .serverless directory.
+ fs.copyFileSync(`${repackDir}/${funcName}.zip.new`, archive);
+ fs.utimesSync(archive, time, time);
+ }
+
+ // Remove the .repack directory
+ fs.rmdirSync(repackDir, { recursive: true });
+}
+
+repackFunctions(["custom-resources.zip"]);
diff --git a/src/services/api/handlers/search.ts b/src/services/api/handlers/search.ts
new file mode 100644
index 0000000000..1f356ea33a
--- /dev/null
+++ b/src/services/api/handlers/search.ts
@@ -0,0 +1,47 @@
+import { response } from "../libs/handler";
+import { APIGatewayEvent } from "aws-lambda";
+import { getStateFilter } from "../libs/auth/user";
+import * as os from "./../../../libs/opensearch-lib";
+if (!process.env.osDomain) {
+ throw "ERROR: osDomain env variable is required,";
+}
+
+// Handler function to search index
+export const getSearchData = async (event: APIGatewayEvent) => {
+ try {
+ let query: any = {};
+ if (event.body) {
+ query = JSON.parse(event.body);
+ }
+
+ query.query = query?.query || {};
+ query.query.bool = query.query?.bool || {};
+ query.query.bool.must = query.query.bool?.must || [];
+
+ const stateFilter = await getStateFilter(event);
+ if (stateFilter) {
+ query.query.bool.must.push(stateFilter);
+ }
+
+ query.from = query.from || 0;
+ query.size = query.size || 100;
+
+ console.log("Sending query, built as follow:");
+ console.log(JSON.stringify(query, null, 2));
+
+ const results = await os.search(process.env.osDomain, "main", query);
+
+ return response({
+ statusCode: 200,
+ body: results,
+ });
+ } catch (error) {
+ console.error({ error });
+ return response({
+ statusCode: 500,
+ body: { message: "Internal server error" },
+ });
+ }
+};
+
+export const handler = getSearchData;
diff --git a/src/services/api/handlers/tests/createIssue.test.ts b/src/services/api/handlers/tests/createIssue.test.ts
deleted file mode 100644
index 9b4ea3873e..0000000000
--- a/src/services/api/handlers/tests/createIssue.test.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { it, describe, expect, vi, afterAll } from "vitest";
-import type { APIGatewayEvent } from "aws-lambda";
-import { createIssue } from "../createIssue";
-
-const mockEvent: APIGatewayEvent = {} as APIGatewayEvent;
-
-describe("creatIssue", () => {
- afterAll(() => {
- vi.resetAllMocks();
- });
-
- it("returns a 201 status code and an empty issue object", async () => {
- const response = await createIssue(mockEvent);
-
- expect(response.statusCode).toBe(201);
- expect(response.body).toEqual(JSON.stringify({ issue: {} }));
- });
-});
diff --git a/src/services/api/handlers/tests/deleteIssue.test.ts b/src/services/api/handlers/tests/deleteIssue.test.ts
deleted file mode 100644
index 8506d98f6c..0000000000
--- a/src/services/api/handlers/tests/deleteIssue.test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { it, describe, expect, vi, afterAll } from "vitest";
-import { deleteIssue } from "../deleteIssue";
-
-describe("deleteIssue", () => {
- afterAll(() => {
- vi.resetAllMocks();
- });
-
- it("returns 400 if pathParameters is undefined", async () => {
- const event = { pathParameters: null };
- const response = await deleteIssue(event);
- expect(response.statusCode).toEqual(400);
- expect(JSON.parse(response.body)).toEqual({ message: "Invalid request" });
- });
-
- it("returns 400 if pathParameters.id is undefined", async () => {
- const event = { pathParameters: {} };
- const response = await deleteIssue(event);
- expect(response.statusCode).toEqual(400);
- expect(JSON.parse(response.body)).toEqual({ message: "Invalid request" });
- });
-
- it("returns 200 with correct message if pathParameters.id is defined", async () => {
- const id = "123";
- const event = { pathParameters: { id } };
- const response = await deleteIssue(event);
- expect(response.statusCode).toEqual(200);
- expect(JSON.parse(response.body)).toEqual({
- issue: `Issue with ${id} was deleted`,
- });
- });
-});
diff --git a/src/services/api/handlers/tests/getIssue.test.ts b/src/services/api/handlers/tests/getIssue.test.ts
deleted file mode 100644
index 5c37d6909c..0000000000
--- a/src/services/api/handlers/tests/getIssue.test.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { it, describe, expect, vi, afterAll } from "vitest";
-import { getIssue } from "../getIssue";
-
-describe("getIssue", () => {
- afterAll(() => {
- vi.resetAllMocks();
- });
- it("should return 400 Bad Request if id is missing", async () => {
- const event = { pathParameters: {} };
- const result = await getIssue(event);
- expect(result.statusCode).toEqual(400);
- expect(JSON.parse(result.body)).toEqual({ message: "Invalid request" });
- });
-
- it("should return 200 OK with the issue id", async () => {
- const event = { pathParameters: { id: "123" } };
- const result = await getIssue(event);
- expect(result.statusCode).toEqual(200);
- expect(JSON.parse(result.body)).toEqual({
- issue: {
- id: "123",
- title: "My first issue",
- },
- });
- });
-});
diff --git a/src/services/api/handlers/tests/getIssues.test.ts b/src/services/api/handlers/tests/getIssues.test.ts
deleted file mode 100644
index a7fdcfd459..0000000000
--- a/src/services/api/handlers/tests/getIssues.test.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { it, describe, expect, vi, afterAll } from "vitest";
-import { getIssues } from "../getIssues";
-
-describe("getIssues", () => {
- afterAll(() => {
- vi.resetAllMocks();
- });
-
- it("should return 200 OK with the issues", async () => {
- const result = await getIssues();
- expect(result.statusCode).toEqual(200);
- expect(JSON.parse(result.body)).toEqual([]);
- });
-});
diff --git a/src/services/api/handlers/tests/updateIssue.test.ts b/src/services/api/handlers/tests/updateIssue.test.ts
deleted file mode 100644
index d6b4bb7f53..0000000000
--- a/src/services/api/handlers/tests/updateIssue.test.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { it, describe, expect, vi, afterAll } from "vitest";
-import { updateIssue } from "../updateIssue";
-
-describe("updateIssue", () => {
- afterAll(() => {
- vi.resetAllMocks();
- });
-
- it("should return 400 status code and error message when request body is missing or empty", async () => {
- const event = { pathParameters: { id: "123" }, body: "" };
- const response = await updateIssue(event);
- expect(response.statusCode).toBe(400);
- expect(response.body).toEqual(
- JSON.stringify({ message: "Invalid request" })
- );
- });
-
- it("should return 200 status code and success message when issue is updated", async () => {
- const event = {
- pathParameters: { id: "123" },
- body: "{\"title\": \"Updated Title\", \"content\": \"Updated Content\"}",
- };
- const response = await updateIssue(event);
- expect(response.statusCode).toBe(200);
- expect(response.body).toEqual(
- JSON.stringify({ message: "Issue with 123 was updated" })
- );
- });
-});
diff --git a/src/services/api/handlers/updateIssue.ts b/src/services/api/handlers/updateIssue.ts
deleted file mode 100644
index 2ac6ccd41d..0000000000
--- a/src/services/api/handlers/updateIssue.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { response } from "../libs/handler";
-import { issueSchema } from "shared-types";
-import { IssueService } from "../services/issueService";
-import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
-
-const dynamoInstance = new DynamoDBClient({ region: process.env.region });
-
-export const updateIssue = async ({ pathParameters, body }) => {
- const { id } = pathParameters;
-
- try {
- const validIssue = issueSchema.parse(JSON.parse(body));
-
- await new IssueService(dynamoInstance).editIssue({
- id,
- issue: validIssue,
- tableName: process.env.tableName,
- });
-
- return response({
- statusCode: 200,
- });
- } catch (error) {
- console.error({ error });
- return response({
- statusCode: 404,
- body: { message: error },
- });
- }
-};
-
-export const handler = updateIssue;
diff --git a/src/services/api/libs/auth/user.ts b/src/services/api/libs/auth/user.ts
new file mode 100644
index 0000000000..ef699d0e2b
--- /dev/null
+++ b/src/services/api/libs/auth/user.ts
@@ -0,0 +1,132 @@
+import {
+ CognitoIdentityProviderClient,
+ ListUsersCommand,
+ UserType as CognitoUserType,
+} from "@aws-sdk/client-cognito-identity-provider";
+import { CognitoUserAttributes } from "shared-types";
+import { APIGatewayEvent } from "aws-lambda";
+import { isCmsUser } from "shared-utils";
+
+// Retrieve user authentication details from the APIGatewayEvent
+export function getAuthDetails(event: APIGatewayEvent) {
+ const authProvider =
+ event.requestContext.identity.cognitoAuthenticationProvider;
+ const parts = authProvider.split(":");
+ const userPoolIdParts = parts[parts.length - 3].split("/");
+ const userPoolId = userPoolIdParts[userPoolIdParts.length - 1];
+ const userPoolUserId = parts[parts.length - 1];
+
+ return { userId: userPoolUserId, poolId: userPoolId };
+}
+
+// Convert Cognito user attributes to a dictionary format
+function userAttrDict(cognitoUser: CognitoUserType): CognitoUserAttributes {
+ const attributes = {};
+
+ if (cognitoUser.Attributes) {
+ cognitoUser.Attributes.forEach((attribute) => {
+ if (attribute.Value && attribute.Name) {
+ attributes[attribute.Name] = attribute.Value;
+ }
+ });
+ }
+
+ return attributes as CognitoUserAttributes;
+}
+
+// Retrieve and parse user attributes from Cognito using the provided userId and poolId
+export async function lookupUserAttributes(
+ userId: string,
+ poolId: string
+): Promise {
+ const fetchResult = await fetchUserFromCognito(userId, poolId);
+
+ if (fetchResult instanceof Error) {
+ throw fetchResult;
+ }
+
+ const currentUser = fetchResult as CognitoUserType;
+ const attributes = userAttrDict(currentUser);
+
+ return attributes;
+}
+
+// Fetch user data from Cognito based on the provided userId and poolId
+async function fetchUserFromCognito(
+ userID: string,
+ poolID: string
+): Promise {
+ const cognitoClient = new CognitoIdentityProviderClient({
+ region: process.env.region,
+ });
+
+ const subFilter = `sub = "${userID}"`;
+
+ const commandListUsers = new ListUsersCommand({
+ UserPoolId: poolID,
+ Filter: subFilter,
+ });
+
+ try {
+ const listUsersResponse = await cognitoClient.send(commandListUsers);
+
+ if (
+ listUsersResponse.Users === undefined ||
+ listUsersResponse.Users.length !== 1
+ ) {
+ throw new Error("No user found with this sub");
+ }
+
+ const currentUser = listUsersResponse.Users[0];
+ return currentUser;
+ } catch (error) {
+ throw new Error("Error fetching user from Cognito");
+ }
+}
+
+export const isAuthorized = async (
+ event: APIGatewayEvent,
+ stateCode: string
+) => {
+ // Retrieve authentication details of the user
+ const authDetails = getAuthDetails(event);
+
+ // Look up user attributes from Cognito
+ const userAttributes = await lookupUserAttributes(
+ authDetails.userId,
+ authDetails.poolId
+ );
+ return (
+ isCmsUser(userAttributes) ||
+ userAttributes["custom:state"].includes(stateCode)
+ );
+};
+
+export const getStateFilter = async (event: APIGatewayEvent) => {
+ // Retrieve authentication details of the user
+ const authDetails = getAuthDetails(event);
+
+ // Look up user attributes from Cognito
+ const userAttributes = await lookupUserAttributes(
+ authDetails.userId,
+ authDetails.poolId
+ );
+
+ if (!isCmsUser(userAttributes)) {
+ if (userAttributes["custom:state"]) {
+ const filter = {
+ terms: {
+ state: userAttributes["custom:state"]
+ .split(",")
+ .map((state) => state.toLocaleLowerCase()),
+ },
+ };
+ return filter;
+ } else {
+ throw "State user detected, but no associated states. Cannot continue";
+ }
+ } else {
+ console.log("CMS User detected. No state filter required.");
+ return null;
+ }
+};
diff --git a/src/services/api/package.json b/src/services/api/package.json
index cfed2e629f..47236a67ee 100644
--- a/src/services/api/package.json
+++ b/src/services/api/package.json
@@ -6,13 +6,21 @@
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"aws-lambda": "^1.0.7",
+ "bestzip": "^2.2.1",
"eslint": "^8.38.0",
- "eslint-config-custom-server": "*"
+ "eslint-config-custom-server": "*",
+ "extract-zip": "^2.0.1"
},
"dependencies": {
"@aws-sdk/client-dynamodb": "^3.276.0",
+ "@aws-sdk/client-s3": "^3.383.0",
+ "@aws-sdk/client-sts": "^3.382.0",
+ "@aws-sdk/s3-request-presigner": "^3.383.0",
+ "@opensearch-project/opensearch": "^2.3.0",
"libs": "*",
+ "s3-url-parser": "^1.0.3",
"shared-types": "*",
+ "shared-utils": "*",
"zod": "^3.21.4"
},
"version": "0.0.0",
diff --git a/src/services/api/serverless.yml b/src/services/api/serverless.yml
index 82e6b7ac85..debb05364d 100644
--- a/src/services/api/serverless.yml
+++ b/src/services/api/serverless.yml
@@ -1,17 +1,14 @@
service: ${self:custom.project}-api
frameworkVersion: "3"
-package:
- individually: true
plugins:
- - serverless-bundle
+ - serverless-esbuild
- serverless-stack-termination-protection
- "@stratiformdigital/serverless-iam-helper"
- "@stratiformdigital/serverless-s3-security-helper"
+ - serverless-scriptable-plugin
provider:
name: aws
runtime: nodejs18.x
- environment:
- issuesTable: ${param:issuesTableName}
logs:
restApi: true
region: ${env:REGION_A}
@@ -25,17 +22,23 @@ provider:
statements:
- Effect: Allow
Action:
- - dynamodb:Query
- - dynamodb:Scan
- - dynamodb:GetItem
- - dynamodb:PutItem
- - dynamodb:UpdateItem
- - dynamodb:DeleteItem
- - dynamodb:DescribeTable
- - dynamodb:Get*
- - dynamodb:BatchWrite*
- - dynamodb:BatchGet*
+ - es:ESHttpHead
+ - es:ESHttpPost
+ - es:ESHttpGet
+ - es:ESHttpPatch
+ - es:ESHttpDelete
+ - es:ESHttpPut
+ Resource: ${param:osDomainArn}/*
+ - Effect: Allow
+ Action:
+ - cognito-idp:GetUser
+ - cognito-idp:ListUsers
Resource: "*"
+ - Effect: Allow
+ Action:
+ - sts:AssumeRole
+ Resource:
+ - ${self:custom.onemacLegacyS3AccessRoleArn}
custom:
project: ${env:PROJECT}
@@ -46,66 +49,143 @@ custom:
- master
- val
- production
- bundle:
- linting: false
+ vpc: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/vpc, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/vpc}
+ onemacLegacyS3AccessRoleArn: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/onemacLegacyS3AccessRoleArn, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/onemacLegacyS3AccessRoleArn}
+ scriptable:
+ hooks:
+ package:compileEvents: ./handlers/repack.js
+params:
+ master:
+ searchProvisionedConcurrency: 4
+ itemProvisionedConcurrency: 2
+ getAttachmentUrlProvisionedConcurrency: 2
+ val:
+ searchProvisionedConcurrency: 4
+ itemProvisionedConcurrency: 2
+ getAttachmentUrlProvisionedConcurrency: 2
+ production:
+ searchProvisionedConcurrency: 10
+ itemProvisionedConcurrency: 5
+ getAttachmentUrlProvisionedConcurrency: 5
+ default:
+ searchProvisionedConcurrency: 1
+ itemProvisionedConcurrency: 1
+ getAttachmentUrlProvisionedConcurrency: 0
+
functions:
- getIssues:
- handler: handlers/getIssues.handler
- maximumRetryAttempts: 0
- environment:
- tableName: ${param:issuesTableName}
- region: ${self:provider.region}
- events:
- - http:
- path: /issues
- method: get
- cors: true
- getIssue:
- handler: handlers/getIssue.handler
- maximumRetryAttempts: 0
- environment:
- tableName: ${param:issuesTableName}
- region: ${self:provider.region}
- events:
- - http:
- path: /issues/{id}
- method: get
- cors: true
- createIssue:
- handler: handlers/createIssue.handler
+ search:
+ handler: handlers/search.handler
maximumRetryAttempts: 0
environment:
- tableName: ${param:issuesTableName}
region: ${self:provider.region}
+ osDomain: ${param:osDomain}
events:
- http:
- path: /issues
+ path: /search
method: post
cors: true
- deleteIssue:
- handler: handlers/deleteIssue.handler
+ authorizer: aws_iam
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ provisionedConcurrency: ${param:searchProvisionedConcurrency}
+ getAttachmentUrl:
+ handler: handlers/getAttachmentUrl.handler
maximumRetryAttempts: 0
environment:
- tableName: ${param:issuesTableName}
region: ${self:provider.region}
+ osDomain: ${param:osDomain}
+ onemacLegacyS3AccessRoleArn: ${self:custom.onemacLegacyS3AccessRoleArn}
events:
- http:
- path: /issues/{id}
- method: delete
+ path: /getAttachmentUrl
+ method: post
cors: true
- updateIssue:
- handler: handlers/updateIssue.handler
+ authorizer: aws_iam
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ provisionedConcurrency: ${param:getAttachmentUrlProvisionedConcurrency}
+ item:
+ handler: handlers/item.handler
maximumRetryAttempts: 0
environment:
- tableName: ${param:issuesTableName}
region: ${self:provider.region}
+ osDomain: ${param:osDomain}
events:
- http:
- path: /issues/{id}
- method: put
+ path: /item
+ method: post
cors: true
+ authorizer: aws_iam
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ provisionedConcurrency: ${param:itemProvisionedConcurrency}
resources:
Resources:
+ ApiGateway400ErrorCount:
+ Type: AWS::Logs::MetricFilter
+ Properties:
+ LogGroupName: !Ref ApiGatewayLogGroup
+ FilterName: ApiGateway400ErrorCount
+ FilterPattern: '[ip, user, timestamp, request, status = 4*]'
+ MetricTransformations:
+ - MetricValue: "1"
+ DefaultValue: "0"
+ MetricNamespace: "${self:service}-${sls:stage}/ApiGateway/errors"
+ MetricName: "ApiGateway400ErrorCount"
+ Unit: Count
+ ApiGateway400ErrorCountAlarm:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ DatapointsToAlarm: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ AlarmName: "${self:service}-${sls:stage}-400-errors"
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Threshold: 1
+ MetricName: ApiGateway400ErrorCount
+ Namespace: "${self:service}-${sls:stage}/ApiGateway/errors"
+ Statistic: Sum
+ TreatMissingData: notBreaching
+ ApiGateway500ErrorCount:
+ Type: AWS::Logs::MetricFilter
+ Properties:
+ LogGroupName: !Ref ApiGatewayLogGroup
+ FilterName: ApiGateway500ErrorCount
+ FilterPattern: '[ip, user, timestamp, request, status = 5*]'
+ MetricTransformations:
+ - MetricValue: "1"
+ DefaultValue: "0"
+ MetricNamespace: "${self:service}-${sls:stage}/ApiGateway/errors"
+ MetricName: "ApiGateway500ErrorCount"
+ Unit: Count
+
+ # CloudWatch Alarm for API Gateway 500-level Errors
+ ApiGateway500ErrorCountAlarm:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ DatapointsToAlarm: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ AlarmName: "${self:service}-${sls:stage}-500-errors"
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Threshold: 1
+ MetricName: ApiGateway500ErrorCount
+ Namespace: "${self:service}-${sls:stage}/ApiGateway/errors"
+ Statistic: Sum
+ TreatMissingData: notBreaching
GatewayResponseDefault4XX:
Type: "AWS::ApiGateway::GatewayResponse"
Properties:
@@ -122,6 +202,43 @@ resources:
gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
ResponseType: DEFAULT_5XX
RestApiId: !Ref ApiGatewayRestApi
+ LambdaLogMessageMetricFilter:
+ Type: "AWS::Logs::MetricFilter"
+ Properties:
+ LogGroupName: !Ref SearchLogGroup
+ FilterPattern: "ERROR"
+ MetricTransformations:
+ - MetricName: LambdaErrorCount
+ MetricNamespace: "${self:service}-${sls:stage}/lambda-search/Errors"
+ MetricValue: "1"
+ DefaultValue: "0"
+ LambdaErrorCountAlarm:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ AlarmName: ${self:service}-lambda-search-${sls:stage}-errors
+ AlarmDescription: "Lambda Error Count Alarm"
+ MetricName: LambdaErrorCount
+ Namespace: "${self:service}-${sls:stage}/lambda/search-error-count-alarm"
+ Statistic: "Sum"
+ Period: 300
+ EvaluationPeriods: 1
+ Threshold: 1
+ TreatMissingData: notBreaching
+ ComparisonOperator: "GreaterThanOrEqualToThreshold"
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ SecurityGroup:
+ Type: AWS::EC2::SecurityGroup
+ DeletionPolicy: Retain
+ Properties:
+ GroupDescription: Security group for API Search.
+ VpcId: ${self:custom.vpc.id}
+ SecurityGroupEgress:
+ Type: AWS::EC2::SecurityGroupEgress
+ Properties:
+ GroupId: !Ref SecurityGroup
+ IpProtocol: -1
+ CidrIp: 0.0.0.0/0
Outputs:
ApiGatewayRestApiName:
Value: !Ref ApiGatewayRestApi
diff --git a/src/services/api/services/issueService.ts b/src/services/api/services/issueService.ts
deleted file mode 100644
index 78899d2080..0000000000
--- a/src/services/api/services/issueService.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import { v4 } from "uuid";
-import { CreateIssue, Issue } from "shared-types";
-import {
- DynamoDBClient,
- PutItemCommand,
- DeleteItemCommand,
- GetItemCommand,
- ScanCommand,
-} from "@aws-sdk/client-dynamodb";
-import { marshall, unmarshall } from "@aws-sdk/util-dynamodb";
-
-export class IssueService {
- #dynamoInstance: DynamoDBClient;
-
- constructor(dynamoInstance: DynamoDBClient) {
- this.#dynamoInstance = dynamoInstance;
- }
-
- async createIssue({
- issue,
- tableName,
- }: {
- issue: CreateIssue;
- tableName: string;
- }) {
- const id = v4();
- const createdAt = new Date().toISOString();
-
- const input = {
- Item: marshall({ ...issue, id, createdAt }),
- TableName: tableName,
- };
-
- return await this.#dynamoInstance.send(new PutItemCommand(input));
- }
-
- async getIssue({ id, tableName }: { id: string; tableName: string }) {
- const input = new GetItemCommand({
- Key: marshall({ id }),
- TableName: tableName,
- });
-
- const result = await this.#dynamoInstance.send(input);
-
- return unmarshall(result.Item);
- }
-
- async getIssues({ tableName }: { tableName: string }) {
- let items: Issue[] = [];
- let isLastPage = false;
- let lastEvaluatedKey = null;
- while (!isLastPage) {
- const data = await this.#dynamoInstance.send(
- new ScanCommand({
- TableName: tableName,
- ExclusiveStartKey: lastEvaluatedKey,
- })
- );
- items = [...items, ...data.Items.map((item) => unmarshall(item))];
- lastEvaluatedKey = data.LastEvaluatedKey;
- isLastPage = !lastEvaluatedKey;
- }
- return items;
- }
-
- async deleteIssue({ id, tableName }: { id: string; tableName: string }) {
- const input = { Key: marshall({ id }), TableName: tableName };
-
- return await this.#dynamoInstance.send(new DeleteItemCommand(input));
- }
-
- async editIssue({
- id,
- issue,
- tableName,
- }: {
- id: string;
- issue: Omit;
- tableName: string;
- }) {
- const updatedAt = new Date().toISOString();
-
- const input = {
- Item: marshall({ ...issue, id, updatedAt }),
- TableName: tableName,
- };
- const result = await this.#dynamoInstance.send(new PutItemCommand(input));
-
- return result;
- }
-}
diff --git a/src/services/api/services/seatoolService.ts b/src/services/api/services/seatoolService.ts
new file mode 100644
index 0000000000..4b804aef5b
--- /dev/null
+++ b/src/services/api/services/seatoolService.ts
@@ -0,0 +1,35 @@
+import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb";
+import { unmarshall } from "@aws-sdk/util-dynamodb";
+
+export class SeatoolService {
+ #dynamoInstance: DynamoDBClient;
+
+ constructor(dynamoInstance: DynamoDBClient) {
+ this.#dynamoInstance = dynamoInstance;
+ }
+
+ async getIssues({
+ tableName,
+ stateCode,
+ }: {
+ tableName: string;
+ stateCode: string;
+ }) {
+ const data = await this.#dynamoInstance.send(
+ new QueryCommand({
+ TableName: tableName,
+ IndexName: "STATE_CODE-SUBMISSION_DATE-index",
+ KeyConditionExpression: "STATE_CODE = :state",
+
+ ExpressionAttributeValues: {
+ ":state": { S: stateCode },
+ },
+
+ ScanIndexForward: false,
+ Limit: 300,
+ })
+ );
+
+ return data.Items.map((item) => unmarshall(item));
+ }
+}
diff --git a/src/services/database/.gitignore b/src/services/auth/.gitignore
similarity index 100%
rename from src/services/database/.gitignore
rename to src/services/auth/.gitignore
diff --git a/src/services/auth/README.md b/src/services/auth/README.md
new file mode 100644
index 0000000000..c207b32a75
--- /dev/null
+++ b/src/services/auth/README.md
@@ -0,0 +1,26 @@
+# ui-auth
+
+## Configuration - AWS Systems Manager Parameter Store (SSM)
+
+The following values are used to configure the deployment of this service (see below for more background and context):
+| Parameter | Required? | Purpose |
+| --- | :---: | --- |
+| /{$PROJECT}/{$STAGE \|\| "default"}/iam/path | N | Specifies the [IAM Path](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) at which all IAM objects should be created.|
+| /{$PROJECT}/{$STAGE \|\| "default"}/iam/permissionsBoundaryPolicy | N | Specifies the [IAM Permissions Boundary](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) that should be attached to all IAM objects.|
+| /{$PROJECT}/{$STAGE \|\| "default"}/sesSourceEmailAddress | N | The email address with which the appication sends emails. This email address must be verified in SES and your AWS account must be [out of the SES Sandbox](https://docs.aws.amazon.com/ses/latest/dg/request-production-access.html). Note: You do not need to set this SSM parameter to deploy this service and the application as a whole. However, if not set, the 'send user a submission confirmation email' functionality will not be functional.|
+| /{$PROJECT}/{$STAGE \|\| "default"}/sesRegion | N | The region in which sesSourceEmailAddress (see above) exists. By default, the deployment will assume the email exists as a verified identity in the same region to which the application is being deployed. So if you're deploying to us-west-2, the deployment will look for the email address in us-west-2 by default. However, if you wanted to make use of an already verified email in another region for convenience's sake, this parameter allows for that. So if you're deploying to us-west-2 but want to use a verified identity in us-east-1, set this parameter to us-east-1.|
+| /{$PROJECT}/{$STAGE}/okta_metadata_url | N | The SAML Metadata url for Okta, gotten from Okta's admin console from the app. Specifying this parameter for a stage configures the application's Cognito to be backed with Okta. NOTE: this variable does not accept a default SSM parameter; any parameter set must be scoped to a specific stage.|
+| /{$PROJECT}/{$STAGE \|\| "default"}/cognito/bootstrapUsers/enabled | N | Set this to 'true' to configure several CI/test users in the environment during deployment. For safety reasons, this is off by default. A recommended approach is to set this to 'true' by default, and set a stage specific variable for staging/production to be 'false', if desired.|
+| /{$PROJECT}/{$STAGE \|\| "default"}/cognito/bootstrapUsers/password | N | This parameter holds the password for the CI/test users optionally generated during deployment (see cognito/bootstrapUsers/enabled above). There is no default; if you enable bootstrapUsers functionality, set a password to be used.|
+
+This project uses [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html), often shortened to just SSM, to inject environment specific, project specific, and/or sensitive information into the deployment.
+
+SSM parameters for this project have a top level namespace of /{$PROJECT}/. The PROJECT environment variable resolves to the github repo name.
+
+- For example: SSM Parameters for this project are all set under /webapp-accelerator/
+
+This project has also implemented a pattern for specifying defaults for variables in default SSM parameters, while allowing for stage (branch, environment) specific overrides in stage specific SSM parameters.
+
+- For example: Setting the SSM parameter "/webapp-accelerator/default/iam/permissionsBoundaryPolicy" to be "arn:aws:xxxxxx" in SSM would apply "arn:aws:xxxxxx" to all branches by default. However, if you also set "/webapp-accelerator/main/iam/permissionsBoundaryPolicy" to "arn:aws:yyyyyy", the main specific value of "arn:aws:yyyyyy" would take effect on just the main branch. This is the gist of stage specific overrides, and it's the nature of the {$STAGE || "default"} syntax above.
+
+Please see the [SSM wiki section](wikilink) for more information.
diff --git a/src/services/auth/handlers/createUsers.ts b/src/services/auth/handlers/createUsers.ts
new file mode 100644
index 0000000000..b94e6e54e4
--- /dev/null
+++ b/src/services/auth/handlers/createUsers.ts
@@ -0,0 +1,35 @@
+import * as cognitolib from "../../../libs/cognito-lib";
+const userPoolId = process.env.userPoolId;
+const users = require("../libs/users.json");
+
+exports.handler = async function myHandler() {
+ console.log("USER POOL ID: ");
+ console.log(userPoolId);
+
+ for (var i = 0; i < users.length; i++) {
+ console.log(users[i]);
+ var poolData = {
+ UserPoolId: userPoolId,
+ Username: users[i].username,
+ UserAttributes: users[i].attributes,
+ MessageAction: "SUPPRESS",
+ };
+ var passwordData = {
+ Password: process.env.bootstrapUsersPassword,
+ UserPoolId: userPoolId,
+ Username: users[i].username,
+ Permanent: true,
+ };
+ var attributeData = {
+ Username: users[i].username,
+ UserPoolId: userPoolId,
+ UserAttributes: users[i].attributes,
+ };
+
+ await cognitolib.createUser(poolData);
+ //userCreate must set a temp password first, calling setPassword to set the password configured in SSM for consistent dev login
+ await cognitolib.setPassword(passwordData);
+ //if user exists and attributes are updated in this file updateUserAttributes is needed to update the attributes
+ await cognitolib.updateUserAttributes(attributeData);
+ }
+}
\ No newline at end of file
diff --git a/src/services/auth/libs/users.json b/src/services/auth/libs/users.json
new file mode 100644
index 0000000000..105fd039a2
--- /dev/null
+++ b/src/services/auth/libs/users.json
@@ -0,0 +1,263 @@
+[
+ {
+ "username": "george@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "george@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "George"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Harrison"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": "VA,OH,SC,CO,GA,MD"
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "state-submitter"
+ }
+ ]
+ },
+ {
+ "username": "readonly@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "readonly@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "Read"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Only"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": ""
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "cms-read-only"
+ }
+ ]
+ },
+ {
+ "username": "reviewer@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "reviewer@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "CMS"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Reviewer"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": ""
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "cms-reviewer"
+ }
+ ]
+ },
+ {
+ "username": "helpdesk@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "helpdesk@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "CMS"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Helpdesk"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": ""
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "helpdesk"
+ }
+ ]
+ },
+ {
+ "username": "cmsadmin@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "cmsadmin@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "CMS"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Admin"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": ""
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "cms-system-admin"
+ }
+ ]
+ },
+ {
+ "username": "approver@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "approver@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "CMS"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Approver"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": ""
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "cms-role-approver"
+ }
+ ]
+ },
+ {
+ "username": "submitter@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "submitter@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "State"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Submitter"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": "CO"
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "state-submitter"
+ }
+ ]
+ },
+ {
+ "username": "stateadmin@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "stateadmin@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "State"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Admin"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": "VA"
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "state-system-admin"
+ }
+ ]
+ },
+ {
+ "username": "statemulti@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "statemulti@example.com"
+ },
+ {
+ "Name": "given_name",
+ "Value": "State"
+ },
+ {
+ "Name": "family_name",
+ "Value": "Multi"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ },
+ {
+ "Name": "custom:state",
+ "Value": "CA,NY,MD"
+ },
+ {
+ "Name": "custom:cms-roles",
+ "Value": "state-system-admin,state-submitter"
+ }
+ ]
+ }
+]
diff --git a/src/services/auth/package.json b/src/services/auth/package.json
new file mode 100644
index 0000000000..543b1a2a93
--- /dev/null
+++ b/src/services/auth/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "auth",
+ "private": true,
+ "version": "0.0.0"
+}
diff --git a/src/services/auth/serverless.yml b/src/services/auth/serverless.yml
new file mode 100644
index 0000000000..aaee44f6b1
--- /dev/null
+++ b/src/services/auth/serverless.yml
@@ -0,0 +1,226 @@
+service: ${self:custom.project}-auth
+frameworkVersion: "3"
+plugins:
+ - serverless-esbuild
+ - serverless-stack-termination-protection
+ - serverless-plugin-scripts
+ - "@stratiformdigital/serverless-iam-helper"
+ - "@stratiformdigital/serverless-s3-security-helper"
+provider:
+ name: aws
+ runtime: nodejs18.x
+ region: ${env:REGION_A}
+ stackTags:
+ PROJECT: ${self:custom.project}
+ SERVICE: ${self:service}
+ iam:
+ role:
+ path: /delegatedadmin/developer/
+ permissionsBoundary: arn:aws:iam::${aws:accountId}:policy/cms-cloud-admin/developer-boundary-policy
+ statements:
+ - Effect: "Allow"
+ Action:
+ - cognito-idp:AdminCreateUser
+ - cognito-idp:AdminSetUserPassword
+ - cognito-idp:AdminUpdateUserAttributes
+ Resource: !GetAtt CognitoUserPool.Arn
+
+custom:
+ project: ${env:PROJECT} # This should always be set by direnv.
+ accountId: !Sub "${AWS::AccountId}"
+ serverlessTerminationProtection:
+ stages:
+ - master
+ - val
+ - production
+ cognitoEmailAddress: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/cognitoEmailAddress, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/cognitoEmailAddress, ""}
+ okta_metadata_url: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/okta_metadata_url, ""}
+ bootstrapUsers: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapUsers, param:bootstrapUsers}
+ bootstrapUsersPassword: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapUsersPassword, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/bootstrapUsersPassword}
+ scripts:
+ hooks:
+ deploy:finalize: |
+ if [ "${self:custom.bootstrapUsers}" = "true" ];
+ then
+ aws lambda invoke --region ${self:provider.region} --function-name ${self:service}-${sls:stage}-bootstrapUsers --invocation-type RequestResponse /dev/null
+ fi
+
+params:
+ val:
+ bootstrapUsers: "true"
+ production:
+ bootstrapUsers: "false"
+ default:
+ bootstrapUsers: "true"
+
+functions:
+ bootstrapUsers:
+ handler: handlers/createUsers.handler
+ environment:
+ userPoolId: !Ref CognitoUserPool
+ bootstrapUsersPassword: ${self:custom.bootstrapUsersPassword}
+ region: ${self:provider.region}
+
+resources:
+ Conditions:
+ CreateEmailConfiguration:
+ Fn::Not:
+ - Fn::Equals:
+ - ""
+ - ${self:custom.cognitoEmailAddress}
+ BackWithOkta:
+ Fn::Not:
+ - Fn::Equals:
+ - ""
+ - ${self:custom.okta_metadata_url}
+ Resources:
+ CognitoUserPool:
+ Type: AWS::Cognito::UserPool
+ Properties:
+ AdminCreateUserConfig:
+ AllowAdminCreateUserOnly: True
+ UserPoolName: ${sls:stage}-user-pool
+ UsernameAttributes:
+ - email
+ AutoVerifiedAttributes:
+ - email
+ EmailConfiguration:
+ Fn::If:
+ - CreateEmailConfiguration
+ - EmailSendingAccount: DEVELOPER
+ SourceArn: !Sub arn:aws:ses:${self:provider.region}:${AWS::AccountId}:identity/${self:custom.cognitoEmailAddress}
+ - EmailSendingAccount: COGNITO_DEFAULT
+ Schema:
+ - Name: given_name
+ AttributeDataType: String
+ Mutable: true
+ Required: true
+ - Name: family_name
+ AttributeDataType: String
+ Mutable: true
+ Required: true
+ - Name: phone_number
+ AttributeDataType: String
+ Mutable: true
+ Required: false
+ - Name: state
+ AttributeDataType: String
+ Mutable: true
+ Required: false
+ - Name: cms-roles
+ AttributeDataType: String
+ Mutable: true
+ Required: false
+ CognitoUserPoolClient:
+ Type: AWS::Cognito::UserPoolClient
+ Properties:
+ ClientName: ${sls:stage}-user-pool-client
+ UserPoolId: !Ref CognitoUserPool
+ ExplicitAuthFlows:
+ - ADMIN_NO_SRP_AUTH
+ GenerateSecret: false # pragma: allowlist secret
+ AllowedOAuthFlows:
+ - code
+ AllowedOAuthFlowsUserPoolClient: true
+ AllowedOAuthScopes:
+ - email
+ - openid
+ - aws.cognito.signin.user.admin # Needed to call Auth.currentUserInfo()
+ CallbackURLs:
+ - ${param:ApplicationEndpointUrl}
+ - http://localhost:5000/
+ DefaultRedirectURI: ${param:ApplicationEndpointUrl}
+ LogoutURLs:
+ - ${param:ApplicationEndpointUrl}
+ - http://localhost:5000/
+ SupportedIdentityProviders:
+ - COGNITO
+ - Fn::If:
+ - BackWithOkta
+ - !Ref OktaUserPoolIdentityProvider
+ - !Ref AWS::NoValue
+ AccessTokenValidity: 30
+ IdTokenValidity: 30
+ RefreshTokenValidity: 12
+ TokenValidityUnits:
+ AccessToken: minutes
+ IdToken: minutes
+ RefreshToken: hours
+ UserPoolDomain:
+ Type: AWS::Cognito::UserPoolDomain
+ Properties:
+ Domain:
+ Fn::Join:
+ - ""
+ - - ${sls:stage}-login-
+ - Ref: CognitoUserPoolClient
+ UserPoolId:
+ Ref: CognitoUserPool
+ OktaUserPoolIdentityProvider:
+ Condition: BackWithOkta
+ Type: AWS::Cognito::UserPoolIdentityProvider
+ Properties:
+ AttributeMapping:
+ email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
+ given_name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
+ family_name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
+ IdpIdentifiers:
+ - IdpIdentifier
+ ProviderDetails:
+ MetadataURL: ${self:custom.okta_metadata_url}
+ ProviderName: Okta
+ ProviderType: SAML
+ UserPoolId:
+ Ref: CognitoUserPool
+ CognitoIdentityPool:
+ Type: AWS::Cognito::IdentityPool
+ Properties:
+ IdentityPoolName: ${sls:stage}IdentityPool
+ AllowUnauthenticatedIdentities: false
+ CognitoIdentityProviders:
+ - ClientId: !Ref CognitoUserPoolClient
+ ProviderName: !GetAtt CognitoUserPool.ProviderName
+ CognitoIdentityPoolRoles:
+ Type: AWS::Cognito::IdentityPoolRoleAttachment
+ Properties:
+ IdentityPoolId: !Ref CognitoIdentityPool
+ Roles:
+ authenticated: !GetAtt CognitoAuthRole.Arn
+ CognitoAuthRole:
+ Type: AWS::IAM::Role
+ Properties:
+ AssumeRolePolicyDocument:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Principal:
+ Federated: "cognito-identity.amazonaws.com"
+ Action:
+ - "sts:AssumeRoleWithWebIdentity"
+ Condition:
+ StringEquals:
+ "cognito-identity.amazonaws.com:aud": !Ref CognitoIdentityPool
+ "ForAnyValue:StringLike":
+ "cognito-identity.amazonaws.com:amr": authenticated
+ Policies:
+ - PolicyName: "CognitoAuthorizedPolicy"
+ PolicyDocument:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Action:
+ - "execute-api:Invoke"
+ Resource: !Sub arn:aws:execute-api:${self:provider.region}:${AWS::AccountId}:${param:ApiName}/*
+ Outputs:
+ UserPoolId:
+ Value: !Ref CognitoUserPool
+ UserPoolClientId:
+ Value: !Ref CognitoUserPoolClient
+ UserPoolClientDomain:
+ Value: !Sub ${UserPoolDomain}.auth.${self:provider.region}.amazoncognito.com
+ IdentityPoolId:
+ Value: !Ref CognitoIdentityPool
+ Region:
+ Value: !Sub ${AWS::Region}
+ BootstrapUsersPassword:
+ Value: ${self:custom.bootstrapUsersPassword}
\ No newline at end of file
diff --git a/src/services/database/tsconfig.json b/src/services/auth/tsconfig.json
similarity index 100%
rename from src/services/database/tsconfig.json
rename to src/services/auth/tsconfig.json
diff --git a/src/services/dashboard/serverless.yml b/src/services/dashboard/serverless.yml
index d7f329960b..c2b5434d1d 100644
--- a/src/services/dashboard/serverless.yml
+++ b/src/services/dashboard/serverless.yml
@@ -2,11 +2,8 @@ service: ${self:custom.project}-dashboard
frameworkVersion: "3"
-package:
- individually: true
-
plugins:
- - serverless-bundle
+ - serverless-esbuild
- serverless-stack-termination-protection
- "@stratiformdigital/serverless-iam-helper"
- "@stratiformdigital/serverless-s3-security-helper"
@@ -36,8 +33,6 @@ custom:
- master
- val
- production
- bundle:
- linting: false
functions:
templatizeCloudWatchDashboard:
handler: handlers/templatizeCloudWatchDashboard.handler
diff --git a/src/services/dashboard/templateDashboard.txt b/src/services/dashboard/templateDashboard.txt
index 1660948ff8..a057ba8535 100644
--- a/src/services/dashboard/templateDashboard.txt
+++ b/src/services/dashboard/templateDashboard.txt
@@ -22,7 +22,7 @@
"x": 0,
"type": "text",
"properties": {
- "markdown": "## alerts service",
+ "markdown": "## cloudfront metrics",
"background": "transparent"
}
},
@@ -38,27 +38,191 @@
}
},
{
- "type": "metric",
- "x": 0,
- "y": 4,
- "width": 8,
"height": 8,
+ "width": 8,
+ "y": 48,
+ "x": 0,
+ "type": "metric",
"properties": {
"metrics": [
[
"AWS/SNS",
"NumberOfMessagesPublished",
"TopicName",
- "Alerts-base-alerts-${sls:stage}"
+ "Alerts-om-alerts-${sls:stage}"
]
],
"view": "timeSeries",
"stacked": false,
"region": "${env:REGION_A}",
- "title": "SNS Topic",
+ "title": "${sls:stage} SNS Topic",
"period": 60,
"stat": "Sum"
}
+ },
+ {
+ "height": 7,
+ "width": 8,
+ "y": 40,
+ "x": 0,
+ "type": "alarm",
+ "properties": {
+ "title": "Mako Dashboard ${sls:stage} Alarms",
+ "alarms": [
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-api-lambda-search-${sls:stage}-errors",
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkOnemacErrorCount",
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-ONEMAC-validation-error",
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-SEATOOL-validation-error",
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-data-${sls:stage}-sinkSeatoolErrorsCount"
+ ]
+ }
+ },
+ {
+ "height": 1,
+ "width": 8,
+ "y": 20,
+ "x": 0,
+ "type": "text",
+ "properties": {
+ "markdown": "## api gateway",
+ "background": "transparent"
+ }
+ },
+ {
+ "height": 1,
+ "width": 9,
+ "y": 39,
+ "x": 0,
+ "type": "text",
+ "properties": {
+ "markdown": "## opensearch",
+ "background": "transparent"
+ }
+ },
+ {
+ "height": 1,
+ "width": 24,
+ "y": 47,
+ "x": 0,
+ "type": "text",
+ "properties": {
+ "markdown": "## alerts service",
+ "background": "transparent"
+ }
+ },
+ {
+ "height": 2,
+ "width": 12,
+ "y": 21,
+ "x": 0,
+ "type": "alarm",
+ "properties": {
+ "title": "MAKO Api Gateway ${sls:stage} Errors",
+ "alarms": [
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-api-${sls:stage}-400-errors",
+ "arn:aws:cloudwatch:${env:REGION_A}:${aws:accountId}:alarm:om-api-${sls:stage}-500-errors"
+ ]
+ }
+ },
+ {
+ "height": 16,
+ "width": 24,
+ "y": 23,
+ "x": 0,
+ "type": "explorer",
+ "properties": {
+ "metrics": [
+ {
+ "metricName": "Count",
+ "resourceType": "AWS::ApiGateway::RestApi",
+ "stat": "Sum"
+ },
+ {
+ "metricName": "5XXError",
+ "resourceType": "AWS::ApiGateway::RestApi",
+ "stat": "Sum"
+ },
+ {
+ "metricName": "4XXError",
+ "resourceType": "AWS::ApiGateway::RestApi",
+ "stat": "Sum"
+ },
+ {
+ "metricName": "Latency",
+ "resourceType": "AWS::ApiGateway::RestApi",
+ "stat": "Average"
+ }
+ ],
+ "labels": [
+ {
+ "key": "STAGE",
+ "value": "${sls:stage}"
+ }
+ ],
+ "widgetOptions": {
+ "legend": {
+ "position": "bottom"
+ },
+ "view": "timeSeries",
+ "stacked": false,
+ "rowsPerPage": 50,
+ "widgetsPerRow": 2
+ },
+ "period": 60,
+ "splitBy": "",
+ "region": "${env:REGION_A}",
+ "title": "API Gateway Explorer"
+ }
+ },
+ {
+ "height": 16,
+ "width": 24,
+ "y": 4,
+ "x": 0,
+ "type": "explorer",
+ "properties": {
+ "metrics": [
+ {
+ "metricName": "Requests",
+ "resourceType": "AWS::CloudFront::Distribution",
+ "stat": "Sum"
+ },
+ {
+ "metricName": "TotalErrorRate",
+ "resourceType": "AWS::CloudFront::Distribution",
+ "stat": "Average"
+ },
+ {
+ "metricName": "4xxErrorRate",
+ "resourceType": "AWS::CloudFront::Distribution",
+ "stat": "Average"
+ },
+ {
+ "metricName": "5xxErrorRate",
+ "resourceType": "AWS::CloudFront::Distribution",
+ "stat": "Average"
+ }
+ ],
+ "labels": [
+ {
+ "key": "STAGE",
+ "value": "${sls:stage}"
+ }
+ ],
+ "widgetOptions": {
+ "legend": {
+ "position": "bottom"
+ },
+ "view": "timeSeries",
+ "stacked": false,
+ "rowsPerPage": 50,
+ "widgetsPerRow": 2
+ },
+ "period": 60,
+ "splitBy": "",
+ "region": "${env:REGION_A}",
+ "title": "Cloudfront Metric Explorer"
+ }
}
]
}
\ No newline at end of file
diff --git a/src/services/database/.eslintrc.js b/src/services/data/.eslintrc.js
similarity index 100%
rename from src/services/database/.eslintrc.js
rename to src/services/data/.eslintrc.js
diff --git a/src/services/data/.gitignore b/src/services/data/.gitignore
new file mode 100644
index 0000000000..2b48c8bd54
--- /dev/null
+++ b/src/services/data/.gitignore
@@ -0,0 +1,6 @@
+# package directories
+node_modules
+jspm_packages
+
+# Serverless directories
+.serverless
\ No newline at end of file
diff --git a/src/services/data/handlers/createKibanaUsers.ts b/src/services/data/handlers/createKibanaUsers.ts
new file mode 100644
index 0000000000..d31b3d0889
--- /dev/null
+++ b/src/services/data/handlers/createKibanaUsers.ts
@@ -0,0 +1,35 @@
+import * as cognitolib from "../../../libs/cognito-lib";
+import * as users from "../libs/users.json";
+const kibanaUserPoolId = process.env.kibanaUserPoolId;
+
+exports.handler = async function myHandler() {
+ console.log("KIBANA USER POOL ID: ");
+ console.log(kibanaUserPoolId);
+
+ for (let i = 0; i < users.length; i++) {
+ console.log(users[i]);
+ const poolData = {
+ UserPoolId: kibanaUserPoolId,
+ Username: users[i].username,
+ UserAttributes: users[i].attributes,
+ MessageAction: "SUPPRESS",
+ };
+ const passwordData = {
+ Password: process.env.bootstrapUsersPassword,
+ UserPoolId: kibanaUserPoolId,
+ Username: users[i].username,
+ Permanent: true,
+ };
+ const attributeData = {
+ Username: users[i].username,
+ UserPoolId: kibanaUserPoolId,
+ UserAttributes: users[i].attributes,
+ };
+
+ await cognitolib.createUser(poolData);
+ // Set a temp password first, and then set the password configured in SSM for consistent dev login
+ await cognitolib.setPassword(passwordData);
+ // If user exists and attributes are updated in this file, updateUserAttributes is needed to update the attributes
+ await cognitolib.updateUserAttributes(attributeData);
+ }
+};
diff --git a/src/services/data/handlers/mapRole.ts b/src/services/data/handlers/mapRole.ts
new file mode 100644
index 0000000000..d97cf95db2
--- /dev/null
+++ b/src/services/data/handlers/mapRole.ts
@@ -0,0 +1,38 @@
+import { Handler } from "aws-lambda";
+import { send, SUCCESS, FAILED } from "cfn-response-async";
+type ResponseStatus = typeof SUCCESS | typeof FAILED;
+import * as os from "./../../../libs/opensearch-lib";
+
+export const handler: Handler = async (event, context) => {
+ console.log("request:", JSON.stringify(event, undefined, 2));
+ const responseData = {};
+ let responseStatus: ResponseStatus = SUCCESS;
+ try {
+ if (event.RequestType == "Create" || event.RequestType == "Update") {
+ if (!event.ResourceProperties.MasterRoleToAssume) {
+ throw "ERROR: Property MasterRoleToAssume is required, but was not supplied.";
+ }
+ if (!event.ResourceProperties.OSRoleName) {
+ throw "ERROR: Property OSRoleName is required, but was not supplied.";
+ }
+ if (!event.ResourceProperties.IAMRoleName) {
+ throw "ERROR: Property IAMRoleName is required, but was not supplied.";
+ }
+ if (!process.env.osDomain) {
+ throw "ERROR: process.env.osDomain must be defined";
+ }
+ await os.mapRole(
+ process.env.osDomain,
+ event.ResourceProperties.MasterRoleToAssume,
+ event.ResourceProperties.OSRoleName,
+ event.ResourceProperties.IAMRoleName
+ );
+ }
+ } catch (error) {
+ console.log(error);
+ responseStatus = FAILED;
+ } finally {
+ console.log("finally");
+ await send(event, context, responseStatus, responseData);
+ }
+};
diff --git a/src/services/data/handlers/reindex.ts b/src/services/data/handlers/reindex.ts
new file mode 100644
index 0000000000..419c0bb2f9
--- /dev/null
+++ b/src/services/data/handlers/reindex.ts
@@ -0,0 +1,144 @@
+import { Handler } from "aws-lambda";
+import { Kafka } from "kafkajs";
+import {
+ LambdaClient,
+ ListEventSourceMappingsCommand,
+ UpdateEventSourceMappingCommand,
+} from "@aws-sdk/client-lambda";
+import * as os from "./../../../libs/opensearch-lib";
+
+export const toggleTriggers: Handler = async () => {
+ try {
+ if (!process.env.functions) {
+ throw "process.env.functions cannot be undefined";
+ }
+ const enabled = process.env.enabled === "true";
+ for (const functionName of process.env.functions.split(",")) {
+ const lambdaClient = new LambdaClient({});
+ const response = await lambdaClient.send(
+ new ListEventSourceMappingsCommand({ FunctionName: functionName })
+ );
+ for (const eventSourceMapping of response.EventSourceMappings || []) {
+ if (eventSourceMapping.SelfManagedKafkaEventSourceConfig) {
+ console.log(
+ `Disabling all Kafka triggers for function: ${functionName}`
+ );
+ await lambdaClient.send(
+ new UpdateEventSourceMappingCommand({
+ UUID: eventSourceMapping.UUID,
+ Enabled: enabled,
+ })
+ );
+ }
+ }
+ }
+ } catch (error) {
+ console.error(error);
+ throw error;
+ }
+};
+
+export const getConsumerGroupStatus: Handler = async (
+ event,
+ context,
+ callback
+) => {
+ const response = {
+ statusCode: 200,
+ ready: false,
+ };
+ try {
+ if (!process.env.functions) {
+ throw "process.env.functions cannot be undefined";
+ }
+ const triggerInfo: any[] = [];
+ for (const functionName of process.env.functions.split(",")) {
+ console.log(`Getting consumer groups for function: ${functionName}`);
+ triggerInfo.push(...(await getConsumerGroupInfo(functionName)));
+ }
+ const kafka = new Kafka({
+ clientId: "consumerGroupResetter",
+ brokers: process.env.brokerString?.split(",") || [],
+ ssl: true,
+ });
+ const admin = kafka.admin();
+ const info = await admin.describeGroups(triggerInfo.map((a) => a.groupId));
+ const statuses = info.groups.map((a) => a.state.toString());
+ console.log(statuses);
+ await admin.disconnect();
+ response.ready = !statuses.includes("Stable") ? true : false;
+ console.log(response);
+ } catch (error) {
+ console.error(error);
+ throw "asdf";
+ } finally {
+ callback(null, response);
+ }
+};
+
+export const resetConsumerGroups: Handler = async () => {
+ try {
+ if (!process.env.functions) {
+ throw "process.env.functions cannot be undefined";
+ }
+ const triggerInfo: any[] = [];
+ for (const functionName of process.env.functions.split(",")) {
+ console.log(`Getting consumer groups for function: ${functionName}`);
+ triggerInfo.push(...(await getConsumerGroupInfo(functionName)));
+ }
+ const kafka = new Kafka({
+ clientId: "consumerGroupResetter",
+ brokers: process.env.brokerString?.split(",") || [],
+ ssl: true,
+ });
+ const admin = kafka.admin();
+ for (const trigger of triggerInfo) {
+ for (const topic of trigger.topics) {
+ console.log(`Resetting group ${trigger.groupId} for topic ${topic}`);
+ await admin.resetOffsets({
+ groupId: trigger.groupId,
+ topic,
+ earliest: true,
+ });
+ }
+ }
+ await admin.disconnect();
+ } catch (error) {
+ console.error(error);
+ throw error;
+ }
+};
+
+async function getConsumerGroupInfo(functionName: string) {
+ const lambdaClient = new LambdaClient({});
+ const response = await lambdaClient.send(
+ new ListEventSourceMappingsCommand({ FunctionName: functionName })
+ );
+ const triggerInfo = [];
+ for (const eventSourceMapping of response.EventSourceMappings || []) {
+ if (eventSourceMapping.SelfManagedKafkaEventSourceConfig) {
+ triggerInfo.push({
+ groupId:
+ eventSourceMapping.SelfManagedKafkaEventSourceConfig.ConsumerGroupId,
+ topics: eventSourceMapping.Topics,
+ });
+ }
+ }
+ return triggerInfo;
+}
+
+export const deleteIndex: Handler = async () => {
+ try {
+ if (!process.env.osDomain) {
+ throw "process.env.osDomain cannot be undefined";
+ }
+ await os.deleteIndex(process.env.osDomain, "main");
+ } catch (error: any) {
+ if (error.meta.body.error.type == "index_not_found_exception") {
+ console.log("Index does not exist.");
+ } else {
+ console.error(error);
+ throw error;
+ }
+ }
+};
diff --git a/src/services/data/handlers/sink.ts b/src/services/data/handlers/sink.ts
new file mode 100644
index 0000000000..0892548479
--- /dev/null
+++ b/src/services/data/handlers/sink.ts
@@ -0,0 +1,155 @@
+import { Handler } from "aws-lambda";
+import { decode } from "base-64";
+import * as os from "./../../../libs/opensearch-lib";
+import {
+ SeaToolRecordsToDelete,
+ SeaToolTransform,
+ transformSeatoolData,
+} from "shared-types/seatool";
+import {
+ OneMacRecordsToDelete,
+ OneMacTransform,
+ transformOnemac,
+} from "shared-types/onemac";
+
+if (!process.env.osDomain) {
+ throw "ERROR: process.env.osDomain is required,";
+}
+const osDomain: string = process.env.osDomain;
+
+export const seatool: Handler = async (event) => {
+ const seaToolRecords: (SeaToolTransform | SeaToolRecordsToDelete)[] = [];
+ const docObject: Record =
+ {};
+ const rawArr: any[] = [];
+
+ for (const recordKey of Object.keys(event.records)) {
+ for (const seatoolRecord of event.records[recordKey] as {
+ key: string;
+ value: string;
+ }[]) {
+ const { key, value } = seatoolRecord;
+
+ if (value) {
+ const id: string = JSON.parse(decode(key));
+ const record = { id, ...JSON.parse(decode(value)) };
+ const validPlanTypeIds = [122, 123, 124, 125];
+ const result = transformSeatoolData(id).safeParse(record);
+ if (result.success === false) {
+ console.log(
+ "SEATOOL Validation Error. The following record failed to parse: ",
+ JSON.stringify(record),
+ "Because of the following Reason(s):",
+ result.error.message
+ );
+ } else {
+ if (validPlanTypeIds.includes(result.data.planTypeId)) {
+ docObject[id] = result.data;
+ }
+ rawArr.push(record);
+ }
+ } else {
+ // to handle deletes
+ const id: string = JSON.parse(decode(key));
+ const seaTombstone: SeaToolRecordsToDelete = {
+ id,
+ actionType: undefined,
+ actionTypeId: undefined,
+ approvedEffectiveDate: undefined,
+ authority: undefined,
+ changedDate: undefined,
+ leadAnalystName: undefined,
+ leadAnalystOfficerId: undefined,
+ planType: undefined,
+ planTypeId: undefined,
+ proposedDate: undefined,
+ raiReceivedDate: undefined,
+ raiRequestedDate: undefined,
+ state: undefined,
+ cmsStatus: undefined,
+ stateStatus: undefined,
+ submissionDate: undefined,
+ };
+
+ docObject[id] = seaTombstone;
+
+ console.log(
+ `Record ${id} has been nullified with the following data: `,
+ JSON.stringify(seaTombstone)
+ );
+ }
+ }
+ }
+ for (const [, b] of Object.entries(docObject)) {
+ seaToolRecords.push(b);
+ }
+ try {
+ await os.bulkUpdateData(osDomain, "main", seaToolRecords);
+ await os.bulkUpdateData(osDomain, "seatool", rawArr);
+ } catch (error) {
+ console.error(error);
+ }
+};
+
+export const onemac: Handler = async (event) => {
+ const oneMacRecords: (OneMacTransform | OneMacRecordsToDelete)[] = [];
+ const docObject: Record = {};
+
+ for (const recordKey of Object.keys(event.records)) {
+ for (const onemacRecord of event.records[recordKey] as {
+ key: string;
+ value: string;
+ }[]) {
+ const { key, value } = onemacRecord;
+
+ if (value) {
+ const id: string = decode(key);
+ const record = { id, ...JSON.parse(decode(value)) };
+ if (
+ record &&
+ record.sk === "Package" &&
+ record.submitterName &&
+ record.submitterName !== "-- --" // these records did not originate from onemac, thus we ignore them
+ ) {
+ const result = transformOnemac(id).safeParse(record);
+ if (result.success === false) {
+ console.log(
+ "ONEMAC Validation Error. The following record failed to parse: ",
+ JSON.stringify(record),
+ "Because of the following Reason(s):",
+ result.error.message
+ );
+ } else {
+ docObject[id] = result.data;
+ }
+ }
+ } else {
+ const id: string = decode(key);
+ const oneMacTombstone: OneMacRecordsToDelete = {
+ id,
+ additionalInformation: undefined,
+ attachments: undefined,
+ submitterEmail: undefined,
+ submitterName: undefined,
+ origin: undefined,
+ raiResponses: undefined,
+ };
+
+ docObject[id] = oneMacTombstone;
+
+ console.log(
+ `Record ${id} has been nullified with the following data: `,
+ JSON.stringify(oneMacTombstone)
+ );
+ }
+ }
+ }
+ for (const [, b] of Object.entries(docObject)) {
+ oneMacRecords.push(b);
+ }
+ try {
+ await os.bulkUpdateData(osDomain, "main", oneMacRecords);
+ } catch (error) {
+ console.error(error);
+ }
+};
diff --git a/src/services/data/libs/users.json b/src/services/data/libs/users.json
new file mode 100644
index 0000000000..a5bf1f1e53
--- /dev/null
+++ b/src/services/data/libs/users.json
@@ -0,0 +1,15 @@
+[
+ {
+ "username": "george@example.com",
+ "attributes": [
+ {
+ "Name": "email",
+ "Value": "george@example.com"
+ },
+ {
+ "Name": "email_verified",
+ "Value": "true"
+ }
+ ]
+ }
+]
diff --git a/src/services/database/package.json b/src/services/data/package.json
similarity index 53%
rename from src/services/database/package.json
rename to src/services/data/package.json
index 6fefd43bcf..4ec11638f9 100644
--- a/src/services/database/package.json
+++ b/src/services/data/package.json
@@ -1,5 +1,5 @@
{
- "name": "database",
+ "name": "data",
"description": "",
"private": true,
"version": "0.0.0",
@@ -7,13 +7,22 @@
"author": "",
"license": "CC0-1.0",
"devDependencies": {
+ "@types/base-64": "^1.0.0",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"eslint": "^8.38.0",
"eslint-config-custom-server": "*"
},
"dependencies": {
- "cfn-response-async": "^1.0.0"
+ "@anatine/zod-mock": "^3.12.0",
+ "@aws-sdk/client-lambda": "^3.363.0",
+ "@faker-js/faker": "^8.0.2",
+ "base-64": "^1.0.0",
+ "cfn-response-async": "^1.0.0",
+ "kafkajs": "^2.2.4",
+ "serverless-step-functions": "^3.13.1",
+ "shared-types": "*",
+ "zod": "^3.21.4"
},
"scripts": {
"lint": "eslint '**/*.{ts,js}'"
diff --git a/src/services/data/serverless.yml b/src/services/data/serverless.yml
new file mode 100644
index 0000000000..5a8a3b4d19
--- /dev/null
+++ b/src/services/data/serverless.yml
@@ -0,0 +1,591 @@
+service: ${self:custom.project}-data
+
+frameworkVersion: "3"
+
+plugins:
+ - serverless-stack-termination-protection
+ - "@stratiformdigital/serverless-s3-security-helper"
+ - "@stratiformdigital/serverless-iam-helper"
+ - serverless-plugin-scripts
+ - serverless-esbuild
+ - serverless-step-functions
+
+provider:
+ name: aws
+ runtime: nodejs18.x
+ region: us-east-1
+ iam:
+ role:
+ path: /delegatedadmin/developer/
+ permissionsBoundary: arn:aws:iam::${aws:accountId}:policy/cms-cloud-admin/developer-boundary-policy
+ statements:
+ - Effect: "Allow"
+ Action:
+ - cognito-idp:AdminCreateUser
+ - cognito-idp:AdminSetUserPassword
+ - cognito-idp:AdminUpdateUserAttributes
+ Resource: !GetAtt CognitoUserPool.Arn
+ - Effect: Allow
+ Action:
+ - lambda:CreateEventSourceMapping
+ - lambda:ListEventSourceMappings
+ - lambda:PutFunctionConcurrency
+ - lambda:DeleteEventSourceMapping
+ - lambda:UpdateEventSourceMapping
+ Resource: "*"
+ - Effect: Allow
+ Action:
+ - ec2:CreateNetworkInterface
+ - ec2:DescribeNetworkInterfaces
+ - ec2:DescribeVpcs
+ - ec2:DeleteNetworkInterface
+ - ec2:DescribeSubnets
+ - ec2:DescribeSecurityGroups
+ Resource: "*"
+ - Effect: Allow
+ Action:
+ - es:ESHttpHead
+ - es:ESHttpPost
+ - es:ESHttpGet
+ - es:ESHttpPatch
+ - es:ESHttpDelete
+ - es:ESHttpPut
+ Resource: !Sub "${OpenSearch.Arn}/*"
+ - Effect: Allow
+ Action:
+ - sts:AssumeRole
+ Resource: !GetAtt OpenSearchMasterRole.Arn
+
+ stackTags:
+ PROJECT: ${self:custom.project}
+ SERVICE: ${self:service}
+
+custom:
+ project: ${env:PROJECT}
+ serverlessTerminationProtection:
+ stages: # Apply CloudFormation termination protection for these stages
+ - master
+ - val
+ - production
+ vpc: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/vpc, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/vpc}
+ brokerString: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/brokerString, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/brokerString}
+ bootstrapKibanaUsers: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapKibanaUsers, param:bootstrapKibanaUsers}
+ bootstrapUsersPassword: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/bootstrapUsersPassword, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/bootstrapUsersPassword}
+ scripts:
+ hooks:
+ deploy:finalize: |
+ if [ "${self:custom.bootstrapKibanaUsers}" = "true" ];
+ then
+ aws lambda invoke --region ${self:provider.region} --function-name ${self:service}-${sls:stage}-bootstrapKibanaUsers --invocation-type RequestResponse /dev/null
+ fi
+
+stepFunctions:
+ stateMachines:
+ reindex:
+ name: ${self:service}-${sls:stage}-reindex
+ id: ReindexDataStateMachine
+ loggingConfig:
+ level: ALL
+ includeExecutionData: true
+ destinations:
+ - !GetAtt StateMachineLogGroup.Arn
+ definition:
+ Comment: "A state machine to reindex the OpenSearch index."
+ StartAt: DisableTriggers
+ States:
+ DisableTriggers:
+ Type: Task
+ Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${self:service}-${sls:stage}-disableTriggers"
+ Parameters:
+ Context.$: $$
+ Next: GetConsumerGroupStatus
+ GetConsumerGroupStatus:
+ Type: Task
+ Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${self:service}-${sls:stage}-getConsumerGroupStatus"
+ Parameters:
+ Context.$: $$
+ Next: IsConsumerGroupReady
+ IsConsumerGroupReady:
+ Type: Choice
+ Choices:
+ - Variable: $.ready
+ BooleanEquals: true
+ Next: ResetConsumerGroups
+ - Variable: $.ready
+ BooleanEquals: false
+ Next: Wait10Seconds
+ Default: Wait10Seconds
+ Wait10Seconds:
+ Type: Wait
+ Seconds: 10
+ Next: GetConsumerGroupStatus
+ ResetConsumerGroups:
+ Type: Task
+ Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${self:service}-${sls:stage}-resetConsumerGroups"
+ Parameters:
+ Context.$: $$
+ Next: DeleteIndex
+ DeleteIndex:
+ Type: Task
+ Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${self:service}-${sls:stage}-deleteIndex"
+ Parameters:
+ Context.$: $$
+ Next: EnableTriggers
+ EnableTriggers:
+ Type: Task
+ Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${self:service}-${sls:stage}-enableTriggers"
+ Parameters:
+ Context.$: $$
+ Next: SuccessState
+ SuccessState:
+ Type: Succeed
+
+params:
+ master:
+ osInstanceType: m5.large.search
+ val:
+ osInstanceType: m5.large.search
+ production:
+ bootstrapKibanaUsers: "false"
+ osInstanceType: m5.large.search
+ default:
+ osInstanceType: t3.small.search
+ bootstrapKibanaUsers: "true"
+
+functions:
+ sinkSeatool:
+ handler: handlers/sink.seatool
+ environment:
+ region: ${self:provider.region}
+ osDomain: !Sub https://${OpenSearch.DomainEndpoint}
+ maximumRetryAttempts: 0
+ timeout: 10
+ memorySize: 1024
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ sinkOnemac:
+ handler: handlers/sink.onemac
+ environment:
+ region: ${self:provider.region}
+ osDomain: !Sub https://${OpenSearch.DomainEndpoint}
+ maximumRetryAttempts: 0
+ timeout: 10
+ memorySize: 1024
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ disableTriggers:
+ handler: handlers/reindex.toggleTriggers
+ timeout: 60
+ environment:
+ region: ${self:provider.region}
+ functions: !Sub "${SinkSeatoolLambdaFunction},${SinkOnemacLambdaFunction}"
+ enabled: false
+ enableTriggers:
+ handler: handlers/reindex.toggleTriggers
+ timeout: 60
+ environment:
+ region: ${self:provider.region}
+ functions: !Sub "${SinkSeatoolLambdaFunction},${SinkOnemacLambdaFunction}"
+ enabled: true
+ getConsumerGroupStatus:
+ handler: handlers/reindex.getConsumerGroupStatus
+ timeout: 900
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ environment:
+ region: ${self:provider.region}
+ functions: !Sub "${SinkSeatoolLambdaFunction},${SinkOnemacLambdaFunction}"
+ brokerString: ${self:custom.brokerString}
+ resetConsumerGroups:
+ handler: handlers/reindex.resetConsumerGroups
+ timeout: 900
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ environment:
+ region: ${self:provider.region}
+ functions: !Sub "${SinkSeatoolLambdaFunction},${SinkOnemacLambdaFunction}"
+ brokerString: ${self:custom.brokerString}
+ deleteIndex:
+ handler: handlers/reindex.deleteIndex
+ environment:
+ region: ${self:provider.region}
+ osDomain: !Sub https://${OpenSearch.DomainEndpoint}
+ maximumRetryAttempts: 0
+ timeout: 10
+ memorySize: 1024
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ mapRole:
+ handler: handlers/mapRole.handler
+ environment:
+ region: ${self:provider.region}
+ osDomain: !Sub https://${OpenSearch.DomainEndpoint}
+ maximumRetryAttempts: 0
+ timeout: 10
+ memorySize: 1024
+ vpc:
+ securityGroupIds:
+ - Ref: SecurityGroup
+ subnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ bootstrapKibanaUsers:
+ handler: handlers/createKibanaUsers.handler
+ environment:
+ kibanaUserPoolId: !Ref CognitoUserPool
+ bootstrapUsersPassword: ${self:custom.bootstrapUsersPassword}
+ region: ${self:provider.region}
+
+resources:
+ Resources:
+ StateMachineLogGroup:
+ Type: AWS::Logs::LogGroup
+ Properties:
+ LogGroupName: /aws/vendedlogs/states/${self:service}-${sls:stage}-reindex
+ SinkSeatoolTrigger:
+ Type: AWS::Lambda::EventSourceMapping
+ Properties:
+ BatchSize: 1000
+ Enabled: true
+ FunctionName: !GetAtt SinkSeatoolLambdaFunction.Arn
+ SelfManagedEventSource:
+ Endpoints:
+ KafkaBootstrapServers:
+ Fn::Split:
+ - ","
+ - ${self:custom.brokerString}
+ SourceAccessConfigurations:
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.0}
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.1}
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.2}
+ - Type: VPC_SECURITY_GROUP
+ URI: !Sub security_group:${SecurityGroup}
+ StartingPosition: TRIM_HORIZON
+ Topics:
+ - aws.ksqldb.seatool.agg.State_Plan
+ CloudWatchAlarmForSinkSeatoolTriggerErrors:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ AlarmName: ${self:service}-${sls:stage}-sinkSeatoolErrorsCount
+ AlarmDescription: Alarm for SinkSeatoolTrigger Lambda Errors
+ Namespace: ${self:service}-${sls:stage}/lambda/sinkSEATOOL-Errors-Alarm
+ MetricName: SinkSeatoolErrors
+ Dimensions:
+ - Name: FunctionName
+ Value: !GetAtt SinkSeatoolLambdaFunction.Arn
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Statistic: Sum
+ TreatMissingData: notBreaching
+ Threshold: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ SinkOnemacTrigger:
+ Type: AWS::Lambda::EventSourceMapping
+ Properties:
+ BatchSize: 1000
+ Enabled: true
+ FunctionName: !GetAtt SinkOnemacLambdaFunction.Arn
+ SelfManagedEventSource:
+ Endpoints:
+ KafkaBootstrapServers:
+ Fn::Split:
+ - ","
+ - ${self:custom.brokerString}
+ SourceAccessConfigurations:
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.0}
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.1}
+ - Type: VPC_SUBNET
+ URI: subnet:${self:custom.vpc.privateSubnets.2}
+ - Type: VPC_SECURITY_GROUP
+ URI: !Sub security_group:${SecurityGroup}
+ StartingPosition: TRIM_HORIZON
+ Topics:
+ - aws.onemac.migration.cdc
+ CloudWatchAlarmForSinkOnemacTriggerErrors:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ AlarmName: ${self:service}-${sls:stage}-sinkOnemacErrorCount
+ AlarmDescription: Alarm for SinkOnemacTrigger Lambda Errors
+ Namespace: AWS/Lambda/sinkONEMAC-Errors-Alarm
+ MetricName: SinkONEMACErrors
+ Dimensions:
+ - Name: FunctionName
+ Value: !GetAtt SinkOnemacLambdaFunction.Arn
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Statistic: Sum
+ TreatMissingData: notBreaching
+ Threshold: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ SeatoolLogMessageMetricFilter:
+ Type: "AWS::Logs::MetricFilter"
+ Properties:
+ LogGroupName: !Ref SinkSeatoolLogGroup
+ FilterPattern: '"SEATOOL Validation Error"'
+ MetricTransformations:
+ - MetricName: SeatoolValidationErrors
+ MetricNamespace: "${self:service}-${sls:stage}/lambda/SEATOOL-Validation-Errors"
+ MetricValue: "1"
+ DefaultValue: "0"
+ SeatoolValidationErrorsAlarm:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ AlarmName: ${self:service}-${sls:stage}-SEATOOL-validation-error
+ AlarmDescription: Alarm for SEATOOL Validation Errors
+ Namespace: "${self:service}-${sls:stage}/lambda/SEATOOL-Validation-Errors-Alarm"
+ MetricName: SeatoolValidationErrors
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Statistic: Sum
+ TreatMissingData: notBreaching
+ Threshold: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ OnemacLogMessageMetricFilter:
+ Type: "AWS::Logs::MetricFilter"
+ Properties:
+ LogGroupName: !Ref SinkOnemacLogGroup
+ FilterPattern: '"ONEMAC Validation Error"'
+ MetricTransformations:
+ - MetricName: ONEMACValidationErrors
+ MetricNamespace: "${self:service}-${sls:stage}/lambda/ONEMAC-validation-errors"
+ MetricValue: "1"
+ DefaultValue: "0"
+ OnemacValidationErrorsAlarm:
+ Type: AWS::CloudWatch::Alarm
+ Properties:
+ AlarmName: ${self:service}-${sls:stage}-ONEMAC-validation-error
+ AlarmDescription: Alarm for ONEMAC Validation Errors
+ Namespace: "${self:service}-${sls:stage}/lambda/ONEMAC-validation-errors-alarm"
+ MetricName: ONEMACValidationErrors
+ ComparisonOperator: GreaterThanOrEqualToThreshold
+ EvaluationPeriods: 1
+ Period: 300
+ Statistic: Sum
+ TreatMissingData: notBreaching
+ Threshold: 1
+ AlarmActions:
+ - ${param:ECSFailureTopicArn}
+ SecurityGroup:
+ Type: AWS::EC2::SecurityGroup
+ DeletionPolicy: Retain # VPC based lambda's are problematic when deleting the SG due to ENI attachmnent out of our control.
+ Properties:
+ GroupDescription: Security group for Sink Lambda Function.
+ VpcId: ${self:custom.vpc.id}
+ SecurityGroupEgress:
+ - IpProtocol: -1
+ CidrIp: 0.0.0.0/0
+ CognitoUserPool:
+ Type: AWS::Cognito::UserPool
+ Properties:
+ UserPoolName: ${self:service}-${sls:stage}-search
+ AdminCreateUserConfig:
+ AllowAdminCreateUserOnly: True
+ UsernameAttributes:
+ - email
+ AutoVerifiedAttributes:
+ - email
+ CognitoUserPoolDomain:
+ Type: AWS::Cognito::UserPoolDomain
+ Properties:
+ Domain: !Sub ${AWS::AccountId}-${sls:stage}-search
+ UserPoolId: !Ref CognitoUserPool
+ CognitoUserPoolClient:
+ Type: AWS::Cognito::UserPoolClient
+ Properties:
+ ClientName: ${sls:stage}-search
+ UserPoolId: !Ref CognitoUserPool
+ ExplicitAuthFlows:
+ - ADMIN_NO_SRP_AUTH
+ GenerateSecret: false #pragma: allowlist secret
+ CognitoIdentityPool:
+ Type: AWS::Cognito::IdentityPool
+ Properties:
+ IdentityPoolName: ${self:service}${sls:stage}search
+ AllowUnauthenticatedIdentities: false
+ CognitoIdentityProviders:
+ - ClientId: !Ref CognitoUserPoolClient
+ ProviderName: !GetAtt CognitoUserPool.ProviderName
+ CognitoIdentityPoolRoles:
+ Type: AWS::Cognito::IdentityPoolRoleAttachment
+ Properties:
+ IdentityPoolId: !Ref CognitoIdentityPool
+ Roles:
+ authenticated: !GetAtt CognitoAuthRole.Arn
+ CognitoAuthRole:
+ Type: AWS::IAM::Role
+ Properties:
+ AssumeRolePolicyDocument:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Principal:
+ Federated: "cognito-identity.amazonaws.com"
+ Action:
+ - "sts:AssumeRoleWithWebIdentity"
+ Condition:
+ StringEquals:
+ "cognito-identity.amazonaws.com:aud": !Ref CognitoIdentityPool
+ "ForAnyValue:StringLike":
+ "cognito-identity.amazonaws.com:amr": authenticated
+ - Effect: "Allow"
+ Principal:
+ Service: "es.amazonaws.com"
+ Action:
+ - "sts:AssumeRole"
+ ManagedPolicyArns:
+ - arn:aws:iam::aws:policy/AmazonCognitoReadOnly
+ OpenSearch:
+ Type: AWS::OpenSearchService::Domain
+ Properties:
+ Tags:
+ - Key: STAGE
+ Value: ${sls:stage}
+ EBSOptions:
+ EBSEnabled: true
+ VolumeType: gp2
+ VolumeSize: 10
+ ClusterConfig:
+ InstanceType: ${param:osInstanceType}
+ InstanceCount: 3
+ DedicatedMasterEnabled: false
+ ZoneAwarenessEnabled: true
+ ZoneAwarenessConfig:
+ AvailabilityZoneCount: 3
+ EncryptionAtRestOptions:
+ Enabled: true
+ NodeToNodeEncryptionOptions:
+ Enabled: true
+ EngineVersion: OpenSearch_2.3
+ DomainEndpointOptions:
+ EnforceHTTPS: true
+ TLSSecurityPolicy: Policy-Min-TLS-1-2-2019-07
+ CognitoOptions:
+ Enabled: true
+ IdentityPoolId: !Ref CognitoIdentityPool
+ RoleArn: !GetAtt OpenSearchRole.Arn
+ UserPoolId: !Ref CognitoUserPool
+ AccessPolicies:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Principal:
+ AWS: !GetAtt CognitoAuthRole.Arn
+ Action: "es:ESHttp*"
+ Resource: "*"
+ AdvancedOptions:
+ rest.action.multi.allow_explicit_index: "true"
+ AdvancedSecurityOptions:
+ Enabled: true
+ InternalUserDatabaseEnabled: false
+ MasterUserOptions:
+ MasterUserARN: !GetAtt OpenSearchMasterRole.Arn
+ LogPublishingOptions:
+ AUDIT_LOGS:
+ CloudWatchLogsLogGroupArn: !GetAtt OpenSearchAuditLogGroup.Arn
+ Enabled : true
+ ES_APPLICATION_LOGS:
+ CloudWatchLogsLogGroupArn: !GetAtt OpenSearchErrorLogGroup.Arn
+ Enabled : true
+ VPCOptions:
+ SecurityGroupIds:
+ - !Ref OpenSearchSecurityGroup
+ SubnetIds: >-
+ ${self:custom.vpc.privateSubnets}
+ OpenSearchRole:
+ Type: AWS::IAM::Role
+ Properties:
+ AssumeRolePolicyDocument:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Principal:
+ Service: "es.amazonaws.com"
+ Action:
+ - "sts:AssumeRole"
+ ManagedPolicyArns:
+ - arn:aws:iam::aws:policy/AmazonOpenSearchServiceCognitoAccess
+ OpenSearchMasterRole:
+ Type: AWS::IAM::Role
+ Properties:
+ AssumeRolePolicyDocument:
+ Version: "2012-10-17"
+ Statement:
+ - Effect: "Allow"
+ Principal:
+ AWS: !Sub "${AWS::AccountId}"
+ Action:
+ - "sts:AssumeRole"
+ - Effect: "Allow"
+ Principal:
+ Service: "es.amazonaws.com"
+ Action:
+ - "sts:AssumeRole"
+ ManagedPolicyArns:
+ - arn:aws:iam::aws:policy/AmazonOpenSearchServiceFullAccess
+ OpenSearchSecurityGroup:
+ Type: AWS::EC2::SecurityGroup
+ DeletionPolicy: Retain
+ Properties:
+ GroupDescription: Security group for Sink Lambda Function.
+ VpcId: ${self:custom.vpc.id}
+ OpenSearchSecurityGroupEgress:
+ Type: AWS::EC2::SecurityGroupEgress
+ Properties:
+ GroupId: !Ref OpenSearchSecurityGroup
+ IpProtocol: -1
+ CidrIp: 0.0.0.0/0
+ OpenSearchSecurityGroupIngress:
+ Type: AWS::EC2::SecurityGroupIngress
+ Properties:
+ GroupId: !Ref OpenSearchSecurityGroup
+ IpProtocol: -1
+ FromPort: 443
+ ToPort: 443
+ CidrIp: 10.0.0.0/0
+ OpenSearchAuditLogGroup:
+ Type: AWS::Logs::LogGroup
+ Properties:
+ LogGroupName: /aws/opensearch/${self:service}-${sls:stage}-audit
+ OpenSearchErrorLogGroup:
+ Type: AWS::Logs::LogGroup
+ Properties:
+ LogGroupName: /aws/opensearch/${self:service}-${sls:stage}-error
+ MapRole:
+ Type: Custom::ClusterInfo
+ Properties:
+ ServiceToken: !GetAtt MapRoleLambdaFunction.Arn
+ MasterRoleToAssume: !GetAtt OpenSearchMasterRole.Arn
+ OSRoleName: all_access
+ IAMRoleName: !Sub "arn:aws:iam::${AWS::AccountId}:role/*"
+ Outputs:
+ OpenSearchDomainArn:
+ Value: !GetAtt OpenSearch.Arn
+ OpenSearchDomainEndpoint:
+ Value: !Sub https://${OpenSearch.DomainEndpoint}
+ OpenSearchDashboardEndpoint:
+ Value: !Sub https://${OpenSearch.DomainEndpoint}/_dashboards
diff --git a/src/services/data/tsconfig.json b/src/services/data/tsconfig.json
new file mode 100644
index 0000000000..3c9646ea64
--- /dev/null
+++ b/src/services/data/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "target": "ES2016",
+ "resolveJsonModule": true,
+ "moduleResolution": "node"
+ }
+}
diff --git a/src/services/database/handlers/seeddatabase.ts b/src/services/database/handlers/seeddatabase.ts
deleted file mode 100644
index 9ab991d8fb..0000000000
--- a/src/services/database/handlers/seeddatabase.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { send, SUCCESS, FAILED } from "cfn-response-async";
-import { putItem } from "../../../libs";
-import * as items from "../src/reference/items.json";
-import type { CloudFormationCustomResourceEvent, Context } from "aws-lambda";
-
-declare type ResponseStatus = typeof SUCCESS | typeof FAILED;
-
-exports.handler = async function (
- event: CloudFormationCustomResourceEvent,
- context: Context
-) {
- console.log("Request:", JSON.stringify(event, undefined, 2));
- const responseData = {};
- let responseStatus: ResponseStatus = SUCCESS;
- try {
- for await (const item of items) {
- putItem({
- tableName: event.ResourceProperties.DynamoTableName,
- item: { PK: item.recordId, SK: item.state },
- });
- }
- } catch (error) {
- console.error(error);
- responseStatus = FAILED;
- } finally {
- await send(event, context, responseStatus, responseData, "static");
- }
-};
diff --git a/src/services/database/handlers/testDataLoader.js b/src/services/database/handlers/testDataLoader.js
deleted file mode 100644
index f58960b625..0000000000
--- a/src/services/database/handlers/testDataLoader.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as dynamodb from "../../../libs/dynamodb-lib";
-
-exports.handler = async (event, context) => {
- console.log("Request:", JSON.stringify(event, undefined, 2));
- try {
- let tableName = process.env.tableName;
- console.log("Putting test data...");
- for (const item of event) {
- console.log(item);
- await dynamodb.putItem({
- tableName,
- item: { PK: item.recordId, SK: item.state },
- });
- }
- return "SUCCESS";
- } catch (error) {
- console.log(error);
- throw "ERROR";
- }
-};
diff --git a/src/services/database/serverless.yml b/src/services/database/serverless.yml
deleted file mode 100644
index be4604c43d..0000000000
--- a/src/services/database/serverless.yml
+++ /dev/null
@@ -1,104 +0,0 @@
-service: ${self:custom.project}-database
-
-frameworkVersion: "3"
-
-package:
- individually: true
-
-plugins:
- - serverless-stack-termination-protection
- - "@stratiformdigital/serverless-s3-security-helper"
- - "@stratiformdigital/serverless-iam-helper"
- - serverless-bundle
- - serverless-plugin-scripts
-
-provider:
- name: aws
- region: us-east-1
- iam:
- role:
- path: /delegatedadmin/developer/
- permissionsBoundary: arn:aws:iam::${aws:accountId}:policy/cms-cloud-admin/developer-boundary-policy
- statements:
- - Effect: Allow
- Action:
- - dynamodb:Query
- - dynamodb:Scan
- - dynamodb:GetItem
- - dynamodb:PutItem
- - dynamodb:UpdateItem
- - dynamodb:DeleteItem
- - dynamodb:Get*
- - dynamodb:BatchWrite*
- - dynamodb:BatchGet*
- Resource: "arn:aws:dynamodb:*:*:table/${self:custom.issuesTableName}"
-
- stackTags:
- PROJECT: ${self:custom.project}
- SERVICE: ${self:service}
-
-custom:
- project: ${env:PROJECT}
- referenceDataHash: ${file(./src/reference/items.json)}
- serverlessTerminationProtection:
- stages: # Apply CloudFormation termination protection for these stages
- - master
- - val
- - production
- bundle:
- linting: false
- issuesTableName: ${self:service}-${sls:stage}-issues
- scripts:
- commands:
- seed: |
- set -e
- echo 'Loading test data...'
- call=`aws lambda invoke --region ${self:provider.region} --function-name ${self:service}-${sls:stage}-testDataLoader --invocation-type RequestResponse --payload $(base64 ./src/test/items.json) --log Tail /dev/null`
- error=`echo $call | jq 'select(.FunctionError != null)'`
- if [ "$error" != "null" -a -n "$error" ]; then
- echo "An error occured while loading test data. Error below"
- echo `echo $call | jq -r '.LogResult'` | base64 --decode
- exit 1
- fi
-
-functions:
- seeddatabase:
- handler: handlers/seeddatabase.handler
- environment:
- region: ${self:provider.region}
- testDataLoader:
- handler: handlers/testDataLoader.handler
- environment:
- region: ${self:provider.region}
- tableName: !Ref IssuesTable
-
-resources:
- Resources:
- IssuesTable:
- Type: AWS::DynamoDB::Table
- Properties:
- AttributeDefinitions:
- - AttributeName: id
- AttributeType: S
- KeySchema:
- - AttributeName: id
- KeyType: HASH
- PointInTimeRecoverySpecification:
- PointInTimeRecoveryEnabled: true
- ProvisionedThroughput:
- ReadCapacityUnits: 1
- WriteCapacityUnits: 1
- TableName: ${self:custom.issuesTableName}
- InitializeDynamoDB:
- Type: Custom::InitFunction
- DependsOn: IssuesTable
- Properties:
- ServiceToken:
- Fn::GetAtt: [SeeddatabaseLambdaFunction, "Arn"]
- DynamoTableName:
- Ref: IssuesTable
- Trigger: ${self:custom.referenceDataHash}
- Outputs:
- IssuesTableName:
- Description: database table name for issues
- Value: ${self:custom.issuesTableName}
diff --git a/src/services/database/src/reference/items.json b/src/services/database/src/reference/items.json
deleted file mode 100644
index d168c04523..0000000000
--- a/src/services/database/src/reference/items.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "recordId": "67-tyuiop",
- "state": "CA"
- },
- {
- "recordId": "76-SeargentBrianwasHere",
- "state": "OH"
- },
- {
- "recordId": "96-kings",
- "state": "DE"
- },
- {
- "recordId": "45-dialect",
- "state": "UT"
- }
-]
diff --git a/src/services/database/src/test/items.json b/src/services/database/src/test/items.json
deleted file mode 100644
index e5c9a718d9..0000000000
--- a/src/services/database/src/test/items.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
- {
- "recordId": "zz-alpha",
- "state": "ZZ"
- },
- {
- "recordId": "zz-bravo",
- "state": "ZZ"
- },
- {
- "recordId": "zz-charlie",
- "state": "ZZ"
- },
- {
- "recordId": "zz-delta",
- "state": "ZZ"
- }
-]
diff --git a/src/services/ui-infra/serverless.yml b/src/services/ui-infra/serverless.yml
index 389de8746f..5f97a5f1f4 100644
--- a/src/services/ui-infra/serverless.yml
+++ b/src/services/ui-infra/serverless.yml
@@ -24,21 +24,19 @@ plugins:
custom:
project: ${env:PROJECT}
- stage: ${opt:stage, self:provider.stage}
region: ${opt:region, self:provider.region}
serverlessTerminationProtection:
stages:
- master
- val
- production
- route53HostedZoneId: ${ssm:/configuration/${self:service}/${self:custom.stage}/route53/hostedZoneId, ssm:/configuration/default/route53/hostedZoneId, ""}
- route53DomainName: ${ssm:/configuration/${self:service}/${self:custom.stage}/route53/domainName, ""}
- cloudfrontCertificateArn: ${ssm:/configuration/${self:service}/${self:custom.stage}/cloudfront/certificateArn, ssm:/configuration/default/cloudfront/certificateArn, ""}
- cloudfrontDomainName: ${ssm:/configuration/${self:service}/${self:custom.stage}/cloudfront/domainName, ""}
- webAclName: ${self:custom.stage}-${self:service}-webacl
+ stage: ${sls:stage} # This is junk.. required by the serverless-waf-plugin. Due for refactor
+ cloudfrontCertificateArn: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/cloudfront/certificateArn, ssm:/aws/reference/secretsmanager/${self:custom.project}/default/cloudfront/certificateArn, ""}
+ cloudfrontDomainName: ${ssm:/aws/reference/secretsmanager/${self:custom.project}/${sls:stage}/cloudfront/domainName, ""}
+ webAclName: ${sls:stage}-${self:service}-webacl
wafExcludeRules:
wafScope: CLOUDFRONT
- firehoseStreamName: aws-waf-logs-${self:service}-${self:custom.stage}-firehose
+ firehoseStreamName: aws-waf-logs-${self:service}-${sls:stage}-firehose
s3SecurityHelper:
skipPolicyCreation:
- S3Bucket
@@ -55,16 +53,6 @@ custom:
resources:
Conditions:
- CreateDnsRecord:
- Fn::And:
- - Fn::Not:
- - Fn::Equals:
- - ""
- - ${self:custom.route53HostedZoneId}
- - Fn::Not:
- - Fn::Equals:
- - ""
- - ${self:custom.route53DomainName}
CreateCustomCloudFrontDomain:
Fn::And:
- Fn::Not:
@@ -111,7 +99,7 @@ resources:
LoggingBucket:
Type: "AWS::S3::Bucket"
Properties:
- BucketName: !Sub ${self:service}-${self:custom.stage}-cloudfront-logs-${AWS::AccountId}
+ BucketName: !Sub ${self:service}-${sls:stage}-cloudfront-logs-${AWS::AccountId}
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
@@ -198,18 +186,7 @@ resources:
WebACLId: !GetAtt WafPluginAcl.Arn
Logging:
Bucket: !Sub "${LoggingBucket}.s3.amazonaws.com"
- Prefix: AWSLogs/CLOUDFRONT/${self:custom.stage}/
- Route53DnsRecord:
- Type: AWS::Route53::RecordSet
- Condition: CreateDnsRecord
- Properties:
- HostedZoneId: ${self:custom.route53HostedZoneId}
- Name: ${self:custom.route53DomainName}
- AliasTarget:
- DNSName: !GetAtt CloudFrontDistribution.DomainName
- HostedZoneId: Z2FDTNDATAQYW2
- EvaluateTargetHealth: false
- Type: A
+ Prefix: AWSLogs/CLOUDFRONT/${sls:stage}/
HstsCloudfrontFunction:
Type: AWS::CloudFront::Function
Properties:
@@ -224,12 +201,12 @@ resources:
FunctionConfig:
Comment: This function adds headers to implement HSTS
Runtime: cloudfront-js-1.0
- Name: hsts-${self:custom.project}-${self:custom.stage}
+ Name: hsts-${self:custom.project}-${sls:stage}
###############This code block enables logging on waf and sends all logs to s3.##################################
WaflogsUploadBucket:
Type: AWS::S3::Bucket
Properties:
- BucketName: !Sub ${AWS::AccountId}-${self:service}-${self:custom.stage}-waflogs
+ BucketName: !Sub ${AWS::AccountId}-${self:service}-${sls:stage}-waflogs
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
@@ -241,7 +218,7 @@ resources:
ExtendedS3DestinationConfiguration:
RoleARN: !GetAtt DeliveryRole.Arn
BucketARN: !GetAtt WaflogsUploadBucket.Arn
- Prefix: AWSLogs/WAF/${self:custom.stage}/
+ Prefix: AWSLogs/WAF/${sls:stage}/
BufferingHints:
IntervalInSeconds: 300
SizeInMBs: 5
@@ -283,7 +260,7 @@ resources:
ApplicationEndpointUrl:
Type: AWS::SSM::Parameter
Properties:
- Name: /${self:custom.stage}/ui/application_endpoint
+ Name: /${self:custom.stage}/${self:service}/application_endpoint
Type: String
Value:
Fn::If:
diff --git a/src/services/ui/e2e/tests/home/index.spec.ts b/src/services/ui/e2e/tests/home/index.spec.ts
index 4fe7b3772f..924aac6e0c 100644
--- a/src/services/ui/e2e/tests/home/index.spec.ts
+++ b/src/services/ui/e2e/tests/home/index.spec.ts
@@ -1,21 +1,40 @@
import { test, expect } from "@playwright/test";
-import * as $ from "@/selectors";
+import { testUsers } from "e2e/utils/users";
+
+const password = process.env.BOOTSTRAP_USERS_PW!;
test("has title", async ({ page }) => {
await page.goto("/");
+ await expect(page).toHaveTitle(/CMS MAKO/);
+});
+
+test("see frequesntly asked questions header when in faq page", async ({ page }) => {
+ await page.goto("/");
+ await page.getByRole("link", { name: "FAQ" }).click();
- // Expect a title "to contain" a substring.
- await expect(page).toHaveTitle(/CMS OM Template/);
+ const foundFaqHeading = await page.getByRole("heading", { name: "Frequently Asked Questions" }).isVisible();
+ expect(foundFaqHeading).toBeTruthy();
});
-test("get issues link", async ({ page }) => {
- const navSelectors = new $.NavSelectors(page);
+test("see dahsboard link when log in", async ({ page }) => {
await page.goto("/");
+ await page.getByRole("button", { name: "Sign In" }).click();
+ await page.getByRole("textbox", { name: "name@host.com" }).type(testUsers.state);
+ await page.getByRole("textbox", { name: "Password" }).type(password);
+ await page.getByRole("button", { name: "submit" }).click();
+ await page.getByRole("link", { name: "Dashboard" }).click();
- // Click the issues link.
- await navSelectors.issuesDropDown.click();
- await navSelectors.allIssuesLink.click();
+ const dashboardLinkVisible = await page.getByRole("link", { name: "Dashboard" }).isVisible();
+ expect(dashboardLinkVisible).toBeTruthy();
+});
- // Expects the URL to contain intro.
- await expect(page).toHaveURL(/.*issues/);
+test("failed incorrect login username", async ({ page }) => {
+ await page.goto("/");
+ await page.getByRole("button", { name: "Sign In" }).click();
+ await page.getByRole("textbox", { name: "name@host.com" }).type(".");
+ await page.getByRole("textbox", { name: "Password" }).type(password);
+ await page.getByRole("button", { name: "submit" }).click();
+ await page.getByRole("paragraph").isVisible();
+ const invalidInputTest = await page.$("p:has-text(\"The username or password you entered is invalid\")");
+ expect(invalidInputTest).toBeTruthy();
});
diff --git a/src/services/ui/e2e/tests/issues/issues.spec.ts b/src/services/ui/e2e/tests/issues/issues.spec.ts
deleted file mode 100644
index bdb09d5deb..0000000000
--- a/src/services/ui/e2e/tests/issues/issues.spec.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import { test, expect, Page } from "@playwright/test";
-import { v4 as uuidv4 } from "uuid";
-import * as $ from "@/selectors";
-
-async function goToIssuesPage(page: Page) {
- const navSelectors = new $.NavSelectors(page);
- await page.goto("/");
-
- // Click the issues link.
- await navSelectors.issuesDropDown.click();
- await navSelectors.allIssuesLink.click();
-}
-
-test("create issue should require description", async ({ page }) => {
- const addIssuesFormSelectors = new $.AddIssueFormSelectors(page);
- goToIssuesPage(page);
-
- // fills in all inputs except description
- await addIssuesFormSelectors.addButton.click();
- await addIssuesFormSelectors.titleInput.fill("Here is a test title");
- await addIssuesFormSelectors.prioritySelect.selectOption("medium");
- await addIssuesFormSelectors.typeSelect.selectOption("other");
- await addIssuesFormSelectors.submitButton.click();
-
- // expects required error to be displayed
- await expect(page.getByText("Description is required")).toBeVisible();
-});
-
-test("should be able to create and delete an issue", async ({ page }) => {
- const addIssuesFormSelectors = new $.AddIssueFormSelectors(page);
-
- const testDesc = uuidv4();
- goToIssuesPage(page);
-
- // completes and submits new issues form
- await addIssuesFormSelectors.addButton.click();
- await addIssuesFormSelectors.titleInput.fill("Here is a test title");
- await addIssuesFormSelectors.descriptionInput.fill(testDesc);
- await addIssuesFormSelectors.prioritySelect.selectOption("medium");
- await addIssuesFormSelectors.typeSelect.selectOption("other");
- await addIssuesFormSelectors.submitButton.click();
-
- // expect the page to be rerouted
- await expect(page).toHaveURL(/.*issues/);
-
- // expect the issue row to exist
- await expect(page.getByRole("cell", { name: testDesc })).toBeVisible();
-
- // Select the "Delete" button using a single XPath selector
- const buttonSelector = `//td[text()='${testDesc}']/following-sibling::td/button[@aria-label='Delete button']`;
-
- // Click the "Delete" button
- await page.click(buttonSelector);
-
- // expect the row to be deleted
- await expect(page.getByRole("cell", { name: testDesc })).not.toBeVisible();
-});
diff --git a/src/services/ui/e2e/utils/users.ts b/src/services/ui/e2e/utils/users.ts
new file mode 100644
index 0000000000..d80170240d
--- /dev/null
+++ b/src/services/ui/e2e/utils/users.ts
@@ -0,0 +1,4 @@
+export const testUsers = {
+ state: "george@example.com",
+ cmsAdmin: "cmsadmin@example.com"
+};
\ No newline at end of file
diff --git a/src/services/ui/index.html b/src/services/ui/index.html
index e3bcbca90d..7455ba647e 100644
--- a/src/services/ui/index.html
+++ b/src/services/ui/index.html
@@ -1,13 +1,25 @@
-
+
+
+
+
- CMS OM Template
+ CMS MAKO
-
-
+
+
+
+
diff --git a/src/services/ui/package.json b/src/services/ui/package.json
index 9d05c57706..6efeb0a9ea 100644
--- a/src/services/ui/package.json
+++ b/src/services/ui/package.json
@@ -11,29 +11,60 @@
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest",
- "test:gui": "vitest --ui"
+ "test:gui": "vitest --ui",
+ "e2e:ui": "playwright test --ui"
},
"dependencies": {
- "@enterprise-cmcs/macpro-ux-lib": "^1.22.1",
+ "@aws-amplify/auth": "^5.4.0",
+ "@emotion/react": "^11.11.1",
+ "@emotion/styled": "^11.11.0",
"@heroicons/react": "^2.0.17",
"@hookform/error-message": "^2.0.1",
"@hookform/resolvers": "^3.1.0",
+ "@mui/lab": "^5.0.0-alpha.136",
+ "@mui/material": "^5.14.1",
+ "@mui/styled-engine": "^5.13.2",
+ "@mui/styles": "^5.14.0",
+ "@mui/system": "^5.14.1",
+ "@mui/x-data-grid": "^6.10.0",
+ "@radix-ui/react-accordion": "^1.1.2",
+ "@radix-ui/react-checkbox": "^1.0.4",
+ "@radix-ui/react-dialog": "^1.0.4",
+ "@radix-ui/react-popover": "^1.0.6",
+ "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-tabs": "^1.0.4",
"@tanstack/react-query": "^4.29.1",
"@tanstack/react-query-devtools": "^4.29.5",
- "axios": "^1.3.5",
- "date-fns": "^2.29.3",
+ "@types/file-saver": "^2.0.5",
+ "aws-amplify": "^5.2.5",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.0.0",
+ "date-fns": "^2.30.0",
+ "export-to-csv": "^0.2.1",
+ "file-saver": "^2.0.5",
+ "framer-motion": "^10.16.1",
+ "jszip": "^3.10.1",
+ "lucide-react": "^0.268.0",
+ "lz-string": "^1.5.0",
"react": "^18.2.0",
+ "react-day-picker": "^8.8.1",
"react-dom": "^18.2.0",
"react-hook-form": "^7.43.9",
"react-loader-spinner": "^5.3.4",
"react-router-dom": "^6.10.0",
+ "react-select": "^5.7.4",
+ "tailwind-merge": "^1.14.0",
+ "tailwindcss-animate": "^1.0.6",
"uuid": "^9.0.0",
"zod": "^3.21.4"
},
"devDependencies": {
"@playwright/test": "^1.34.0",
+ "@tailwindcss/typography": "^0.5.10",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
+ "@types/lodash.debounce": "^4.0.7",
+ "@types/node": "^20.4.2",
"@types/react": "^18.0.28",
"@types/react-dom": "^18.0.11",
"@typescript-eslint/eslint-plugin": "^5.59.0",
@@ -47,9 +78,9 @@
"eslint-plugin-react": "^7.32.2",
"jsdom": "^21.1.1",
"postcss": "^8.4.21",
- "serverless-cloudfront-invalidate": "^1.12.2",
"serverless-s3-sync": "^3.1.0",
"shared-types": "*",
+ "shared-utils": "*",
"tailwindcss": "^3.3.1",
"typescript": "^4.9.3",
"vite": "^4.2.0",
diff --git a/src/services/ui/playwright.config.ts b/src/services/ui/playwright.config.ts
index a7a501bca2..83f932fc5a 100644
--- a/src/services/ui/playwright.config.ts
+++ b/src/services/ui/playwright.config.ts
@@ -1,5 +1,12 @@
import { defineConfig, devices } from "@playwright/test";
+import dotenv from "dotenv";
+import path from "path";
+import { fileURLToPath } from "url";
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+dotenv.config({ path: path.resolve(__dirname, ".env.local") });
+
/**
* See https://playwright.dev/docs/test-configuration.
*/
diff --git a/src/services/ui/serverless.yml b/src/services/ui/serverless.yml
index 1caf0cb30d..cf7e34a682 100644
--- a/src/services/ui/serverless.yml
+++ b/src/services/ui/serverless.yml
@@ -5,7 +5,6 @@ frameworkVersion: "3"
plugins:
- serverless-plugin-scripts
- serverless-s3-sync
- - serverless-cloudfront-invalidate
- serverless-stack-termination-protection
- "@stratiformdigital/serverless-s3-security-helper"
@@ -30,10 +29,6 @@ custom:
- bucketName: ${param:S3BucketName}
localDir: ./dist
deleteRemoved: true
- cloudfrontInvalidate:
- - distributionId: ${param:CloudfrontDistributionId}
- items:
- - "/*"
scripts:
hooks:
package:initialize: |
@@ -42,5 +37,20 @@ custom:
VITE_API_REGION=${param:ApiRegion}
VITE_API_URL=${param:ApiUrl}
VITE_NODE_ENV=${self:custom.stage}
+ VITE_COGNITO_REGION=${param:CognitoRegion}
+ VITE_COGNITO_IDENTITY_POOL_ID=${param:CognitoIdentityPoolId}
+ VITE_COGNITO_USER_POOL_ID=${param:CognitoUserPoolId}
+ VITE_COGNITO_USER_POOL_CLIENT_ID=${param:CognitoUserPoolClientId}
+ VITE_COGNITO_USER_POOL_CLIENT_DOMAIN=${param:CognitoUserPoolClientDomain}
+ VITE_COGNITO_REDIRECT_SIGNIN=${param:ApplicationEndpointUrl}
+ VITE_COGNITO_REDIRECT_SIGNOUT=${param:ApplicationEndpointUrl}
+ BOOTSTRAP_USERS_PW=${param:BootstrapUsersPassword}
""" > .env.local
yarn build
+ deploy:finalize: |
+ set -e
+ aws cloudfront create-invalidation --region ${self:provider.region} --distribution-id ${param:CloudfrontDistributionId} --paths "/*"
+ commands:
+ useLocalhost: |
+ sed -i '' -e 's|VITE_COGNITO_REDIRECT_SIGNIN=.*|VITE_COGNITO_REDIRECT_SIGNIN=http://localhost:5000/|g' .env.local
+ sed -i '' -e 's|VITE_COGNITO_REDIRECT_SIGNOUT=.*|VITE_COGNITO_REDIRECT_SIGNOUT=http://localhost:5000/|g' .env.local
diff --git a/src/services/ui/src/api/amplifyConfig.ts b/src/services/ui/src/api/amplifyConfig.ts
new file mode 100644
index 0000000000..42717ef95b
--- /dev/null
+++ b/src/services/ui/src/api/amplifyConfig.ts
@@ -0,0 +1,28 @@
+import { Amplify } from "aws-amplify";
+import config from "@/config";
+
+Amplify.configure({
+ Auth: {
+ mandatorySignIn: true,
+ region: config.cognito.REGION,
+ userPoolId: config.cognito.USER_POOL_ID,
+ identityPoolId: config.cognito.IDENTITY_POOL_ID,
+ userPoolWebClientId: config.cognito.APP_CLIENT_ID,
+ oauth: {
+ domain: config.cognito.APP_CLIENT_DOMAIN,
+ redirectSignIn: config.cognito.REDIRECT_SIGNIN,
+ redirectSignOut: config.cognito.REDIRECT_SIGNOUT,
+ scope: ["email", "openid"],
+ responseType: "code",
+ },
+ },
+ API: {
+ endpoints: [
+ {
+ name: "os",
+ endpoint: config.apiGateway.URL,
+ region: config.apiGateway.REGION,
+ },
+ ],
+ },
+});
diff --git a/src/services/ui/src/api/getAttachmentUrl.ts b/src/services/ui/src/api/getAttachmentUrl.ts
new file mode 100644
index 0000000000..646478b7ba
--- /dev/null
+++ b/src/services/ui/src/api/getAttachmentUrl.ts
@@ -0,0 +1,16 @@
+import { API } from "aws-amplify";
+
+export const getAttachmentUrl = async (
+ id: string,
+ bucket: string,
+ key: string
+) => {
+ const response = await API.post("os", "/getAttachmentUrl", {
+ body: {
+ id,
+ bucket,
+ key,
+ },
+ });
+ return response.url as string;
+};
diff --git a/src/services/ui/src/api/index.test.ts b/src/services/ui/src/api/index.test.ts
new file mode 100644
index 0000000000..46b1cc4728
--- /dev/null
+++ b/src/services/ui/src/api/index.test.ts
@@ -0,0 +1,6 @@
+import { it, describe, expect } from "vitest";
+describe("checkEnvVars", () => {
+ it("is the greatest test ever written", () => {
+ expect(1 + 1).toEqual(2);
+ });
+});
diff --git a/src/services/ui/src/api/index.ts b/src/services/ui/src/api/index.ts
index cb7c326f58..8165896841 100644
--- a/src/services/ui/src/api/index.ts
+++ b/src/services/ui/src/api/index.ts
@@ -1,3 +1,3 @@
-export * from "./useCreateIssue";
-export * from "./useGetIssue";
-export * from "./useGetIssues";
+export * from "./useSearch";
+export * from "./useGetItem";
+export * from "./getAttachmentUrl";
diff --git a/src/services/ui/src/api/useCreateIssue.ts b/src/services/ui/src/api/useCreateIssue.ts
deleted file mode 100644
index 46f4fb5cfc..0000000000
--- a/src/services/ui/src/api/useCreateIssue.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useMutation, useQueryClient } from "@tanstack/react-query";
-import { instance } from "../lib/axios";
-import { CreateIssue, validateCreateIssue } from "shared-types";
-
-export const useCreateIssue = () => {
- const queryClient = useQueryClient();
-
- return useMutation({
- mutationFn: async (issue: CreateIssue) => {
- const validIssue = validateCreateIssue(issue);
-
- try {
- return await instance.post("/issues", validIssue);
- } catch (err: any) {
- throw {
- messages: err?.response?.data?.issues || [
- { message: "An Error has occured" },
- ],
- };
- }
- },
- onSuccess: () => {
- queryClient.invalidateQueries(["issues"]);
- },
- onError: (err: { messages: [{ message: string }] }) => err,
- });
-};
diff --git a/src/services/ui/src/api/useDeleteIssue.ts b/src/services/ui/src/api/useDeleteIssue.ts
deleted file mode 100644
index 2ce31189a9..0000000000
--- a/src/services/ui/src/api/useDeleteIssue.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { useMutation, useQueryClient } from "@tanstack/react-query";
-import { instance } from "../lib/axios";
-
-export const useDeleteIssue = () => {
- const queryClient = useQueryClient();
-
- return useMutation({
- mutationFn: async (id: string) => {
- return await instance.delete(`/issues/${id}`);
- },
- onSuccess: () => {
- queryClient.invalidateQueries(["issues"]);
- },
- });
-};
diff --git a/src/services/ui/src/api/useGetIssue.ts b/src/services/ui/src/api/useGetIssue.ts
deleted file mode 100644
index 61030d7a9b..0000000000
--- a/src/services/ui/src/api/useGetIssue.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { useQuery } from "@tanstack/react-query";
-import { instance } from "../lib/axios";
-import { validateGetIssue } from "shared-types";
-
-export const getIssue = async (id: string) => {
- const issue = await instance.get(`/issues/${id}`);
- const validIssue = validateGetIssue(issue.data);
-
- return validIssue;
-};
-
-export const useGetIssue = (id: string) =>
- useQuery({
- queryFn: () => getIssue(id),
- queryKey: ["issues", id],
- });
diff --git a/src/services/ui/src/api/useGetIssues.ts b/src/services/ui/src/api/useGetIssues.ts
deleted file mode 100644
index fa8ffd4386..0000000000
--- a/src/services/ui/src/api/useGetIssues.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { useQuery } from "@tanstack/react-query";
-import { instance } from "../lib/axios";
-import { validateListIssues } from "shared-types";
-
-export const getIssues = async () => {
- const issues = await instance.get("/issues");
- const validIssues = validateListIssues(issues.data);
-
- return validIssues;
-};
-
-export const useGetIssues = () =>
- useQuery({
- queryKey: ["issues"],
- queryFn: getIssues,
- });
diff --git a/src/services/ui/src/api/useGetItem.ts b/src/services/ui/src/api/useGetItem.ts
new file mode 100644
index 0000000000..e44d376445
--- /dev/null
+++ b/src/services/ui/src/api/useGetItem.ts
@@ -0,0 +1,20 @@
+import { useQuery, UseQueryOptions } from "@tanstack/react-query";
+import { API } from "aws-amplify";
+import { OsHit, OsMainSourceItem, ReactQueryApiError } from "shared-types";
+
+export const getItem = async (id: string): Promise> => {
+ const record = await API.post("os", "/item", { body: { id } });
+
+ return record;
+};
+
+export const useGetItem = (
+ id: string,
+ options?: UseQueryOptions, ReactQueryApiError>
+) => {
+ return useQuery, ReactQueryApiError>(
+ ["record", id],
+ () => getItem(id),
+ options
+ );
+};
diff --git a/src/services/ui/src/api/useGetUser.ts b/src/services/ui/src/api/useGetUser.ts
new file mode 100644
index 0000000000..cdbfc19502
--- /dev/null
+++ b/src/services/ui/src/api/useGetUser.ts
@@ -0,0 +1,29 @@
+import "@/api/amplifyConfig";
+import { useQuery } from "@tanstack/react-query";
+import { Auth } from "aws-amplify";
+import { CognitoUserAttributes } from "shared-types";
+import { isCmsUser } from "shared-utils";
+
+export const getUser = async () => {
+ try {
+ const authenticatedUser = await Auth.currentAuthenticatedUser();
+ const attributes = await Auth.userAttributes(authenticatedUser);
+ const user = attributes.reduce((obj: { [key: string]: string }, item) => {
+ obj[item.Name] = item.Value;
+ return obj;
+ }, {}) as unknown as CognitoUserAttributes;
+
+ const isCms = isCmsUser(user);
+
+ return { user, isCms };
+ } catch (e) {
+ console.log({ e });
+ return { user: null };
+ }
+};
+
+export const useGetUser = () =>
+ useQuery({
+ queryKey: ["user"],
+ queryFn: () => getUser(),
+ });
diff --git a/src/services/ui/src/api/useSearch.ts b/src/services/ui/src/api/useSearch.ts
new file mode 100644
index 0000000000..8526c7f0bd
--- /dev/null
+++ b/src/services/ui/src/api/useSearch.ts
@@ -0,0 +1,71 @@
+import {
+ aggQueryBuilder,
+ filterQueryBuilder,
+ paginationQueryBuilder,
+ sortQueryBuilder,
+} from "@/components/Opensearch/utils";
+import { useMutation, UseMutationOptions } from "@tanstack/react-query";
+import { API } from "aws-amplify";
+import type {
+ OsQueryState,
+ ReactQueryApiError,
+ OsFilterable,
+ OsAggQuery,
+ OsMainSearchResponse,
+} from "shared-types";
+
+type QueryProps = {
+ filters: OsQueryState["filters"];
+ sort?: OsQueryState["sort"];
+ pagination: OsQueryState["pagination"];
+ aggs?: OsAggQuery[];
+};
+
+export const getSearchData = async (
+ props: QueryProps
+): Promise => {
+ const searchData = await API.post("os", "/search", {
+ body: {
+ ...filterQueryBuilder(props.filters),
+ ...paginationQueryBuilder(props.pagination),
+ ...(!!props.sort && sortQueryBuilder(props.sort)),
+ ...(!!props.aggs && aggQueryBuilder(props.aggs)),
+ track_total_hits: true,
+ },
+ });
+
+ return searchData;
+};
+
+export const getAllSearchData = async (filters?: OsFilterable[]) => {
+ if (!filters) return;
+
+ const recursiveSearch = async (
+ startPage: number
+ ): Promise => {
+ const searchData = await API.post("os", "/search", {
+ body: {
+ ...filterQueryBuilder(filters),
+ ...paginationQueryBuilder({ number: startPage, size: 1000 }),
+ },
+ });
+
+ if (searchData?.hits.hits.length < 1000) return searchData.hits.hits || [];
+ return searchData.hits.hits.concat(await recursiveSearch(startPage + 1));
+ };
+
+ return await recursiveSearch(0);
+};
+
+export const useOsSearch = (
+ options?: UseMutationOptions<
+ OsMainSearchResponse,
+ ReactQueryApiError,
+ QueryProps
+ >
+) => {
+ return useMutation(
+ (props) => getSearchData(props),
+ options
+ );
+};
diff --git a/src/services/ui/src/api/useUpdateIssue.ts b/src/services/ui/src/api/useUpdateIssue.ts
deleted file mode 100644
index f5480612b7..0000000000
--- a/src/services/ui/src/api/useUpdateIssue.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useMutation, useQueryClient } from "@tanstack/react-query";
-import { instance } from "../lib/axios";
-import { UpdateIssue, validateUpdateIssue } from "shared-types";
-
-export const useUpdateissue = () => {
- const queryClient = useQueryClient();
-
- return useMutation({
- mutationFn: async (issue: UpdateIssue) => {
- const validIssue = validateUpdateIssue(issue);
-
- try {
- return await instance.put(`/issues/${issue.id}`, validIssue);
- } catch (err: any) {
- throw {
- messages: err?.response?.data?.issues || [
- { message: "An Error has occured" },
- ],
- };
- }
- },
- onSuccess: (e) => {
- queryClient.refetchQueries(["issues", e.config.data.id]);
- },
- onError: (err: { messages: [{ message: string }] }) => err,
- });
-};
diff --git a/src/services/ui/src/assets/DepartmentOfHealthLogo.svg b/src/services/ui/src/assets/DepartmentOfHealthLogo.svg
new file mode 100644
index 0000000000..c6d930bda9
--- /dev/null
+++ b/src/services/ui/src/assets/DepartmentOfHealthLogo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/services/ui/src/assets/MedicaidLogo.svg b/src/services/ui/src/assets/MedicaidLogo.svg
new file mode 100644
index 0000000000..34b21cef3e
--- /dev/null
+++ b/src/services/ui/src/assets/MedicaidLogo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/services/ui/src/assets/government-icon.svg b/src/services/ui/src/assets/government-icon.svg
new file mode 100644
index 0000000000..3bf0478940
--- /dev/null
+++ b/src/services/ui/src/assets/government-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/services/ui/src/assets/lock-icon.svg b/src/services/ui/src/assets/lock-icon.svg
new file mode 100644
index 0000000000..19ad04fc9b
--- /dev/null
+++ b/src/services/ui/src/assets/lock-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/services/ui/src/assets/onemac_logo.svg b/src/services/ui/src/assets/onemac_logo.svg
new file mode 100644
index 0000000000..cc85acacfa
--- /dev/null
+++ b/src/services/ui/src/assets/onemac_logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/services/ui/src/assets/us_flag_small.png b/src/services/ui/src/assets/us_flag_small.png
new file mode 100644
index 0000000000..7d61cd6c4c
Binary files /dev/null and b/src/services/ui/src/assets/us_flag_small.png differ
diff --git a/src/services/ui/src/components/Accordion/index.tsx b/src/services/ui/src/components/Accordion/index.tsx
new file mode 100644
index 0000000000..e42ff0fa66
--- /dev/null
+++ b/src/services/ui/src/components/Accordion/index.tsx
@@ -0,0 +1,70 @@
+import * as React from "react";
+import * as AccordionPrimitive from "@radix-ui/react-accordion";
+import { ChevronDown } from "lucide-react";
+
+import { cn } from "@/lib/utils";
+
+const Accordion = AccordionPrimitive.Root;
+
+type AccordionItemProps = {
+ className?: string; // Add className to prop type definition
+} & React.ComponentPropsWithoutRef;
+
+const AccordionItem = React.forwardRef<
+ React.ElementRef,
+ AccordionItemProps
+>(({ className, ...props }, ref) => (
+
+));
+AccordionItem.displayName = "AccordionItem";
+
+type AccordionTriggerProps = {
+ className?: string; // Add className to prop type definition
+} & React.ComponentPropsWithoutRef;
+
+const AccordionTrigger = React.forwardRef<
+ React.ElementRef,
+ AccordionTriggerProps
+>(({ className, children, ...props }, ref) => (
+
+ svg]:rotate-180",
+ className
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+));
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
+
+type AccordionContentProps = {
+ className?: string; // Add className to prop type definition
+} & React.ComponentPropsWithoutRef;
+
+const AccordionContent = React.forwardRef<
+ React.ElementRef,
+ AccordionContentProps
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+));
+AccordionContent.displayName = AccordionPrimitive.Content.displayName;
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
diff --git a/src/services/ui/src/components/AddIssueForm/index.tsx b/src/services/ui/src/components/AddIssueForm/index.tsx
deleted file mode 100644
index 5529299a9c..0000000000
--- a/src/services/ui/src/components/AddIssueForm/index.tsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import { useForm } from "react-hook-form";
-import { zodResolver } from "@hookform/resolvers/zod";
-import * as UI from "@enterprise-cmcs/macpro-ux-lib";
-import { ErrorMessage } from "@hookform/error-message";
-import { CreateIssue, createIssueSchema } from "shared-types";
-import { useCreateIssue } from "../../api";
-import { useNavigate } from "react-router-dom";
-
-export function AddIssueForm({ callback }: { callback?: () => void }) {
- const {
- register,
- handleSubmit,
- formState: { errors },
- } = useForm({ resolver: zodResolver(createIssueSchema) });
- const { isLoading, mutateAsync, error } = useCreateIssue();
- const navigate = useNavigate();
- const onSubmit = async (data: CreateIssue) => {
- try {
- await mutateAsync(data);
- navigate("/issues");
- if (callback) {
- callback();
- }
- } catch (err) {
- console.log(err);
- }
- };
-
- return (
-
- );
-}
diff --git a/src/services/ui/src/components/AdditionalInfo/index.tsx b/src/services/ui/src/components/AdditionalInfo/index.tsx
new file mode 100644
index 0000000000..d9d4eaa138
--- /dev/null
+++ b/src/services/ui/src/components/AdditionalInfo/index.tsx
@@ -0,0 +1,13 @@
+import { OsMainSourceItem } from "shared-types";
+
+export const AdditionalInfo = ({
+ additionalInformation,
+}: {
+ additionalInformation: OsMainSourceItem["additionalInformation"];
+}) => {
+ return (
+
+
{additionalInformation || "None"}
+
+ );
+};
diff --git a/src/services/ui/src/components/Alert/index.tsx b/src/services/ui/src/components/Alert/index.tsx
new file mode 100644
index 0000000000..876945e492
--- /dev/null
+++ b/src/services/ui/src/components/Alert/index.tsx
@@ -0,0 +1,60 @@
+import * as React from "react";
+import { cva, type VariantProps } from "class-variance-authority";
+
+import { cn } from "@/lib/utils";
+
+const alertVariants = cva(
+ "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
+ {
+ variants: {
+ variant: {
+ default: "bg-background text-foreground",
+ destructive:
+ "border-destructive/50 text-destructive [&>svg]:text-destructive",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ }
+);
+
+const Alert = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes & VariantProps
+>(({ className, variant, ...props }, ref) => (
+
+));
+Alert.displayName = "Alert";
+
+const AlertTitle = React.forwardRef<
+ HTMLParagraphElement,
+ React.HTMLAttributes & VariantProps
+>(({ className, ...props }, ref) => (
+
+));
+AlertTitle.displayName = "AlertTitle";
+
+const AlertDescription = React.forwardRef<
+ HTMLParagraphElement,
+ React.HTMLAttributes &
+ VariantProps
+>(({ className, ...props }, ref) => (
+
+));
+AlertDescription.displayName = "AlertDescription";
+
+export { Alert, AlertTitle, AlertDescription };
diff --git a/src/services/ui/src/components/AttachmentsList/index.tsx b/src/services/ui/src/components/AttachmentsList/index.tsx
new file mode 100644
index 0000000000..9940ca3f7a
--- /dev/null
+++ b/src/services/ui/src/components/AttachmentsList/index.tsx
@@ -0,0 +1,168 @@
+import { getAttachmentUrl } from "@/api";
+import { format } from "date-fns";
+import { DownloadIcon } from "lucide-react";
+import JSZip from "jszip";
+import { saveAs } from "file-saver";
+import { OsMainSourceItem } from "shared-types";
+import { useState } from "react";
+import { Button } from "../Button";
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from "../Table";
+
+type AttachmentList = {
+ id: string;
+ attachments:
+ | ({
+ uploadDate: number;
+ bucket: string;
+ key: string;
+ s3Key: string;
+ filename: string;
+ title: string;
+ contentType: string;
+ url: string;
+ } | null)[]
+ | null;
+};
+
+const handleDownloadAll = async (data: AttachmentList) => {
+ if (data.attachments && data.attachments.length > 0) {
+ const validAttachments = data.attachments.filter(
+ (attachment): attachment is NonNullable =>
+ attachment !== null
+ );
+
+ if (validAttachments.length > 0) {
+ const attachmentPromises = validAttachments.map(async (attachment) => {
+ const url = await getAttachmentUrl(
+ data.id,
+ attachment.bucket,
+ attachment.key
+ );
+ return { ...attachment, url };
+ });
+
+ const resolvedAttachments = await Promise.all(attachmentPromises);
+ downloadAll(resolvedAttachments, data.id);
+ }
+ }
+};
+
+export const Attachmentslist = (data: AttachmentList) => {
+ const [loading, setLoading] = useState(false);
+ return (
+
+
+
+
+ Document Type
+ Attached File
+ Upload Date
+
+
+
+ {data.attachments ? (
+ data.attachments.map((attachment) => {
+ if (!attachment) return null;
+ return (
+
+
+ {attachment.title}
+
+
+
+
+
+
+
+
+ {attachment.uploadDate ? (
+ <>
+
{format(attachment.uploadDate, "MM/dd/yyyy")}
+
{format(attachment.uploadDate, "h:mm a")}
+ >
+ ) : (
+
Unknown
+ )}
+
+
+
+ );
+ })
+ ) : (
+ No Attachments To Show
+ )}
+
+
+
+ {data.attachments && (
+
+ )}
+
+
+ );
+};
+
+async function downloadAll(
+ attachments: OsMainSourceItem["attachments"],
+ id: string
+) {
+ if (!attachments) return null;
+ const downloadList = (await Promise.all(
+ attachments
+ .map(async (attachment) => {
+ if (!attachment) return null;
+ try {
+ const resp = await fetch(attachment.url);
+ if (!resp.ok) throw resp;
+ return {
+ filename: attachment.filename,
+ title: attachment.title,
+ contents: await resp.blob(),
+ };
+ } catch (e) {
+ console.error(
+ `Failed to download file: ${attachment.filename} ${attachment.url}`,
+ e
+ );
+ }
+ })
+ .filter(Boolean)
+ )) as { filename: string; title: string; contents: Blob }[];
+ const zip = new JSZip();
+ for (const { filename, title, contents } of downloadList) {
+ zip.file(filename, contents, { comment: title });
+ }
+ saveAs(await zip.generateAsync({ type: "blob" }), `${id || "onemac"}.zip`);
+}
diff --git a/src/services/ui/src/components/Button/index.tsx b/src/services/ui/src/components/Button/index.tsx
new file mode 100644
index 0000000000..7d78796c52
--- /dev/null
+++ b/src/services/ui/src/components/Button/index.tsx
@@ -0,0 +1,56 @@
+import * as React from "react";
+import { Slot } from "@radix-ui/react-slot";
+import { cva, type VariantProps } from "class-variance-authority";
+
+import { cn } from "@/lib/utils";
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
+ {
+ variants: {
+ variant: {
+ default: "bg-primary text-slate-50 hover:bg-primary/90",
+ destructive:
+ "bg-destructive text-destructive-foreground hover:bg-destructive/90",
+ outline:
+ "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
+ secondary:
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
+ ghost: "hover:bg-accent hover:text-accent-foreground",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-10 px-4 py-2",
+ sm: "h-9 rounded-md px-3",
+ lg: "h-11 rounded-md px-8",
+ icon: "h-10 w-10",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+);
+
+export interface ButtonProps
+ extends React.ButtonHTMLAttributes,
+ VariantProps {
+ asChild?: boolean;
+}
+
+const Button = React.forwardRef(
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
+ const Comp = asChild ? Slot : "button";
+ return (
+
+ );
+ }
+);
+Button.displayName = "Button";
+
+export { Button, buttonVariants };
diff --git a/src/services/ui/src/components/Calendar/index.tsx b/src/services/ui/src/components/Calendar/index.tsx
new file mode 100644
index 0000000000..a37e893e02
--- /dev/null
+++ b/src/services/ui/src/components/Calendar/index.tsx
@@ -0,0 +1,82 @@
+import * as React from "react";
+import { DayPicker } from "react-day-picker";
+
+import { cn } from "@/lib/utils";
+import { buttonVariants } from "../Button";
+
+export type CalendarProps = React.ComponentProps & {
+ className?: string;
+ classNames?: any;
+ showOutsideDays?: boolean;
+};
+
+function Calendar({
+ className,
+ classNames,
+ showOutsideDays = true,
+ ...props
+}: CalendarProps) {
+ return (
+ {
+ return (
+
+ );
+ },
+ }}
+ {...props}
+ />
+ );
+}
+Calendar.displayName = "Calendar";
+
+export { Calendar };
diff --git a/src/services/ui/src/components/Cards/CardWithTopBorder.tsx b/src/services/ui/src/components/Cards/CardWithTopBorder.tsx
new file mode 100644
index 0000000000..c3d3a76fd1
--- /dev/null
+++ b/src/services/ui/src/components/Cards/CardWithTopBorder.tsx
@@ -0,0 +1,19 @@
+interface CardWithTopBorderProps {
+ children: React.ReactNode;
+}
+
+export const CardWithTopBorder: React.FC = ({
+ children,
+}: CardWithTopBorderProps) => {
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/Cards/index.ts b/src/services/ui/src/components/Cards/index.ts
new file mode 100644
index 0000000000..51210f108c
--- /dev/null
+++ b/src/services/ui/src/components/Cards/index.ts
@@ -0,0 +1 @@
+export * from "./CardWithTopBorder";
diff --git a/src/services/ui/src/components/Checkbox/index.tsx b/src/services/ui/src/components/Checkbox/index.tsx
new file mode 100644
index 0000000000..5e20915a6b
--- /dev/null
+++ b/src/services/ui/src/components/Checkbox/index.tsx
@@ -0,0 +1,71 @@
+import * as React from "react";
+import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
+import { Check } from "lucide-react";
+
+import { cn } from "@/lib/utils";
+
+const Checkbox = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ className?: string;
+ label: string;
+ description?: string;
+ }
+>(({ className, ...props }, ref) => (
+
+
+
+
+
+
+
+ {!!props.label && (
+
+ )}
+ {!!props.description && (
+
{props.description}
+ )}
+
+
+));
+Checkbox.displayName = CheckboxPrimitive.Root.displayName;
+
+export const CheckboxGroup: React.FC<{
+ value: string[];
+ onChange: (value: string[]) => void;
+ options: { label: string; value: string }[];
+}> = (props) => {
+ return (
+
+ {props.options.map((OPT) => (
+ {
+ const filtered = props.value.filter((f) => f !== OPT.value);
+ if (!c) return props.onChange(filtered);
+ props.onChange([...filtered, OPT.value]);
+ }}
+ />
+ ))}
+
+ );
+};
+
+export { Checkbox };
diff --git a/src/services/ui/src/components/DetailsSection/index.tsx b/src/services/ui/src/components/DetailsSection/index.tsx
new file mode 100644
index 0000000000..c3e1ccf9f1
--- /dev/null
+++ b/src/services/ui/src/components/DetailsSection/index.tsx
@@ -0,0 +1,22 @@
+interface DetailsSectionProps {
+ children: React.ReactNode;
+ title: string;
+ id: string;
+ description?: string;
+}
+
+export const DetailsSection: React.FC = ({
+ children,
+ title,
+ description,
+ id,
+}: DetailsSectionProps) => {
+ return (
+
+
{title}
+ {description &&
{description}
}
+
+ {children}
+
+ );
+};
diff --git a/src/services/ui/src/components/ErrorAlert/index.tsx b/src/services/ui/src/components/ErrorAlert/index.tsx
new file mode 100644
index 0000000000..4c70df0b28
--- /dev/null
+++ b/src/services/ui/src/components/ErrorAlert/index.tsx
@@ -0,0 +1,19 @@
+import * as UI from "@/components/Alert";
+import { XCircleIcon } from "lucide-react";
+import { ReactQueryApiError } from "shared-types";
+
+export const ErrorAlert = ({ error }: { error: ReactQueryApiError }) => {
+ let message = "An error has occured";
+
+ if (error?.response?.data?.message) {
+ message = error.response.data.message;
+ }
+ return (
+ //
+
+
+ Error
+ {message}
+
+ );
+};
diff --git a/src/services/ui/src/components/ExportButton/index.tsx b/src/services/ui/src/components/ExportButton/index.tsx
new file mode 100644
index 0000000000..b44594f75f
--- /dev/null
+++ b/src/services/ui/src/components/ExportButton/index.tsx
@@ -0,0 +1,101 @@
+import { ExportToCsv } from "export-to-csv";
+import { getAllSearchData } from "@/api";
+import { Button } from "@/components/Button";
+import { Download, Loader } from "lucide-react";
+import { useState } from "react";
+import { motion } from "framer-motion";
+import { format } from "date-fns";
+import { OsMainSourceItem } from "shared-types";
+import { convertCamelCaseToWords, isISOString } from "@/utils";
+import { useGetUser } from "@/api/useGetUser";
+import { DEFAULT_FILTERS, useOsParams } from "../Opensearch";
+import { createSearchFilterable } from "../Opensearch/utils";
+
+function formatDataForExport(obj: OsMainSourceItem, isCms?: boolean): any {
+ const result: any = {};
+
+ for (const [key, value] of Object.entries(obj)) {
+ const k = convertCamelCaseToWords(key);
+ if (value === "undefined") {
+ console.log("dum");
+ }
+ if (value === null || value === undefined) {
+ result[k] = "";
+ } else if (typeof value === "object" && !Array.isArray(value)) {
+ result[k] = formatDataForExport(value, isCms);
+ } else if (typeof value === "string" && isISOString(value)) {
+ result[k] = format(new Date(value), "MM/dd/yyyy");
+ } else if (typeof value === "string" && key === "cmsStatus") {
+ if (isCms) {
+ result["Status"] = value;
+ }
+ } else if (typeof value === "string" && key === "stateStatus") {
+ if (!isCms) {
+ result["Status"] = value;
+ }
+ } else {
+ result[k] = value;
+ }
+ }
+
+ return result;
+}
+
+export const OsExportButton = () => {
+ const [loading, setLoading] = useState(false);
+ const { data: user } = useGetUser();
+ const params = useOsParams();
+
+ const handleExport = async () => {
+ const csvExporter = new ExportToCsv({
+ useKeysAsHeaders: true,
+ filename: `${params.state.tab}-export-${format(
+ new Date(),
+ "MM/dd/yyyy"
+ )}`,
+ });
+ setLoading(true);
+
+ const filters = DEFAULT_FILTERS[params.state.tab]?.filters ?? [];
+
+ const searchFilter = createSearchFilterable(params.state.search);
+ const osData = await getAllSearchData([
+ ...params.state.filters,
+ ...filters,
+ ...searchFilter,
+ ]);
+
+ const sourceItems = osData?.map((hit) => {
+ const filteredHit = formatDataForExport({ ...hit._source }, user?.isCms);
+
+ // Properties to exclude from export
+ Reflect.deleteProperty(filteredHit, "Attachments");
+ Reflect.deleteProperty(filteredHit, "Rai Responses");
+
+ return filteredHit;
+ });
+ csvExporter.generateCsv(sourceItems);
+
+ setLoading(false);
+ };
+
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/Footer/index.tsx b/src/services/ui/src/components/Footer/index.tsx
new file mode 100644
index 0000000000..f785e4344c
--- /dev/null
+++ b/src/services/ui/src/components/Footer/index.tsx
@@ -0,0 +1,53 @@
+import MedicaidLogo from "@/assets/MedicaidLogo.svg";
+import DepartmentOfHealthLogo from "@/assets/DepartmentOfHealthLogo.svg";
+
+type Props = {
+ email: string;
+ address: {
+ street: string;
+ state: string;
+ city: string;
+ zip: number;
+ };
+};
+
+export const Footer = ({ email, address }: Props) => {
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/GovernmentBuildingIcon/index.tsx b/src/services/ui/src/components/GovernmentBuildingIcon/index.tsx
new file mode 100644
index 0000000000..8299376c98
--- /dev/null
+++ b/src/services/ui/src/components/GovernmentBuildingIcon/index.tsx
@@ -0,0 +1,25 @@
+type Props = {
+ fill?: string;
+ className?: string;
+};
+
+export const GovernmentBuildingIcon = ({
+ fill = "#2378C3",
+ className = "",
+}: Props) => {
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/HowItWorks/index.tsx b/src/services/ui/src/components/HowItWorks/index.tsx
new file mode 100644
index 0000000000..bec8e16992
--- /dev/null
+++ b/src/services/ui/src/components/HowItWorks/index.tsx
@@ -0,0 +1,26 @@
+export const HowItWorks = ({ children }: React.PropsWithChildren) => {
+ return (
+
+
How it works
+ {children}
+
+ );
+};
+
+export type StepProps = {
+ icon: React.ReactNode;
+ title: React.ReactNode;
+ content: React.ReactNode;
+};
+
+export const Step = ({ icon, content, title }: StepProps) => {
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/Layout/index.tsx b/src/services/ui/src/components/Layout/index.tsx
new file mode 100644
index 0000000000..111e1457bf
--- /dev/null
+++ b/src/services/ui/src/components/Layout/index.tsx
@@ -0,0 +1,193 @@
+import { Link, NavLink, NavLinkProps, Outlet } from "react-router-dom";
+import oneMacLogo from "@/assets/onemac_logo.svg";
+import { useMediaQuery } from "@/hooks";
+import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/outline";
+import { useState } from "react";
+import { useGetUser } from "@/api/useGetUser";
+import { Auth } from "aws-amplify";
+import { AwsCognitoOAuthOpts } from "@aws-amplify/auth/lib-esm/types";
+import { Footer } from "../Footer";
+import { UsaBanner } from "../UsaBanner";
+
+const getLinks = (isAuthenticated: boolean) => {
+ if (isAuthenticated) {
+ return [
+ {
+ name: "Home",
+ link: "/",
+ },
+ {
+ name: "Dashboard",
+ link: "/dashboard",
+ },
+ {
+ name: "FAQ",
+ link: "/faq",
+ },
+ ];
+ } else {
+ return [
+ {
+ name: "Home",
+ link: "/",
+ },
+ {
+ name: "FAQ",
+ link: "/faq",
+ },
+ ];
+ }
+};
+
+export const Layout = () => {
+ const isDesktop = useMediaQuery("(min-width: 768px)");
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+type ResponsiveNavProps = {
+ isDesktop: boolean;
+};
+const ResponsiveNav = ({ isDesktop }: ResponsiveNavProps) => {
+ const [prevMediaQuery, setPrevMediaQuery] = useState(isDesktop);
+ const [isOpen, setIsOpen] = useState(false);
+ const { isLoading, isError, data } = useGetUser();
+
+ const handleLogin = () => {
+ const authConfig = Auth.configure();
+ const { domain, redirectSignIn, responseType } =
+ authConfig.oauth as AwsCognitoOAuthOpts;
+ const clientId = authConfig.userPoolWebClientId;
+ const url = `https://${domain}/oauth2/authorize?redirect_uri=${redirectSignIn}&response_type=${responseType}&client_id=${clientId}`;
+
+ window.location.assign(url);
+ };
+
+ const handleLogout = async () => {
+ await Auth.signOut();
+ };
+
+ if (isLoading || isError) return <>>;
+
+ const setClassBasedOnNav: NavLinkProps["className"] = ({ isActive }) =>
+ isActive
+ ? "underline underline-offset-4 decoration-4 hover:text-white/70"
+ : "hover:text-white/70";
+
+ if (prevMediaQuery !== isDesktop) {
+ setPrevMediaQuery(isDesktop);
+ setIsOpen(false);
+ }
+
+ if (isDesktop) {
+ return (
+ <>
+ {getLinks(!!data.user).map((link) => (
+
+ {link.name}
+
+ ))}
+
+ <>
+ {data.user ? (
+
+ ) : (
+
+ )}
+ >
+ >
+ );
+ }
+
+ return (
+ <>
+
+ {isOpen && (
+
+
+ {getLinks(!!data.user).map((link) => (
+ -
+ setIsOpen(false)}
+ className="block py-2 pl-3 pr-4 text-white rounded"
+ to={link.link}
+ >
+ {link.name}
+
+
+ ))}
+ <>
+ {data.user ? (
+
+ ) : (
+
+ )}
+ >
+
+
+ )}
+
+ >
+ );
+};
diff --git a/src/services/ui/src/components/LockIcon/index.tsx b/src/services/ui/src/components/LockIcon/index.tsx
new file mode 100644
index 0000000000..f0825200f2
--- /dev/null
+++ b/src/services/ui/src/components/LockIcon/index.tsx
@@ -0,0 +1,22 @@
+type Props = {
+ fill?: string;
+ className?: string;
+};
+
+export const LockIcon = ({ fill = "#719F2A", className = "" }: Props) => {
+ return (
+
+ );
+};
diff --git a/src/services/ui/src/components/MainWrapper/index.test.tsx b/src/services/ui/src/components/MainWrapper/index.test.tsx
deleted file mode 100644
index f2799de6b8..0000000000
--- a/src/services/ui/src/components/MainWrapper/index.test.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import { describe, expect, test } from "vitest";
-import { render, screen } from "@testing-library/react";
-import { RouterProvider, createMemoryRouter } from "react-router-dom";
-import MainWrapper from ".";
-describe("Header test", () => {
- test("should show main wrapper text", () => {
- const router = createMemoryRouter(
- [
- {
- path: "/",
- element: ,
- children: [{ path: "test", element: testing
}],
- },
- ],
- {
- initialEntries: ["/", "/test"],
- initialIndex: 1,
- }
- );
- render();
- expect(screen.getByText(/test/i)).toBeDefined();
- });
-});
diff --git a/src/services/ui/src/components/MainWrapper/index.tsx b/src/services/ui/src/components/MainWrapper/index.tsx
deleted file mode 100644
index 298496bdfb..0000000000
--- a/src/services/ui/src/components/MainWrapper/index.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-import * as UI from "@enterprise-cmcs/macpro-ux-lib";
-import cmsLogo from "@enterprise-cmcs/macpro-ux-lib/build/assets/img/logos/cms_logo.svg";
-import { Outlet } from "react-router-dom";
-
-export default function MainWrapper() {
- return (
-
-
-
-
-
- }
- navData={[
- {
- buttonText: "Home",
- columns: [
- [
- {
- href: "/",
- text: "Home Page",
- },
- ],
- ],
- },
- {
- buttonText: "Issues",
- columns: [
- [
- {
- href: "/issues",
- text: "All Issues",
- },
- ],
- ],
- },
- ]}
- secondaryComponent={
-
- }
- />
-
-
-
-
-
- );
-}
diff --git a/src/services/ui/src/components/Modal/index.tsx b/src/services/ui/src/components/Modal/index.tsx
index 82e1354438..0f1ddd22ad 100644
--- a/src/services/ui/src/components/Modal/index.tsx
+++ b/src/services/ui/src/components/Modal/index.tsx
@@ -4,7 +4,7 @@ import {
ReactElement,
JSXElementConstructor,
} from "react";
-import * as UI from "@enterprise-cmcs/macpro-ux-lib";
+import * as UI from "../Button";
import { XMarkIcon } from "@heroicons/react/24/outline";
import { PropsWithChildren } from "react";
@@ -21,11 +21,9 @@ export function Modal({
const [showModal, setShowModal] = useState(false);
return (
<>
- setShowModal(true)}
- />
+ setShowModal(true)}>
+ {buttonText}
+
{showModal ? (
<>
@@ -34,9 +32,7 @@ export function Modal({
{/*header*/}
-
- {title}
-
+
{title}
setShowModal(false)} />
diff --git a/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx b/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx
new file mode 100644
index 0000000000..f9b5f20595
--- /dev/null
+++ b/src/services/ui/src/components/Opensearch/Filtering/FilterDrawer.tsx
@@ -0,0 +1,75 @@
+import { FilterIcon } from "lucide-react";
+import { OsRangeValue } from "shared-types";
+
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTrigger,
+} from "@/components/Sheet";
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+} from "@/components/Accordion";
+
+import { FilterableSelect } from "./FilterableSelect";
+import { FilterableDateRange } from "./FilterableDateRange";
+import { FilterableCheckbox } from "./FilterableCheckbox";
+import { useFilterDrawer } from "./useFilterDrawer";
+
+export const OsFilterDrawer = () => {
+ const hook = useFilterDrawer();
+
+ return (
+
+
+
+
+
+
+ Filters
+
+
+ {Object.values(hook.filters).map((PK) => (
+
+
+ {PK.label}
+
+
+ {PK.component === "multiSelect" && (
+
+ )}
+ {PK.component === "multiCheck" && (
+
+ )}
+ {PK.component === "dateRange" && (
+
+ )}
+
+
+ ))}
+
+
+
+ );
+};
diff --git a/src/services/ui/src/components/Opensearch/Filtering/FilterableCheckbox.tsx b/src/services/ui/src/components/Opensearch/Filtering/FilterableCheckbox.tsx
new file mode 100644
index 0000000000..990a7bbd4d
--- /dev/null
+++ b/src/services/ui/src/components/Opensearch/Filtering/FilterableCheckbox.tsx
@@ -0,0 +1,37 @@
+import { Button } from "@/components/Button";
+import { CheckboxGroup } from "@/components/Checkbox";
+
+type Props = {
+ value: string[];
+ onChange: (val: string[]) => void;
+ options: { label: string; value: string }[];
+};
+
+export const FilterableCheckbox = (props: Props) => {
+ const onClear = () => {
+ props.onChange([]);
+ };
+
+ const onSelectAll = () => {
+ props.onChange(props.options.map((OPT) => OPT.value));
+ };
+
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+};
diff --git a/src/services/ui/src/components/Opensearch/Filtering/FilterableDateRange.tsx b/src/services/ui/src/components/Opensearch/Filtering/FilterableDateRange.tsx
new file mode 100644
index 0000000000..f71da4fb93
--- /dev/null
+++ b/src/services/ui/src/components/Opensearch/Filtering/FilterableDateRange.tsx
@@ -0,0 +1,86 @@
+import { useState, useMemo, useEffect } from "react";
+import { format } from "date-fns";
+import { Calendar as CalendarIcon } from "lucide-react";
+import { DateRange } from "react-day-picker";
+
+import { cn } from "@/lib/utils";
+import { Button } from "@/components/Button";
+import { Calendar } from "@/components/Calendar";
+import { Popover, PopoverContent, PopoverTrigger } from "@/components/Popover";
+import { OsRangeValue } from "shared-types";
+
+type Props = Omit<
+ React.HTMLAttributes
,
+ "onChange" | "value" | "onSelect"
+> & {
+ value: OsRangeValue;
+ onChange: (val: OsRangeValue) => void;
+ className?: string;
+};
+
+export function FilterableDateRange({ value, onChange, ...props }: Props) {
+ const [open, setOpen] = useState(false);
+ const [date, setDate] = useState({
+ from: value?.gte ? new Date(value?.gte) : undefined,
+ to: value?.lte ? new Date(value?.lte) : undefined,
+ });
+
+ const handleClose = (updateOpen: boolean) => {
+ setOpen(updateOpen);
+ };
+
+ useEffect(() => {
+ if (!!date?.from && !!date.to) {
+ onChange({ gte: date.from.toISOString(), lte: date.to.toISOString() });
+ }
+ }, [date]);
+
+ const label = useMemo(() => {
+ const from = date?.from ? format(date.from, "LLL dd, y") : "";
+ const to = date?.to ? format(date.to, "LLL dd, y") : "";
+
+ if (from && to) return `${from} - ${to}`;
+ if (from) return `${from}`;
+ return "Pick a date";
+ }, [date]);
+
+ return (
+
+
+
+
+
+ {label}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/services/ui/src/components/Opensearch/Filtering/FilterableSelect.tsx b/src/services/ui/src/components/Opensearch/Filtering/FilterableSelect.tsx
new file mode 100644
index 0000000000..36163f9edd
--- /dev/null
+++ b/src/services/ui/src/components/Opensearch/Filtering/FilterableSelect.tsx
@@ -0,0 +1,27 @@
+import { type FC } from "react";
+import Select from "react-select";
+
+export interface Option {
+ readonly value: string;
+ readonly label: string;
+ readonly color?: string;
+ readonly isFixed?: boolean;
+ readonly isDisabled?: boolean;
+}
+
+export const FilterableSelect: FC<{
+ options: Option[];
+ value: string[];
+ onChange: (values: string[]) => void;
+}> = (props) => {
+ return (
+