Kinometric Kinometric Data Analyzer Test / Debug Tool
Intro Search Rankings Explorer Tuning Athena Users Patients Video Security
How Scoring Works
Metric What It Measures How It's Calculated
Score (0-10) Movement quality min() of 3s and 5s window scores. Each window: slide through data, find best q-diff range, map to 0–10 via knot curve. Capped at 7 unless 7s data exists (see 7s Bonus below).
Q-Diff Raw quaternion rotation range The q_diff_range from each window (max−min of q-diff values in best window). Explorer shows QD 3s, QD 5s, and QD 7s columns.
Risk Clinical risk level From worst score across all 4 test types: Critical <4, High 4–6, Moderate 6–8, Low ≥8
Stability % How still overall % of all data samples where q-diff < 0.005 threshold. Uses the entire test, not just a window.
Max Duration Longest stable stretch Longest continuous run of samples below threshold (in seconds).
Why Score and Stability Can Differ

Score and stability measure different things:

  • Score = best window's q-diff range (peak-to-valley), mapped through a curve. It asks: "In your best stretch, how much did you move?"
  • Stability % = fraction of all samples below threshold. It asks: "Across the whole test, how often were you still?"

A patient can be stable 95% of the time (high stability) but have one brief spike in their best window (lower score). Or they can have a very calm 7s window (high score) but be shaky for the rest of the test (low stability).

Note: The base score uses min() of 3s and 5s window scores. The 7s window is used separately for the bonus cap (see below).


Test Types
lbeoLeft Balance Eyes Open
rbeoRight Balance Eyes Open
lbecLeft Balance Eyes Closed
rbecRight Balance Eyes Closed

Balance/Difference

Absolute difference between average left scores and average right scores. Highlights asymmetry between sides.

Color: <1 green, 1–3 yellow, >3 red


Duration Penalty

Short tests are penalized:

  • Only 3s window exists (no 5s) → subtract 3 points

7-Second Bonus

Maximum score is capped at 7 unless the test has 7-second q-diff data. If 7s data exists, the cap is raised based on the q-diff range:

7s Q-Diff RangeMax Score
≤ 0.001510
0.0015 – 0.0029
0.002 – 0.0038
> 0.003 or no 7s data7

Fatigue Patterns
fatiguesGood short-term (≥7) but drops >3 by 7s
consistentGood short-term (≥7) and stays within 3
unstablePoor short-term (<7) with small drop
decliningPoor short-term (<7) and drops >2
Multi-Practice Architecture

Kinometric uses practice-level PHI isolation. Each practice (clinic/organization) is a separate data boundary with its own patients, test results, and questionnaire data.

Data Model
TablePurpose
practicesPractice/clinic records. Each can have its own athenaOne API credentials.
user_practicesMany-to-many: users belong to 1+ practices with a role (admin, clinician, readonly).
patients.practice_idEvery patient belongs to exactly one practice.
test_results.practice_idEvery test result scoped to one practice.
questions.practice_idEvery questionnaire scoped to one practice.
Roles
adminFull access: manage users, providers, patients, view all data within practice
clinicianStandard access: manage patients, run tests, view results
readonlyView-only: can see patients and results but cannot modify
superadminCross-practice access (is_admin=true). Bypasses all filters.
Patient Types
Athena PatientLinked to athenaOne EMR via athena_patient_id. PDF upload to EMR available.
Non-Athena PatientStandalone in Kinometric. Same test/score/PDF workflow. No EMR upload. Used for test/demo or practices without EMR.
How Isolation Works
  • Every API request resolves an active practice: explicit active_practice_id param → session → user's default → first membership
  • addPracticeFilter() appends AND practice_id = :id to all PHI queries
  • New patients, tests, and questions are stamped with the active practice_id
  • 31 PHP endpoints enforce practice scoping via practice_filter.php
  • Superadmins bypass all filters for administrative oversight
Patient Search
ID First Name Last Name Patient ID
Patient Rankings 0 patients

Loading rankings...

Name ▲ Last Test ▲ Best ▲ Worst ▲ Bal/Diff ▲ Max Dur ▲ Q-Diff ▲ Risk ▲ AI
Risk Explorer 0 patients

Loading data...

Name ▲ Last Test ▲ Best ▲ Worst ▲ Bal/Diff ▲ Max Dur ▲ QD 3s ▲ QD 5s ▲ QD 7s ▲ Stability ▲ Risk ▲ AI
Parameter Tuning Guide click to expand

This tool lets you experiment with how balance scores are calculated without affecting production data. Adjust parameters, re-analyze all ~800 CSV files, and see how score distributions change.

The scoring curve maps q-diff range (sensor movement variability) to a raw score (0-10). Lower q-diff = more stable = higher score.

  • Drag points on the chart to adjust the curve visually
  • Edit exact values in the knot table below the chart
  • Add/remove points to change curve complexity
  • Between points, scores are linearly interpolated
  • Values outside the curve range are clamped to the nearest endpoint

Production uses 6 knot points. Fewer points = smoother curve, more points = finer control.

After the curve produces a raw score, the rescale function maps it to the final 0-10 range. This controls score distribution shape.

  • Linear (default) — even spread between low and high bounds
  • Power — power >1 compresses high scores, <1 compresses low scores
  • Sigmoid — S-curve that clusters scores near the midpoint
  • Exponential — emphasizes differences at the high end
  • None — use raw score directly (no rescaling)

