Files
medicaltracker/README.md
T
Ty Clifford c7becbf9d6 -
2026-06-30 17:16:19 -04:00

5.8 KiB

Neon Medical Tracker

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

/Users/tyemeclifford/frankenphp php-server --root public --listen 127.0.0.1:8080

Then open:

http://127.0.0.1:8080

Public Routes

  • / - 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.

Current Data

SQLite is created automatically at:

data/health_tracker.sqlite

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 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.

Medicine Catalog Updates

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:

/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:

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.