IBDFQSL2 ;ALB/CJM/AAS/MAF - ENCOUNTER FORM - Quick selection edit (cont.);12-Jun-95
;;3.0;AUTOMATED INFO COLLECTION SYS;**34**;APR 24, 1997
;
GETLST(FORM,BLOCK,LIST,INTRFACE,ARY,FILTER,COUNT) ; -- returns any specified selection list for a clinic
; -- input FORM = ien of entry in 357
; BLOCK = ien of entry in 357.1
; LIST = ien of entry in 357.2
; INTRFACE = name of selection list in package interface file
; ARY = name of array to return list in
; FILTER = predefined filters (optional, default = 1)
; 1 = must be selection list
; 2 = only visit cpts on list
;
; -- output The format of the returned array is as follows
; @ARY@(0) = count of array element (0 of nothing found)
; @ARY@(1) = ^group header
; @ARY@(2) = problem ien or cpt or icd code^user defined text
; @ARY@(3) = problem ien or cpt or icd code^used defined text
; @ARY@(k) = ^next group header
; @ARY@(k+1) = problem ien or cpt or icd code^user define text
;
Q:'FORM!('BLOCK)!('LIST)!('INTRFACE)
N OLDARY,IBDTMP
S COUNT=$G(COUNT,0)
I $G(FILTER)<1 S FILTER=1 ;default value=1
I FILTER>1 S OLDARY=ARY,ARY="IBDTMP"
S @ARY@(0)=+$G(@ARY@(0))
D COPYLIST(LIST,ARY,.COUNT)
S @ARY@(0)=COUNT
I FILTER=2 D F2^IBDF18A1(OLDARY)
Q
;
COPYLIST(LIST,ARY,COUNT) ;copies the entries from LIST to @ARY, starting subscript at COUNT+1
;
N SLCTN,SUBCOL,TEXT,IEN,NODE,TSUBCOL,NODE,GROUP,ORDER,HDR,GRPORDR
;
D SUBCOL^IBDF18A1(LIST,.TSUBCOL) ;find the subcolumn containing the text
;
S GRPORDR=""
F S GRPORDR=$O(^IBE(357.4,"APO",LIST,GRPORDR)) Q:GRPORDR="" D
.S GROUP=0
.F S GROUP=$O(^IBE(357.4,"APO",LIST,GRPORDR,GROUP)) Q:'GROUP D
..S HDR=$P($G(^IBE(357.4,GROUP,0)),"^") ;I HDR="BLANK" S HDR="" If don't want to print BLANK group
..S COUNT=COUNT+1,@ARY@(COUNT)="^"_HDR_"^^^"_GROUP_"^"_GRPORDR
..S ORDER=""
..F S ORDER=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER)) Q:ORDER="" D
...S SLCTN=0
...F S SLCTN=$O(^IBE(357.3,"APO",LIST,GROUP,ORDER,SLCTN)) Q:'SLCTN D
....S NODE=$G(^IBE(357.3,SLCTN,0))
....S IEN=$P(NODE,"^")
....S SUBCOL=$O(^IBE(357.3,SLCTN,1,"B",+TSUBCOL,0))
....;
....I 'SUBCOL D Q ;placeholders
.....S TEXT=$S($P(NODE,"^",6)?1E.E:$P(NODE,"^",6),1:"BLANK")
.....S COUNT=COUNT+1
.....S @ARY@(COUNT)=" "_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER Q
....;
....S NODE=$G(^IBE(357.3,SLCTN,1,SUBCOL,0))
....S:$P(NODE,"^")=TSUBCOL TEXT=$P(NODE,"^",2)
....;
....I $L(TEXT) S COUNT=COUNT+1,@ARY@(COUNT)=IEN_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER Q
Q
IBDFQSL2 ;ALB/CJM/AAS/MAF - ENCOUNTER FORM - Quick selection edit (cont.);12-Jun-95
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;**34**;APR 24, 1997
+2 ;
GETLST(FORM,BLOCK,LIST,INTRFACE,ARY,FILTER,COUNT) ; -- returns any specified selection list for a clinic
+1 ; -- input FORM = ien of entry in 357
+2 ; BLOCK = ien of entry in 357.1
+3 ; LIST = ien of entry in 357.2
+4 ; INTRFACE = name of selection list in package interface file
+5 ; ARY = name of array to return list in
+6 ; FILTER = predefined filters (optional, default = 1)
+7 ; 1 = must be selection list
+8 ; 2 = only visit cpts on list
+9 ;
+10 ; -- output The format of the returned array is as follows
+11 ; @ARY@(0) = count of array element (0 of nothing found)
+12 ; @ARY@(1) = ^group header
+13 ; @ARY@(2) = problem ien or cpt or icd code^user defined text
+14 ; @ARY@(3) = problem ien or cpt or icd code^used defined text
+15 ; @ARY@(k) = ^next group header
+16 ; @ARY@(k+1) = problem ien or cpt or icd code^user define text
+17 ;
+18 IF 'FORM!('BLOCK)!('LIST)!('INTRFACE)
QUIT
+19 NEW OLDARY,IBDTMP
+20 SET COUNT=$GET(COUNT,0)
+21 ;default value=1
IF $GET(FILTER)<1
SET FILTER=1
+22 IF FILTER>1
SET OLDARY=ARY
SET ARY="IBDTMP"
+23 SET @ARY@(0)=+$GET(@ARY@(0))
+24 DO COPYLIST(LIST,ARY,.COUNT)
+25 SET @ARY@(0)=COUNT
+26 IF FILTER=2
DO F2^IBDF18A1(OLDARY)
+27 QUIT
+28 ;
COPYLIST(LIST,ARY,COUNT) ;copies the entries from LIST to @ARY, starting subscript at COUNT+1
+1 ;
+2 NEW SLCTN,SUBCOL,TEXT,IEN,NODE,TSUBCOL,NODE,GROUP,ORDER,HDR,GRPORDR
+3 ;
+4 ;find the subcolumn containing the text
DO SUBCOL^IBDF18A1(LIST,.TSUBCOL)
+5 ;
+6 SET GRPORDR=""
+7 FOR
SET GRPORDR=$ORDER(^IBE(357.4,"APO",LIST,GRPORDR))
IF GRPORDR=""
QUIT
Begin DoDot:1
+8 SET GROUP=0
+9 FOR
SET GROUP=$ORDER(^IBE(357.4,"APO",LIST,GRPORDR,GROUP))
IF 'GROUP
QUIT
Begin DoDot:2
+10 ;I HDR="BLANK" S HDR="" If don't want to print BLANK group
SET HDR=$PIECE($GET(^IBE(357.4,GROUP,0)),"^")
+11 SET COUNT=COUNT+1
SET @ARY@(COUNT)="^"_HDR_"^^^"_GROUP_"^"_GRPORDR
+12 SET ORDER=""
+13 FOR
SET ORDER=$ORDER(^IBE(357.3,"APO",LIST,GROUP,ORDER))
IF ORDER=""
QUIT
Begin DoDot:3
+14 SET SLCTN=0
+15 FOR
SET SLCTN=$ORDER(^IBE(357.3,"APO",LIST,GROUP,ORDER,SLCTN))
IF 'SLCTN
QUIT
Begin DoDot:4
+16 SET NODE=$GET(^IBE(357.3,SLCTN,0))
+17 SET IEN=$PIECE(NODE,"^")
+18 SET SUBCOL=$ORDER(^IBE(357.3,SLCTN,1,"B",+TSUBCOL,0))
+19 ;
+20 ;placeholders
IF 'SUBCOL
Begin DoDot:5
+21 SET TEXT=$SELECT($PIECE(NODE,"^",6)?1E.E:$PIECE(NODE,"^",6),1:"BLANK")
+22 SET COUNT=COUNT+1
+23 SET @ARY@(COUNT)=" "_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER
QUIT
End DoDot:5
QUIT
+24 ;
+25 SET NODE=$GET(^IBE(357.3,SLCTN,1,SUBCOL,0))
+26 IF $PIECE(NODE,"^")=TSUBCOL
SET TEXT=$PIECE(NODE,"^",2)
+27 ;
+28 IF $LENGTH(TEXT)
SET COUNT=COUNT+1
SET @ARY@(COUNT)=IEN_"^"_TEXT_"^"_LIST_"^"_SLCTN_"^"_GROUP_"^"_ORDER
QUIT
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+29 QUIT