Skip to content

Commit

Permalink
4612 [Feature] Create component for Conditions for Enhanced Funding (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
thetif committed Mar 29, 2023
1 parent 56c0ae8 commit fd80377
Show file tree
Hide file tree
Showing 20 changed files with 1,184 additions and 36 deletions.
20 changes: 14 additions & 6 deletions common/schemas/conditionsForEnhancedFunding.js
@@ -1,14 +1,22 @@
import Joi from 'joi';

const conditionsForEnhancedFundingSchema = Joi.object({
enhancedFundingQualification: Joi.boolean(),
enhancedFundingQualification: Joi.boolean().required().messages({
'boolean.base': 'Select an Enhanced Funding Qualification',
'boolean.required': 'Select an Enhanced Funding Qualification'
}),
enhancedFundingJustification: Joi.when('enhancedFundingQualification', {
is: true,
then: Joi.string().trim().required().messages({
'string.base': 'Provide an Enhanced Funding Justification',
'string.empty': 'Provide an Enhanced Funding Justification',
'string.required': 'Provide an Enhanced Funding Justification'
}),
then: Joi.string()
.trim()
.replace(/^<p>\s*(&nbsp;\s*)*<\/p>$/gi, '')
.required()
.min(1)
.messages({
'string.base': 'Provide an Enhanced Funding Justification',
'string.empty': 'Provide an Enhanced Funding Justification',
'string.required': 'Provide an Enhanced Funding Justification'
}),
otherwise: Joi.any()
})
});
Expand Down
5 changes: 4 additions & 1 deletion web/src/components/Icons.js
Expand Up @@ -58,6 +58,8 @@ const Spinner = ({ ...props }) => (
const TimesCircle = () => <FontAwesomeIcon icon={faTimesCircle} />;
const UnlockIcon = () => <FontAwesomeIcon icon={faUnlock} />;

const ChevronRight = () => <FontAwesomeIcon icon={faChevronRight} />;

export {
faArrowRight,
faCheckCircle,
Expand All @@ -77,7 +79,7 @@ export {
faTimesCircle,
faUnlock,
Check,
Xmark,
ChevronRight,
CheckCircle,
File,
Envelope,
Expand All @@ -87,6 +89,7 @@ export {
Spinner,
TimesCircle,
UnlockIcon,
Xmark,
faUserCog,
faUserShield,
faUserPlus,
Expand Down
173 changes: 173 additions & 0 deletions web/src/components/StandardsAndConditionsHelpDrawer.js
@@ -0,0 +1,173 @@
import React, { useState, Fragment } from 'react';
import { HelpDrawer, Button } from '@cmsgov/design-system';
import { ChevronRight } from './Icons';

const StandardsAndConditionsHelpDrawer = () => {
const [open, toggleOpen] = useState(false);

return (
<Fragment>
<div className="ds-u-display--flex ds-u-justify-content--start ds-u-align-items--center">
<Button
variation="transparent"
onClick={() => toggleOpen(true)}
className="ds-u-padding-left--0"
>
Review Standards and Conditions Regulation <ChevronRight />
</Button>
</div>
{open && (
<HelpDrawer
heading="Standards and Conditions Help"
onCloseClick={() => toggleOpen(false)}
isHeaderSticky={true}
isFooterSticky={true}
footerBody={
<Fragment>
<div className="ds-u-padding-bottom--1">
<strong>For more details on this regulation.</strong>
<br />
<a
href="https://www.ecfr.gov/current/title-42/chapter-IV/subchapter-C/part-433/subpart-C/section-433.112"
target="_blank"
rel="noreferrer"
>
Review 42. CFR 433.112 documentation
</a>
</div>
</Fragment>
}
>
<strong>
An Excerpt 42 CFR 433.112 and Additional Conditions for Enhanced
Funding
</strong>
<p>
(1) CMS determines the system is likely to provide more efficient,
economical. and effective administration of the State plan.
</p>
<p>
(2) The system meets the system requirements, standards and
conditions, and performance standards in Part 11 of the State
Medicaid Manual, as periodically amended.
</p>
<p>
(3) The system is compatible with the claims processing and
information retrieval used in the administration of Medicare for
prompt eligibility verification and for processing claims for
persons eligible for both programs.
</p>
<p>
(4) The system supports the data requirements of quality improvement
organizations established under Part B of title XI of the Act.
</p>
<p>
(5) The State owns any software that is designed, developed,
installed or improved with 90 percent FFP.
</p>
<p>
(6) The Department has a royalty free, non-exclusive. and
irrevocable license to reproduce, publish, or otherwise use and
authorize others to use, for Federal Government purposes, software,
modifications to software, and documentation that is designed,
developed, installed or enhanced with 90 percent FFP.
</p>
<p>
(7) The costs of the system are determined in accordance with the 45
CFR 75, subpart E.
</p>
<p>
(8) The Medicaid agency agrees in writing to use the system for the
period of time specified in the advance planning document approved
by CMS or for any shorter period of time that CMS determines
justifies the Federal funds invested.
</p>
<p>
(9) The agency agrees in writing that the information in the system
will be safeguarded in accordance with subpart F, part 431 of this
subchapter.
</p>
<p>
(10) Use a modular, flexible approach to systems development,
including the use of open interfaces and exposed application
programming interfaces; the separation of business rules from core
programming, available in both human and machine readable formats.
</p>
<p>
(11) Align to, and advance increasingly, in MITA maturity for
business, architecture, and data.
</p>
<p>
(12) The agency ensures alignment with, and incorporation of,
industry standards adopted by the Office of the National Coordinator
for Health IT in accordance with 45 CFR part 170, subpart B: The
HIPAA privacy, security and transaction standards; accessibility
standards established under section 508 of the Rehabilitation Act,
or standards that provide greater accessibility for individuals with
disabilities, and compliance with Federal civil rights laws;
standards adopted by the Secretary under section 1104 of the
Affordable Care Act; and standards and protocols adopted by the
Secretary under section 1561 of the Affordable Care Act.
</p>
<p>
(13) Promote sharing, leverage, and reuse of Medicaid technologies
and systems within and among States.
</p>
<p>
(14) Support accurate and timely processing and
adjudications/eligibility determinations and effective
communications with providers, beneficiaries, and the public.
</p>
<p>
(15) Produce transaction data, reports, and performance information
that would contribute to program evaluation, continuous improvement
in business operations, and transparency and accountability.
</p>
<p>
(16) The system supports seamless coordination and integration with
the Marketplace, the Federal Data Services Hub, and allows
interoperability with health information exchanges, public health
agencies, human services programs, and community organizations
providing outreach and enrollment assistance services as applicable.
</p>
<p>
(17) For E&E systems, the State must have delivered acceptable
MAGI-based system functionality, demonstrated by performance testing
and results based on critical success factors, with limited
mitigations and workarounds.
</p>
<p>
(18) The State must submit plans that contain strategies for
reducing the operational consequences of failure to meet applicable
requirements for all major milestones and functionality.
</p>
<p>
(19) The agency, in writing through the APD, must identify key state
personnel by name, type and time commitment assigned to each
project.
</p>
<p>
(20) Systems and modules developed, installed or improved with 90
percent match must include documentation of components and
procedures such that the systems could be operated by a variety of
contractors or other users.
</p>
<p>
(21) For software systems and modules developed, installed or
improved with 90 percent match, the State must consider strategies
to minimize the costs and difficulty of operating the software on
alternate hardware or operating systems.
</p>
<p>
(22) Other conditions for compliance with existing statutory and
regulatory requirements, issued through formal guidance procedures,
determined by the Secretary to be necessary to update and ensure
proper implementation of those existing requirements.
</p>
</HelpDrawer>
)}
</Fragment>
);
};

export default StandardsAndConditionsHelpDrawer;
27 changes: 27 additions & 0 deletions web/src/components/StandardsAndConditionsHelpDrawer.stories.js
@@ -0,0 +1,27 @@
import React from 'react';
import { withDesign } from 'storybook-addon-designs';
import StandardsAndConditionsHelpDrawer from './StandardsAndConditionsHelpDrawer';

export default {
title: 'Components/Standards and Conditions Help Drawer',
component: StandardsAndConditionsHelpDrawer,
includeStories: /.*Story$/,
decorators: [withDesign],
parameters: {
jest: ['StandardAndConditionsHelpDrawer.test.js'],
controls: {
hideNoControlsWarning: true
}
}
};

const Template = args => <StandardsAndConditionsHelpDrawer {...args} />;

export const DrawerOpenStory = Template.bind({});
DrawerOpenStory.parameters = {
design: {
type: 'figma',
url: 'https://www.figma.com/file/hJpKHKU6fz5J0Z7fisSwa2/eAPD-MMIS-2022?node-id=8%3A10504&t=IATWLOb2vrqtiGfG-1'
}
};
DrawerOpenStory.args = {};
45 changes: 45 additions & 0 deletions web/src/components/StandardsAndConditionsHelpDrawer.test.js
@@ -0,0 +1,45 @@
import React from 'react';
import { render, screen, waitFor } from 'apd-testing-library';
import userEvent from '@testing-library/user-event';

import StandardsAndConditionsHelpDrawer from './StandardsAndConditionsHelpDrawer';

const setup = async () => {
render(
<main id="start-main-content" className="site-main">
<StandardsAndConditionsHelpDrawer />
</main>
);
const user = userEvent.setup();
return { user };
};

describe('Standards and Conditions Help Drawer', () => {
it('should only render the link initially', async () => {
await setup();

expect(
screen.getByText('Review Standards and Conditions Regulation')
).toBeInTheDocument();

expect(
screen.queryByText(
'An Excerpt 42 CFR 433.112 and Additional Conditions for Enhanced Funding'
)
).toBeNull();
});

it('should open the help drawer when the user clicks the link', async () => {
const { user } = await setup();

user.click(screen.getByText('Review Standards and Conditions Regulation'));

await waitFor(() => {
expect(
screen.getByText(
'An Excerpt 42 CFR 433.112 and Additional Conditions for Enhanced Funding'
)
).toBeInTheDocument();
});
});
});
39 changes: 39 additions & 0 deletions web/src/i18n/locales/en/activities/conditions.yaml
@@ -1 +1,40 @@
title: Conditions for Enhanced Funding
instruction:
detail: >-
Review Medicaid Conditions for Enhanced Funding regulation for the criteria
that qualifies activities for enhanced funding that pertains to various FFP
rates.
link: Review Conditions for Enhanced Funding Regulation

qualification:
heading: Enhanced Funding Qualification
detail: >-
Indicate whether this activity qualifies for enhanced funding based on the
selected match rate.
justification:
heading: Enhanced Funding Justification
detail: >-
Describe how this activity will or WILL NOT support the Medicaid Standards
and Conditions <a
href="https://www.ecfr.gov/current/title-42/chapter-IV/subchapter-C/part-433/subpart-C/section-433.112"
target="_blank" rel="noreferrer">42 CFR 433.112</a>. Ensure all Standards
and Conditions are addressed.
helpText: >-
**Example:** This activity addresses condition 5, 6, 7, 13, and
specifically, products delivered for this activity will be owned by the
state, and HHS will have a royalty free, non-exclusive, and irrevocable
license to reproduce, publish, or otherwise use and authorize others to use.
The costs of the system were determined in accordance with 45 CFR 75,
subpart E, and this activity will promote reuse of systems across our
systems enterprise.
Additionally, this activity will comply with all of the other conditions for
enhanced funding except for:
[ul]
3 - this is not a claims processing activity
4 - this is not a quality improvement activity
17 - this is not a MAGI-based system activity
[/ul]

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions web/src/pages/apd/activities/activityRoutesList.js
Expand Up @@ -2,7 +2,7 @@ import React from 'react';

import AlternativesAndRisks from './alternatives-and-risks/AlternativesAndRisks';
import ContractorResources from './contractor-costs/ContractorResources';
import ConditionsForEnhancedFunding from './conditions/ConditionsForEnhancedFunding';
import ConditionsForEnhancedFunding from './enhanced-funding/ConditionsForEnhancedFunding';
import CostAllocation from './cost-allocation/CostAllocation';
import FFP from './ffp/CostAllocateFFP';
import Costs from './state-costs/Costs';
Expand All @@ -26,7 +26,7 @@ const routes = activityIndex => [
pageName: 'Outcomes and Metrics'
},
{
path: '/apd/:apdId/activity/:activityIndex/conditions',
path: '/apd/:apdId/activity/:activityIndex/enhanced-funding',
children: (
<Section>
<ConditionsForEnhancedFunding activityIndex={activityIndex} />
Expand Down

0 comments on commit fd80377

Please sign in to comment.