In May 2025, The Centers for Medicare & Medicaid Services (CMS) and ASTP/ONC released a significant Request for Information (RFI) on the "Health Technology Ecosystem" (Document 2025-08701), seeking broad input on critical areas like interoperability, digital tools, provider burden, digital identity, and information blocking. The deadline for comments is June 16, 2025.
This project provides a static site generator (generator.ts) to process and present a consolidated RFI response, which is maintained in the index.md file within the jmandel/cms-rfi-collab GitHub repository.
Disclaimer: The RFI responses and ideas compiled here are curated by Josh Mandel, MD. Unless otherwise specified within an individual contribution, they represent his personal perspectives and recommendations. This is an open, collaborative effort, and contributions from others are welcome. These views do not necessarily represent the official positions of Microsoft or any other organization.
Assist in collaborative development of:
- Guiding Principles
- Technology Policy Recommendations
- The RFI Response Letter (organized by RFI questions)
The goal is to provide a clean, accessible way to develop and review the consolidated RFI response.
- Two-Pane Layout: The Response Letter is displayed in the left pane, while Guiding Principles and Technology Policy Recommendations are in the right pane, allowing for easy cross-referencing.
- Navigation Header:
- Direct links to "Response Letter" and "Guiding Principles".
- A dropdown menu for "Technology Policy Recommendations" allows quick navigation to specific recommendation categories.
- Content Sourced from
index.md: All content is derived from a single, structured Markdown file. - Internal Linking:
- Explicit IDs (e.g.,
| \my-id`` in Markdown headings) are used to generate stable anchor links. - RFI responses in the "Response Letter" section can link to specific principles or recommendations.
- Explicit IDs (e.g.,
- Styling: A clean, responsive stylesheet is generated for readability.
- GitHub Link: A "Contribute on GitHub" button links back to the source repository.
The generator expects index.md to be structured as follows:
- Guiding Principles Section:
- Starts with
# Guiding Principles. - Each principle is an H3 heading (e.g.,
### Principle Title | \principle_id``).
- Starts with
- Technology Policy Recommendations Section:
- Starts with
# Technology Policy Recommendations. - Recommendation categories are H2 headings (e.g.,
## Category Title). - Individual recommendations within a category are H3 headings (e.g.,
### Recommendation Title | \recommendation_id``).
- Starts with
- Response Letter Section:
- Starts with
# Response Letter. - RFI questions are H3 headings (e.g.,
### RFI-Question-Code. Question Text). IDs are typically derived from the question code (e.g.,PC-2). - Markdown links like
[Link Text](#recommendation_id)can be used to refer to other sections.
- Starts with
Explicit IDs are optional; if not provided, IDs are slugified from the heading text.
- The
generator.tsscript is written in TypeScript and runs using Node.js. - It reads
index.mdusing Node.jsfsmodule. - It splits the content into the three main H1 sections.
- It parses headings and content for each section, extracting text and generating IDs.
- The
markedlibrary is used to convert Markdown content to HTML. - Finally, it assembles the full HTML page and CSS, writing them to
dist/index.htmlanddist/style.css.
.
├── generator.ts # The static site generator script
├── index.md # The primary content input file
├── dist/ # Output directory (created by the script)
│ ├── index.html # Generated HTML file
│ └── style.css # Generated CSS file
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # This file
-
Prerequisites:
- Node.js (which includes npm)
- Bun (or you can adapt
package.jsonscripts for npm/yarn)
-
Clone the repository:
git clone https://github.com/jmandel/cms-rfi-collab.git cd cms-rfi-collab -
Install dependencies: (Assuming
markedand TypeScript-related dev dependencies are listed inpackage.json)bun install
-
Ensure
index.mdis present in the root directory of the project. -
Run the generator: (Assuming a script like
"generate": "bun run generator.ts"or"generate": "tsc && node generator.js"is inpackage.json)bun run generate
This will create or update the
dist/directory withindex.htmlandstyle.css. -
View the output: Open
dist/index.htmlin your web browser.
- Edit Content: Make changes directly to the
index.mdfile. - Re-generate: Run
bun run generateto update the HTML output in thedist/directory. - Review: Open
dist/index.htmlin your browser to check your changes. - Commit: Commit your changes to
index.md. Thedist/directory content should also be committed if it's part of the repository's tracked files for deployment (e.g., for GitHub Pages).
- Styling: The CSS rules are defined within the
cssContentconstant ingenerator.ts. Modify these rules to change the appearance. - HTML Structure: The overall HTML layout is defined in the
finalHtmltemplate string ingenerator.ts. - Logic: The parsing and HTML generation logic is within the
generateSitefunction and its helpers ingenerator.ts.
The generated static files in the dist/ directory are self-contained and can be deployed to any static web hosting service, including GitHub Pages. If GitHub Pages is configured, pushing changes to index.md and the corresponding updated dist/ files to the main branch would update the live site. (Alternatively, a CI/CD workflow could be set up to run the generator and deploy the dist/ directory automatically.)