# Pulse / Arrows: content notes

The collection contains **37 levels and 127 findings**: 21 hematology cases, 8 oncology cases, and 8 other pathology cases. The 36 conditions include two G6PD deficiency levels. Mixed runs select 75% hematology/oncology. These are original, concise teaching prompts; they are not a verbatim conversion of the reference collection.

Every mode requires **all findings correct in one clean pass** before the next condition unlocks. Wrong answers and timing misses repeat the entire condition. Replays shift later timed notes to retain the musical spacing. The progress meter counts mastered conditions, and each distinct finding awards points only on its first correct answer. Post-run practice replays whole conditions with misses. Accuracy includes all attempts, so mastering a condition on a later pass does not erase earlier mistakes.

The supplied `/Users/danielschwartz/Documents/Arrows/Arrows.csv` contains 168 cases (plus its header). Its iron studies, bleeding patterns, hemolysis, calcium, and paraneoplastic cases informed the selection. The spreadsheet and PDF in that folder were inventoried but not converted or modified. The game does not load or expose any of those original files.

Every condition in `data.js` has a clinical context, mechanism, individual finding explanations, and source IDs resolving to direct clinical references. Players can read these in the searchable findings library and after a run. The library also starts untimed practice for an individual condition.

## Interpretation choices

- Arrows are relative to a healthy reference range in the **specified clinical setting**, not a longitudinal change in the same patient. “Normal” represents the expected normal or unchanged category for that setting.
- This collection emphasizes classic teaching patterns. Stage, severity, treatment, coexisting deficiency, and kidney function can change real results; context is displayed during play.
- Inflammation can coexist with iron deficiency, and normal ferritin does not categorically exclude iron deficiency. The inflammation case excludes concurrent deficiency and does not force a single ferritin or MCV direction.
- The thalassemia carrier case excludes iron deficiency and transfusion. RDW is omitted rather than treated as a definitive discriminator. Adult alpha-thalassemia trait is not described as invariably diagnosable by electrophoresis.
- The type 1 von Willebrand case does not score aPTT, which can be normal or prolonged. Type 2B-associated thrombocytopenia is not generalized to type 1.
- Severe untreated hemophilia is specified because mild disease can have a normal screening aPTT. Severe vitamin K deficiency and acute rapidly evolving DIC are specified because earlier or slower disease can produce different screening patterns.
- TTP is qualified as acute immune TTP without concurrent DIC. ADAMTS13 deficiency, platelet consumption, and hemolysis are distinguished from coagulation-factor consumption.
- Marrow compensation is stated for hemolysis; concurrent marrow suppression or nutrient deficiency can blunt reticulocytosis.
- G6PD Level 2 covers hematocrit and bilirubin fractions during acute hemolytic anemia. The expected normal direct bilirubin applies to isolated hemolysis without liver disease or biliary obstruction; indirect and total bilirubin rise.
- Sarcoidosis uses the user's requested classic calcium/phosphate/PTH pattern in an explicitly calcitriol-driven, hyperphosphatemic setting. Hypercalcemia and elevated phosphate are not universal findings in sarcoidosis.
- CKD, vitamin D deficiency, and primary aldosteronism cases state the severity and biochemical presentation. Hypocalcemia in early CKD or mild vitamin D deficiency, and hypokalemia in primary aldosteronism, are not assumed universal.
- The APL coagulopathy explanation uses factor consumption and fibrinolysis; it does not attribute the syndrome to a simplistic “release of Auer rods” mechanism.
- No bleeding-time test or treatment recommendations are included.

## Clinical references

Initial source pages were consulted on September 4, 2026. ARUP hemolytic anemias and Merck jaundice were consulted for G6PD Level 2 on September 11, 2026. Individual source links are stored once in `data.js` and attached to relevant cases.

- [ARUP: Iron deficiency versus inflammation algorithm](https://arupconsult.com/sites/default/files/Iron_Deficiency_Anemia_and_Anemia_of_Chronic_Disease_Inflammation_Algorithm.pdf)
- [ARUP: Anemia](https://arupconsult.com/content/anemia)
- [NBDF MASAC 296: Iron deficiency laboratory screening](https://www.bleeding.org/healthcare-professionals/guidelines-on-care/masac-documents/masac-document-296-recommendations-for-laboratory-screening-of-iron-deficiency-with-and-without-anemia)
- [ARUP: Prolonged clotting time evaluation](https://arupconsult.com/content/prolonged-clotting-time-evaluation)
- [ARUP: Hemolytic anemias](https://arupconsult.com/content/hemolytic-anemias)
- [Merck Manual: Jaundice and bilirubin fractions](https://www.merckmanuals.com/professional/hepatic-and-biliary-disorders/approach-to-the-patient-with-liver-disease/jaundice)
- [ISTH: TTP diagnosis guidelines](https://pmc.ncbi.nlm.nih.gov/articles/PMC8146131/)
- Merck Manual Professional topic pages linked per case: megaloblastic anemia, sideroblastic anemia, aplastic anemia, myeloma, polycythemia vera, essential thrombocythemia, CML, tumor lysis, hypercalcemia, hypocalcemia, primary adrenal insufficiency, and hyperthyroidism.
- [Endocrine Society: Primary aldosteronism guideline](https://www.endocrine.org/clinical-practice-guidelines/primary-aldosteronism-2)

## Development

The game is a standalone static page at `/arrows/`, linked from the QBank home hub. Like the existing standalone games, it runs without authentication. It makes no Firebase reads or writes and does not affect question-bank progress. Best scores are stored under `pulse_arrows_v1`, per deck and timed mode, on the current device. They are not a cohort leaderboard. Practice is excluded from best scores. A daily mix uses the UTC date to seed case selection and order and always runs in Flow mode. Active desktop play expands to the window, hides setup, and keeps the track and answer pads within the viewport at standard desktop heights. Compact phones retain the single-column game layout.

`core.js` owns selection, schedule, grading, and miss retries. `app.js` owns rendering and the monotonic elapsed-time clock. `audio.js` produces an original Web Audio soundtrack without external audio files. `style.css` uses the existing local Atkinson font plus native condensed display fonts. No build step or new runtime dependency is needed.

Run from the repository root:

```sh
python3 -m http.server 7843 --bind 127.0.0.1
node --test tests/arrows-game-regression.test.js
```

Then open `http://127.0.0.1:7843/arrows/`. Deploying the static files follows the existing GitHub Pages process. No Firebase deployment is needed.