Low/High Bounds define the raw score range that maps to 0-10. Scores outside bounds are clamped.

  • Start Row — skip initial sensor samples (warmup period). Default 200 (~2 seconds at 100Hz)
  • Stable Threshold — q-diff below this is considered perfectly stable. Lower = stricter
  • Outlier Percentile — use this percentile of q-diff to ignore spikes. 98 = ignore top 2%
  • Aggregation — how to combine multiple time windows into one score: Min (worst window, strictest), Max (best window, most lenient), Mean, or Median
  • Target Windows — time windows in seconds to analyze. Each window is scored independently, then aggregated

Production defaults: start=200, threshold=0.02, percentile=98, aggregation=min, windows=3,5,7

  • Save/Load presets to keep parameter configurations you want to compare
  • Import/Export as JSON files to share configurations
  • Run Analysis processes all ~800 cached CSV files (~40 seconds)
  • Score Calculator lets you test a single q-diff value against current settings instantly
  • Rebuild Cache re-extracts data from CSV files (only needed if new test files are added)

Typical workflow: load production preset, adjust one parameter, run analysis, compare distributions. Nothing writes to the database.

Scoring Curve (drag points to adjust)
Point Q-diff Range (X) Raw Score (Y) Final Score Tests in Range Target
Score Calculator
Raw: -
Rescaled: -
Scoring Mode
Score from q-diff range across windows

Score from longest stable stretch. Map seconds to 0-10 score.

Duration Penalty

Penalty subtracted from score when test recording is too short for all analysis windows. Set to 0 to disable.

0 penalized
Rescale Function
Analysis Parameters
Patient Summary
Patient Overall Left Q-diff Right Q-diff LBEO RBEO LBEC RBEC
Score Distribution 0 files
Individual Results
File ▲ Patient ▲ Type ▲ Date ▲ Score ▼ Risk ▲ 3s ▲ 5s ▲ 7s ▲ Worst Q-diff ▲ Worst Bal ▲ Stable% ▲ Penalty ▲

Running analysis...

Patients in Range
0
Name Type Date Score Risk Worst Q-diff 3s 5s 7s Stable% Penalty
Connection Health
API Ping
Unknown
Token
Unknown
Environment
Unknown
Practice ID
Unknown

athenaOne Developer Portal — view app settings, API logs, and uploaded documents in the sandbox patient chart.
Patient Verification
NameReal ID
Kinometric
-
athenaOne
-
Upload Test
Documents in Chart
IDNoteDateStatus
Verify a patient to see documents
To view/download uploaded PDFs, open the patient chart in the athenaOne portal.
Department Browser click to expand
IDNameAddressPhoneState
Loading...
Upload Log click to expand
No log loaded yet.
User Accounts
ID Username Email Admin 2FA Provider Actions
Loading...
Add User
Reset Password —
Patients
ID First Name Last Name Patient ID Actions
Loading...
Add Patient
Kinometric Video
Your browser does not support the video tag.
Security & HIPAA Compliance

Server-side security controls protecting credentials, config files, and infrastructure.


Loading audit...

Authentication mechanisms and access control for API and web interfaces.

athenaOne integration security — OAuth, data flow, input validation, and access controls.

HIPAA Security Rule compliance checklist with specific CFR references. Last audited: February 2026.

Operational Readiness — Production Athena Go-Live Gates

The HIPAA Security Rule checklist below shows policy & technical controls as Done. The items here are operational pre-conditions documented in the Incident Response Plan that must be cleared before production athena go-live. Source of truth: docs/incident_response_plan.md §2 NEEDS VERIFICATION callout, §9, and §12.

GateWhat's missingStatusEvidence
Practice BAA CriticalNo executed BAA with the deploying practice (Pain and Spine Specialists of MD). IRP §9 commits Kinometric to BA→CE breach notification within 24h, but that timeline is unenforceable without a signed BAA — the practice could deny the BA relationship entirely. Hard go-live gate: no production PHI flows before executed BAA. Surfaced as Finding 9 in tabletop_record_2026-05-23.md. (Distinct from the Linode/Akamai cloud BAA, which is tracked separately below.)Pending
Managing Member contactSteve Johnson: steve@kinometric.com / (41) 599-4425 confirmed 2026-05-22. Open: area code appears truncated — verify "(41)" should be "(410)" or similar; backup contact not yet provided.Partial
First tabletop exerciseCompleted 2026-05-23 — record: docs/tabletop_record_2026-05-23.md. 18 findings; 2 mitigated during the exercise, 16 in the pre-go-live backlog. Procedural note: solo-SO chat format; a second exercise with full §12 quorum is recommended before go-live but the §12 production gate is satisfied by the existing record.Done

When all gates are cleared, this card can be removed (or kept as a historical "Pre-Production Readiness" log).

