Logging in
dashboard/login.php checks the submitted credentials against the users table with password_verify(). No password-reset-by-email flow - edit the row directly (Users page or SQL) to reset one.
admin / TruPath@2026 (seeded by database/schema.sql). Change this before any production deployment - it is a known value, not a secret, until rotated.Dashboard pages
| Page | Purpose |
|---|---|
dashboard/index.php | Overview - record counts and data-library metadata. |
dashboard/reports.php | Browse/filter previously generated reports, download their PDFs. |
dashboard/targets.php | Manage the 14-organism STI panel (STI01-STI15, STI10 reserved) and each target's ranked recommendations. |
dashboard/antimicrobials.php | Manage master_clinical_info directly - the only source of an alternative's info/renalStatus/hepaticStatus at render time. |
dashboard/users.php | Manage dashboard accounts. Requires the admin role. |
There is no "MAST Plates" page and no MAST-eligible column anywhere - this product has no MAST/culture workflow at all. All pages were verified end-to-end against this schema: clean php -l, zero PHP warnings/notices/errors over a real local HTTP session with the populated database.
How this product's clinical engine actually differs
Cloned from tpl-wound's PHP/MySQL architecture (same 1102x1427 canvas and color palette), but this product's clinical algorithms, data model, and report layout are its own, ported literally from the approved standalone generator:
- Always single-page PCR_ONLY. The source's own
render(caseData, mode)ignores itsmodeargument entirely - MAST_PENDING/MAST_FINAL are dead code. No gene panel, no MAST drug list, no MAST plate database, no MEDICATION_CLINICAL_INFO overlay. - No pagination, unlike tpl-rpp. Font sizes/row heights shrink to fit more detected pathogens onto the single fixed-height page (active when >3 detected) - the Pathogens Detected table's own row height additionally shrinks down to a 17.5px floor independently.
- 4 pathogen classes including Protozoa. VIRUS/BACTERIA/FUNGAL/PARASITE (labeled "Protozoa" - this panel includes Trichomonas vaginalis). No separate protozoal-assessment function; PARASITE is evaluated the same as BACTERIA/FUNGAL.
- A fixed 14-name "Pathogens Assessed" list, rendered in a fixed 3x5 grid - not derived from the targets table's panel-target flag at render time.
- Four pregnancy-safety rules, one more than tpl-wound/tpl-rpp: influenza-antiviral substitution, Doxycycline FIRST-trimester-only gating, an unconditional Fluconazole/Tinidazole removal regardless of trimester, and a Levofloxacin/Ciprofloxacin caution note. See
API.md. - No empiric drug → INAPPROPRIATE, not N/A - a confirmed, intentional difference from tpl-rpp's equivalent function.
- Alternative info/renalStatus/hepaticStatus source: always
master_clinical_info, attached before rendering - never looked up by the rendering engine itself.recommendation_infois a separate, UI-only auto-rank blurb table, never read by the rendering engine. - STRENGTH_PRESETS/MEDICATION_INSTRUCTIONS → a real
dosing_profilestable (54 drugs), matching the tpl-derm precedent - confirmed unread by the rendering engine itself, supports the case-entry form's dropdowns only. - No detected-pathogen cap - unlike tpl-fungal's hard 3-row limit, this product shrinks to fit instead of rejecting a 4th+ row.
- Diagnosis codes are inert to clinical logic - a requisition-completeness concept only.
- This build's own form adds a Trimester selector beyond the source's shipped UI (which hardcodes
pregnancyTrimester:"UNKNOWN"and can never reach "FIRST" through its own form) - a disclosed, deliberate enhancement so all four pregnancy rules are actually exercisable interactively, not only via raw JSON.
Users (add/remove dashboard accounts)
dashboard/users.php is admin-role-only: add (username, full name, role, 8+ char password hashed via password_hash()), edit (blank password keeps the existing one), or delete (cannot delete the account you're logged in as).
What the Admin Dashboard does NOT do
- No audit trail of who changed what reference data or when.
- No password-reset emails or self-service account recovery.
- No rate-limiting or lockout on repeated failed logins.
- Does not manage the report-generation API's
X-Api-Key- seeAPI.md.