Type in your medicines and ZIP code. Get one printable page that says which of your medicines make hot days more dangerous and what to ask your pharmacist.
HealthJavaScript · HTMLGitHub @usv240OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Checks your medicines against CDC heat guidance and your local NWS heat forecast, then prints a plan for your pharmacist.
Taken from the repository README
Loading the full README.
Read the full README ↗Check your medicines against CDC heat guidance and your local heat forecast, then print a one-page plan to take to your pharmacist.
Live site: https://usv240.github.io/heat-meds/ (press "Try an example", no account needed) Demo video: https://youtu.be/7ZnGjnIXZVg
Some everyday medicines, like water pills, some blood pressure pills, and some antidepressants, change how the body handles heat. They can dull thirst, change sweating, or lower blood pressure, so a hot day hits harder. Older adults take these medicines most, and most are never told.
In September 2025 the CDC asked clinicians to plan for this with their patients [1]. That guidance is a table written for doctors. Patients and families had no tool to start the conversation themselves.
It is common, not rare: 6 of the 10 most-prescribed medicines in the US are on the CDC's heat list (this project's analysis of the 2024 Medical Expenditure Panel Survey [6]).
Older adults and the people who look after them, at the kitchen table with the pill bottles out, or at the pharmacy counter.
It also replays a real past heat wave (Phoenix, August 3 to 9, 2025) so you can see your plan on a bad day in any season, and it says plainly when a ZIP is outside the forecast area. It works on phones and desktops, in light and dark mode, and prints on one page.
The 300 most-prescribed US medicines [6] were run through the same code the site uses (run of September 30, 2026):
| Check | Result |
|---|---|
| Warnings without an exact CDC quote | 0 |
| Plans that tell anyone to stop or change a medicine | 0 |
| Agreement with UK Health Security Agency guidance [3] | 75.0% (225 of 300) |
| Agreement with Health Canada guidance [4] | 82.3% (247 of 300) |
Every one of the 128 disagreements is listed with a reason on the Evidence page, along with the 18 medicines this site flags that neither the UK nor Canada lists. The numbers on that page are read straight from data/evidence.json; nothing is typed by hand.
This measures agreement with national guidance, not clinical outcomes.
flowchart LR
U["You: medicines and ZIP"] --> P["Heat Meds page<br/>(runs in your browser)"]
P -->|"medicine names"| RX["NLM RxNorm and RxClass<br/>name, ingredients, drug class"]
P -->|"ZIP to location<br/>(bundled Census file)"| HR["NWS HeatRisk<br/>7-day heat forecast"]
RX --> R["Rules engine<br/>CDC heat rules, each with a quote"]
HR --> R
R --> PLAN["Your one-page plan"]
data/cdc-rules.json) were copied line by line from the CDC page [1], each with its exact quote, link, and the date it was checked. A rule without a quote cannot load.Any web page can use the same check:
<script type="module">
import { checkMedicines } from 'https://usv240.github.io/heat-meds/src/api.js';
const result = await checkMedicines(['furosemide 40 mg', 'lisinopril'], { zip: '85004' });
console.log(result.text, result.plan.cards, result.unresolved);
</script>
There is no API key on purpose: a key would need a server that sees people's medicine lists, which this project promises not to do.
No install and no build step. Any static web server works:
python -m http.server 8000
Then open http://localhost:8000/. (Pages use JavaScript modules, so open them through a server, not by double-clicking the file.)
Requires Node 20 or newer. No packages need installing:
node --test
This runs 79 tests: the rules engine, name lookup, the forecast modes, the paste parser, the evidence file, and site copy rules. Two of them open the site in headless Chrome or Edge (one-page print, and page width at phone and desktop sizes); they are skipped if neither browser is installed.
Optional live checks against the real services:
node scripts/smoke-heatrisk.mjs # HeatRisk forecast for downtown Phoenix
node scripts/probe-names.mjs # RxNorm and RxClass on tricky names
node scripts/example-plan.mjs # the Phoenix example plan as text
node scripts/check-print.mjs # prints the example and counts pages
node scripts/check-pages.mjs 375,1280 # page width and layout checks
| File | Script | Source |
|---|---|---|
data/zip/*.json | node scripts/build-zip-index.mjs | U.S. Census Bureau ZCTA Gazetteer [7] |
data/saved-heatwave.json | npm install then node scripts/sample-heatwave.mjs | NWS HeatRisk daily archive [2] |
data/top300.json | node scripts/derive-top300.mjs path/to/h254a.dat | AHRQ MEPS 2024 Prescribed Medicines [6] |
data/evidence.json | node scripts/run-evidence.mjs | Live RxNorm and RxClass, the rules, and the answer keys |
data/cdc-rules.json and the answer keys in data/answer-keys/ are curated by hand. The answer keys were committed before the first evidence run, so the agreement numbers could not be tuned afterwards.
Built plan-first with the Devpost Learn Skill Pack in a coding agent (Claude Code). The planning documents are in devpost/:
scope.md: the idea, the person it is for, and what was cutprd.md: every screen and behavior, with acceptance criteriaspec.md: the technical plan, data sources, and failure modeschecklist.md: the build in seven tested steps, plus every change the build forcedusability-review.md: a review against published usability standards (AHRQ PEMAT [8], WCAG 2.2 [9])app-map.html: a short guide to the codeNo live user testing was possible, so the printed plan was scored with AHRQ's PEMAT checklist for patient handouts [8]: 100% understandable and 100% actionable after adding the summary, next steps, and tick boxes it called for. An automated WCAG 2.2 AA check (axe-core) finds 0 issues on every page, at phone and desktop width, in light and dark mode [9]. The typeface, Atkinson Hyperlegible Next, was designed for readers with low vision.
index.html, plan.html, evidence.html, developers.html the pages
src/ JavaScript modules; rules.js is shared by the site and the tests
data/ CDC rules, answer keys, ZIP data, saved heat wave, evidence run
assets/ styles, print layout, font, images
scripts/ data builders and live checks
test/ automated tests
devpost/ planning documents from the Devpost Learn Skill Pack
France's ANSM heat and medicines list is shown on the Evidence page for context only.
This product uses publicly available data from the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services; NLM is not responsible for the product and does not endorse or recommend this or any other product.
skills-lock.json). Commits made with the assistant carry a co-author line.geotiff (MIT, used only by a one-time data script). Public data from the CDC, NWS, NLM, U.S. Census Bureau, AHRQ, UK Health Security Agency, and Health Canada, as listed above.MIT. See LICENSE. The font is under the SIL Open Font License 1.1, see assets/fonts/OFL.txt.