LRPXAPI5 ;SLC/STAFF Lab Extract API code - Match ;9/30/03 09:59
;;5.2;LAB SERVICE;**295**;Sep 27, 1994
;
MATCH(DFN,DATE,CONDS,TYPE) ; $$(dfn,date,conds,type) -> 1 if ok, else 0
; from LRPXAPI3,LRPXAPI6
; check if conditions are met for date/time
I CONDS="|" Q $$EXACT^LRPXAPI4(DFN,DATE,.CONDS)
N FETCH,ITEM,NODE,OK,RESULTS,SEPARATE,SUB,XDATE K FETCH,RESULTS,SEPARATE
S OK=1
I '$L($O(CONDS(""))) Q 1
M FETCH=^PXRMINDX(63,"PDI",DFN,DATE)
S ITEM=""
F S ITEM=$O(FETCH(ITEM)) Q:ITEM="" D Q:'OK
. I $E(ITEM)'=TYPE S OK=0 Q
. S NODE=""
. F S NODE=$O(FETCH(ITEM,NODE)) Q:NODE="" D
.. S SUB=$P(NODE,";",2)
.. I '(SUB="AU"!(SUB="AY")!(SUB=33)!(SUB=80)) D
... S SEPARATE($P(NODE,";",1,3),ITEM,NODE)=""
.. E S SEPARATE(DATE,ITEM,NODE)=""
I 'OK Q 0
S XDATE=""
F S XDATE=$O(SEPARATE(XDATE)) Q:XDATE="" D Q:OK
. K RESULTS
. M RESULTS=SEPARATE(XDATE)
. I '$L($O(RESULTS(""))) S OK=0 Q
. I $D(CONDS(0)) D NOTEQUAL(.CONDS,.RESULTS,.OK) I 'OK Q
. I $D(CONDS(1)) D EQUAL(.CONDS,.RESULTS,.OK) I 'OK Q
. I $D(CONDS("AC")) D AC(.CONDS,.RESULTS,.OK) I 'OK Q
. I $D(CONDS("MC")) D MC(.CONDS,.RESULTS,.OK) I 'OK Q
. I $D(CONDS("AS")) D AS(.CONDS,.RESULTS,.OK) I 'OK Q
. I $D(CONDS("MIR")) D MIR(.CONDS,.RESULTS,.OK) I 'OK Q
Q OK
;
NOTEQUAL(CONDS,RESULTS,OK) ;
; check not equal condition for pointer values
N ITEM,ITEM1
S OK=1
S ITEM=""
F S ITEM=$O(CONDS(0,ITEM)) Q:ITEM="" D I 'OK Q
. I $D(RESULTS(ITEM)) S OK=0 Q
. S ITEM1=$O(RESULTS($P(ITEM,";",1,2)))
. I $P(ITEM1,";",1,2)'=$P(ITEM,";",1,2) S OK=0 Q
Q
;
EQUAL(CONDS,RESULTS,OK) ;
; check equal condition for pointer values
N ITEM
S OK=1
S ITEM=""
F S ITEM=$O(CONDS(1,ITEM)) Q:ITEM="" D I 'OK Q
. I '$D(RESULTS(ITEM)) S OK=0 Q
Q
;
AC(CONDS,RESULTS,OK) ;
; check conditions for AP categories
N CAT,CATEGORY,ITEM,ITEMC,NEXT,NODE,NOTEQUAL,SUB
S OK=1
S ITEM=""
F S ITEM=$O(CONDS("AC",ITEM)) Q:ITEM="" D
. S CATEGORY=$P(ITEM,"=",2)
. I '$L(CATEGORY) Q
. S CATEGORY=$E(CATEGORY,2)
. S NOTEQUAL=0
. I $L($P(ITEM,"'=",2)) S NOTEQUAL=1
. S ITEMC="A"
. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]"A;Z" D
.. I ITEMC["A;T;" Q
.. S NODE=""
.. F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D
... S SUB=$P(NODE,";",2)
... I SUB=33!(SUB=80) S CAT="A"
... E S CAT=$E(SUB)
... I NOTEQUAL,CAT=CATEGORY K RESULTS
... I 'NOTEQUAL,CAT'=CATEGORY K RESULTS(ITEMC,NODE) Q
S NEXT=$O(RESULTS("A"))
I NEXT="" S OK=0 Q
I NEXT]"A;S" S OK=0 Q
Q
;
MC(CONDS,RESULTS,OK) ;
; check conditions for Micro categories
N CATEGORY,CATSUB,ITEM,ITEMC,NEXT,NODE,NOTEQUAL,SUB
S OK=1
S ITEM=""
F S ITEM=$O(CONDS("MC",ITEM)) Q:ITEM="" D
. S CATEGORY=$P(ITEM,"=",2)
. I '$L(CATEGORY) Q
. S CATEGORY=$E(CATEGORY,2)
. S CATSUB=$$CATSUB^LRPXAPIU(CATEGORY,"M")
. S NOTEQUAL=0
. I $L($P(ITEM,"'=",2)) S NOTEQUAL=1
. S ITEMC="M"
. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]"M;Z" D
.. I ITEMC["M;T;" Q
.. I ITEMC["M;S;" Q
.. S NODE=""
.. F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D
... S SUB=$P(NODE,";",4)
... I NOTEQUAL,SUB=CATSUB K RESULTS Q
... I 'NOTEQUAL,SUB'=CATSUB K RESULTS(ITEMC,NODE) Q
S NEXT=$O(RESULTS("M"))
I NEXT="" S OK=0 Q
I NEXT]"M;S" S OK=0 Q
Q
;
AS(CONDS,RESULTS,OK) ;
; check conditions for AP specimen
N CHECK,ITEM,ITEMC,S
S OK=1
S ITEM=""
F S ITEM=$O(CONDS("AS",ITEM)) Q:ITEM="" D I OK Q
. I $E(ITEM,2)="'" D Q
.. ; good if the specimen text is not present for this collection
.. S ITEMC="A;S;1"
.. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]"A;S;Z" D Q:OK
... S OK=0
... S S=$P(ITEMC,"1.",2)
... S CHECK="I "_ITEM
... X CHECK I $T S OK=1
. ; good if any of the specimen text for this collection have a matching text
. I $O(RESULTS("A;S;1"))="" Q
. I $O(RESULTS("A"))]"A;S;Z" Q
. S OK=0
. S ITEMC="A;S;1"
. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]"A;S;Z" D Q:OK
.. S S=$P(ITEMC,"1.",2)
.. S CHECK="I "_ITEM
.. X CHECK I $T S OK=1
Q
;
MIR(CONDS,RESULTS,OK) ; $$(dfn,date,conds) -> 1 if ok, else 0
; check conditions for antimicrobial results and interpretations
N ABNODE,CHECK,I,ITEM,ITEMC,ITEMZ,NODE,R
S OK=1
; check bacterial antimicrobials
S ITEM=""
F S ITEM=$O(CONDS("MIR",ITEM)) Q:ITEM="" D I 'OK Q
. I $E(ITEM,2)="'" D Q
.. ; good if the interpretation/result is not present for this collection
.. S ITEMC="M;A"
.. S ITEMZ="M;A;Z"
.. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]ITEMZ D Q:'OK
... S NODE=""
... F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D Q:'OK
.... S ABNODE=$$REFVAL^LRPXAPI(NODE)
.... S I=$P(ABNODE,U,2)
.... S R=$P(ABNODE,U)
.... S CHECK="I "_ITEM
.... X CHECK I $T S OK=0
. ; good if any of the interpretations/results have matching conditions
. I $O(RESULTS("M;A"))="" Q
. I $O(RESULTS("M;A"))]"M;A;Z" Q
. S OK=0
. S ITEMC="M;A"
. S ITEMZ="M;A;Z"
. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]ITEMZ D Q:OK
.. S NODE=""
.. F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D Q:OK
... S ABNODE=$$REFVAL^LRPXAPI(NODE)
... S I=$P(ABNODE,U,2)
... S R=$P(ABNODE,U)
... S CHECK="I "_ITEM
... X CHECK I $T S OK=1
; check mycobacterial antimicrobials
F S ITEM=$O(CONDS("MIR",ITEM)) Q:ITEM="" D I 'OK Q
. I $E(ITEM,2)="'" D Q
.. ; good if the interpretation/result is not present for this collection
.. S ITEMC="M;M"
.. S ITEMZ="M;M;Z"
.. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]ITEMZ D Q:'OK
... S NODE=""
... F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D Q:'OK
.... S ABNODE=$$REFVAL^LRPXAPI(NODE)
.... S R=$P(ABNODE,U)
.... S I=R
.... S CHECK="I "_ITEM
.... X CHECK I $T S OK=0
. ; good if any of the interpretations/results have matching conditions
. I $O(RESULTS("M;M"))="" Q
. I $O(RESULTS("M;M"))]"M;M;Z" Q
. S OK=0
. S ITEMC="M;M"
. S ITEMZ="M;M;Z"
. F S ITEMC=$O(RESULTS(ITEMC)) Q:ITEMC="" Q:ITEMC]ITEMZ D Q:OK
.. S NODE=""
.. F S NODE=$O(RESULTS(ITEMC,NODE)) Q:NODE="" D Q:OK
... S ABNODE=$$REFVAL^LRPXAPI(NODE)
... S R=$P(ABNODE,U)
... S I=R
... S CHECK="I "_ITEM
... X CHECK I $T S OK=1
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRPXAPI5 6203 printed Nov 22, 2024@17:29:37 Page 2
LRPXAPI5 ;SLC/STAFF Lab Extract API code - Match ;9/30/03 09:59
+1 ;;5.2;LAB SERVICE;**295**;Sep 27, 1994
+2 ;
MATCH(DFN,DATE,CONDS,TYPE) ; $$(dfn,date,conds,type) -> 1 if ok, else 0
+1 ; from LRPXAPI3,LRPXAPI6
+2 ; check if conditions are met for date/time
+3 IF CONDS="|"
QUIT $$EXACT^LRPXAPI4(DFN,DATE,.CONDS)
+4 NEW FETCH,ITEM,NODE,OK,RESULTS,SEPARATE,SUB,XDATE
KILL FETCH,RESULTS,SEPARATE
+5 SET OK=1
+6 IF '$LENGTH($ORDER(CONDS("")))
QUIT 1
+7 MERGE FETCH=^PXRMINDX(63,"PDI",DFN,DATE)
+8 SET ITEM=""
+9 FOR
SET ITEM=$ORDER(FETCH(ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+10 IF $EXTRACT(ITEM)'=TYPE
SET OK=0
QUIT
+11 SET NODE=""
+12 FOR
SET NODE=$ORDER(FETCH(ITEM,NODE))
if NODE=""
QUIT
Begin DoDot:2
+13 SET SUB=$PIECE(NODE,";",2)
+14 IF '(SUB="AU"!(SUB="AY")!(SUB=33)!(SUB=80))
Begin DoDot:3
+15 SET SEPARATE($PIECE(NODE,";",1,3),ITEM,NODE)=""
End DoDot:3
+16 IF '$TEST
SET SEPARATE(DATE,ITEM,NODE)=""
End DoDot:2
End DoDot:1
if 'OK
QUIT
+17 IF 'OK
QUIT 0
+18 SET XDATE=""
+19 FOR
SET XDATE=$ORDER(SEPARATE(XDATE))
if XDATE=""
QUIT
Begin DoDot:1
+20 KILL RESULTS
+21 MERGE RESULTS=SEPARATE(XDATE)
+22 IF '$LENGTH($ORDER(RESULTS("")))
SET OK=0
QUIT
+23 IF $DATA(CONDS(0))
DO NOTEQUAL(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
+24 IF $DATA(CONDS(1))
DO EQUAL(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
+25 IF $DATA(CONDS("AC"))
DO AC(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
+26 IF $DATA(CONDS("MC"))
DO MC(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
+27 IF $DATA(CONDS("AS"))
DO AS(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
+28 IF $DATA(CONDS("MIR"))
DO MIR(.CONDS,.RESULTS,.OK)
IF 'OK
QUIT
End DoDot:1
if OK
QUIT
+29 QUIT OK
+30 ;
NOTEQUAL(CONDS,RESULTS,OK) ;
+1 ; check not equal condition for pointer values
+2 NEW ITEM,ITEM1
+3 SET OK=1
+4 SET ITEM=""
+5 FOR
SET ITEM=$ORDER(CONDS(0,ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+6 IF $DATA(RESULTS(ITEM))
SET OK=0
QUIT
+7 SET ITEM1=$ORDER(RESULTS($PIECE(ITEM,";",1,2)))
+8 IF $PIECE(ITEM1,";",1,2)'=$PIECE(ITEM,";",1,2)
SET OK=0
QUIT
End DoDot:1
IF 'OK
QUIT
+9 QUIT
+10 ;
EQUAL(CONDS,RESULTS,OK) ;
+1 ; check equal condition for pointer values
+2 NEW ITEM
+3 SET OK=1
+4 SET ITEM=""
+5 FOR
SET ITEM=$ORDER(CONDS(1,ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+6 IF '$DATA(RESULTS(ITEM))
SET OK=0
QUIT
End DoDot:1
IF 'OK
QUIT
+7 QUIT
+8 ;
AC(CONDS,RESULTS,OK) ;
+1 ; check conditions for AP categories
+2 NEW CAT,CATEGORY,ITEM,ITEMC,NEXT,NODE,NOTEQUAL,SUB
+3 SET OK=1
+4 SET ITEM=""
+5 FOR
SET ITEM=$ORDER(CONDS("AC",ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+6 SET CATEGORY=$PIECE(ITEM,"=",2)
+7 IF '$LENGTH(CATEGORY)
QUIT
+8 SET CATEGORY=$EXTRACT(CATEGORY,2)
+9 SET NOTEQUAL=0
+10 IF $LENGTH($PIECE(ITEM,"'=",2))
SET NOTEQUAL=1
+11 SET ITEMC="A"
+12 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]"A;Z"
QUIT
Begin DoDot:2
+13 IF ITEMC["A;T;"
QUIT
+14 SET NODE=""
+15 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:3
+16 SET SUB=$PIECE(NODE,";",2)
+17 IF SUB=33!(SUB=80)
SET CAT="A"
+18 IF '$TEST
SET CAT=$EXTRACT(SUB)
+19 IF NOTEQUAL
IF CAT=CATEGORY
KILL RESULTS
+20 IF 'NOTEQUAL
IF CAT'=CATEGORY
KILL RESULTS(ITEMC,NODE)
QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+21 SET NEXT=$ORDER(RESULTS("A"))
+22 IF NEXT=""
SET OK=0
QUIT
+23 IF NEXT]"A;S"
SET OK=0
QUIT
+24 QUIT
+25 ;
MC(CONDS,RESULTS,OK) ;
+1 ; check conditions for Micro categories
+2 NEW CATEGORY,CATSUB,ITEM,ITEMC,NEXT,NODE,NOTEQUAL,SUB
+3 SET OK=1
+4 SET ITEM=""
+5 FOR
SET ITEM=$ORDER(CONDS("MC",ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+6 SET CATEGORY=$PIECE(ITEM,"=",2)
+7 IF '$LENGTH(CATEGORY)
QUIT
+8 SET CATEGORY=$EXTRACT(CATEGORY,2)
+9 SET CATSUB=$$CATSUB^LRPXAPIU(CATEGORY,"M")
+10 SET NOTEQUAL=0
+11 IF $LENGTH($PIECE(ITEM,"'=",2))
SET NOTEQUAL=1
+12 SET ITEMC="M"
+13 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]"M;Z"
QUIT
Begin DoDot:2
+14 IF ITEMC["M;T;"
QUIT
+15 IF ITEMC["M;S;"
QUIT
+16 SET NODE=""
+17 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:3
+18 SET SUB=$PIECE(NODE,";",4)
+19 IF NOTEQUAL
IF SUB=CATSUB
KILL RESULTS
QUIT
+20 IF 'NOTEQUAL
IF SUB'=CATSUB
KILL RESULTS(ITEMC,NODE)
QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+21 SET NEXT=$ORDER(RESULTS("M"))
+22 IF NEXT=""
SET OK=0
QUIT
+23 IF NEXT]"M;S"
SET OK=0
QUIT
+24 QUIT
+25 ;
AS(CONDS,RESULTS,OK) ;
+1 ; check conditions for AP specimen
+2 NEW CHECK,ITEM,ITEMC,S
+3 SET OK=1
+4 SET ITEM=""
+5 FOR
SET ITEM=$ORDER(CONDS("AS",ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+6 IF $EXTRACT(ITEM,2)="'"
Begin DoDot:2
+7 ; good if the specimen text is not present for this collection
+8 SET ITEMC="A;S;1"
+9 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]"A;S;Z"
QUIT
Begin DoDot:3
+10 SET OK=0
+11 SET S=$PIECE(ITEMC,"1.",2)
+12 SET CHECK="I "_ITEM
+13 XECUTE CHECK
IF $TEST
SET OK=1
End DoDot:3
if OK
QUIT
End DoDot:2
QUIT
+14 ; good if any of the specimen text for this collection have a matching text
+15 IF $ORDER(RESULTS("A;S;1"))=""
QUIT
+16 IF $ORDER(RESULTS("A"))]"A;S;Z"
QUIT
+17 SET OK=0
+18 SET ITEMC="A;S;1"
+19 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]"A;S;Z"
QUIT
Begin DoDot:2
+20 SET S=$PIECE(ITEMC,"1.",2)
+21 SET CHECK="I "_ITEM
+22 XECUTE CHECK
IF $TEST
SET OK=1
End DoDot:2
if OK
QUIT
End DoDot:1
IF OK
QUIT
+23 QUIT
+24 ;
MIR(CONDS,RESULTS,OK) ; $$(dfn,date,conds) -> 1 if ok, else 0
+1 ; check conditions for antimicrobial results and interpretations
+2 NEW ABNODE,CHECK,I,ITEM,ITEMC,ITEMZ,NODE,R
+3 SET OK=1
+4 ; check bacterial antimicrobials
+5 SET ITEM=""
+6 FOR
SET ITEM=$ORDER(CONDS("MIR",ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+7 IF $EXTRACT(ITEM,2)="'"
Begin DoDot:2
+8 ; good if the interpretation/result is not present for this collection
+9 SET ITEMC="M;A"
+10 SET ITEMZ="M;A;Z"
+11 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]ITEMZ
QUIT
Begin DoDot:3
+12 SET NODE=""
+13 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:4
+14 SET ABNODE=$$REFVAL^LRPXAPI(NODE)
+15 SET I=$PIECE(ABNODE,U,2)
+16 SET R=$PIECE(ABNODE,U)
+17 SET CHECK="I "_ITEM
+18 XECUTE CHECK
IF $TEST
SET OK=0
End DoDot:4
if 'OK
QUIT
End DoDot:3
if 'OK
QUIT
End DoDot:2
QUIT
+19 ; good if any of the interpretations/results have matching conditions
+20 IF $ORDER(RESULTS("M;A"))=""
QUIT
+21 IF $ORDER(RESULTS("M;A"))]"M;A;Z"
QUIT
+22 SET OK=0
+23 SET ITEMC="M;A"
+24 SET ITEMZ="M;A;Z"
+25 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]ITEMZ
QUIT
Begin DoDot:2
+26 SET NODE=""
+27 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:3
+28 SET ABNODE=$$REFVAL^LRPXAPI(NODE)
+29 SET I=$PIECE(ABNODE,U,2)
+30 SET R=$PIECE(ABNODE,U)
+31 SET CHECK="I "_ITEM
+32 XECUTE CHECK
IF $TEST
SET OK=1
End DoDot:3
if OK
QUIT
End DoDot:2
if OK
QUIT
End DoDot:1
IF 'OK
QUIT
+33 ; check mycobacterial antimicrobials
+34 FOR
SET ITEM=$ORDER(CONDS("MIR",ITEM))
if ITEM=""
QUIT
Begin DoDot:1
+35 IF $EXTRACT(ITEM,2)="'"
Begin DoDot:2
+36 ; good if the interpretation/result is not present for this collection
+37 SET ITEMC="M;M"
+38 SET ITEMZ="M;M;Z"
+39 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]ITEMZ
QUIT
Begin DoDot:3
+40 SET NODE=""
+41 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:4
+42 SET ABNODE=$$REFVAL^LRPXAPI(NODE)
+43 SET R=$PIECE(ABNODE,U)
+44 SET I=R
+45 SET CHECK="I "_ITEM
+46 XECUTE CHECK
IF $TEST
SET OK=0
End DoDot:4
if 'OK
QUIT
End DoDot:3
if 'OK
QUIT
End DoDot:2
QUIT
+47 ; good if any of the interpretations/results have matching conditions
+48 IF $ORDER(RESULTS("M;M"))=""
QUIT
+49 IF $ORDER(RESULTS("M;M"))]"M;M;Z"
QUIT
+50 SET OK=0
+51 SET ITEMC="M;M"
+52 SET ITEMZ="M;M;Z"
+53 FOR
SET ITEMC=$ORDER(RESULTS(ITEMC))
if ITEMC=""
QUIT
if ITEMC]ITEMZ
QUIT
Begin DoDot:2
+54 SET NODE=""
+55 FOR
SET NODE=$ORDER(RESULTS(ITEMC,NODE))
if NODE=""
QUIT
Begin DoDot:3
+56 SET ABNODE=$$REFVAL^LRPXAPI(NODE)
+57 SET R=$PIECE(ABNODE,U)
+58 SET I=R
+59 SET CHECK="I "_ITEM
+60 XECUTE CHECK
IF $TEST
SET OK=1
End DoDot:3
if OK
QUIT
End DoDot:2
if OK
QUIT
End DoDot:1
IF 'OK
QUIT
+61 QUIT
+62 ;