sHelp
                                     LAB.B.QC
     i   2
   lab.b.qc.specimen.file
     lab.b.qc.cancel.comments
     lab.b.qc.comments
     lab.b.qc.orders
     lab.b.qc.prev.test.results
       lab.b.qc.prev.result.comments
     lab.b.qc.review.data
     lab.b.qc.tests
       lab.b.qc.result.comments
   lab.b.qc.ordered.tests.display

 Ì     i   2
lab.b.qc.specimen.file    (main) 
[urn]
?SBK[sbk]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 urn                         10 URN      L                 sbk                                                         
 activity.date                8 DATE     L                                                                             
 bar.code.number              6 FREE     L                 ?SBK[sbk]A|3                                                
 blind.for.spec              30 URN      L  LAB.B.SPEC     ?SBK[sbk]|16                                            
 cancelled.date               8 DATE     L                 VAL=%Z.date.in.magic(@LAB.B.QC.cancelled.time.int)          
 cancelled.time               4 HHMM     L                 VAL=%Z.time.out(@LAB.B.QC.cancelled.time.int)               
 cancelled.time.int           9 PINT     R                 ?SBK[sbk]A|1                                                
 cancelled.user              10 FREE     L  MIS.USER       ?SBK[sbk]A|0                                            
 cmpl.ord.tests               1 YN       L                 VAL=%LAB.B.QC.ord.cmpl(LAB.B.QC.urn)                        
 cmpl.wb.ordered              1 YN       L                 VAL=%LAB.B.WB.ordered.from.tests(IF{@LAB.B.WB.urn;@t.L      
                                                           VAL=AB.B.WB.urn},/SPEC.URN,/QC,82)                          
 cmpl.wb.ordered.wide         1 YN       L                 VAL=%LAB.B.WB.ordered.from.tests(IF{@LAB.B.WB.urn;@t.L      
                                                           VAL=AB.B.WB.urn},/SPEC.URN,/QC,121)                         
 created.date                 8 DATE     L                 ?SBK[sbk]|5                                                 
 created.seconds              9 PINT     R                 ?SBK[sbk]|8                                                 
 created.time                 4 HHMM     L                 ?SBK[sbk]|6                                                 
 created.user                10 FREE     L  MIS.USER       ?SBK[sbk]|7                                             
 entered.offset               9 PINT     R                 ?SBK[sbk]|14                                                
 expired                      1 YN       L                 VAL=IF{@blind.for.spec "N";'@lot "";@LAB.B.QC.created.      
                                                           VAL=date>@LAB.B.QM.lot.expire.date[@qc.material,@lo      
                                                           VAL=t] "Y";"N"}                                             
 expired.output               7 FREE     L                 VAL=IF{@blind.for.spec "";'@lot "";@LAB.B.QC.created.d      
                                                           VAL=ate>@LAB.B.QM.lot.expire.date[@qc.material,@lot      
                                                           VAL=] "EXPIRED"}                                            
 id                          10 URN      L  LAB.B.QC       VAL=@LAB.B.QC.number                                    
 id.spec                     15 FREE     L                                                                             
 lab.site                    10 FREE     L  LAB.C.SITE     ?SBK[sbk]|15                                            
 last.activity                9 PINT     R                 ?SBK[sbk]|9                                                 
 last.activity.date           8 DATE     L                 VAL=%Z.date.clin.to.npr(@LAB.B.QC.entered.offset+@LAB.      
                                                           VAL=B.QC.last.activity/86400)                               
 last.activity.time           4 HHMM     L                 VAL=%Z.time.out(@LAB.B.QC.entered.offset+@LAB.B.QC.las      
                                                           VAL=t.activity)                                             
 lot                         15 FREE     L                 ?SBK[sbk]|4                                                 
 number                      13 FREE     L                 ?SBK[sbk]|0                                                 
 number.part                  5 PINT     R                 ?SBK[sbk]|2                                                 
 number.suffix                1 FREE     L                 VAL="Q"                                                     
 order.site                  10 FREE     L  LAB.C.SITE     ?SBK[sbk]A|2                                            
 prefix                       2 FREE     L                 ?SBK[sbk]|1                                                 
 qc.material                 10 FREE     L  LAB.B.QM       ?SBK[sbk]|3                                             
 re.lot.name                 15 FREE     L                 VAL=IF{@LAB.B.QC.blind.for.spec "**BLIND**";@LAB.B.QC.      
                                                           VAL=lot}                                                    
 re.qc.material.name         30 FREE     L                 VAL=IF{@LAB.B.QC.blind.for.spec "**BLIND**";@LAB.B.QC.      
                                                           VAL=qc.material's.name}                                     
 rpt.any.tests.cmpld          1 YN       L                 VAL=IF{@Last(LAB.B.QC.rpt.test) "Y";"N"}                    
 rpt.argument.string          0 FREE     L                 VAL=/ARG                                                    
 rpt.argument.string.1        1 YN       L                 VAL=IF{Q(LAB.B.QC.urn,"EOA3","ANRGV",0,2,"")^@rpt.argu      
                                                           VAL=ment.string,"Y"}                                        
 rpt.argument.string.2        1 YN       L                 VAL=IF{Q(LAB.B.QC.urn,"EPA1","ANRGV",0,2,"")^@rpt.argu      
                                                           VAL=ment.string,"Y"}                                        
 rpt.argument.string.3        1 YN       L                 VAL=IF{Q(LAB.B.QC.urn,"EOU3","ADGV",0,2,"")^@rpt.argum      
                                                           VAL=ent.string,"Y"}                                         
 rpt.argument.string.4        1 YN       L                 VAL=IF{Q(LAB.B.QC.urn,"IPU1","URGV",0,2,"")^@rpt.argum      
                                                           VAL=ent.string,"Y"}                                         
 rpt.compile.tests            1 YN       L                 VAL=%LAB.B.QC.rpt.cmpl("")                                  
 rpt.compile.tests.1          1 YN       L                 VAL=IF{@LAB.B.QC.rpt.argument.string.1,@LAB.B.QC.rpt.c      
                                                           VAL=ompile.tests,"Y"}                                       
 rpt.compile.tests.2          1 YN       L                 VAL=IF{@LAB.B.QC.rpt.argument.string.2,@LAB.B.QC.rpt.c      
                                                           VAL=ompile.tests,"Y"}                                       
 rpt.compile.tests.3          1 YN       L                 VAL=IF{@LAB.B.QC.rpt.argument.string.3,@LAB.B.QC.rpt.c      
                                                           VAL=ompile.tests,"Y"}                                       
 rpt.compile.tests.4          1 YN       L                 VAL=IF{@LAB.B.QC.rpt.argument.string.4,@LAB.B.QC.rpt.c      
                                                           VAL=ompile.tests,"Y"}                                       
 rpt.print.test.hdrs          0 FREE     L                 VAL=%LAB.B.QC.result.lines.hdrs("")                         
 rpt.print.tests              0 FREE     L                 VAL=%LAB.B.QC.result.lines("")                              
 rpt.print.tests.1            0 FREE     L                 VAL=IF{@LAB.B.QC.rpt.argument.string.1,@LAB.B.QC.rpt.p      
                                                           VAL=rint.tests,""}                                          
 rpt.print.tests.2            0 FREE     L                 VAL=IF{@LAB.B.QC.rpt.argument.string.2,@LAB.B.QC.rpt.p      
                                                           VAL=rint.tests,""}                                          
 rpt.print.tests.3            0 FREE     L                 VAL=IF{@LAB.B.QC.rpt.argument.string.3,@LAB.B.QC.rpt.p      
                                                           VAL=rint.tests,""}                                          
 rpt.print.tests.4            0 FREE     L                 VAL=IF{@LAB.B.QC.rpt.argument.string.4,@LAB.B.QC.rpt.p      
                                                           VAL=rint.tests,""}                                          
 rpt.setup.test.hdrs          0 FREE     L                 VAL=@LAB.B.QC.rpt.test.hdrs^/HN                             
 rpt.sort.key                20 FREE     L                                                                             
 set.last.activity            0 FREE     L                 VAL=@.sd-@LAB.B.QC.entered.offset^@LAB.B.QC.last.activ      
                                                           VAL=ity                                                     
 specimen.header.line        92 FREE     L                 VAL=%LAB.B.QC.specimen.header.line(LAB.B.QC.urn)            
 status                       4 CHOICE   L                 ?SBK[sbk]|10                                                
 status.before.cancel         4 CHOICE   L                 ?SBK[sbk]|13                                                
 usage                       40 FREE     L                 ?SBK[sbk]|11                                                
 workbatch                   10 PINT     R  LAB.B.WB       ?SBK[sbk]|12                                            
 Ì     i   2
lab.b.qc.cancel.comments    (cancel.comments) 
[urn, cancel.comment.q]
?SBK[sbk]CAN[sbkCC]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 cancel.comment.q             2 PINT     R                 sbkCC                                                       
 cancel.comment              60 FREE     L                 ?SBK[sbk]CAN[sbkCC]                                         
 Ì     i   2
lab.b.qc.comments    (comments) 
[urn, comment.q]
?SBK[sbk]C[sbkC]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 comment.q                    2 PINT     R                 sbkC                                                        
 any.spec.comments            1 YN       L                 VAL=IF{@LAB.B.QC.comments[LAB.B.QC.urn,1] "Y";"N"}          
 comment                     60 FREE     L                 ?SBK[sbk]C[sbkC]                                            
 Ì     i   2
lab.b.qc.orders    (ordered.tests) 
[urn, ordered.test]
?SBK[sbk]O[sbt]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 ordered.test                 9 PDEC5    R  LAB.B.TEST     sbt                                                     
 Ì     i   2
lab.b.qc.prev.test.results    (prev.tests) 
[urn, prev.test,prev.test.q]
?SBK[sbk]P[sbt,sbtPQ]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 prev.test                    9 PDEC5    R  LAB.B.TEST     sbt                                                     
 prev.test.q                  2 PINT     R                 sbtPQ                                                       
 any.prev.results             1 YN       L                 VAL=IF{+@prev.tests[urn,""] "Y";"N"}                        
 prev.abnormal.flag           2 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|7                                     
 prev.alpha.result.code      10 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|11                                    
 prev.end.of.profile          9 PDEC5    R  LAB.B.TEST     ?SBK[sbk]P[sbt,sbtPQ]|15                                
 prev.int.abnormal.flag       2 CHOICE   L                 ?SBK[sbk]P[sbt,sbtPQ]|13                                    
 prev.normal.range           14 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|8                                     
 prev.result                 20 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|0                                     
 prev.result.analyzer        10 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|21                                    
 prev.result.group           10 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|1                                     
 prev.result.method          10 FREE     L  LAB.C.METH     ?SBK[sbk]P[sbt,sbtPQ]|6                                 
 prev.result.time             8 PINT     R                 ?SBK[sbk]P[sbt,sbtPQ]|2                                     
 prev.result.user            10 FREE     L  MIS.USER       ?SBK[sbk]P[sbt,sbtPQ]|4                                 
 prev.review.flag             1 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|16                                    
 prev.review.match.flag       3 CHOICE   L                 ?SBK[sbk]P[sbt,sbtPQ]|20                                    
 prev.test.qc.material       10 FREE     L  LAB.B.QM       ?SBK[sbk]P[sbt,sbtPQ]|18                                
 prev.test.qcm.lot           15 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|19                                    
 prev.test.result.date        8 DATE     L                 VAL=IF{@prev.result.time^XX %Z.date.in.magic(XX+@enter      
                                                           VAL=ed.offset)}                                             
 prev.test.result.time        4 HHMM     L                 VAL=IF{@prev.result.time^XX %Z.time.out(XX+@entered.of      
                                                           VAL=fset)}                                                  
 prev.test.verfiy.date        8 DATE     L                 VAL=IF{@prev.verify.time^XX %Z.date.in.magic(XX+@enter      
                                                           VAL=ed.offset)}                                             
 prev.test.verify.time        4 HHMM     L                 VAL=IF{@prev.verify.time^XX %Z.time.out(XX+@entered.of      
                                                           VAL=fset)}                                                  
 prev.units                   8 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]|12                                    
 prev.verify.time             8 PINT     R                 ?SBK[sbk]P[sbt,sbtPQ]|3                                     
 prev.verify.user            10 FREE     L  MIS.USER       ?SBK[sbk]P[sbt,sbtPQ]|5                                 
 prev.workbatch.urn          10 PINT     R  LAB.B.WB       ?SBK[sbk]P[sbt,sbtPQ]|17                                
 Ì     i   2