Administrative Safeguards (45 CFR 164.308)
RequirementCFRImplementationStatusEvidence
Risk Analysis§308(a)(1)(ii)(A)Annual risk assessment covering all PHI, threats, and safeguardsDone
Risk Management§308(a)(1)(ii)(B)Controls implemented per risk assessment findings; gap remediation trackedDone
Sanction Policy§308(a)(1)(ii)(C)Confidentiality agreement includes consequences for violation (termination, penalties)Done
Information System Activity Review§308(a)(1)(ii)(D)HIPAA audit log reviewed; monthly manual audit + automated detection cron every 30 min (R1/R2/R3/R7 rules → dev@kinometric.com)Done
Security Officer§308(a)(2)Anant Johnson designated HIPAA Security Officer (effective 2026-05-20)Done
Workforce Security§308(a)(3)Multi-practice isolation via practice_filter.php. Roles: admin, clinician, readonly per practice. Superadmin bypasses for oversight. 31 endpoints enforced.Done
Access Management§308(a)(4)3 active users, unique accounts, no shared credentials, admin-managedDone
Security Awareness Training§308(a)(5)Confidentiality agreement signed before access; 6-module training program and materials (slide decks) developed; mandatory workforce rollout in progressIn Progress
Security Incident Procedures§308(a)(6) + §§164.400-414Incident Response Plan v1.0 (docs/incident_response_plan.md): roles, detection sources, severity levels, notification matrix (individual/urgent/substitute), Appendix A/D/F templates, Appendix E logsDone
Contingency Plan§308(a)(7)Written backup policy (BACKUP_PLAN.md r6); automated nightly restic backups to a local repo + off-site NAS over WireGuard VPN; integrity-checked (restic check); restic restore drilled & verified end-to-end 2026-05-20, plus the 2026-05-11 migration restoreDone
Evaluation§308(a)(8)Annual risk assessment; automated security audits; 225 automated API tests + 75 Python unit testsDone
Business Associate Agreements — cloud provider§308(b)(1)Linode/Akamai BAA in progress (ticket 26375232). AI analysis feature disabled in production — no Anthropic BAA needed.In Progress
Business Associate Agreement — deploying practice§308(b)(1)Practice BAA with Pain and Spine Specialists of MD not yet executed. IRP §9 BA→CE notification timeline is contractually unenforceable without it. Hard production-gating item — no production PHI flows before signed BAA. See tabletop record 2026-05-23, Finding 9.Not Started
Physical Safeguards (45 CFR 164.310)
RequirementCFRImplementationStatusEvidence
Facility Access Controls§310(a)(1)Hosted in Linode/Akamai data center (SOC 2 certified, physical access controls)Done
Workstation Use§310(b)SSH key authentication only; no shared accounts; UFW firewallDone
Workstation Security§310(c)Server: SSH/HTTP/HTTPS only (UFW). No physical access except via Linode.Done
Device & Media Controls§310(d)No PHI cached on mobile devices (in-memory only); CSV files server-side; patient delete cascades to filesDone
Technical Safeguards (45 CFR 164.312)
RequirementCFRImplementationStatusEvidence
Unique User Identification§312(a)(2)(i)Each user has unique username + user_id; no shared accountsDone
Emergency Access§312(a)(2)(ii)Superadmin account + direct database access availableDone
Automatic Logoff§312(a)(2)(iii)15-minute idle timeout: PHP server-side + JS client-sideDone
Encryption at Rest§312(a)(2)(iv)Server disk encrypted at rest (Linode Disk Encryption, AES-256); backups encrypted client-side with restic (AES-256)Done
Audit Controls§312(b)HIPAA audit log (JSON, who/what/when/IP); auth logs; error logs; auto-prunedDone
Integrity Controls§312(c)(1)Parameterized SQL, input validation, base64 validation, path traversal preventionDone
Authentication§312(d)bcrypt password hashing; 64-char random session tokens; per-request verificationDone
Transmission Security§312(e)(1)TLS 1.2/1.3 on all connections; HTTPS enforced; OAuth2 for athenaOneDone
Organizational & Policy Requirements
RequirementCFRImplementationStatusEvidence
Risk Assessment Document§308(a)(1)PHI inventory, 14 threats rated, safeguard checklist, gap analysisDone
Breach Response Plan§308(a)(6) + §§164.400-414Incident Response Plan v1.0 — full notification matrix, urgent & substitute notice procedures, address-of-record workflow, automated detectionDone
Staff Confidentiality Agreement§308(a)(3)PHI handling, device security, reporting obligations, consequences; signed before accessDone
Password Policy§312(d)8+ chars, uppercase + lowercase + number, cannot match username; enforced on all entry pointsDone
Backup & Recovery§308(a)(7)Nightly restic backup (pg_dump + CSV + logs + secrets, client-side AES-256) → local repo + off-site NAS over WireGuard VPN. HIPAA retention (14d/8w/24m/7yr). Integrity-checked nightly (restic check); restic restore drilled end-to-end and verified 2026-05-20.Done
Data Disposal§310(d)(2)Patient delete cascades to test_results, questions (FK), and CSV files on diskDone
Email PHI Protection§312(e)(1)Email-PDF retired for real patients 2026-05-20; re-enabled 2026-05-21 for synthetic test-fixture patients only — no real patient PHI is emailedDone
API Key Management§312(a)(1)Keys in /etc/ with 640 permissions; excluded from git; rotated Feb 2026Done
Open Items
ItemDescriptionStatusTarget
BAA — Linode/AkamaiBAA requested (ticket 26375232), business info submitted. Awaiting agreement from Linode.In ProgressQ2 2026
Server Disk EncryptionLinode Disk Encryption (AES-256) enabled on the production instanceDone2026-05-20
2FA for Admin AccountsTOTP 2FA built end-to-end (web + mobile, trusted devices, backup codes, encrypted secrets); enrollment campaign and enforcement (Phase 3) still pendingIn ProgressQ2 2026
Security Officer DesignationAnant Johnson designated as HIPAA Security OfficerDone2026-05-20
Formal Training Program6-module curriculum and training materials (slide decks) developed; mandatory workforce completion and tracking in progressIn ProgressQ2 2026
Run tmp_secure.shServer hardening script (8 sections): requires sudo bash tmp_secure.shPendingQ1 2026
Compliance Documents
#DocumentDescriptionDatePath
HIPAA Policy Documents
1Risk AssessmentPHI inventory, 14 threats analyzed, safeguard checklist, gap analysis with remediation targetsFeb 2026
2Incident Response Planv1.0 — roles, detection (manual + automated cron), notification matrix (individual/urgent/substitute), Appendices A/D/E/F (letter, web notice, logs, phone scripts)May 2026
3Staff Confidentiality AgreementWorkforce agreement: PHI rules, device security, reporting obligations, consequences. Sign before access.Feb 2026
athenaOne Integration
4API Technical SpecificationFull athenahealth submission document: security questions, 5 use cases, workflow, API summary, complianceFeb 2026
5Validation Plan5-phase go-live plan: sandbox testing (11 cases), tech spec submission, production credentials, validation, go-liveFeb 2026
6Workflow Graphic PromptMermaid diagram + ChatGPT prompt for generating polished architecture diagram for tech specFeb 2026
7App Upload Button SpecImplementation spec for Flutter Athena upload: endpoint, request/response, guard rails, error handlingFeb 2026
8App Upload Field MappingField-by-field mapping: FFAppState → JSON request body, pattern to follow (same as Email PDF)Feb 2026
Infrastructure
9Backup Scriptsystemd-timed nightly restic backup (DB + CSV + logs + secrets, AES-256) to a local repo + off-site NAS over WireGuard VPN; nightly integrity check; HIPAA retention.May 2026_backup/runner/backup_kinometric.sh
10Password PolicyShared PHP validation: 8+ chars, upper+lower+number, no username match. Enforced on all 3 entry points.Feb 2026password_policy.php
11Session Timeout15-min idle timeout (PHP server-side + JS client-side). Shared include for 12 legacy pages + SPA.Feb 2026session_timeout.php
12Patient Data CleanupCascade delete: FK on questions, CSV file deletion on patient remove. All 3 delete handlers updated.Feb 2026patient_cleanup.php
13Server Hardening Script8-section hardening: tmp permissions, log rotation, file permissions, firewall verification. Requires sudo.Feb 2026tmp_secure.sh
Multi-Practice System
14Practice Filter ModuleCore multi-practice PHI isolation: getUserPractices, getActivePracticeId, addPracticeFilter, canAccessPatient, canAccessTest, isSuperAdmin. 31 endpoints enforced.Feb 2026practice_filter.php
15Migration ScriptCreates practices + user_practices tables, adds practice_id to patients/test_results/questions, migrates all data, enforces NOT NULL.Feb 2026
16athenaOne Tech Spec (Updated)Updated with multi-practice data model, per-practice Athena credentials, non-Athena patient support.Feb 2026
Audit Trail: This checklist is maintained in source control. Policy documents are in /var/www/kinometric/docs/. Automated tests: 283/283 API + 75/75 Python passing. Multi-practice isolation: 31 endpoints enforced. Last audit: February 19, 2026.
Document

