GMRGPNB1 ;HIRMFO/RM-SENTENCE BUILDER ;1/23/96
;;3.0;Text Generator;;Jan 24, 1996
SNT ;
S GMRGSNT(1)=GMRGA0,(GMRGSPTR("C"),GMRGSPTR)=1,GMRGSPTR("P",1)=0
S GMRGSNT(1,"LEAD")=$S($D(^GMRD(124.2,GMRGA0,4)):^(4),1:""),GMRGSNT(1,"TRAIL")=$S($D(^GMRD(124.2,GMRGA0,5)):^(5),1:""),GMRGSNT(1,"SUB")=0,GMRGSNT(1,0)=$S($D(^GMRD(124.2,GMRGA0,0)):^(0),1:"")
S GMRGF0(0)=GMRGA0
F GMRGF0=0:0 S GMRGF0=$O(^GMRD(124.2,GMRGA0,1,"B",GMRGF0)) Q:GMRGF0'>0 I $S(GMRGCSW&'$D(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$D(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$D(^GMR(124.3,GMRGPDA,1,"B",GMRGF0))) D SNT1
F GMRGSNT=0:0 S GMRGSNT=$O(GMRGSNT(GMRGSNT)) Q:GMRGSNT'>0 I $O(GMRGSNT(GMRGSNT,0))!($P(GMRGSNT(GMRGSNT,0),"^",2)=3) D SNTP^GMRGPNB2
S GMRGSSW=0
Q
SNT1 ;
I GMRGF0(0) Q:'$D(^GMRD(124.2,"AKID",GMRGF0,GMRGF0(0)))
S GMRGC0=GMRGF0 N GMRGF0 S GMRGF0(0)=GMRGC0
S GMRGE0(4)=$S($D(^GMRD(124.2,GMRGC0,4)):^(4),1:""),GMRGE0(5)=$S($D(^GMRD(124.2,GMRGC0,5)):^(5),1:""),GMRGE0(0)=$S($D(^GMRD(124.2,GMRGC0,0)):^(0),1:"")
I (GMRGE0(4)=""&(GMRGE0(5)="")) D INSERT Q
S GMRGSPTR=GMRGSPTR+1,GMRGSPTR("P",GMRGSPTR)=GMRGSPTR("C"),GMRGSPTR("C")=GMRGSPTR,GMRGSNT(GMRGSPTR("C"))=GMRGF0(0),GMRGSNT(GMRGSPTR("C"),"LEAD")=GMRGE0(4),GMRGSNT(GMRGSPTR("C"),"TRAIL")=GMRGE0(5),GMRGSNT(GMRGSPTR("C"),"SUB")=0
S GMRGSNT(GMRGSPTR("C"),0)=GMRGE0(0)
F GMRGF0=0:0 S GMRGF0=$O(^GMRD(124.2,GMRGF0(0),1,"B",GMRGF0)) Q:GMRGF0'>0 D
. Q:'$$ALIST^GMRGRUT0(GMRGPDA,GMRGF0(0),GMRGF0)
. I $S(GMRGCSW&'$D(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$D(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$D(^GMR(124.3,GMRGPDA,1,"B",GMRGF0))) D SNT1
. Q
S GMRGSPTR("C")=GMRGSPTR("P",GMRGSPTR("C"))
Q
INSERT ;
S GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")=0
S GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE")=$S($D(GMRGSNT(GMRGSPTR("C"),"INS"))#2:GMRGSNT(GMRGSPTR("C"),"INS"),1:0),GMRGSNT(GMRGSPTR("C"),"INS")=GMRGF0(0)
F GMRGF0=0:0 S GMRGF0=$O(^GMRD(124.2,GMRGF0(0),1,"B",GMRGF0)) Q:GMRGF0'>0 I $S(GMRGCSW&'$D(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$D(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$D(^GMR(124.3,GMRGPDA,1,"B",GMRGF0))) D INS1
I 'GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE") D INSTRM
I 'GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE") K GMRGSNT(GMRGSPTR("C"),"INS")
E S GMRGSNT(GMRGSPTR("C"),"INS")=GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE") K GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0))
Q
INS1 ;
Q:'$D(^GMRD(124.2,"AKID",GMRGF0,GMRGF0(0))) S GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")=GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")+1
D SNT1
Q
INSTRM ;
S GMRGSNT(GMRGSPTR("C"),"SUB")=GMRGSNT(GMRGSPTR("C"),"SUB")+1,GMRGSNT(GMRGSPTR("C"),GMRGSNT(GMRGSPTR("C"),"SUB"))=GMRGF0(0)
Q
GMRGPNB1 ;HIRMFO/RM-SENTENCE BUILDER ;1/23/96
+1 ;;3.0;Text Generator;;Jan 24, 1996
SNT ;
+1 SET GMRGSNT(1)=GMRGA0
SET (GMRGSPTR("C"),GMRGSPTR)=1
SET GMRGSPTR("P",1)=0
+2 SET GMRGSNT(1,"LEAD")=$SELECT($DATA(^GMRD(124.2,GMRGA0,4)):^(4),1:"")
SET GMRGSNT(1,"TRAIL")=$SELECT($DATA(^GMRD(124.2,GMRGA0,5)):^(5),1:"")
SET GMRGSNT(1,"SUB")=0
SET GMRGSNT(1,0)=$SELECT($DATA(^GMRD(124.2,GMRGA0,0)):^(0),1:"")
+3 SET GMRGF0(0)=GMRGA0
+4 FOR GMRGF0=0:0
SET GMRGF0=$ORDER(^GMRD(124.2,GMRGA0,1,"B",GMRGF0))
IF GMRGF0'>0
QUIT
IF $SELECT(GMRGCSW&'$DATA(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$DATA(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$DATA(^GMR(124.3,GMRGPDA,1,"B",GMRGF0)))
DO SNT1
+5 FOR GMRGSNT=0:0
SET GMRGSNT=$ORDER(GMRGSNT(GMRGSNT))
IF GMRGSNT'>0
QUIT
IF $ORDER(GMRGSNT(GMRGSNT,0))!($PIECE(GMRGSNT(GMRGSNT,0),"^",2)=3)
DO SNTP^GMRGPNB2
+6 SET GMRGSSW=0
+7 QUIT
SNT1 ;
+1 IF GMRGF0(0)
IF '$DATA(^GMRD(124.2,"AKID",GMRGF0,GMRGF0(0)))
QUIT
+2 SET GMRGC0=GMRGF0
NEW GMRGF0
SET GMRGF0(0)=GMRGC0
+3 SET GMRGE0(4)=$SELECT($DATA(^GMRD(124.2,GMRGC0,4)):^(4),1:"")
SET GMRGE0(5)=$SELECT($DATA(^GMRD(124.2,GMRGC0,5)):^(5),1:"")
SET GMRGE0(0)=$SELECT($DATA(^GMRD(124.2,GMRGC0,0)):^(0),1:"")
+4 IF (GMRGE0(4)=""&(GMRGE0(5)=""))
DO INSERT
QUIT
+5 SET GMRGSPTR=GMRGSPTR+1
SET GMRGSPTR("P",GMRGSPTR)=GMRGSPTR("C")
SET GMRGSPTR("C")=GMRGSPTR
SET GMRGSNT(GMRGSPTR("C"))=GMRGF0(0)
SET GMRGSNT(GMRGSPTR("C"),"LEAD")=GMRGE0(4)
SET GMRGSNT(GMRGSPTR("C"),"TRAIL")=GMRGE0(5)
SET GMRGSNT(GMRGSPTR("C"),"SUB")=0
+6 SET GMRGSNT(GMRGSPTR("C"),0)=GMRGE0(0)
+7 FOR GMRGF0=0:0
SET GMRGF0=$ORDER(^GMRD(124.2,GMRGF0(0),1,"B",GMRGF0))
IF GMRGF0'>0
QUIT
Begin DoDot:1
+8 IF '$$ALIST^GMRGRUT0(GMRGPDA,GMRGF0(0),GMRGF0)
QUIT
+9 IF $SELECT(GMRGCSW&'$DATA(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$DATA(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$DATA(^GMR(124.3,GMRGPDA,1,"B",GMRGF0)))
DO SNT1
+10 QUIT
End DoDot:1
+11 SET GMRGSPTR("C")=GMRGSPTR("P",GMRGSPTR("C"))
+12 QUIT
INSERT ;
+1 SET GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")=0
+2 SET GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE")=$SELECT($DATA(GMRGSNT(GMRGSPTR("C"),"INS"))#2:GMRGSNT(GMRGSPTR("C"),"INS"),1:0)
SET GMRGSNT(GMRGSPTR("C"),"INS")=GMRGF0(0)
+3 FOR GMRGF0=0:0
SET GMRGF0=$ORDER(^GMRD(124.2,GMRGF0(0),1,"B",GMRGF0))
IF GMRGF0'>0
QUIT
IF $SELECT(GMRGCSW&'$DATA(^GMR(124.3,GMRGPDA,1,"ALIST",GMRGF0)):0,GMRGCSW:1,1:$DATA(^GMR(124.3,"B",GMRGF0,GMRGPDA))!$DATA(^GMR(124.3,GMRGPDA,1,"B",GMRGF0)))
DO INS1
+4 IF 'GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")
DO INSTRM
+5 IF 'GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE")
KILL GMRGSNT(GMRGSPTR("C"),"INS")
+6 IF '$TEST
SET GMRGSNT(GMRGSPTR("C"),"INS")=GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"PRE")
KILL GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0))
+7 QUIT
INS1 ;
+1 IF '$DATA(^GMRD(124.2,"AKID",GMRGF0,GMRGF0(0)))
QUIT
SET GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")=GMRGSNT(GMRGSPTR("C"),"INS",GMRGF0(0),"CPE")+1
+2 DO SNT1
+3 QUIT
INSTRM ;
+1 SET GMRGSNT(GMRGSPTR("C"),"SUB")=GMRGSNT(GMRGSPTR("C"),"SUB")+1
SET GMRGSNT(GMRGSPTR("C"),GMRGSNT(GMRGSPTR("C"),"SUB"))=GMRGF0(0)
+2 QUIT