lab.b.qc.prev.result.comments    (prev.result.comments) 
[urn,prev.test,prev.test.q, prev.result.comment.q]
?SBK[sbk]P[sbt,sbtPQ]C[sbkPC]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 prev.result.comment.q        2 PINT     R                 sbkPC                                                       
 prev.result.comment         60 FREE     L                 ?SBK[sbk]P[sbt,sbtPQ]C[sbkPC]                               
 Ì     i   2
lab.b.qc.review.data    (review) 
[urn, review.offset]
?SBK[sbk]RV[sbkRO]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 review.offset                7 PINT     R                 sbkRO                                                       
 last.review.date             8 DATE     L                 VAL=%Z.date.in.magic(IF{@Last(@LAB.B.QC.review.offset)      
                                                           VAL=^XX @LAB.B.QC.entered.offset+XX})                       
 last.review.time             4 HHMM     L                 VAL=%Z.time.out(IF{@Last(@LAB.B.QC.review.offset)^XX @      
                                                           VAL=LAB.B.QC.entered.offset+XX})                            
 last.reviewed                9 PINT     R                 VAL=IF{@Last(@LAB.B.QC.review.offset)^XX XX+@LAB.B.QC.      
                                                           VAL=entered.offset}                                         
 review.date                  8 FREE     L                 VAL=%Z.date.out(%Z.date.in.magic(@LAB.B.QC.entered.off      
                                                           VAL=set+@LAB.B.QC.review.offset))                           
 review.time                  4 FREE     L                 VAL=%Z.time.out(@LAB.B.QC.entered.offset+@LAB.B.QC.rev      
                                                           VAL=iew.offset)                                             
 review.user                 10 FREE     L  MIS.USER       ?SBK[sbk]RV[sbkRO]|0                                    
 set.last.review.user        10 FREE     L                 VAL=@.user^@LAB.B.QC.review.user[@.sd-@LAB.B.QC.entere      
                                                           VAL=d.offset]                                               
 Ì     i   2