Android app security — HIPAA-compliant data handling, authentication, and device protection.

1. Data Protection
Encryption in Transit
ProtocolDetailsStatus
TLS VersionTLS 1.2 and TLS 1.3 supportedActive
Cipher SuitesAES-256-GCM, ChaCha20-Poly1305Active
Key ExchangeECDHE (Elliptic Curve Diffie-Hellman Ephemeral)Active
Certificate2048-bit RSA with SHA-256 signatureActive
Encryption at Rest (Device)
Storage TypeEncryption MethodStatus
Login CredentialsAES-256 via Android EncryptedSharedPreferences (FlutterSecureStorage)Active
Session TokensHardware-backed secure storage (Android Keystore)Active
Test Data FilesApp-level AES-256-CBC — CSV encrypted on test-stop, decrypted only for upload, then deleted; Android File-Based Encryption underneathActive
Cached DataEncrypted application sandboxActive
Data Minimization
Data TypeWhat We CollectWhat We DON'T Collect
Patient IdentityInternal ID number onlyFull SSN, insurance numbers
Test ResultsBalance measurements, timestampsGPS location, device identifiers
File NamesAnonymized ID {id}-{type}-{d}-{m}-{y}.csvPatient name, DOB in filename
Error LogsTechnical errors onlyPatient data, test results
2. Authentication & Access Control
Password Authentication
FeatureImplementationStatus
TransmissionPasswords sent over TLS, never in plain textActive
Server Storagebcrypt hashed with unique salt per userActive
Password PolicyMinimum 8 characters, requires uppercase + lowercase + number, cannot match usernameActive
Session Tokens64-char hex key regenerated on each login, invalidates previousActive
Practice Isolationpractice_filter.php multi-practice PHI isolation (31 endpoints). Roles: admin, clinician, readonly per practice.Active
Biometric Authentication
PlatformTechnologySecurity LevelStatus
iOSNot supported — Kinometric ships an Android app only—Not Supported
AndroidFingerprint / Face Unlock via BiometricPrompt API; PIN/pattern fallback (biometricOnly: false)TEE (Trusted Execution Environment); credentials in Android Keystore via FlutterSecureStorageActive
How biometric login works: On first login, authenticate with username/password. If biometric is enabled, encrypted credentials are stored in the device's secure hardware. Subsequent logins use fingerprint/face to unlock the secure storage. Your biometric data never leaves your device.
Session Security
FeatureSettingPurposeStatus
Inactivity Timeout15 minutesLocks session after no user activityActive
Activity DetectionTouch, pointer movementResets timeout on any interactionActive
Session LockRequires re-authenticationBiometric or PIN/pattern to resumeActive
Token ExpirationServer-enforcedNew key on each login invalidates previousActive
Role-Based Access (Multi-Practice)
RoleScopeCapabilities
readonlySingle practiceView patients and results within practice (no modifications)
clinicianSingle practiceManage patients, run tests, view results within practice
adminPractice managementUser management, audit logs, all patients in practice
superadminCross-practiceAll patients across all practices. Security dashboard, infrastructure.
Multi-practice: Users can belong to multiple practices with different roles in each. A user might be admin in one practice and clinician in another. The active practice determines which data is visible.
3. Application Security
Tamper Protection
CheckWhat It DetectsAction TakenStatus
Debug Mode DetectionApp running in development mode (kDebugMode)Warning logged, restricted in productionActive
Jailbreak/Root DetectionCompromised device OS — su binaries, test-keys build tags, Magisk/SuperSU packagesUser warned, may restrict PHI accessActive
App Signature Verification (runtime)Repackaged / re-signed APK installed via sideloadingApp computes SHA-256 of its signing certificate and compares it to the expected hash; blocks execution if invalid. The expected hash (EXPECTED_SIGNATURE_HASH) must be populated from the first signed release build — logs-and-passes until then. (Install-time APK signing is already enforced by Android.)Pending Config
Debugger DetectionAttached debugging tools (Debug.isDebuggerConnected())Prevents runtime inspectionActive
No Hardcoded CredentialsSecrets in source codeDev backdoor removed, REST API replaces SFTPActive
Code Protection
TechniqueToolPurposeStatus
Code ShrinkingR8/ProGuardRemoves unused code, reduces attack surfaceActive
ObfuscationR8/ProGuardRenames classes/methods to meaningless namesActive
Dart ObfuscationFlutter --obfuscateObfuscates Dart/Flutter code — wired into the release deploy command, applied on every buildActive
Debug Symbol Removal--split-debug-infoStrips debug symbols from the release build; symbols archived server-side per version for later flutter symbolize of crash reportsActive
OWASP Mobile Top 10 Coverage
RiskMitigation
M1: Improper Platform UsageProper use of the Android Keystore and platform security APIs
M2: Insecure Data StorageEncrypted storage, no sensitive data in logs
M3: Insecure CommunicationTLS 1.2+, certificate validation
M4: Insecure AuthenticationBiometrics, session timeout, strong passwords
M5: Insufficient CryptographyAES-256, industry-standard algorithms
M6: Insecure AuthorizationServer-side access control, role-based access
M7: Client Code QualityCode review, static analysis, testing
M8: Code TamperingIntegrity checks, obfuscation, signature verification
M9: Reverse EngineeringObfuscation, no hardcoded secrets
M10: Extraneous FunctionalityNo debug endpoints in production
4. Privacy by Design
Anonymization
Data ElementPrivacy Approach
File NamesInternal ID instead of patient name (e.g., 437-lb-eo-16-2-2026.csv)
Internal IDsSystem-generated numbers, not SSN or MRN
Test ResultsAssociated with internal ID only, no PII in data files
Error LogsScrubbed of all patient identifiers before collection
Crash ReportsTechnical data only, no PHI included
Data Retention
Data TypeRetention PeriodDeletion Method
Test ResultsPer practice policy (typically 7 years)Secure overwrite
Audit Logs6 years minimum (HIPAA requirement)Archived, then destroyed
Session DataUntil logout or timeoutMemory cleared
Local Test FilesDeleted after successful uploadSecure file deletion
Third-Party Data Sharing
VendorData SharedBAA Required
Anthropic (AI Analysis)None — feature disabled in production deploymentNo
athenaOne (EHR)PDF reports via authenticated APIYes
Microsoft Graph (Email)Backup-failure alerts only — no PHINo
Hosting ProviderServer infrastructureYes
5. Technical Summary (IT/Compliance)
Mobile Application Security Features (Android)
FeatureAndroid
Biometric AuthBiometricPrompt API
Secure StorageEncryptedSharedPreferences (AES-256-GCM)
Session Timeout15-min inactivity timeout with touch event monitoring
Code ObfuscationProGuard/R8 and Dart --obfuscate, both applied on every release build
Certificate ValidationOkHttp with certificate transparency
Integrity CheckRelease APKs are signed — Android verifies the signature at install time. Runtime root, debug-mode, and debugger detection active; signing-certificate self-check pending hash configuration
Network SecurityNetwork Security Config (cleartext blocked)
Data at RestFile-Based Encryption (FBE)
Cryptographic Standards
PurposeAlgorithmKey SizeStandard
Data EncryptionAES-GCM256-bitNIST SP 800-38D
Password HashingbcryptCost factor 12OWASP recommendation
TLSTLS 1.2/1.3ECDHE-256RFC 8446
Random GenerationSecureRandomN/APlatform CSPRNG
Compliance Standards
StandardCoverageNotes
HIPAA Security RuleFull45 CFR Part 164, all safeguards
HIPAA Privacy RuleFull45 CFR Part 160 and 164
HITECH ActFullBreach notification, penalties
NIST CSFAlignedIdentify, Protect, Detect, Respond, Recover
OWASP MASVSLevel 2Mobile Application Security Verification
OWASP ASVSLevel 2Application Security Verification (API)
Overall Security Status
Security FeatureTechnologyComplianceStatus
Encryption in transitTLS 1.2/1.3 (HTTPS)164.312(e)(1)Active
Encryption at rest (device)Android Keystore164.312(a)(2)(iv)Active
Encryption at rest (server)Linode Disk Encryption (AES-256)164.312(a)(2)(iv)Active
Authenticationbcrypt + 64-char tokens164.312(d)Active
Access controlpractice_filter.php (30+ endpoints)164.312(a)(1)Active
Audit loggingJSON Lines (who/what/when/IP)164.312(b)Active
Secure uploadREST API (back_upload_csv.php)164.312(e)(1)Active
Input validationParameterized SQL, ID checksOWASP Top 10Active
Biometric authFingerprint / Face Unlock (BiometricPrompt)164.312(d)Active
Session timeout15-min idle timeout (PHP + JS)164.312(a)(2)(iii)Active
Tamper detectionIntegrity + root/jailbreak164.312(c)(1)Active
Code obfuscationR8 + Flutter --obfuscateBest PracticeActive
Firewallufw (22/80/443 only)164.312(e)(1)Ready
DB localhost bindingPostgreSQL localhost only164.312(e)(1)Ready
Security questions: security@kinometric.com | Vulnerability reports: security@kinometric.com | BAA requests: legal@kinometric.com
Last updated: February 2026

