- The medicine and terminology directories are now organized as compact rows, and each item links to a dynamic database-backed detail page:

Medicines: /medicine.php?id=46
Terms: /term.php?id=13
Key files:
Dynamic medicine page: [public/medicine.php (line 
1)](/Users/tyemeclifford/Documents/GH/workout/public/medicine.php:1)
Dynamic term page: [public/term.php (line 
1)](/Users/tyemeclifford/Documents/GH/workout/public/term.php:1)
Shared lookup/link helpers: [app/bootstrap.php (line 
1220)](/Users/tyemeclifford/Documents/GH/workout/app/bootstrap.php:1220)
Reworked medicine directory: [public/nutrition.php (line 
49)](/Users/tyemeclifford/Documents/GH/workout/public/nutrition.php:49)
Reworked terminology page: [public/medical.php (line 
64)](/Users/tyemeclifford/Documents/GH/workout/public/medical.php:64)
Overflow-safe layout CSS: [public/assets/site.css (line 
344)](/Users/tyemeclifford/Documents/GH/workout/public/assets/site.css:344)
This commit is contained in:
Ty Clifford
2026-06-30 15:41:55 -04:00
parent 96de47be43
commit b8045eb068
7 changed files with 567 additions and 56 deletions
+125
View File
@@ -0,0 +1,125 @@
<?php
declare(strict_types=1);
require __DIR__ . '/../app/bootstrap.php';
$pdo = app_db();
$medicine = find_medication_catalog_item($pdo, $_GET);
$pageTitle = $medicine
? ucfirst((string) $medicine['generic_name']) . ' | Medicine Detail | Neon Medical Tracker'
: 'Medicine Not Found | Neon Medical Tracker';
$activePage = 'medicines';
$relatedStudies = [];
$referenceLinks = [];
if ($medicine) {
$genericName = (string) $medicine['generic_name'];
$like = '%' . $genericName . '%';
$relatedStudies = db_all(
$pdo,
"SELECT *
FROM research_studies
WHERE related_medicine LIKE ? OR title LIKE ? OR summary LIKE ?
ORDER BY category, title
LIMIT 6",
[$like, $like, $like]
);
$referenceLinks = medicine_reference_links($medicine);
} else {
http_response_code(404);
}
require __DIR__ . '/partials/site-header.php';
?>
<main>
<?php if (!$medicine): ?>
<section class="admin-public-shell record-shell">
<p class="site-eyebrow">Medicine catalog</p>
<h1>Medicine not found.</h1>
<p>The requested medicine link does not match a current catalog record.</p>
<a class="site-primary" href="/nutrition.php">Search medicines</a>
</section>
<?php else: ?>
<section class="admin-public-shell record-shell">
<div class="record-heading">
<div>
<p class="site-eyebrow">Medicine detail</p>
<h1><?= htmlspecialchars(ucfirst((string) $medicine['generic_name']), ENT_QUOTES) ?></h1>
<p><?= htmlspecialchars((string) ($medicine['common_use'] ?: 'Medicine reference entry.'), ENT_QUOTES) ?></p>
</div>
<div class="record-actions">
<a class="site-primary" href="/tracker.php">Open tracker</a>
<a class="site-secondary" href="/nutrition.php?q=<?= rawurlencode((string) $medicine['generic_name']) ?>">Catalog search</a>
</div>
</div>
<div class="record-meta">
<span><?= htmlspecialchars((string) ($medicine['class_name'] ?: 'Medication'), ENT_QUOTES) ?></span>
<span><?= htmlspecialchars((string) ($medicine['drug_family'] ?: $medicine['source_name'] ?: 'Reference catalog'), ENT_QUOTES) ?></span>
<span>ID <?= htmlspecialchars((string) $medicine['id'], ENT_QUOTES) ?></span>
</div>
</section>
<section class="admin-public-shell">
<div class="record-detail-grid">
<article class="record-field">
<span>Active Ingredient</span>
<p><?= htmlspecialchars((string) ($medicine['active_ingredient'] ?: $medicine['generic_name']), ENT_QUOTES) ?></p>
</article>
<article class="record-field">
<span>Chemical Name</span>
<p><?= htmlspecialchars((string) ($medicine['chemical_name'] ?: $medicine['active_ingredient'] ?: $medicine['generic_name']), ENT_QUOTES) ?></p>
</article>
<article class="record-field">
<span>Common Brands</span>
<p><?= htmlspecialchars((string) ($medicine['brand_names'] ?: 'Brand names vary by market.'), ENT_QUOTES) ?></p>
</article>
<article class="record-field">
<span>Generic / Alternate Names</span>
<p><?= htmlspecialchars((string) ($medicine['generic_brands'] ?: $medicine['generic_name']), ENT_QUOTES) ?></p>
</article>
<article class="record-field wide">
<span>Tracking Note</span>
<p><?= htmlspecialchars((string) ($medicine['tracking_note'] ?: 'Track dose, frequency, route, prescriber, status, side effects, and patient-specific notes.'), ENT_QUOTES) ?></p>
</article>
<article class="record-field wide">
<span>Reference Links</span>
<div class="source-links">
<?php foreach ($referenceLinks as $label => $url): ?>
<a href="<?= htmlspecialchars((string) $url, ENT_QUOTES) ?>"><?= htmlspecialchars($label, ENT_QUOTES) ?></a>
<?php endforeach; ?>
</div>
</article>
</div>
</section>
<?php if ($relatedStudies): ?>
<section class="admin-public-shell">
<div class="site-section-heading">
<p class="site-eyebrow">Research</p>
<h2>Related NIH/NLM study links</h2>
</div>
<div class="library-list">
<?php foreach ($relatedStudies as $study): ?>
<article class="library-row">
<div class="library-row-main">
<h3><?= htmlspecialchars((string) $study['title'], ENT_QUOTES) ?></h3>
<p><?= htmlspecialchars((string) $study['summary'], ENT_QUOTES) ?></p>
<div class="library-row-meta">
<span><?= htmlspecialchars((string) $study['category'], ENT_QUOTES) ?></span>
<span><?= htmlspecialchars((string) $study['study_type'], ENT_QUOTES) ?></span>
</div>
</div>
<div class="source-links library-row-actions">
<a href="<?= htmlspecialchars((string) $study['source_url'], ENT_QUOTES) ?>"><?= htmlspecialchars((string) $study['nih_source'], ENT_QUOTES) ?></a>
<a href="<?= htmlspecialchars((string) $study['pubmed_url'], ENT_QUOTES) ?>">PubMed</a>
<a href="<?= htmlspecialchars((string) $study['clinicaltrials_url'], ENT_QUOTES) ?>">ClinicalTrials.gov</a>
</div>
</article>
<?php endforeach; ?>
</div>
</section>
<?php endif; ?>
<?php endif; ?>
</main>
<?php require __DIR__ . '/partials/site-footer.php'; ?>