lab.b.qc.tests    (tests) 
[urn, test]
?SBK[sbk]T[sbt]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 test                         9 PDEC5    R  LAB.B.TEST     sbt                                                     
 abnormal.flag                2 FREE     L                 ?SBK[sbk]T[sbt]|7                                           
 alpha.result.code           10 FREE     L                 ?SBK[sbk]T[sbt]|11                                          
 end.of.profile               9 PDEC5    R  LAB.B.TEST     ?SBK[sbk]T[sbt]|15                                      
 int.abnormal.flag            2 CHOICE   L                 ?SBK[sbk]T[sbt]|13                                          
 normal.range                14 FREE     L                 ?SBK[sbk]T[sbt]|8                                           
 result                      20 FREE     L                 ?SBK[sbk]T[sbt]|0                                           
 result.analyzer             10 FREE     L                 ?SBK[sbk]T[sbt]|21                                          
 result.group                10 FREE     L                 ?SBK[sbk]T[sbt]|1                                           
 result.method               10 FREE     L  LAB.C.METH     ?SBK[sbk]T[sbt]|6                                       
 result.time                  8 PINT     R                 ?SBK[sbk]T[sbt]|2                                           
 result.user                 10 FREE     L  MIS.USER       ?SBK[sbk]T[sbt]|4                                       
 review.flag                  1 FREE     L                 ?SBK[sbk]T[sbt]|16                                          
 review.match.flag            3 CHOICE   L                 ?SBK[sbk]T[sbt]|20                                          
 test.qc.material            10 FREE     L  LAB.B.QM       ?SBK[sbk]T[sbt]|18                                      
 test.qcm.lot                15 FREE     L                 ?SBK[sbk]T[sbt]|19                                          
 test.result.date             8 DATE     L                 VAL=IF{@result.time^XX %Z.date.in.magic(XX+@entered.of      
                                                           VAL=fset)}                                                  
 test.result.time             4 HHMM     L                 VAL=IF{@result.time^XX %Z.time.out(XX+@entered.offset)      
                                                           VAL=}                                                       
 test.verify.date             8 DATE     L                 VAL=IF{@verify.time^XX %Z.date.in.magic(XX+@entered.of      
                                                           VAL=fset)}                                                  
 test.verify.time             4 HHMM     L                 VAL=IF{@verify.time^XX %Z.time.out(XX+@entered.offset)      
                                                           VAL=}                                                       
 units                        8 FREE     L                 ?SBK[sbk]T[sbt]|12                                          
 verify.time                  8 PINT     R                 ?SBK[sbk]T[sbt]|3                                           
 verify.user                 10 FREE     L  MIS.USER       ?SBK[sbk]T[sbt]|5                                       
 workbatch.urn               10 PINT     R  LAB.B.WB       ?SBK[sbk]T[sbt]|17                                      
 Ì     i   2