HIPAA-required access audit log — every patient data access is recorded.

HIPAA Incident Response Plan — 45 CFR 164.308(a)(6) & 164.408

Training & Meeting Records
Tabletop Exercise — May 2026
  • Training Slides (PowerPoint)
  • Meeting Notes / Record (2026-05-23)
  • Exercise Scenario · PDF
Plan & Policy
  • Incident Response Plan v1.0
  • HIPAA Workforce Training (PowerPoint)
  • Workforce Training Notes
Workforce Training Roster
Who must be on this roster? Any of: (1) a system user with PHI access, (2) anyone who receives exported PHI (PDFs/CSVs), (3) operators with infra/DB/backup access, (4) anyone listed on IRP §2 response team, (5) Business Associate personnel with direct PHI access. HIPAA workforce training is required annually for everyone listed; tabletop training is additionally required for IRP §2 response team.
Active Workforce
Name Role & Rationale Workforce
HIPAA
Tabletop
IRP §2
Actions
Loading…
Deactivated workforce members (retained for HIPAA 6-yr audit)
NameRoleDeactivatedReason
—
Add Workforce Member
If they have a Kinometric login, link it so self-service attestation works.
Mark Training Complete

Upload the signed attestation PDF. Stored outside the web root and audit-logged.
Deactivate Workforce Member

