-
Notifications
You must be signed in to change notification settings - Fork 12
Resources linking system
For reference for the team. See also: structure and content of resources, which should get consolidated into this page.
Each resource has an item ID (assigned by the system) and some combination of the following aspects:
- Date [can be year, year + month, or year + month + day, such as "2021-10-18"]
- Document ID [identifier, such as "SHO # 21-005"]
- Title [usually a document title, such as "Re: Medicaid Eligibility for COFA Migrants"]
- Category [such as "State Health Official (SHO) Letter"]
- URL (or filename for internal files)
- Subjects
- Regulation citations [section or subpart info, such as "42 435.4", "42 435.907", etc.]
- Statute citations
- Editor notes (only shown in the admin panel)
- Approval status
Internal links and files also have:
- Summary
- Coming soon: Visibility status
Federal Register links also have:
- Document number
- Docket numbers
- Groups
- Action type
- Correction status
- Withdrawal status
As shown on a subject page:
![subject page](https://private-user-images.githubusercontent.com/391313/351866790-704ad176-c555-4ab8-89b4-d866d8a981ed.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMzQ4MzAsIm5iZiI6MTczOTIzNDUzMCwicGF0aCI6Ii8zOTEzMTMvMzUxODY2NzkwLTcwNGFkMTc2LWM1NTUtNGFiOC04OWI0LWQ4NjZkOGE5ODFlZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwMDQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kOWIzODE5MjVkMjhmODMxZjI5MjZlODNhZDY4ZmRmOWU4NGMxZTljYWJiMmNmZmM0OWZiMWU4YTRkZTFhZTc0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6wwt7ngs3qb8HUQ_9GNVAjCUNBVzs93KxLwB_loG6oU)
In search results (see Feature: repository search for details):
![search results](https://private-user-images.githubusercontent.com/391313/351866823-c4b7c560-00a6-42da-b99c-ad65d10c4115.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMzQ4MzAsIm5iZiI6MTczOTIzNDUzMCwicGF0aCI6Ii8zOTEzMTMvMzUxODY2ODIzLWM0YjdjNTYwLTAwYTYtNDJkYS1iOTljLWFkNjVkMTBjNDExNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQwMDQyMTBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZGY4ZTFhMTE2YzI2Y2U3ZTJmOTJjYmZhMzViODIzMmZmMTJjNWMxYjViNGRhYmFlNDk0ODcyMGVjMDlmZDhmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6ydiYQeqNwFZf4J9Ejdp69xuoksozINSc4YT0-H_f7o)
This includes all public documents except FR documents, such as links to related statutes, subregulatory guidance, technical assistance documents, etc.
SMEs enter all of this information by hand. For determining how to associate related regulation citations, they use our criteria whitepaper as a guide (also linked on the live site for reader review).
Our system automatically pulls in new documents via the FederalRegister.gov API, including automatically populating the "locations" list (associated sections and subparts). New documents are automatically marked "approved", since the parser does a good job at importing accurate info for new documents.
By default, we only pull in documents that are marked in the FR doc metadata as associated with our parts in scope. So, for example, if a FR doc is only related to 42 CFR 413, we won't pull it in, since that's not a part in our scope. (See "Configuration of subpart and section info" below for more details.)
We also use the FR API information to automatically associate new documents with any existing "group" of related documents (such as associating a Final Rule with its NPRM).
Our system uses each document's docket number to automatically group related items together, although the RIN could serve this function as well.
Our admin panel allows us to customize the grouping, because sometimes the FR has clerical errors that prevent automatic grouping. Older documents are also less consistent about docket numbers - some have no docket number - so we need to manually group those documents.
The FR API includes most CMS FR documents from present to 1994. Many of its records for items in the 1990s are incomplete, so we manually corrected them in our database, such as by adding missing locations. We also corrected a lot of the "groups" by hand.
We manually entered all the documents in our database dated before 1994, including locations.
This is meant for links to Box, SharePoint, etc. These are entered by hand.
These are entered by hand.
You can assign an item to a category or subcategory. On the site sidebars, categories display a list of subcategories that belong to the category, then a list of items that belong to the category. Subcategories contain items.
The top-level categories and subregulatory guidance subcategories should be arranged in order of authoritativeness.
We add and update categories as we work on the content; the following list is an example.
- Statutes
- Federal Register Documents (groups of documents, sorted in date order by the most-recently-published document that each group contains)
- Related Regulations
- Subregulatory Guidance
- State Medicaid Director Letter (SMDL)
- State Health Official Letter (SHO)
- CMCS Informational Bulletin (CIB)
- Frequently Asked Questions (FAQs)
- State Medicaid Manual (SMM)
- Implementation Resources
- State Plan Amendment Resources
- Technical Assistance for States
- Templates
- Toolkits
- Waiver Resources
- Other Resources
Our admin panel enables team members to:
- Create, rename, and delete categories and subcategories
- Associate a subcategory with a parent category
- Add text descriptions for categories, to be displayed under the category name (subcategories don't display descriptions)
- Determine the placement of a category or subcategory in the list, by giving it a numerical value for its order (for example, a category with a weight of "1" would show up first in the list, and a category with a weight of "1000" would show up last)
This applies to lists that are not sorted by relevance (not search results), such as sidebars and subject pages.
In sidebars, Federal Register documents have a special "grouped" ordering, to help people find related rules.
Default sort order for content items in general:
- All items with dates are sorted in reverse-chronological order (most recent first) by date.
- If multiple items have the same date, use the following order.
- Then all items without dates but with Document IDs are sorted in alphanumeric order by Document ID. (For an example of alphanumeric order, see call numbers in a library.)
- If multiple items have the same Document ID, use the following order.
- Then all items without dates or Document IDs are sorted in alphanumeric order by Document Title.
- If multiple items have the same Document Title, sort them in any order. Doesn't matter at that point.
Approximately once a day, our parser fetches data from eCFR. At that time, our system reads the structure of sections and subparts from eCFR, and it makes that information available to the rest of the system in a convenient format (posts it to a supplemental content endpoint).
The system adds all of the subparts to the subpart menu of the admin panel, and it adds all of the sections to the section menu. For all sections that belong to a subpart, it updates each section to be associated with its subpart. Sections that don’t belong to a subpart (such as 42 CFR 431.1 and 42 CFR 433.1) are not tagged with a subpart. If it finds that a section or subpart already exists and is correct, it skips over it.
If there are sections or subparts in the admin panel that didn’t exist in the eCFR data, they remain in the admin panel (they are skipped, not modified). This typically happens if people had added sections with typos, or if there are old sections that aren't in the latest version of the regulations.
Under "Parser Configuration", we can add parts from any title and declare whether the parser should do one or more of these things with that part:
- Upload the regulation text (so that the part displays in our Table of Contents, people can read it within eRegulations, etc.)
- Upload "locations" (add the subpart and section info to our admin panel, allowing us to associate documents with those locations)
- Upload FR docs (fetch Federal Register rules related to that part and put them into our resources database)
Please note that all pages on this GitHub wiki are draft working documents, not complete or polished.
Our software team puts non-sensitive technical documentation on this wiki to help us maintain a shared understanding of our work, including what we've done and why. As an open source project, this documentation is public in case anything in here is helpful to other teams, including anyone who may be interested in reusing our code for other projects.
For context, see the HHS Open Source Software plan (2016) and CMS Technical Reference Architecture section about Open Source Software, including Business Rule BR-OSS-13: "CMS-Released OSS Code Must Include Documentation Accessible to the Open Source Community".
For CMS staff and contractors: internal documentation on Enterprise Confluence (requires login).
- Federal policy structured data options
- Regulations
- Resources
- Statute
- Citation formats
- Export data
- Site homepage
- Content authoring
- Search
- Timeline
- Not built
- 2021
- Reg content sources
- Default content view
- System last updated behavior
- Paragraph indenting
- Content authoring workflow
- Browser support
- Focus in left nav submenu
- Multiple content views
- Content review workflow
- Wayfinding while reading content
- Display of rules and NPRMs in sidebar
- Empty states for supplemental content
- 2022
- 2023
- 2024
- Medicaid and CHIP regulations user experience
- Initial pilot research outline
- Comparative analysis
- Statute research
- Usability study SOP
- 2021
- 2022
- 2023-2024: 🔒 Dovetail (requires login)
- 🔒 Overview (requires login)
- Authentication and authorization
- Frontend caching
- Validation checklist
- Search
- Security tools
- Tests and linting
- Archive