lab.b.qc.result.comments    (result.comments) 
[urn,test, result.comment.q]
?SBK[sbk]T[sbt]C[sbkRC]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 result.comment.q             2 PINT     R                 sbkRC                                                       
 result.comment              60 FREE     L                 ?SBK[sbk]T[sbt]C[sbkRC]                                     
 Ì     i   2
lab.b.qc.ordered.tests.display    (ordered.tests.display) 
[ord.test.line.spec.urn,ord.test.line.q]
/SBKo[sbk,sbkO]

 Field Name                 Len Dat Typ  J  DPM            Offset/Local/VAL                                        
 ord.test.line.spec.urn      10 URN      L  LAB.B.QC       sbk                                                     
 ord.test.line.q              2 PINT     R                 sbkO                                                        
 ord.test.line               72 FREE     L                 /SBKo[sbk,sbkO]                                             
 Ì       2
 INDEX FILE/INTERNAL NAME           SUBSCRIPTS/PHYSICAL BASE

 lab.b.qc.activity.index            [activity.date,qc.material,lot,number] = urn
   activity.x                         :SBKA[sbkAD,sbo,sboL,sbkN]

 lab.b.qc.blind.x                   [blind.for.spec,number] = urn
   blind.x                            :SBKB[sbs,sbkN]

 lab.b.qc.temp.data.review.x        [sel.sort,test,qc.material,lot,result.method,number.sort] = urn
   detail.sort.x                      /SBKds[sbSS,sbt,sbo,sboL,ssm,sbkns]

 lab.b.qc.exception.index           [activity.date,prefix,number,urn]
   except.x                           :SBKE[sbkAD,spx,sbkN,sbk]

 lab.b.qc.material.lot.index        [qc.material,lot,created.date,prefix,number.part] = urn
   lot.x                              :SBKI[sbo,sboL,sbkD,spx,sbkI]

 lab.b.qc.number.index              [created.date,prefix,number.part] = urn
   number.x                           :SBKN[sbkD,spx,sbkI]

 lab.b.qc.pending.x                 [created.date,prefix,number.part] = urn
   pending.x                          :SBKO[sbkD,spx,sbkI]

 lab.b.qc.previous.test.index       [activity.date,urn,test]
   prev.test.x                        :SBKP[sbkAD,sbk,sbt]

 lab.b.qc.temp.rpt.sort.index       [rpt.sort.key,number.sort] = urn
   rpt.sort.x                         /SBKrpt[sbkSK,sbkns]

 lab.b.qc.temp.rpt.test.index       [urn,test]
   rpt.test.x                         /SBKtst[sbk,sbt]

 lab.b.qc.test.index                [test,result.method,qc.material,lot,number.sort] = urn
   test.x                             :SBKT[sbt,ssm,sbo,sboL,sbkns]

 lab.b.qc.unverified.index          [activity.date,prefix,number,urn]
   unverified.x                       :SBKU[sbkAD,spx,sbkN,sbk]