Deactivate ? Training rows remain in the database for HIPAA's 6-year retention.

New Incident Report
Incident Log

No incidents reported. Use the button above to report a security incident.

Incident Response Process

HIPAA requires covered entities to identify, respond to, and mitigate security incidents. 45 CFR 164.308(a)(6)(ii)

Phase 1: Detection & Reporting 0-1 hours
  1. Identify the incident — unauthorized access, data breach, system compromise, credential leak
  2. Document immediately — what, when, who discovered, what systems/data affected
  3. Report — notify the Security Officer (Anant Johnson) and the Managing Member (Steve Johnson)
  4. Preserve evidence — do NOT delete logs, do NOT reboot servers. Screenshot/export the HIPAA audit log
  5. Check audit log — review athena_hipaa_audit.log for unauthorized patient access patterns
Phase 2: Containment 1-4 hours
  1. Isolate affected systems — disable compromised user accounts, revoke encryption keys
  2. Rotate credentials — Athena OAuth keys, DB password, API keys, user passwords
  3. Block access — update firewall, change SSH keys, disable unnecessary accounts
  4. Preserve the HIPAA audit log — copy test/logs/athena_hipaa_audit.log to secure backup
  5. Check Athena — review what patient data was accessed via the audit log
Phase 3: Investigation 1-7 days
  1. Determine scope — which patients' data was accessed? How many records?
  2. Run audit scripts:
    php monthlyAuditScripts/security_audit.php
    php monthlyAuditScripts/athena_access_audit.php
  3. Review server logs — Apache access logs, auth logs, syslog
  4. Determine root cause — how did the breach occur?
  5. Assess if PHI was actually viewed/exfiltrated — breach vs. security incident
