IBDF2D3 ;ALB/CJM - ENCOUNTER FORM - WRITE SELECTION LIST (cont'd) ;NOV 16,1992
;;3.0;AUTOMATED INFO COLLECTION SYS;**38**;APR 24, 1997
;
DISPLAY(SLCTN,COL,HEADER,SUBHDR) ;writes the selection to the list
N J,K,DA,ENTRY,VALUE,TYPE,UNDRLINE,OFFSET,LEN,FIRST,IBROW,IBCOL,BBBLS,ID,DISPLAY,NODE,SUB,WRAP,QTY,ND2
S UNDRLINE=$S(IBLIST("ULSLCTNS"):"U",1:"")
S FIRST=1,(ID,HEADER,DISPLAY,NODE)=""
;
;get the 0 node of the selection & the selection identifier
I SLCTN S:IBLIST("DYNAMIC") NODE=$G(@LOCATION@(SLCTN)) S:'IBLIST("DYNAMIC") NODE=$G(^IBE(357.3,SLCTN,0)),ND2=$G(^IBE(357.3,SLCTN,2)) S ID=$P(NODE,"^")
;
;if a place holder, determine its use as a subheader - dynamic lists don't have place holders
I 'IBLIST("DYNAMIC") D
.S QTY=$P(NODE,"^",9)
.I $P(NODE,"^",2) D
..;turn of the use of any prior subhdr if it was used
..I $P(NODE,"^",8) S SUBHDR=""
..;determine if this is to be used as a subheader
..S $P(NODE,"^",6)=$P(NODE,"^",6)
..I $P(NODE,"^",7),$P(NODE,"^",6)]"" S SUBHDR=SUBHDR_" "_$$STRIP^IBDFU($P(NODE,"^",6))
;
;if place holder with text,just print the text and quit
I 'IBLIST("DYNAMIC"),$P(NODE,"^",2),$P(NODE,"^",6)]"" D Q
.I IBLIST("ULSLCTNS") D
..D DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+LINE,$P(IBLIST("SEP"),"|",2)_$P(NODE,"^",6),"U",CWIDTH-(2*LINE))
..I NEEDUPR D DRWSTR^IBDFU(($$Y^IBDF2D)-1,($$X^IBDF2D)+LINE,"","U",CWIDTH-(2*LINE)) S NEEDUPR=0
.E D DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+$L(IBLIST("SEP2"))+LINE,$P(NODE,"^",6))
.D DECREASE^IBDF2D(.COL)
;
;don't draw bubbles for place holders
I 'IBLIST("DYNAMIC"),$P(NODE,"^",2) N DRWBBL S DRWBBL=0
;
I SLCTN,(IBLIST("DYNAMIC")!('$P(NODE,"^",2))) S CNT=CNT+1
;
I 'IBFORM("COMPILED") I 'SLCTN,IBLIST("DYNAMIC") D
.S CNT=CNT+1
.S DISPLAY="#"_CNT
.S ID=""
;
F K=1:1:(+IBLIST("BTWN")+1) D Q:COL("ROWSLEFT")<1
.S ENTRY=""
.S OFFSET=LINE
.F J=1-IBLIST("SC0"):1:8 S TYPE=IBLIST("SCTYPE",J) D:TYPE'=""
..;S VALUE=""
..S VALUE=$S(K=2:$G(WRAP(J)),1:"")
..I TYPE=1,K'>1,SLCTN D S:(ID]"")&IBLIST("SCPIECE",J) DISPLAY=DISPLAY_$S(DISPLAY="":"",1:" :: ")_$E(VALUE,1,IBLIST("SCW",J)*(1+$S(IBLIST("BTWN"):1,1:0))) I IBLIST("BTWN"),$L(VALUE)>IBLIST("SCW",J) D WRAP
...I IBLIST("SCPIECE",J)=0 S:SLCTN&(IBLIST("DYNAMIC")!('$P(NODE,"^",2))) VALUE="#"_CNT Q
...I 'IBLIST("DYNAMIC") S DA=$O(^IBE(357.3,SLCTN,1,"B",J,"")) S:DA VALUE=$P($G(^IBE(357.3,SLCTN,1,DA,0)),"^",2) Q
...;dynamic lists
...S SUB=$$DATANODE^IBDFU1B(IBLIST("RTN"),IBLIST("SCPIECE",J))
...I SUB]"" S VALUE=$P($G(@IBLIST("DATA_LOCATION")@(SUB,SLCTN)),"^",IBLIST("SCPIECE",J))
...E S VALUE=$P(NODE,"^",IBLIST("SCPIECE",J))
...;
..S:TYPE=2 VALUE=$S(K'>1:IBLIST("SCSYMBOL",J),1:$J("",IBLIST("SCW",J)))
..;I TYPE=1 I SLCTN,ID]"",K'>1,IBLIST("SCPIECE",J) S DISPLAY=DISPLAY_$S(DISPLAY="":"",1:" :: ")_$E(VALUE,1,(IBLIST("SCW",J))
..S:TYPE=1 VALUE=$$PADRIGHT^IBDFU(VALUE,IBLIST("SCW",J))
..I TYPE=2 I IBLIST("ROUTINE",J)]"",K'>1,DRWBBL S IBCOL=($$X^IBDF2D)+OFFSET+$L(IBLIST("SEP2"))+$L(ENTRY)+((IBLIST("SCW",J)-3)\2),IBROW=$$Y^IBDF2D+$S(IBLIST("BTWN"):.5,1:0),BBBLS(IBCOL)=J
..I (TYPE=1)!('IBLIST("NOUL",J))!(K'=(+IBLIST("BTWN")+1))!(UNDRLINE'="U") D
...S ENTRY=ENTRY_IBLIST("SEP2")_VALUE_IBLIST("SEP1")
...S FIRST=0
..E D
...S NEEDUPR=1
...S LEN=$S(FIRST:0,1:$L(ENTRY)-LINE)
...S ENTRY=ENTRY_IBLIST("SEP2")_VALUE_IBLIST("SEP1")
...I OFFSET+$L(ENTRY)=CWIDTH S ENTRY=$E(ENTRY,1,$L(ENTRY)-LINE)
...D DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+OFFSET,ENTRY,"U",LEN)
...S OFFSET=OFFSET+$L(ENTRY),ENTRY="",FIRST=1
.I ENTRY'="" S ENTRY=$E(ENTRY,1,$L(ENTRY)-$L(IBLIST("SEP1"))) D DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+OFFSET,ENTRY,$S(K'=(+IBLIST("BTWN")+1):"",1:UNDRLINE),$L(ENTRY)+$L(IBLIST("SEP2")))
.D DECREASE^IBDF2D(.COL)
;
;Writting bubbles to form tracking? Is the form NOT yet compiled? Otherwise, don't need to do anything with the bubbles
I (TRACKBBL)!('IBFORM("COMPILED")) S IBCOL="" F S IBCOL=$O(BBBLS(IBCOL)) Q:IBCOL="" S J=BBBLS(IBCOL) I IBLIST("ROUTINE",J)="BUBBLE" D
.;
.D:'TRACKBBL DRWBBL^IBDFM1(IBROW,IBCOL,IBLIST("INPUT_RTN"),ID,IBLIST("NAME"),"S"_IBLIST_"("_J,IBLIST("RULE",J),DISPLAY,HEADER,IBLIST("QLFR",J),IBLIST("DYNAMIC"),CNT,SUBHDR,$G(QTY),$G(ND2),$G(SLCTN))
.D:TRACKBBL TRACKBBL^IBDFM1("S"_IBLIST_"("_J,CNT,IBLIST("QLFR",J),IBLIST("INPUT_RTN"),DISPLAY,ID)
Q
;
WRAP ;
Q:IBLIST("SCW",J)<8
N FOUND,AT,I,CHAR S FOUND=0
S AT=IBLIST("SCW",J)+2
F I=0:1:IBLIST("SCW",J)\4 S AT=AT-1,CHAR=$E(VALUE,AT) I " /\-:;"[CHAR S FOUND=1 Q
I FOUND D
.S WRAP(J)=$E(VALUE,AT+$S(" -"[CHAR:1,1:0),AT+IBLIST("SCW",J))
.F I=1:1:IBLIST("SCW",J) I $E(WRAP(J),I)'=" " D Q
..I I>1 S WRAP(J)=$E(WRAP(J),I,$L(WRAP(J)))
.S VALUE=$E(VALUE,1,AT-1)
E S WRAP(J)=$E(VALUE,IBLIST("SCW",J),2*IBLIST("SCW",J)-1),VALUE=$E(VALUE,1,IBLIST("SCW",J)-1)_"-"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBDF2D3 4816 printed Nov 22, 2024@18:01:29 Page 2
IBDF2D3 ;ALB/CJM - ENCOUNTER FORM - WRITE SELECTION LIST (cont'd) ;NOV 16,1992
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;**38**;APR 24, 1997
+2 ;
DISPLAY(SLCTN,COL,HEADER,SUBHDR) ;writes the selection to the list
+1 NEW J,K,DA,ENTRY,VALUE,TYPE,UNDRLINE,OFFSET,LEN,FIRST,IBROW,IBCOL,BBBLS,ID,DISPLAY,NODE,SUB,WRAP,QTY,ND2
+2 SET UNDRLINE=$SELECT(IBLIST("ULSLCTNS"):"U",1:"")
+3 SET FIRST=1
SET (ID,HEADER,DISPLAY,NODE)=""
+4 ;
+5 ;get the 0 node of the selection & the selection identifier
+6 IF SLCTN
if IBLIST("DYNAMIC")
SET NODE=$GET(@LOCATION@(SLCTN))
if 'IBLIST("DYNAMIC")
SET NODE=$GET(^IBE(357.3,SLCTN,0))
SET ND2=$GET(^IBE(357.3,SLCTN,2))
SET ID=$PIECE(NODE,"^")
+7 ;
+8 ;if a place holder, determine its use as a subheader - dynamic lists don't have place holders
+9 IF 'IBLIST("DYNAMIC")
Begin DoDot:1
+10 SET QTY=$PIECE(NODE,"^",9)
+11 IF $PIECE(NODE,"^",2)
Begin DoDot:2
+12 ;turn of the use of any prior subhdr if it was used
+13 IF $PIECE(NODE,"^",8)
SET SUBHDR=""
+14 ;determine if this is to be used as a subheader
+15 SET $PIECE(NODE,"^",6)=$PIECE(NODE,"^",6)
+16 IF $PIECE(NODE,"^",7)
IF $PIECE(NODE,"^",6)]""
SET SUBHDR=SUBHDR_" "_$$STRIP^IBDFU($PIECE(NODE,"^",6))
End DoDot:2
End DoDot:1
+17 ;
+18 ;if place holder with text,just print the text and quit
+19 IF 'IBLIST("DYNAMIC")
IF $PIECE(NODE,"^",2)
IF $PIECE(NODE,"^",6)]""
Begin DoDot:1
+20 IF IBLIST("ULSLCTNS")
Begin DoDot:2
+21 DO DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+LINE,$PIECE(IBLIST("SEP"),"|",2)_$PIECE(NODE,"^",6),"U",CWIDTH-(2*LINE))
+22 IF NEEDUPR
DO DRWSTR^IBDFU(($$Y^IBDF2D)-1,($$X^IBDF2D)+LINE,"","U",CWIDTH-(2*LINE))
SET NEEDUPR=0
End DoDot:2
+23 IF '$TEST
DO DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+$L(IBLIST("SEP2"))+LINE,$PIECE(NODE,"^",6))
+24 DO DECREASE^IBDF2D(.COL)
End DoDot:1
QUIT
+25 ;
+26 ;don't draw bubbles for place holders
+27 IF 'IBLIST("DYNAMIC")
IF $PIECE(NODE,"^",2)
NEW DRWBBL
SET DRWBBL=0
+28 ;
+29 IF SLCTN
IF (IBLIST("DYNAMIC")!('$PIECE(NODE,"^",2)))
SET CNT=CNT+1
+30 ;
+31 IF 'IBFORM("COMPILED")
IF 'SLCTN
IF IBLIST("DYNAMIC")
Begin DoDot:1
+32 SET CNT=CNT+1
+33 SET DISPLAY="#"_CNT
+34 SET ID=""
End DoDot:1
+35 ;
+36 FOR K=1:1:(+IBLIST("BTWN")+1)
Begin DoDot:1
+37 SET ENTRY=""
+38 SET OFFSET=LINE
+39 FOR J=1-IBLIST("SC0"):1:8
SET TYPE=IBLIST("SCTYPE",J)
if TYPE'=""
Begin DoDot:2
+40 ;S VALUE=""
+41 SET VALUE=$SELECT(K=2:$GET(WRAP(J)),1:"")
+42 IF TYPE=1
IF K'>1
IF SLCTN
Begin DoDot:3
+43 IF IBLIST("SCPIECE",J)=0
if SLCTN&(IBLIST("DYNAMIC")!('$PIECE(NODE,"^",2)))
SET VALUE="#"_CNT
QUIT
+44 IF 'IBLIST("DYNAMIC")
SET DA=$ORDER(^IBE(357.3,SLCTN,1,"B",J,""))
if DA
SET VALUE=$PIECE($GET(^IBE(357.3,SLCTN,1,DA,0)),"^",2)
QUIT
+45 ;dynamic lists
+46 SET SUB=$$DATANODE^IBDFU1B(IBLIST("RTN"),IBLIST("SCPIECE",J))
+47 IF SUB]""
SET VALUE=$PIECE($GET(@IBLIST("DATA_LOCATION")@(SUB,SLCTN)),"^",IBLIST("SCPIECE",J))
+48 IF '$TEST
SET VALUE=$PIECE(NODE,"^",IBLIST("SCPIECE",J))
+49 ;
End DoDot:3
if (ID]"")&IBLIST("SCPIECE",J)
SET DISPLAY=DISPLAY_$SELECT(DISPLAY="":"",1:" :: ")_$EXTRACT(VALUE,1,IBLIST("SCW",J)*(1+$SELECT(IBLIST("BTWN"):1,1:0)))
IF IBLIST("BTWN")
IF $LENGTH(VALUE)>IBLIST("SCW",J)
DO WRAP
+50 if TYPE=2
SET VALUE=$SELECT(K'>1:IBLIST("SCSYMBOL",J),1:$JUSTIFY("",IBLIST("SCW",J)))
+51 ;I TYPE=1 I SLCTN,ID]"",K'>1,IBLIST("SCPIECE",J) S DISPLAY=DISPLAY_$S(DISPLAY="":"",1:" :: ")_$E(VALUE,1,(IBLIST("SCW",J))
+52 if TYPE=1
SET VALUE=$$PADRIGHT^IBDFU(VALUE,IBLIST("SCW",J))
+53 IF TYPE=2
IF IBLIST("ROUTINE",J)]""
IF K'>1
IF DRWBBL
SET IBCOL=($$X^IBDF2D)+OFFSET+$L(IBLIST("SEP2"))+$LENGTH(ENTRY)+((IBLIST("SCW",J)-3)\2)
SET IBROW=$$Y^IBDF2D+$S(IBLIST("BTWN"):.5,1:0)
SET BBBLS(IBCOL)=J
+54 IF (TYPE=1)!('IBLIST("NOUL",J))!(K'=(+IBLIST("BTWN")+1))!(UNDRLINE'="U")
Begin DoDot:3
+55 SET ENTRY=ENTRY_IBLIST("SEP2")_VALUE_IBLIST("SEP1")
+56 SET FIRST=0
End DoDot:3
+57 IF '$TEST
Begin DoDot:3
+58 SET NEEDUPR=1
+59 SET LEN=$SELECT(FIRST:0,1:$LENGTH(ENTRY)-LINE)
+60 SET ENTRY=ENTRY_IBLIST("SEP2")_VALUE_IBLIST("SEP1")
+61 IF OFFSET+$LENGTH(ENTRY)=CWIDTH
SET ENTRY=$EXTRACT(ENTRY,1,$LENGTH(ENTRY)-LINE)
+62 DO DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+OFFSET,ENTRY,"U",LEN)
+63 SET OFFSET=OFFSET+$LENGTH(ENTRY)
SET ENTRY=""
SET FIRST=1
End DoDot:3
End DoDot:2
+64 IF ENTRY'=""
SET ENTRY=$EXTRACT(ENTRY,1,$LENGTH(ENTRY)-$LENGTH(IBLIST("SEP1")))
DO DRWSTR^IBDFU($$Y^IBDF2D,($$X^IBDF2D)+OFFSET,ENTRY,$SELECT(K'=(+IBLIST("BTWN")+1):"",1:UNDRLINE),$LENGTH(ENTRY)+$LENGTH(IBLIST("SEP2")))
+65 DO DECREASE^IBDF2D(.COL)
End DoDot:1
if COL("ROWSLEFT")<1
QUIT
+66 ;
+67 ;Writting bubbles to form tracking? Is the form NOT yet compiled? Otherwise, don't need to do anything with the bubbles
+68 IF (TRACKBBL)!('IBFORM("COMPILED"))
SET IBCOL=""
FOR
SET IBCOL=$ORDER(BBBLS(IBCOL))
if IBCOL=""
QUIT
SET J=BBBLS(IBCOL)
IF IBLIST("ROUTINE",J)="BUBBLE"
Begin DoDot:1
+69 ;
+70 if 'TRACKBBL
DO DRWBBL^IBDFM1(IBROW,IBCOL,IBLIST("INPUT_RTN"),ID,IBLIST("NAME"),"S"_IBLIST_"("_J,IBLIST("RULE",J),DISPLAY,HEADER,IBLIST("QLFR",J),IBLIST("DYNAMIC"),CNT,SUBHDR,$GET(QTY),$GET(ND2),$GET(SLCTN))
+71 if TRACKBBL
DO TRACKBBL^IBDFM1("S"_IBLIST_"("_J,CNT,IBLIST("QLFR",J),IBLIST("INPUT_RTN"),DISPLAY,ID)
End DoDot:1
+72 QUIT
+73 ;
WRAP ;
+1 if IBLIST("SCW",J)<8
QUIT
+2 NEW FOUND,AT,I,CHAR
SET FOUND=0
+3 SET AT=IBLIST("SCW",J)+2
+4 FOR I=0:1:IBLIST("SCW",J)\4
SET AT=AT-1
SET CHAR=$EXTRACT(VALUE,AT)
IF " /\-:;"[CHAR
SET FOUND=1
QUIT
+5 IF FOUND
Begin DoDot:1
+6 SET WRAP(J)=$EXTRACT(VALUE,AT+$SELECT(" -"[CHAR:1,1:0),AT+IBLIST("SCW",J))
+7 FOR I=1:1:IBLIST("SCW",J)
IF $EXTRACT(WRAP(J),I)'=" "
Begin DoDot:2
+8 IF I>1
SET WRAP(J)=$EXTRACT(WRAP(J),I,$LENGTH(WRAP(J)))
End DoDot:2
QUIT
+9 SET VALUE=$EXTRACT(VALUE,1,AT-1)
End DoDot:1
+10 IF '$TEST
SET WRAP(J)=$EXTRACT(VALUE,IBLIST("SCW",J),2*IBLIST("SCW",J)-1)
SET VALUE=$EXTRACT(VALUE,1,IBLIST("SCW",J)-1)_"-"
+11 QUIT