I'm not thrilled with this solution for a variety of reasons, but at Sam's recommendation, I wrote this short routine:
SUBRECID(OREF,IEN,FILENUM) ;"Callback function from LIST^DIC, optionally used
;"This code is designed to be called via IDENTIFIER parameter in LIST^DIC, via
;" "DO SUBRECID^TMGTIUTE(DIC,Y,+$GET(DIFILE))"
;"This code should not do any output EXCEPT via EN^DDIOL, e.g. "D EN^DDIOL(""KILROY WAS HERE!"")"
;"INPUT: OREF -- this is the open format of file being transversed, e.g. '^TMG(22753,5,1,'
;" Y -- this is IEN of the item being considered, e.g. '6'
;" FILENUM -- The Fileman number of the file being transversed.
IF FILENUM'=22753.01 QUIT ;"can make more general later.
NEW CREF SET CREF=OREF_Y_")"
NEW ZN SET ZN=$GET(@CREF@(0))
NEW IEN80 SET IEN80=+ZN
IF IEN80'>0 QUIT
NEW CODE SET CODE=$$CODEC^ICDEX(80,IEN80)
NEW LONGTEXT SET LONGTEXT=$$VLT^ICDEX(80,IEN80)
NEW OUT SET OUT=CODE
IF LONGTEXT'="" SET OUT=OUT_" -- "_LONGTEXT
DO EN^DDIOL(OUT)
QUIT
Here is the output
yottadb>k OUT d LIST^DIC(22753.01,",5,","WID","E","*",,,,,"D SUBRECID^TMGTIUT3(D
IC,Y,+$GET(DIFILE))","OUT","MSG") zwr OUT
OUT("DILIST",0)="16^*^0^"
OUT("DILIST",1,1)="F03.90"
OUT("DILIST",1,2)="F03.91"
OUT("DILIST",1,3)="G20."
OUT("DILIST",1,4)="G25.9"
OUT("DILIST",1,5)="G30.9"
OUT("DILIST",1,6)="G40.909"
OUT("DILIST",1,7)="G43.909"
OUT("DILIST",1,8)="G43.919"
OUT("DILIST",1,9)="G44.209"
OUT("DILIST",1,10)="G62.9"
OUT("DILIST",1,11)="G90.09"
OUT("DILIST",1,12)="R25.1"
OUT("DILIST",1,13)="R41.3"
OUT("DILIST",1,14)="R41.82"
OUT("DILIST",1,15)="R42."
OUT("DILIST",1,16)="R51."
OUT("DILIST",2,1)=3
OUT("DILIST",2,2)=4
OUT("DILIST",2,3)=13
OUT("DILIST",2,4)=14
OUT("DILIST",2,5)=2
OUT("DILIST",2,6)=16
OUT("DILIST",2,7)=7
OUT("DILIST",2,8)=10
OUT("DILIST",2,9)=8
OUT("DILIST",2,10)=11
OUT("DILIST",2,11)=12
OUT("DILIST",2,12)=15
OUT("DILIST",2,13)=9
OUT("DILIST",2,14)=1
OUT("DILIST",2,15)=5
OUT("DILIST",2,16)=6
OUT("DILIST","ID","WRITE",1,1)="F03.90 -- UNSPECIFIED DEMENTIA WITHOUT BEHAVIORAL DISTURBANCE"
OUT("DILIST","ID","WRITE",2,1)="F03.91 -- UNSPECIFIED DEMENTIA WITH BEHAVIORAL DISTURBANCE"
OUT("DILIST","ID","WRITE",3,1)="G20. -- PARKINSON'S DISEASE"
OUT("DILIST","ID","WRITE",4,1)="G25.9 -- EXTRAPYRAMIDAL AND MOVEMENT DISORDER, UNSPECIFIED"
OUT("DILIST","ID","WRITE",5,1)="G30.9 -- ALZHEIMER'S DISEASE, UNSPECIFIED"
OUT("DILIST","ID","WRITE",6,1)="G40.909 -- EPILEPSY, UNSPECIFIED, NOT INTRACTABLE, WITHOUT STATUS EPILEPTICUS"
OUT("DILIST","ID","WRITE",7,1)="G43.909 -- MIGRAINE, UNSPECIFIED, NOT INTRACTABLE, WITHOUT STATUS MIGRAINOSUS"
OUT("DILIST","ID","WRITE",8,1)="G43.919 -- MIGRAINE, UNSPECIFIED, INTRACTABLE, WITHOUT STATUS MIGRAINOSUS"
OUT("DILIST","ID","WRITE",9,1)="G44.209 -- TENSION-TYPE HEADACHE, UNSPECIFIED, NOT INTRACTABLE"
OUT("DILIST","ID","WRITE",10,1)="G62.9 -- POLYNEUROPATHY, UNSPECIFIED"
OUT("DILIST","ID","WRITE",11,1)="G90.09 -- OTHER IDIOPATHIC PERIPHERAL AUTONOMIC NEUROPATHY"
OUT("DILIST","ID","WRITE",12,1)="R25.1 -- TREMOR, UNSPECIFIED"
OUT("DILIST","ID","WRITE",13,1)="R41.3 -- OTHER AMNESIA"
OUT("DILIST","ID","WRITE",14,1)="R41.82 -- ALTERED MENTAL STATUS, UNSPECIFIED"
OUT("DILIST","ID","WRITE",15,1)="R42. -- DIZZINESS AND GIDDINESS"
OUT("DILIST","ID","WRITE",16,1)="R51. -- HEADACHE"
I think I can use this, but it will be difficult to make this generalizable. But I think I can use it for now.
Kevin