Phase 4: Notification Within 60 days

HIPAA Breach Notification Rule — 45 CFR 164.400-414

  1. Determine if breach notification is required — was unsecured PHI accessed by unauthorized person?
  2. Notify affected individuals within 60 days of discovery (164.404)
  3. Notify HHS — if <500 individuals: annual report. If 500+: within 60 days (164.408)
  4. Notify media — if 500+ individuals in a single state (164.406)
  5. Notify Athena Health — as business associate, per BAA terms
Phase 5: Remediation & Documentation Ongoing
Remediation:
  1. Fix the vulnerability that caused the incident
  2. Run full security audit to check for related issues
  3. Update security controls (firewall rules, access policies)
  4. Re-run credential rotation check
  5. Implement additional monitoring if needed
Documentation (retain 6 years — 164.530(j)):
  1. Incident report (date, description, scope)
  2. Investigation findings and root cause
  3. List of affected individuals
  4. Notifications sent (copies)
  5. Remediation actions taken
  6. HIPAA audit log exports for the incident period
Key Contacts
Security Officer:
Anant Johnson
anant@johnsonconsultingllc.com
Managing Member:
Steve Johnson
rdksteve@gmail.com
Athena Contact:
Jake Millhausen
jake@johnsonconsultingllc.com
Practice Contact:
Laura Cossick
lcossick@painandspinespecialists.com

HHS Breach Portal: https://ocrportal.hhs.gov/ocr/breach/wizard_breach.jsf

Tabletop exercise to test the Incident Response Plan. Required before production athena go-live (Plan §12), annually thereafter, and after any material Plan change. Completed records retained for 6 years per §164.316.

Status
Loading…
Exercise format (~1 hour)
  1. Quorum: Security/Privacy Officer, Managing Member, and at least one workforce member with PHI access.
  2. Facilitator presents the scenario (default: IR Plan §12 reference scenario — "athena audit log shows 50 patient lookups from an unfamiliar IP overnight").
  3. Team walks through the Plan: detection → triage → containment → investigation → notification → post-incident.
  4. Findings, ambiguities, and missing contacts are recorded.
  5. Exercise record written to docs/tabletop_record_YYYY-MM-DD.md; the Operational Readiness gate flips to Done.
Materials
DocumentFileAction
Loading…
Past exercise records
DateFileAction
Loading…
Register completed exercise

Use this after the exercise has been run. It writes a stub record file to docs/ and flips the Operational Readiness gate. The detailed exercise notes are added to the record file manually using the template from tabletop_exercise_2026-05.md.

Security awareness training program for all workforce members handling PHI. Required by 45 CFR 164.308(a)(5).

Current Status
Partial Staff confidentiality agreement is signed before access is granted. Formal recurring training program is proposed below.

Reference: docs/hipaa_staff_confidentiality.md —

Proposed Security Training Program

The following training modules address HIPAA Security Rule requirements. Each module should be completed by all workforce members upon hire and annually thereafter. Completion must be documented and retained for 6 years per 45 CFR 164.530(j).

# Module Topics Covered Duration Frequency CFR Reference
1 HIPAA Fundamentals
  • What is PHI and ePHI
  • Privacy Rule vs Security Rule overview
  • Covered entities and business associates
  • Patient rights (access, amendment, accounting)
  • Penalties for non-compliance (civil & criminal)
30 min Annual §164.530(b)
2 Password & Authentication Security
  • Password policy requirements (8+ chars, upper/lower/number)
  • Never share credentials or encryption keys
  • Recognizing phishing and social engineering
  • Multi-factor authentication (when implemented)
  • Session timeout behavior and why it matters
20 min Annual §164.308(a)(5)(ii)(D)
3 PHI Handling & Data Security
  • Proper handling of patient balance data and reports
  • No PHI in email, Slack, or unencrypted channels
  • Secure CSV file storage and transfer procedures
  • Minimum necessary standard (access only what you need)
  • Proper disposal of printed or temporary PHI
20 min Annual §164.312(a)(1)
4 Mobile Device & App Security
  • Kinometric tablet/phone app security features
  • Device lock screen and auto-lock requirements
  • What to do if a device is lost or stolen
  • Approved networks for data transmission
  • Never store PHI on personal devices
15 min Annual §164.310(d)(1)
5 Incident Reporting & Breach Response
  • Recognizing a security incident (unauthorized access, data loss)
  • Immediate reporting procedure and who to contact
  • Breach notification timeline (60-day rule)
  • Documentation requirements for incidents
  • Non-retaliation policy for reporting
15 min Annual §164.308(a)(6)
6 Practice Isolation & Access Controls
  • Provider-based patient isolation (how it works in Kinometric)
  • Role-based access: admin vs standard user vs superadmin
  • Audit logging — all actions are recorded
  • Requesting/revoking access for new/departing staff
  • Reviewing your own audit trail
