IBDF9A1 ;ALB/CJM - ENCOUNTER FORM - (create,edit,delete selection list - continued) ;FEB 1,1993
;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
;
NEWLIST ;creates a new list
;expects IBBLK to be defined
N IBLIST,IBLEN,IBP,IBRTN,NAME,IBDELETE,IBDYN,IBINPUT,IBDFLTF,IBDFLTB,IBDFLTL
S (IBDFLTF,IBDFLTB,IBDFLTL,IBOLD,IBLIST)=0,VALMBCK="R"
D FULL^VALM1
S IBRTN=$$RTN^IBDF9A Q:'IBRTN
S IBDFLTF=$$DFLTS^IBDFU5 D:IBDFLTF
.S IBDFLTB=0 F S IBDFLTB=$O(^IBE(357.1,"C",IBDFLTF,IBDFLTB)) Q:'IBDFLTB D Q:IBDFLTL
..S IBDFLTL=0 F S IBDFLTL=$O(^IBE(357.2,"C",IBDFLTB,IBDFLTL)) Q:'IBDFLTL Q:$P($G(^IBE(357.2,IBDFLTL,0)),"^",11)=IBRTN
I IBDFLTL D Q:IBLIST
.S IBLIST=$$COPYLIST^IBDFU2(IBDFLTL,IBDFLTB,IBBLK,357.2,357.2)
.Q:'IBLIST
.K DIE,DA,DR S DIE=357.2,DA=IBLIST,DR="[IBDF POSITION/SIZE COLUMNS]",DIE("NO^")="BACKOUTOK" D ^DIE K DIE,DR,DA
.S VALMBCK="R" D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
S NAME=$$NEWNAME^IBDF9A Q:NAME=-1
K DIC,DIE,DD,DO,DINUM,DA
N DLAYGO
S DIC="^IBE(357.2,",DIC(0)="FL",X=NAME,DLAYGO=357.2
D FILE^DICN K DIC,DA
S IBLIST=$S(+Y<0:"",1:+Y)
I 'IBLIST D
.W !,"Unable to create a new selection list!" D PAUSE^IBDFU5
I IBLIST D
.D DLISTCNT^IBDFU3(IBLIST,357.2) ;deletes anything that may have been left lying around that now points to IBLIST
.K DIE,DA,DR S DIE=357.2,DA=IBLIST,DR="[IBDF EDIT SELECTION LIST]",DIE("NO^")="BACKOUTOK" D ^DIE K DIE,DR,DA
.I IBDELETE K DA S DIK="^IBE(357.2,",DA=IBLIST D ^DIK K DIK,DA
.I IBLIST,'IBDELETE D ADDGROUP("BLANK",0)
.D UNCMPBLK^IBDF19(IBBLK),IDXBLOCK^IBDFU4
S VALMBCK="R"
Q
ADDGROUP(NAME,ORDER) ;adds a group to the selection list=IBLIST
N GROUP
K DIC,DIE,DD,DO,DINUM,DA
N DLAYGO
S DIC="^IBE(357.4,",DIC(0)="FL",X=NAME,DLAYGO=357.4
D FILE^DICN K DIC,DA
S GROUP=$S(+Y<0:"",1:+Y)
I GROUP D
.S NODE=$G(^IBE(357.4,GROUP,0)) S $P(NODE,"^",2)=ORDER,$P(NODE,"^",3)=IBLIST S ^IBE(357.4,GROUP,0)=NODE
.S DIK="^IBE(357.4,",DA=GROUP D IX1^DIK K DIK,DA
Q
;
FORMAT ;allows the user to format all of the selections on the list in mass
;
;
;TYPE = type of formating - U=upper case,L=lower case,C=capitalize
;SUBCOL is the subcolumn to format
;
N TYPE,SUBCOL,SLCTN
;
;ask for the subcolumn to format
S SUBCOL=$$SUBCOL
;
;ask for the type of fomatting
S TYPE=$S(SUBCOL:$$TYPE,1:"")
;
;find all the sections to be formatted and do so
I TYPE'="",SUBCOL S SLCTN=0 F S SLCTN=$O(^IBE(357.3,"C",IBLIST,SLCTN)) Q:'SLCTN D:$P($G(^IBE(357.3,SLCTN,0)),"^",3)=IBLIST CHANGE(SLCTN,SUBCOL,TYPE)
;
S VALMBCK="R"
Q
;
FORMAT2 ;allows the user to format all of the selections in the group in mass
;
;
;TYPE = type of formating - U=upper case,L=lower case,C=capitalize
;SUBCOL is the subcolumn to format
;
N TYPE,SUBCOL,SLCTN
;
;ask for the subcolumn to format
S SUBCOL=$$SUBCOL
;
;ask forthe type of fomatting
S TYPE=$S(SUBCOL:$$TYPE,1:"")
;
;find all the sections to be formatted and do so
I TYPE'="",SUBCOL S SLCTN=0 F S SLCTN=$O(^IBE(357.3,"D",IBGRP,SLCTN)) Q:'SLCTN D:$P($G(^IBE(357.3,SLCTN,0)),"^",4)=IBGRP CHANGE(SLCTN,SUBCOL,TYPE)
;
D IDXSLCTN^IBDF4
S VALMBCK="R"
Q
;
TYPE() ;ask the user what type of formatting
N TYPE S TYPE=""
K DIR S DIR(0)="SOB^UPPERCASE:U;LOWERCASE:L;CAPITALIZE:C"
S DIR("A")="Select the type of formatting",DIR("B")="C"
D ^DIR K DIR
I '$D(DIRUT),Y'=-1 S TYPE=Y
Q $E(TYPE,1)
;
CHANGE(SLCTN,SUBCOL,TYPE) ;
;
N DA,NODE,STR
S DA=$O(^IBE(357.3,SLCTN,1,"B",SUBCOL,0))
Q:'DA
S NODE=$G(^IBE(357.3,SLCTN,1,DA,0))
S STR=$P(NODE,"^",2)
D:$L(STR)
.I TYPE="U" S STR=$$UP^XLFSTR(STR)
.I TYPE="L" S STR=$$LOW^XLFSTR(STR)
.I TYPE="C" S STR=$$CAPS(STR)
.S $P(^IBE(357.3,SLCTN,1,DA,0),"^",2)=STR
Q
;
CAPS(STR) ;returns STR with each word in it capitalized
N FIRST,I,CHAR,LEN
S FIRST=1,LEN=$L(STR)
F I=1:1 S CHAR=$E(STR,I) Q:CHAR="" D
.I CHAR?1A,FIRST D
..S FIRST=0,CHAR=$$UP^XLFSTR(CHAR)
.E I CHAR?1A D
..S CHAR=$$LOW^XLFSTR(CHAR)
.E S FIRST=1
.S STR=$E(STR,1,I-1)_CHAR_$E(STR,I+1,LEN)
Q STR
;
SUBCOL() ;ask what subcolumn to format
;SCLIST - used to record the subcolumns that can be formated - each digit will signify a subcolum
;
N SCLIST,NODE,SUBCOL,ANS
;first get the list of subcolumns that can be formatted
S SCLIST="",SUBCOL=0
F S SUBCOL=$O(IBLIST("SCTYPE",SUBCOL)) Q:'SUBCOL I $G(IBLIST("SCW",SUBCOL)),IBLIST("SCTYPE",SUBCOL)=1,IBLIST("SCEDITABLE",SUBCOL) S SCLIST=SCLIST_","_SUBCOL
;if there is at most one subcolumn that can be edited return that
I $L(SCLIST)<3 Q $E(SCLIST,2)
;
;now ask what subcolumn to format
AGAIN W !,"What subcolumn do you want formated? Choose from (",$E(SCLIST,2,10),"): "
R ANS:DTIME
I '$T!(ANS["^") Q ""
I ANS?1N,SCLIST[ANS Q ANS
G AGAIN
Q ANS
IBDF9A1 ;ALB/CJM - ENCOUNTER FORM - (create,edit,delete selection list - continued) ;FEB 1,1993
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
+2 ;
NEWLIST ;creates a new list
+1 ;expects IBBLK to be defined
+2 NEW IBLIST,IBLEN,IBP,IBRTN,NAME,IBDELETE,IBDYN,IBINPUT,IBDFLTF,IBDFLTB,IBDFLTL
+3 SET (IBDFLTF,IBDFLTB,IBDFLTL,IBOLD,IBLIST)=0
SET VALMBCK="R"
+4 DO FULL^VALM1
+5 SET IBRTN=$$RTN^IBDF9A
IF 'IBRTN
QUIT
+6 SET IBDFLTF=$$DFLTS^IBDFU5
IF IBDFLTF
Begin DoDot:1
+7 SET IBDFLTB=0
FOR
SET IBDFLTB=$ORDER(^IBE(357.1,"C",IBDFLTF,IBDFLTB))
IF 'IBDFLTB
QUIT
Begin DoDot:2
+8 SET IBDFLTL=0
FOR
SET IBDFLTL=$ORDER(^IBE(357.2,"C",IBDFLTB,IBDFLTL))
IF 'IBDFLTL
QUIT
IF $PIECE($GET(^IBE(357.2,IBDFLTL,0)),"^",11)=IBRTN
QUIT
End DoDot:2
IF IBDFLTL
QUIT
End DoDot:1
+9 IF IBDFLTL
Begin DoDot:1
+10 SET IBLIST=$$COPYLIST^IBDFU2(IBDFLTL,IBDFLTB,IBBLK,357.2,357.2)
+11 IF 'IBLIST
QUIT
+12 KILL DIE,DA,DR
SET DIE=357.2
SET DA=IBLIST
SET DR="[IBDF POSITION/SIZE COLUMNS]"
SET DIE("NO^")="BACKOUTOK"
DO ^DIE
KILL DIE,DR,DA
+13 SET VALMBCK="R"
DO UNCMPBLK^IBDF19(IBBLK)
DO IDXBLOCK^IBDFU4
End DoDot:1
IF IBLIST
QUIT
+14 SET NAME=$$NEWNAME^IBDF9A
IF NAME=-1
QUIT
+15 KILL DIC,DIE,DD,DO,DINUM,DA
+16 NEW DLAYGO
+17 SET DIC="^IBE(357.2,"
SET DIC(0)="FL"
SET X=NAME
SET DLAYGO=357.2
+18 DO FILE^DICN
KILL DIC,DA
+19 SET IBLIST=$SELECT(+Y<0:"",1:+Y)
+20 IF 'IBLIST
Begin DoDot:1
+21 WRITE !,"Unable to create a new selection list!"
DO PAUSE^IBDFU5
End DoDot:1
+22 IF IBLIST
Begin DoDot:1
+23 ;deletes anything that may have been left lying around that now points to IBLIST
DO DLISTCNT^IBDFU3(IBLIST,357.2)
+24 KILL DIE,DA,DR
SET DIE=357.2
SET DA=IBLIST
SET DR="[IBDF EDIT SELECTION LIST]"
SET DIE("NO^")="BACKOUTOK"
DO ^DIE
KILL DIE,DR,DA
+25 IF IBDELETE
KILL DA
SET DIK="^IBE(357.2,"
SET DA=IBLIST
DO ^DIK
KILL DIK,DA
+26 IF IBLIST
IF 'IBDELETE
DO ADDGROUP("BLANK",0)
+27 DO UNCMPBLK^IBDF19(IBBLK)
DO IDXBLOCK^IBDFU4
End DoDot:1
+28 SET VALMBCK="R"
+29 QUIT
ADDGROUP(NAME,ORDER) ;adds a group to the selection list=IBLIST
+1 NEW GROUP
+2 KILL DIC,DIE,DD,DO,DINUM,DA
+3 NEW DLAYGO
+4 SET DIC="^IBE(357.4,"
SET DIC(0)="FL"
SET X=NAME
SET DLAYGO=357.4
+5 DO FILE^DICN
KILL DIC,DA
+6 SET GROUP=$SELECT(+Y<0:"",1:+Y)
+7 IF GROUP
Begin DoDot:1
+8 SET NODE=$GET(^IBE(357.4,GROUP,0))
SET $PIECE(NODE,"^",2)=ORDER
SET $PIECE(NODE,"^",3)=IBLIST
SET ^IBE(357.4,GROUP,0)=NODE
+9 SET DIK="^IBE(357.4,"
SET DA=GROUP
DO IX1^DIK
KILL DIK,DA
End DoDot:1
+10 QUIT
+11 ;
FORMAT ;allows the user to format all of the selections on the list in mass
+1 ;
+2 ;
+3 ;TYPE = type of formating - U=upper case,L=lower case,C=capitalize
+4 ;SUBCOL is the subcolumn to format
+5 ;
+6 NEW TYPE,SUBCOL,SLCTN
+7 ;
+8 ;ask for the subcolumn to format
+9 SET SUBCOL=$$SUBCOL
+10 ;
+11 ;ask for the type of fomatting
+12 SET TYPE=$SELECT(SUBCOL:$$TYPE,1:"")
+13 ;
+14 ;find all the sections to be formatted and do so
+15 IF TYPE'=""
IF SUBCOL
SET SLCTN=0
FOR
SET SLCTN=$ORDER(^IBE(357.3,"C",IBLIST,SLCTN))
IF 'SLCTN
QUIT
IF $PIECE($GET(^IBE(357.3,SLCTN,0)),"^",3)=IBLIST
DO CHANGE(SLCTN,SUBCOL,TYPE)
+16 ;
+17 SET VALMBCK="R"
+18 QUIT
+19 ;
FORMAT2 ;allows the user to format all of the selections in the group in mass
+1 ;
+2 ;
+3 ;TYPE = type of formating - U=upper case,L=lower case,C=capitalize
+4 ;SUBCOL is the subcolumn to format
+5 ;
+6 NEW TYPE,SUBCOL,SLCTN
+7 ;
+8 ;ask for the subcolumn to format
+9 SET SUBCOL=$$SUBCOL
+10 ;
+11 ;ask forthe type of fomatting
+12 SET TYPE=$SELECT(SUBCOL:$$TYPE,1:"")
+13 ;
+14 ;find all the sections to be formatted and do so
+15 IF TYPE'=""
IF SUBCOL
SET SLCTN=0
FOR
SET SLCTN=$ORDER(^IBE(357.3,"D",IBGRP,SLCTN))
IF 'SLCTN
QUIT
IF $PIECE($GET(^IBE(357.3,SLCTN,0)),"^",4)=IBGRP
DO CHANGE(SLCTN,SUBCOL,TYPE)
+16 ;
+17 DO IDXSLCTN^IBDF4
+18 SET VALMBCK="R"
+19 QUIT
+20 ;
TYPE() ;ask the user what type of formatting
+1 NEW TYPE
SET TYPE=""
+2 KILL DIR
SET DIR(0)="SOB^UPPERCASE:U;LOWERCASE:L;CAPITALIZE:C"
+3 SET DIR("A")="Select the type of formatting"
SET DIR("B")="C"
+4 DO ^DIR
KILL DIR
+5 IF '$DATA(DIRUT)
IF Y'=-1
SET TYPE=Y
+6 QUIT $EXTRACT(TYPE,1)
+7 ;
CHANGE(SLCTN,SUBCOL,TYPE) ;
+1 ;
+2 NEW DA,NODE,STR
+3 SET DA=$ORDER(^IBE(357.3,SLCTN,1,"B",SUBCOL,0))
+4 IF 'DA
QUIT
+5 SET NODE=$GET(^IBE(357.3,SLCTN,1,DA,0))
+6 SET STR=$PIECE(NODE,"^",2)
+7 IF $LENGTH(STR)
Begin DoDot:1
+8 IF TYPE="U"
SET STR=$$UP^XLFSTR(STR)
+9 IF TYPE="L"
SET STR=$$LOW^XLFSTR(STR)
+10 IF TYPE="C"
SET STR=$$CAPS(STR)
+11 SET $PIECE(^IBE(357.3,SLCTN,1,DA,0),"^",2)=STR
End DoDot:1
+12 QUIT
+13 ;
CAPS(STR) ;returns STR with each word in it capitalized
+1 NEW FIRST,I,CHAR,LEN
+2 SET FIRST=1
SET LEN=$LENGTH(STR)
+3 FOR I=1:1
SET CHAR=$EXTRACT(STR,I)
IF CHAR=""
QUIT
Begin DoDot:1
+4 IF CHAR?1A
IF FIRST
Begin DoDot:2
+5 SET FIRST=0
SET CHAR=$$UP^XLFSTR(CHAR)
End DoDot:2
+6 IF '$TEST
IF CHAR?1A
Begin DoDot:2
+7 SET CHAR=$$LOW^XLFSTR(CHAR)
End DoDot:2
+8 IF '$TEST
SET FIRST=1
+9 SET STR=$EXTRACT(STR,1,I-1)_CHAR_$EXTRACT(STR,I+1,LEN)
End DoDot:1
+10 QUIT STR
+11 ;
SUBCOL() ;ask what subcolumn to format
+1 ;SCLIST - used to record the subcolumns that can be formated - each digit will signify a subcolum
+2 ;
+3 NEW SCLIST,NODE,SUBCOL,ANS
+4 ;first get the list of subcolumns that can be formatted
+5 SET SCLIST=""
SET SUBCOL=0
+6 FOR
SET SUBCOL=$ORDER(IBLIST("SCTYPE",SUBCOL))
IF 'SUBCOL
QUIT
IF $GET(IBLIST("SCW",SUBCOL))
IF IBLIST("SCTYPE",SUBCOL)=1
IF IBLIST("SCEDITABLE",SUBCOL)
SET SCLIST=SCLIST_","_SUBCOL
+7 ;if there is at most one subcolumn that can be edited return that
+8 IF $LENGTH(SCLIST)<3
QUIT $EXTRACT(SCLIST,2)
+9 ;
+10 ;now ask what subcolumn to format
AGAIN WRITE !,"What subcolumn do you want formated? Choose from (",$EXTRACT(SCLIST,2,10),"): "
+1 READ ANS:DTIME
+2 IF '$TEST!(ANS["^")
QUIT ""
+3 IF ANS?1N
IF SCLIST[ANS
QUIT ANS
+4 GOTO AGAIN
+5 QUIT ANS