From c7becbf9d6023a72d4ef7546cab6002c69eb7955 Mon Sep 17 00:00:00 2001 From: Ty Clifford Date: Tue, 30 Jun 2026 17:16:19 -0400 Subject: [PATCH] - --- CHANGELOG.md | 75 ++++++++++++++++++++++++++++++++++ README.md | 112 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 162 insertions(+), 25 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b7c2e48 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,75 @@ +# Changelog + +All notable changes to Neon Medical Tracker are documented here. + +## [Unreleased] - 2026-06-30 + +### Added + +- Added a public medical reference hub at `/` focused on medicines, symptoms, terminology, conditions, research, tracker access, and admin access. +- Added a searchable medicine catalog with thousands of records and dynamic medicine detail pages at `/medicine.php?id=...`. +- Added medicine detail fields for active ingredient, chemical name, common brand names, generic/alternate names, class, family, tracking notes, and external reference links. +- Added public medicine-source refresh support through the admin dashboard and `scripts/update_medicine_catalog.php`. +- Added data import/update support for RxNorm, DailyMed, and openFDA. +- Added a searchable symptom reference database at `/symptoms.php`. +- Added dynamic symptom detail pages at `/symptom.php?id=...`. +- Added 242 seeded symptom records grouped by body system/category, with tracking notes, urgency-context notes, search terms, and MedlinePlus links. +- Added a searchable condition reference database at `/workouts.php`. +- Added dynamic condition detail pages at `/condition.php?id=...`. +- Added 203 seeded condition records grouped by clinical category, with overviews, tracking notes, and MedlinePlus links. +- Added dynamic medical terminology detail pages at `/term.php?id=...`. +- Added combined medical library search across symptoms, terminology, conditions, medicines, and research-study links. +- Added search-result ordering so direct symptom and condition name matches rank above broad category/overview matches. +- Added related-record sections on dynamic detail pages, linking conditions, symptoms, terms, medicines, and research records where available. +- Added admin dashboard support for managing profiles and refreshing medication sources. +- Added profile-scoped medical tracker data for medication logs, vitals, labs, symptoms, allergies, appointments, immunizations, and notes. +- Added route documentation for all dynamic medicine, symptom, condition, and terminology endpoints. +- Added responsive overflow protections for long chemical names, brand names, reference URLs, symptoms, conditions, and directory rows. + +### Changed + +- Renamed the project focus from a workout/nutrition tracker to a medical tracker and medical reference database. +- Reworked the homepage from a marketing-style landing page into a direct medical reference hub. +- Reworked `/nutrition.php` from nutrition tracking content into the medicine catalog route. +- Reworked `/workouts.php` from workout planning content into the condition database route while keeping the legacy URL for compatibility. +- Reworked `/medical.php` into a combined searchable library for symptoms, terms, conditions, medicines, and study links. +- Reworked medicine and terminology list views from dense cards into compact searchable directory rows with dynamic detail links. +- Updated profile management so public profile creation is no longer part of the site flow; profile creation is handled through admin/tracker tools. +- Updated `README.md` to match the current medical-reference app, current routes, current data counts, source update process, and API actions. +- Preserved legacy fitness, nutrition, supplement, routine, workout, and body-metric data structures as optional wellness context inside the tracker. + +### Removed + +- Removed the public signup form and public signup JavaScript. +- Removed the `public_signup` API action. +- Removed signup links from the public header, footer, homepage, and condition pages. +- Removed unused signup/showcase CSS from the public stylesheet. +- Replaced `/signup.php` with a simple redirect to `/tracker.php` for legacy links. + +### Fixed + +- Fixed text overflow on long medicine names, chemical names, brand lists, source URLs, and compact database rows. +- Fixed searchable medicine and terminology pages so entries have shareable dynamic pages instead of only inline catalog cards. +- Fixed condition and symptom search behavior so relevant name matches appear first. +- Reduced one-time SQLite seeding lock risk by wrapping symptom catalog seeding in a short transaction and skipping once populated. + +### Verified + +- Verified dynamic medicine, symptom, condition, and terminology routes return `200` for representative records. +- Verified legacy `/signup.php` returns `302` to `/tracker.php`. +- Verified `api.php?action=public_signup` returns `404`. +- Verified current SQLite snapshot counts: 6,002 medicines, 242 symptoms, 203 conditions, 23 terms, and 9 research-link categories. +- Verified browser layout checks for medicine, symptom, and terminology pages at desktop and mobile widths with no horizontal overflow. + +## Earlier Scope + +### Added + +- Added the original multi-user tracker foundation with SQLite storage. +- Added user profiles with role, status, contact details, care focus, height, theme mode, and accent color. +- Added first-user-is-admin behavior. +- Added admin user-management dashboard. +- Added daily, weekly, and monthly planning views. +- Added workout, routine, exercise, nutrition goal, nutrition log, supplement, supplement log, body metric, medication log, vital log, lab result, symptom log, allergy, appointment, and immunization tables. +- Added built-in exercise and supplement libraries. +- Added neon theme styling with dark mode default, light mode support, and green, blue, red, pink, and orange accents. diff --git a/README.md b/README.md index 4d9efa9..d4b1f89 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -# Neon Health Tracker +# Neon Medical Tracker -A dependency-free PHP, HTML5, JavaScript, and SQLite tracker for workouts, nutrition, supplements, and body metrics. +A dependency-free PHP, HTML5, JavaScript, and SQLite web app for multi-user medical tracking, searchable medical reference data, medication catalog lookup, terminology, symptoms, conditions, NIH/NLM study links, and admin-managed profiles. + +This app is a personal tracking and reference tool. It is not medical advice, diagnosis, treatment guidance, emergency guidance, or a substitute for a clinician or pharmacist. ## Run ```sh -frankenphp php-server --root public --listen 127.0.0.1:8080 +/Users/tyemeclifford/frankenphp php-server --root public --listen 127.0.0.1:8080 ``` Then open: @@ -16,15 +18,21 @@ http://127.0.0.1:8080 ## Public Routes -- `/` - public homepage for the service. -- `/workouts.php` - workout planning feature page. -- `/nutrition.php` - nutrition tracking feature page. -- `/recovery.php` - recovery, supplements, and health monitoring feature page. -- `/signup.php` - public profile signup. -- `/tracker.php` - the workout, nutrition, supplement, and health dashboard. -- `/admin.php` - admin user-management dashboard. +- `/` - medical reference hub with search, database totals, and links to tracker/admin tools. +- `/nutrition.php` - searchable medicine catalog. +- `/medicine.php?id=46` - dynamic medicine detail page backed by SQLite. +- `/symptoms.php` - searchable symptom reference database. +- `/symptom.php?id=24` - dynamic symptom detail page backed by SQLite. +- `/workouts.php` - searchable condition reference database. +- `/condition.php?id=2` - dynamic condition detail page backed by SQLite. +- `/medical.php` - combined search for symptoms, terminology, conditions, medicines, and study links. +- `/term.php?id=1` - dynamic medical terminology detail page backed by SQLite. +- `/recovery.php` - NIH/NLM research and study-link categories. +- `/tracker.php` - profile-scoped medical tracker dashboard. +- `/admin.php` - admin user-management dashboard and medicine-source updater. +- `/signup.php` - legacy route that redirects to `/tracker.php`; public signup has been removed. -## Storage +## Current Data SQLite is created automatically at: @@ -32,23 +40,77 @@ SQLite is created automatically at: data/health_tracker.sqlite ``` -The app seeds two sample profiles, built-in exercise movements, common gym supplements, starter routines, planner entries, nutrition logs, supplement logs, and body metrics. +The current SQLite snapshot includes: + +- 6,002 medicine catalog records. +- 242 symptom reference records. +- 203 condition reference records. +- 23 medical terminology records. +- 9 NIH/NLM research-link categories. + +The database also stores user profiles, medication logs, vitals, lab results, symptom logs, allergies, appointments, immunizations, optional legacy workout/nutrition/supplement data, theme preferences, and admin state. ## Included -- Multi-user profiles with separate routines, logs, goals, and theme preferences. -- Admin dashboard for creating, editing, activating/deactivating, and deleting user profiles. -- First user created in a database is automatically promoted to `admin`; later users default to `member`. -- Daily, weekly, and monthly workout planner views. -- Routine planning for weight lifting, cycling, running, swimming, conditioning, mobility, core, outdoor, and hybrid programs. -- Configurable exercise and supplement libraries. -- Nutrition goals scoped by day, week, or month, compared against actual logs. -- Supplement tracking for pre-workout, intra-workout, post-workout, daily, and evening use. -- Health metrics for weight, body fat, sleep, resting heart rate, mood, and notes. +- Multi-user profiles with separate medical records and theme preferences. +- First user in a database is automatically promoted to `admin`; later users default to `member`. +- Admin dashboard for creating, editing, activating/deactivating, and deleting profiles. +- Admin medicine-source updater for refreshing catalog data from RxNorm, DailyMed, and openFDA. +- Profile-scoped tracker for medication logs, vitals, lab results, symptoms, allergies, appointments, immunizations, notes, and older wellness data. +- Searchable medicine catalog by generic name, active ingredient, chemical name, common brand names, generic/alternate names, class, family, and source terms. +- Dynamic medicine pages with active ingredient, chemical name, brand names, tracking notes, RxNorm, DailyMed, PubChem, MedlinePlus, PubMed, and ClinicalTrials.gov links. +- Searchable symptom database with body-system categories, tracking notes, urgency-context notes, MedlinePlus links, and dynamic detail pages. +- Searchable condition database with category summaries, tracking notes, MedlinePlus links, and dynamic detail pages. +- Medical terminology database with plain-language definitions, clinical context, source links, and dynamic detail pages. +- Combined medical library search across symptoms, conditions, terminology, medicines, and research links. +- NIH/NLM study-link categories related to listed medicines and conditions. - Neon dark theme by default, light mode option, and green, blue, red, pink, and orange accents. -## Photo Credits +## Medicine Catalog Updates -- `Jogging Woman in Grass` by Mike Baird, CC BY 2.0. -- `Cycling in Amsterdam (893)` by FaceMePLS, CC BY-SA 2.0. -- `A large mixed salad` by Jmabel, CC BY-SA 4.0. +The medicine catalog ships with a curated starter set and the current SQLite snapshot includes thousands of imported medicine concepts. It can be refreshed from public sources. + +From the admin dashboard, use the medicine source updater and choose `All sources`, `RxNorm`, `DailyMed`, or `openFDA`. + +From the command line: + +```sh +/Users/tyemeclifford/frankenphp php-cli scripts/update_medicine_catalog.php 1000 all +``` + +For periodic maintenance, run the same command nightly or weekly. The first argument is the max rows per source, from `25` to `5000`; the second argument is `all`, `RxNorm`, `DailyMed`, or `openFDA`. + +## API + +Main API endpoint: + +```text +public/api.php +``` + +Useful actions: + +- `GET api.php?action=state` - tracker/admin state payload. +- `GET api.php?action=library_search&q=chest&limit=20` - combined reference search. +- `POST api.php?action=create_user` - create a user profile from admin/tracker tools. +- `POST api.php?action=update_user` - update a user profile. +- `POST api.php?action=delete_user` - delete a user profile. +- `POST api.php?action=refresh_medication_sources` - refresh the medicine catalog from configured public sources. + +The old `public_signup` action has been removed. + +## Reference Sources + +- MedlinePlus health topics, symptoms, conditions, labs, and drug information: `https://medlineplus.gov/` +- RxNorm and RxNav from the U.S. National Library of Medicine: `https://www.nlm.nih.gov/research/umls/rxnorm/index.html` +- DailyMed label search from the U.S. National Library of Medicine: `https://dailymed.nlm.nih.gov/dailymed/` +- PubChem chemical and compound search from NCBI: `https://pubchem.ncbi.nlm.nih.gov/` +- PubMed research search: `https://pubmed.ncbi.nlm.nih.gov/` +- ClinicalTrials.gov study search: `https://clinicaltrials.gov/` +- openFDA drug label data: `https://open.fda.gov/apis/drug/label/` + +## Notes + +- This project intentionally avoids a public signup funnel. Profiles are managed through `/admin.php` and `/tracker.php`. +- Dynamic detail pages use shared PHP endpoints and pull records from SQLite; individual medicine, symptom, condition, and term pages do not need to exist as separate files. +- Legacy workout, nutrition, and supplement tracker data remains in the schema as wellness context, but the public app focus is now medical tracking and reference lookup.