15 min Annual §164.312(a)(1)
Total Training Time ~2 hours
Implementation Plan
PhaseTargetActionsStatus
Phase 1: Foundation Completed Staff confidentiality agreement created and signed by all current users before access Done
Phase 2: Program Design Completed Training materials (slide decks) developed for all 6 modules; completion tracker created (build_training_tracker_xlsx.py) Done
Phase 3: Initial Rollout Q2 2026 All current workforce members complete training; document completion dates; address any knowledge gaps In Progress
Phase 4: Ongoing Annual Annual refresher training; update materials for new threats; train new hires within 30 days of access Planned
Workforce Training Status
Name Role Confidentiality Agreement Training Completed Next Due Status
steve Admin Signed — Q2 2026 Agreement Only
Dan User Signed — Q2 2026 Agreement Only
System Administrator Superadmin Signed — Q2 2026 Agreement Only

Policy: New workforce members must complete all 6 modules within 30 days of being granted PHI access. Annual refresher training is due on the anniversary of initial completion. Records retained for 6 years per 45 CFR 164.530(j).

Required Training Records

Per HIPAA, the following must be documented and retained for each training event:

  • Date of training and modules completed
  • Names of attendees and their roles
  • Training materials used (version and content summary)
  • Assessment results (if knowledge check is administered)
  • Signature or electronic acknowledgment of completion
  • Trainer name and qualifications

Centralized view of automated monitors and on-demand verification checks. Run a single check or fire the whole suite.

Card 1 — Continuous Monitors Cron jobs and systemd timers running automatically. "Stuck" means the job hasn't run in 2.5× its expected interval.
Loading…
Card 2 — On-Demand Verification Suite Click "Run" on any card to refresh it. Last-run timestamp is cached server-side.
Card 3 — Pen Test Scanners (Layer 1) Automated security scanners. Run individually or kick off the whole layer with "Run All Pen Tests".
Deferred scanners (not yet wired)
  • OWASP ZAP baseline — needs Docker (~500 MB install). Highest-signal active scan; defer until we decide on the install.
  • nikto — apt install. Older signal, mostly low-value findings.
  • semgrep (PHP/OWASP rulesets) — static analysis. Heavy, false-positive-prone for PHP. Better suited to manual code review than continuous scan.
  • nmap external — Layer 2 work; runs from a separate host, not from the Kinometric server.
Card 4 — Quarterly Pen-Test Status Cadence, scanner-box baseline, and reminder-cron health — the §164.308(a)(8) operational record.
Loading…

Generate a comprehensive HIPAA compliance report for auditors. Includes every safeguard requirement, implementation details, status, and evidence.

HIPAA Compliance Report

This report compiles all compliance details from the HIPAA checklist into a single downloadable document. It covers Administrative, Physical, and Technical Safeguards plus Organizational Policies — 32 line items total with specific implementation evidence for each.

Report Contents
  1. Cover Page — Title, date, prepared for/by, organization
  2. Executive Summary — Overall compliance posture, counts by status
  3. System Description — Architecture, PHI inventory, data flow
  4. Administrative Safeguards (45 CFR 164.308) — 12 requirements
  5. Physical Safeguards (45 CFR 164.310) — 4 requirements
  6. Technical Safeguards (45 CFR 164.312) — 8 requirements
  7. Organizational & Policy Requirements — 8 requirements
  8. Gap Analysis & Remediation Plan — Open items with target dates
  9. Document Inventory — All policy documents with descriptions
Executive Summary
Worst Score
Accelerometer Data (accMag)
Questionnaire Responses
Changes from Previous Test
Analysis
This analysis is AI-generated and intended to support clinical interpretation. It is not a standalone diagnosis and should not replace professional medical judgment.
Login Required
PDF Report
Scoring Curve Help
What does this chart show?

The chart displays the composed scoring function — the knot-point curve combined with the rescale transform. The Y-axis shows the Final Score (0–10) that a patient will actually receive for a given Q-diff value.

Risk Bands

The colored background bands map final scores to risk categories:

ScoreRisk LevelColor
8 – 10LowGreen
6 – 8ModerateOrange
4 – 6HighRed
0 – 4CriticalDark Red
How to read it
  • X-axis (Q-diff Range) — the magnitude of quality deviation detected in the data. Larger values mean bigger anomalies.
  • Y-axis (Final Score) — the score after both the knot curve and the rescale transform are applied. This is the number that appears in reports.
  • Blue dots — knot points that define the curve shape. Drag them to adjust.
How to adjust the curve
  1. Drag a knot point up or down to change the final score at that Q-diff. The underlying raw value is computed automatically.
  2. Drag left/right to shift where a knot sits on the Q-diff axis.
  3. Add Point to insert a new knot for finer control.
  4. Edit the table below the chart for precise numeric entry (Raw Score column). The Final Score column updates automatically.
Common fixes
ProblemFix
Too many patients flagged CriticalPull the left-side knot points up so low Q-diffs produce higher scores
Not enough sensitivity to large deviationsPull the right-side knot points down into the High/Critical bands
Curve is too flat in the middleAdd a knot point in the flat region and drag it to create more separation
Rescale compresses scores too muchWiden the Rescale Low/High range, or switch to linear rescale type
Want sharper cutoffs between risk levelsUse sigmoid rescale type with a higher power value
Rescale settings

The rescale transform (in the right panel) maps raw knot-curve output to final scores. Changing rescale type, low, high, or power will update the chart and Final Score column immediately. The Score Calculator below the chart lets you test individual Q-diff values.