In days of yore, I would have looked in the code myself to see who sets the specific ZTDESC. But I asked Claude. It initially had no clue, but I told it to look hard at LEDI, because that's where I think it's coming from. I think it found something
---
The native verify → alert chain (this is "the process scanning labs")
In stock VistA there is no code in the HL7/LEDI result handlers (LA7V*, LR7O*) that calls ORB3 directly. The abnormal-lab notification (#14) has exactly one producer: OR^LR7ORB3 →
EN^ORB3(LRTYPE,…). And OR^LR7ORB3 is reached through only one chain — result verification:
result lands in #63
→ verify pass: LRVER3 (CH) / LRMIEDZ2 (MI)
→ ASKXQA^LRVER3 (LRVER3:255)
S LRDEFAULT=$$GET^XPAR("USR^DIV^PKG","LR CH VERIFY CPRS ALERT",1,"Q") (LRVER3:262)
I LRDEFAULT>0 D ASKXQA^LR7ORB3(LRDFN,"CH",LRIDT,LRUID,LRDEFAULT) (LRVER3:263)
→ SETUP^LR7ORB3
→ GETDOCS (builds recipient list = ordering provider + PCP/attending) (LR7ORB3:59)
→ OR^LR7ORB3 → EN^ORB3(14,DFN,LROIFN,.LRXQA,LRMSG,LRIENS) (LR7ORB3:228)
So the "process that scans labs after they're entered" is really verification, and the abnormal alert is a side-effect of verifying. The on/off switch is the parameter LR CH VERIFY CPRS ALERT
(and LR MI VERIFY CPRS ALERT for micro). That's the knob.
Where LEDI fits: LEDI files reference-lab results back into #63 and drives them through this same verify pass (often auto-verified, no human). So yes — natively, LEDI causes abnormal-lab
alerts via verification, gated by that parameter. The recipient list comes from GETDOCS, which reads the ordering provider off the CH result ($P(^LR(LRDFN,"CH",LRIDT,0),"^",10), LR7ORB3:66)
and formats each recipient as IEN^NAME^role (LR7ORB3:67).
But your specific alert did not come from this baseline code
Three fingerprints in your dump don't match what this FOIA-baseline chain emits:
┌────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ your dump │ what baseline OR^LR7ORB3 produces │
├────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ ORBADUZ("217^Doctor,Unspecified^- Physician") (whole string is the subscript) │ SETUP does S LRXQA(+LRDOCS(LRC))=… (LR7ORB3:35) — the + forces a bare DUZ │
│ │ subscript; can't produce this │
├────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ role piece = - Physician │ GETDOCS emits role Ordering Provider (LR7ORB3:67) │
├────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ ORBPMSG="Abnormal lab results: - [Jun 22, 2026]" (date in brackets); │ OR puts the test name in brackets (…" - ["_$P(LRTST,"^",2)_"]", LR7ORB3:218) │
│ ORBPDATA="0@OR|;3260622;0;CH;6739377@LRCH" (order ifn 0, empty order piece) │ and fills the order pieces (LR7ORB3:208) │
└────────────────────────────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────┘
That + at LR7ORB3:35 is precisely the guard that prevents the <NULSUBSC> crash we traced — and your alert bypassed it. Conclusion: the version of this chain running on your box is newer than,
or locally modified from, this 2013 baseline, and its GETDOCS/SETUP/OR equivalent (or a LEDI auto-verify wrapper) builds the recipient array using the whole IEN^NAME^role string as the
ORBADUZ subscript instead of +DUZ. That's the actual defect, and it lives in code that isn't in this FOIA tree. The repeated firing is because LEDI-received results keep resolving the
ordering provider to the placeholder "Doctor,Unspecified" (#217) — one unmapped provider, one alert+crash per result.
Confirm and trace it on the live system
Since the offending routine isn't in this baseline, do this on your running EHR:
1. Find the divergent caller. On the live system grep your routine set for who builds the recipient array and calls into the alert:
grep 'OR^LR7ORB3\|SETUP^LR7ORB3\|LRXQA(' your routines
1. Compare your live LR7ORB3/LRVER3 to this baseline (D PRINT^XINDEX or just diff). The caller that sets LRXQA(<whole string>) / role - Physician is your bug.
2. Kill switch / confirm the trigger: check the parameter that gates it —
W $$GET^XPAR("USR^DIV^PKG","LR CH VERIFY CPRS ALERT",1,"Q"). Setting it to 0 stops the flood immediately while you fix root cause (confirms the verify-time path is the source).
3. Inspect the source record from the dump's fingerprints: S X=$$CHECKUID^LRWU4(6739377) → ^LRO(68,…) accession → the #63 result; look at the CH ordering-provider field GETDOCS reads (piece
10 of ^LR(LRDFN,"CH",LRIDT,0)). You'll find 217 / "Doctor,Unspecified".
4. Inbound HL7: pull the ORU for these accessions from the message logs (#776/#777, and #772/#773) and look at OBR-16 (ordering provider). The reference lab is sending a provider your filer
can't map, so it substitutes Doctor,Unspecified — that mapping step is the upstream "storing wrong info" you suspected.
So: native LEDI → verify → LR CH VERIFY CPRS ALERT → OR^LR7ORB3 is genuinely the engine. Your crash is a modified version of GETDOCS/SETUP in that chain dropping the + on the recipient
subscript, combined with provider mapping that defaults to #217. Want me to write up the exact LRXQA contract (subscript = +DUZ or "G.mailgroup", value = display role) so whoever owns your
LEDI build can patch their GETDOCS equivalent?
---
2. What techniques do others use when tracking down a problem like this?
Do you know about ^R in the error trap?
VEHU>D ^XTER
In response to the DATE prompt you can enter:
'S' to specify text to be matched in error or routine name
No error logged on 6/25/2026
Which date? > T-1
1 error logged on 6/24/2026
1) LR588 : Application Error! please disregard NO need to report13:40:24 RO