GMRGED3 ;HIRMFO/RM-PATIENT DATA EDIT (cont.) ;9/1/95
;;3.0;Text Generator;;Jan 24, 1996
EN1 ; REPLACE/WITH TEXT GMRGTX(0)=TEXT TO BE EDITED, GMRGTX(1)=1 FOR
; INTERNAL TEXT, 0 FOR OTHER KINDS
REPLACE W ?$X+2,GMRGTX(0),!?4,"Replace " R GMRG1:DTIME S:GMRG1="^"!(GMRG1="^^")!'$T GMRGOUT=1 Q:GMRGOUT!(GMRG1="") I GMRG1?1"?".E D REPHLP W ! G REPLACE
I GMRG1["@" D DEL Q:GMRGTX(0)=""!GMRGOUT W ! G REPLACE
D:GMRG1["..." RANGE
S GMRG2=GMRG1,GMRG3=$S(GMRG2="":0,GMRGTX(0)[GMRG2:1,1:0) W:'GMRG3 $C(7)," ??",!
I GMRG3 D WITH Q:GMRGTX(0)=""!GMRGOUT W ! G REPLACE
W ! G REPLACE
REPHLP W !!?5,"At the ""Replace"" prompt, enter exactly the text you want to replace.",!?5,"You may also enter ""..."" to replace the entire text, ""...(text)"" to",!?5,"replace from the beginning through ""(text)"", or ""(text)..."" to replace"
W !?5,"from ""(text)"" through the end.",!?5,"At the ""With"" prompt, enter the new text.",!?10
Q
WITH W " With " R GMRG4:DTIME S:GMRG4="^"!(GMRG4="^^")!'$T GMRGOUT=1 Q:GMRGOUT I GMRG4?1"?".E D REPHLP G WITH
S GMRGTX(2)=$P(GMRGTX(0),GMRG1)_GMRG4_$P(GMRGTX(0),GMRG1,2,$L(GMRGTX(0),GMRG1)) I GMRGTX(2)="" D DEL Q:GMRGOUT I GMRGTX(0)'="" W $C(7)," ??" Q
Q:GMRGOUT S GMRGTX(0)=GMRGTX(2)
Q
RANGE S GMRG5=$P(GMRG1,"..."),GMRG7=$F(GMRGTX(0),GMRG5),GMRG5(0)=$S(GMRG5'=""&GMRG7:GMRG7-$L(GMRG5),'GMRG7:0,1:1)
S GMRG6=$P(GMRG1,"...",2),GMRG8=$F(GMRGTX(0),GMRG6,GMRG7),GMRG6(0)=$S('GMRG8!'GMRG7:0,GMRG6'="":GMRG8-1,1:$L(GMRGTX(0))),GMRG1=$E(GMRGTX(0),GMRG5(0),GMRG6(0))
Q
DEL ; DELETE EXISTING TEXT
I 'GMRGTX("@") W !,$C(7),"CANNOT DELETE!!" Q
I GMRGTX(1) W !?5,$C(7),"If you delete bracketed text, the original default will become the",!?5,"the new value."
W !?5,$C(7),"WANT TO DELETE" S %=0 D YN^DICN S:%=1 GMRGTX(0)="" S:%=-1 GMRGOUT=1 Q:%'=0 W !?6,"Answer Yes if you wish to delete this text, else answer No." G DEL
Q
VALIDATE ; VALIDATE USER SELECTION ENTRY
F GMRG1=1:1 S GMRG2=$P(GMRGS,",",GMRG1) Q:GMRG2="" S:GMRG2="a" GMRG2="A" D VAL0 Q:'GMRGOOD
Q
VAL0 ; VALIDATION CONT.
I GMRG2["-" S GMRG3=$P(GMRG2,"-"),GMRG2=$P(GMRG2,"-",2),GMRG5=1 S:GMRG2="a" GMRG2="A"
E S GMRG3=$S(GMRG2'="A":+GMRG2,1:GMRG2),GMRG5=0
I '(GMRG3?1N.N!('GMRG5&(GMRG3="A"))!(GMRG3>0)) S GMRGOOD=0 Q
I GMRG5,GMRG2="A" S GMRGOOD=0 Q
S:GMRG2?1N.N1"/;" GMRG2=+GMRG2_";/"
I GMRG2?1N.N!(GMRG2?1N.N1"@")!(GMRG2?1N.N1";")!(GMRG2?1N.N1"/")!(GMRG2?1N.N1"/;")!(GMRG2?1N.N1";/")!(GMRG2="A") D VAL1 Q
I 'GMRG5,(GMRG2?1N.N1";".E!(GMRG2?1N.N1"/".E)) D VALTXT Q ;S GMRG6=$S(GMRG2?1N.N1";".E:";",1:"/"),GMRG4=$P(GMRG2,GMRG6,2,99) S:GMRG6=";"&(GMRG4'="")&($P(GMRGSEL(+GMRG2),"^",2)["]") GMRGOOD=0 Q:'GMRGOOD D VAL1 Q
S GMRGOOD=0
Q
VAL1 ;
I GMRG2="A" S GMRGQUSL("A")=1 Q
I +GMRG2<1!(+GMRG2>GMRGSTAR(1))!(+GMRG2<GMRG3)!(GMRG3<1)!(GMRG3>GMRGSTAR(1)) S GMRGOOD=0 Q
F GMRG10=GMRG3:1:+GMRG2 S:$S('$D(GMRGSEL(GMRG10)):1,GMRG2["/"&($P(GMRGSEL(GMRG10),"^",2)'["]"):1,1:0) GMRGOOD=0 Q:'GMRGOOD S GMRGQUSL(GMRG10)=$P(GMRG2,+GMRG2,2,$L(GMRG2,+GMRG2))
Q
VALTXT ;
I +GMRG2<1!(+GMRG2>GMRGSTAR(1)) S GMRGOOD=0 Q
K GMRG4 S (GMRG12,GMRG13,GMRG11)=0,GMRG14=$L($P(GMRGSEL(+GMRG2),"^",2),"]")-1
F GMRG6=0:0 S GMRG12=$S('GMRG11:$F(GMRG2,";",GMRG12),1:0),GMRG13=$S(GMRG14>0:$F(GMRG2,"/",GMRG13),1:0),GMRG6=GMRG12!GMRG13 Q:GMRG6'>0 D STXT
S GMRG11=0
F GMRG6=0:0 S GMRG6=$O(GMRG4(GMRG6)),GMRG13=$O(GMRG4(GMRG6)),GMRG13=$S(GMRG13>0:GMRG13-1,1:$L(GMRG2)) Q:GMRG6'>0 D STXT1
S GMRG14=$P($G(GMRGSEL(+GMRG2,1)),"^",2),GMRG12=$L($G(GMRG4("A"))) F GMRG6=1:1:$L($P(GMRGSEL(+GMRG2),"^",2),"]")-1 S GMRG12=GMRG12+$L($S($D(GMRG4("I",GMRG6)):GMRG4("I",GMRG6),1:$P(GMRG14,"|",GMRG6+1)))+1
I GMRG12>175 S GMRGOOD=0 Q
S GMRG2=+GMRG2_$G(GMRG4("A")) F GMRG6=0:0 S GMRG6=$O(GMRG4("I",GMRG6)) Q:GMRG6'>0 S GMRG2=GMRG2_$G(GMRG4("I",GMRG6))
S GMRGQUSL(+GMRG2)=$P(GMRG2,+GMRG2,2,$L(GMRG2,+GMRG2))
Q
STXT ;
S:GMRG12>0 GMRG11=1 S:GMRG13>0 GMRG14=GMRG14-1
S:GMRG13>0 GMRG4(GMRG13-1)="I"
S:GMRG12>0 GMRG4(GMRG12-1)="A"
Q
STXT1 ;
S:GMRG4(GMRG6)="I" GMRG11=GMRG11+1,GMRG4("I",GMRG11)=$E(GMRG2,GMRG6,GMRG13)
S:GMRG4(GMRG6)="A" GMRG4("A")=$E(GMRG2,GMRG6,GMRG13)
Q
PROMPT ;
I $P(GMRGTERM(0),"^",6)=""&($P(GMRGTERM(0),"^",7)="") W "Select: " Q
I $P(GMRGTERM(0),"^",7)="" W "Select at least ",$P(GMRGTERM(0),"^",6),": " Q
I $P(GMRGTERM(0),"^",6)="" W "Select up to ",$P(GMRGTERM(0),"^",7),": " Q
I $P(GMRGTERM(0),"^",6)'=$P(GMRGTERM(0),"^",7) W "Select at least ",$P(GMRGTERM(0),"^",6),", but no more than ",$P(GMRGTERM(0),"^",7),": "
E W "Select only ",$P(GMRGTERM(0),"^",6),": "
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRGED3 4527 printed Oct 16, 2024@17:55:58 Page 2
GMRGED3 ;HIRMFO/RM-PATIENT DATA EDIT (cont.) ;9/1/95
+1 ;;3.0;Text Generator;;Jan 24, 1996
EN1 ; REPLACE/WITH TEXT GMRGTX(0)=TEXT TO BE EDITED, GMRGTX(1)=1 FOR
+1 ; INTERNAL TEXT, 0 FOR OTHER KINDS
REPLACE WRITE ?$X+2,GMRGTX(0),!?4,"Replace "
READ GMRG1:DTIME
if GMRG1="^"!(GMRG1="^^")!'$TEST
SET GMRGOUT=1
if GMRGOUT!(GMRG1="")
QUIT
IF GMRG1?1"?".E
DO REPHLP
WRITE !
GOTO REPLACE
+1 IF GMRG1["@"
DO DEL
if GMRGTX(0)=""!GMRGOUT
QUIT
WRITE !
GOTO REPLACE
+2 if GMRG1["..."
DO RANGE
+3 SET GMRG2=GMRG1
SET GMRG3=$SELECT(GMRG2="":0,GMRGTX(0)[GMRG2:1,1:0)
if 'GMRG3
WRITE $CHAR(7)," ??",!
+4 IF GMRG3
DO WITH
if GMRGTX(0)=""!GMRGOUT
QUIT
WRITE !
GOTO REPLACE
+5 WRITE !
GOTO REPLACE
REPHLP WRITE !!?5,"At the ""Replace"" prompt, enter exactly the text you want to replace.",!?5,"You may also enter ""..."" to replace the entire text, ""...(text)"" to",!?5,"replace from the beginning through ""(text)"", or ""(text)..."" to replace"
+1 WRITE !?5,"from ""(text)"" through the end.",!?5,"At the ""With"" prompt, enter the new text.",!?10
+2 QUIT
WITH WRITE " With "
READ GMRG4:DTIME
if GMRG4="^"!(GMRG4="^^")!'$TEST
SET GMRGOUT=1
if GMRGOUT
QUIT
IF GMRG4?1"?".E
DO REPHLP
GOTO WITH
+1 SET GMRGTX(2)=$PIECE(GMRGTX(0),GMRG1)_GMRG4_$PIECE(GMRGTX(0),GMRG1,2,$LENGTH(GMRGTX(0),GMRG1))
IF GMRGTX(2)=""
DO DEL
if GMRGOUT
QUIT
IF GMRGTX(0)'=""
WRITE $CHAR(7)," ??"
QUIT
+2 if GMRGOUT
QUIT
SET GMRGTX(0)=GMRGTX(2)
+3 QUIT
RANGE SET GMRG5=$PIECE(GMRG1,"...")
SET GMRG7=$FIND(GMRGTX(0),GMRG5)
SET GMRG5(0)=$SELECT(GMRG5'=""&GMRG7:GMRG7-$LENGTH(GMRG5),'GMRG7:0,1:1)
+1 SET GMRG6=$PIECE(GMRG1,"...",2)
SET GMRG8=$FIND(GMRGTX(0),GMRG6,GMRG7)
SET GMRG6(0)=$SELECT('GMRG8!'GMRG7:0,GMRG6'="":GMRG8-1,1:$LENGTH(GMRGTX(0)))
SET GMRG1=$EXTRACT(GMRGTX(0),GMRG5(0),GMRG6(0))
+2 QUIT
DEL ; DELETE EXISTING TEXT
+1 IF 'GMRGTX("@")
WRITE !,$CHAR(7),"CANNOT DELETE!!"
QUIT
+2 IF GMRGTX(1)
WRITE !?5,$CHAR(7),"If you delete bracketed text, the original default will become the",!?5,"the new value."
+3 WRITE !?5,$CHAR(7),"WANT TO DELETE"
SET %=0
DO YN^DICN
if %=1
SET GMRGTX(0)=""
if %=-1
SET GMRGOUT=1
if %'=0
QUIT
WRITE !?6,"Answer Yes if you wish to delete this text, else answer No."
GOTO DEL
+4 QUIT
VALIDATE ; VALIDATE USER SELECTION ENTRY
+1 FOR GMRG1=1:1
SET GMRG2=$PIECE(GMRGS,",",GMRG1)
if GMRG2=""
QUIT
if GMRG2="a"
SET GMRG2="A"
DO VAL0
if 'GMRGOOD
QUIT
+2 QUIT
VAL0 ; VALIDATION CONT.
+1 IF GMRG2["-"
SET GMRG3=$PIECE(GMRG2,"-")
SET GMRG2=$PIECE(GMRG2,"-",2)
SET GMRG5=1
if GMRG2="a"
SET GMRG2="A"
+2 IF '$TEST
SET GMRG3=$SELECT(GMRG2'="A":+GMRG2,1:GMRG2)
SET GMRG5=0
+3 IF '(GMRG3?1N.N!('GMRG5&(GMRG3="A"))!(GMRG3>0))
SET GMRGOOD=0
QUIT
+4 IF GMRG5
IF GMRG2="A"
SET GMRGOOD=0
QUIT
+5 if GMRG2?1N.N1"/;"
SET GMRG2=+GMRG2_";/"
+6 IF GMRG2?1N.N!(GMRG2?1N.N1"@")!(GMRG2?1N.N1";")!(GMRG2?1N.N1"/")!(GMRG2?1N.N1"/;")!(GMRG2?1N.N1";/")!(GMRG2="A")
DO VAL1
QUIT
+7 ;S GMRG6=$S(GMRG2?1N.N1";".E:";",1:"/"),GMRG4=$P(GMRG2,GMRG6,2,99) S:GMRG6=";"&(GMRG4'="")&($P(GMRGSEL(+GMRG2),"^",2)["]") GMRGOOD=0 Q:'GMRGOOD D VAL1 Q
IF 'GMRG5
IF (GMRG2?1N.N1";".E!(GMRG2?1N.N1"/".E))
DO VALTXT
QUIT
+8 SET GMRGOOD=0
+9 QUIT
VAL1 ;
+1 IF GMRG2="A"
SET GMRGQUSL("A")=1
QUIT
+2 IF +GMRG2<1!(+GMRG2>GMRGSTAR(1))!(+GMRG2<GMRG3)!(GMRG3<1)!(GMRG3>GMRGSTAR(1))
SET GMRGOOD=0
QUIT
+3 FOR GMRG10=GMRG3:1:+GMRG2
if $SELECT('$DATA(GMRGSEL(GMRG10))
SET GMRGOOD=0
if 'GMRGOOD
QUIT
SET GMRGQUSL(GMRG10)=$PIECE(GMRG2,+GMRG2,2,$LENGTH(GMRG2,+GMRG2))
+4 QUIT
VALTXT ;
+1 IF +GMRG2<1!(+GMRG2>GMRGSTAR(1))
SET GMRGOOD=0
QUIT
+2 KILL GMRG4
SET (GMRG12,GMRG13,GMRG11)=0
SET GMRG14=$LENGTH($PIECE(GMRGSEL(+GMRG2),"^",2),"]")-1
+3 FOR GMRG6=0:0
SET GMRG12=$SELECT('GMRG11:$FIND(GMRG2,";",GMRG12),1:0)
SET GMRG13=$SELECT(GMRG14>0:$FIND(GMRG2,"/",GMRG13),1:0)
SET GMRG6=GMRG12!GMRG13
if GMRG6'>0
QUIT
DO STXT
+4 SET GMRG11=0
+5 FOR GMRG6=0:0
SET GMRG6=$ORDER(GMRG4(GMRG6))
SET GMRG13=$ORDER(GMRG4(GMRG6))
SET GMRG13=$SELECT(GMRG13>0:GMRG13-1,1:$LENGTH(GMRG2))
if GMRG6'>0
QUIT
DO STXT1
+6 SET GMRG14=$PIECE($GET(GMRGSEL(+GMRG2,1)),"^",2)
SET GMRG12=$LENGTH($GET(GMRG4("A")))
FOR GMRG6=1:1:$LENGTH($PIECE(GMRGSEL(+GMRG2),"^",2),"]")-1
SET GMRG12=GMRG12+$LENGTH($SELECT($DATA(GMRG4("I",GMRG6)):GMRG4("I",GMRG6),1:$PIECE(GMRG14,"|",GMRG6+1)))+1
+7 IF GMRG12>175
SET GMRGOOD=0
QUIT
+8 SET GMRG2=+GMRG2_$GET(GMRG4("A"))
FOR GMRG6=0:0
SET GMRG6=$ORDER(GMRG4("I",GMRG6))
if GMRG6'>0
QUIT
SET GMRG2=GMRG2_$GET(GMRG4("I",GMRG6))
+9 SET GMRGQUSL(+GMRG2)=$PIECE(GMRG2,+GMRG2,2,$LENGTH(GMRG2,+GMRG2))
+10 QUIT
STXT ;
+1 if GMRG12>0
SET GMRG11=1
if GMRG13>0
SET GMRG14=GMRG14-1
+2 if GMRG13>0
SET GMRG4(GMRG13-1)="I"
+3 if GMRG12>0
SET GMRG4(GMRG12-1)="A"
+4 QUIT
STXT1 ;
+1 if GMRG4(GMRG6)="I"
SET GMRG11=GMRG11+1
SET GMRG4("I",GMRG11)=$EXTRACT(GMRG2,GMRG6,GMRG13)
+2 if GMRG4(GMRG6)="A"
SET GMRG4("A")=$EXTRACT(GMRG2,GMRG6,GMRG13)
+3 QUIT
PROMPT ;
+1 IF $PIECE(GMRGTERM(0),"^",6)=""&($PIECE(GMRGTERM(0),"^",7)="")
WRITE "Select: "
QUIT
+2 IF $PIECE(GMRGTERM(0),"^",7)=""
WRITE "Select at least ",$PIECE(GMRGTERM(0),"^",6),": "
QUIT
+3 IF $PIECE(GMRGTERM(0),"^",6)=""
WRITE "Select up to ",$PIECE(GMRGTERM(0),"^",7),": "
QUIT
+4 IF $PIECE(GMRGTERM(0),"^",6)'=$PIECE(GMRGTERM(0),"^",7)
WRITE "Select at least ",$PIECE(GMRGTERM(0),"^",6),", but no more than ",$PIECE(GMRGTERM(0),"^",7),": "
+5 IF '$TEST
WRITE "Select only ",$PIECE(GMRGTERM(0),"^",6),": "
+6 QUIT