DG477PST ;BIR/DRI-DG*5.3*477 PATCH POST INSTALL ROUTINE ;9/11/02
;;5.3;Registration;**477,1015**;Aug 13, 1993;Build 21
;
;Reference to TRIG^DICR supported by IA #3405
;
POST ;Post-init functions
D POST1,POST2
Q
;
POST1 ;recompile input templates and update triggered fields
;Recompile input templates
D COMPILE
;Update triggered fields
D TRIG
Q
;
COMPILE N GLOBAL,FIELD,CFIELD,NFIELD,TEMPLATP,TEMPLATN
D BMES^XPDUTL("Beginning to compile templates on the PATIENT (#2) file.")
;
S NFIELD=$P($T(AFIELDS),";;",2) ;get the fields that have new xref
;
F GLOBAL="^DIE","^DIPT" DO
.I GLOBAL="^DIE" D BMES^XPDUTL(" Compiling Input Templates")
.I GLOBAL="^DIPT" DO
. . D BMES^XPDUTL(" ")
. . D BMES^XPDUTL(" Compiling Print Templates")
.;
.S FIELD=0
.; go find templates on fields that have added cross-ref
.F S FIELD=$O(@GLOBAL@("AF",2,FIELD)) Q:'FIELD DO
. .;
. .S CFIELD=","_FIELD_","
. .;if we didn't add the cross reference, quit
. .I NFIELD'[CFIELD Q
. .;
. .S TEMPLATP=0
. .F S TEMPLATP=$O(@GLOBAL@("AF",2,FIELD,TEMPLATP)) Q:'TEMPLATP DO
. . . S TEMPLATN=$P($G(@GLOBAL@(TEMPLATP,0)),"^",1)
. . . I TEMPLATN="" DO Q
. . . . D BMES^XPDUTL("Could not compile template "_TEMPLATN_$C(13,10)_"Please review!")
. . . .;
. . . S X=$P($G(@GLOBAL@(TEMPLATP,"ROUOLD")),"^")
. . . I X=""&($D(@GLOBAL@(TEMPLATP,"ROU"))'=0) DO Q
. . . . D BMES^XPDUTL("Could not find routine for template "_TEMPLATN_$C(13,10)_"Please review!")
. . . I X=""&($D(@GLOBAL@(TEMPLATP,"ROU"))=0) Q
. . . I $D(FIELD(X)) Q ;already compiled
. . .;
. . . S FIELD(X)="" ; remember the template was compiled
. . . S Y=TEMPLATP ; set up the call for fman
. . . S DMAX=$$ROUSIZE^DILF
. . . I GLOBAL="^DIE" D EN^DIEZ Q
. . . I GLOBAL="^DIPT" D EN^DIPZ Q
.;
S (X,Y)=""
D BMES^XPDUTL("The following routine namespace was compiled:")
F S X=$O(FIELD(X)) Q:X="" DO
. S Y=$G(Y)+1 S PRINT(Y)=" "_X_"*"
;
D MES^XPDUTL(.PRINT)
K X,Y,DMAX,PRINT
Q
;
;these are the fields that have a new cross-ref
AFIELDS ;;,.313,
Q
;
TRIG ;Update trigger definitions
N DGFLD
D BMES^XPDUTL("Updating trigger field definitions...")
F DGFLD=.092,.093 S DGFLD(2,DGFLD)=""
D T1(.DGFLD)
Q
;
T1(DGFLD) ;Check/update triggering field definitions
;Input: DGFLD=array of fields to update
N DGOUT,DGFILE
D TRIG^DICR(.DGFLD,.DGOUT)
S DGFILE=0 F S DGFILE=$O(DGOUT(DGFILE)) Q:'DGFILE D
.S DGFLD=0 F S DGFLD=$O(DGOUT(DGFILE,DGFLD)) Q:'DGFLD D
..D MES^XPDUTL(" Field #"_DGFLD_" of file #"_DGFILE_" updated.")
..Q
.Q
Q
;
POST2 ;translate marital status from 'n' to 'never married'
;caused by dg*5.3*474 initially installed 10/31/2002
NEW FIELD,FILE,GLO,IEN,MSCNT,PDR,VAL
D BMES^XPDUTL(" Translating MARITAL STATUS from 'N' to 'NEVER MARRIED' in the")
D MES^XPDUTL(" PATIENT DATA ELEMENTS (#391.99) file for PATIENT DATA REVIEWS.")
S GLO="^DGCN(391.98,""EVT"",3021030)",FILE=2,FIELD=.05,MSCNT=0
F S GLO=$Q(@GLO) Q:$QS(GLO,2)'="EVT" S PDR=$QS(GLO,4) I PDR S IEN=$O(^DGCN(391.99,"AKY",PDR,FILE,FIELD,"")) I IEN Q ;find first possible affected pdr
I $G(IEN) S IEN=IEN-1 F S IEN=$O(^DGCN(391.99,"ASRT",FILE,FIELD,IEN)) Q:'IEN S VAL=$G(^DGCN(391.99,IEN,"VAL")) I VAL="N" S MSCNT=MSCNT+1 D
. D UPD(IEN,50,"NEVER MARRIED"),UPD(IEN,.06,"@") ;loop through subsequent marital status elements and update if necessary
D BMES^XPDUTL(" "_MSCNT_" MARITAL STATUS entries were translated.")
Q
;
UPD(DA,FLD,VAL) ;update value
L +^DGCN(391.99,DA,0):10 I '$T D BMES^XPDUTL("Unable to lock entry "_DA_" in the PATIENT DATA ELEMENT (#391.99) file.") Q
S DIE="^DGCN(391.99,"
S DR=FLD_"///^S X=VAL"
D ^DIE K DIE,DR
L -^DGCN(391.99,DA,0)
Q
DG477PST ;BIR/DRI-DG*5.3*477 PATCH POST INSTALL ROUTINE ;9/11/02
+1 ;;5.3;Registration;**477,1015**;Aug 13, 1993;Build 21
+2 ;
+3 ;Reference to TRIG^DICR supported by IA #3405
+4 ;
POST ;Post-init functions
+1 DO POST1
DO POST2
+2 QUIT
+3 ;
POST1 ;recompile input templates and update triggered fields
+1 ;Recompile input templates
+2 DO COMPILE
+3 ;Update triggered fields
+4 DO TRIG
+5 QUIT
+6 ;
COMPILE NEW GLOBAL,FIELD,CFIELD,NFIELD,TEMPLATP,TEMPLATN
+1 DO BMES^XPDUTL("Beginning to compile templates on the PATIENT (#2) file.")
+2 ;
+3 ;get the fields that have new xref
SET NFIELD=$PIECE($TEXT(AFIELDS),";;",2)
+4 ;
+5 FOR GLOBAL="^DIE","^DIPT"
Begin DoDot:1
+6 IF GLOBAL="^DIE"
DO BMES^XPDUTL(" Compiling Input Templates")
+7 IF GLOBAL="^DIPT"
Begin DoDot:2
+8 DO BMES^XPDUTL(" ")
+9 DO BMES^XPDUTL(" Compiling Print Templates")
End DoDot:2
+10 ;
+11 SET FIELD=0
+12 ; go find templates on fields that have added cross-ref
+13 FOR
SET FIELD=$ORDER(@GLOBAL@("AF",2,FIELD))
IF 'FIELD
QUIT
Begin DoDot:2
+14 ;
+15 SET CFIELD=","_FIELD_","
+16 ;if we didn't add the cross reference, quit
+17 IF NFIELD'[CFIELD
QUIT
+18 ;
+19 SET TEMPLATP=0
+20 FOR
SET TEMPLATP=$ORDER(@GLOBAL@("AF",2,FIELD,TEMPLATP))
IF 'TEMPLATP
QUIT
Begin DoDot:3
+21 SET TEMPLATN=$PIECE($GET(@GLOBAL@(TEMPLATP,0)),"^",1)
+22 IF TEMPLATN=""
Begin DoDot:4
+23 DO BMES^XPDUTL("Could not compile template "_TEMPLATN_$CHAR(13,10)_"Please review!")
+24 ;
End DoDot:4
QUIT
+25 SET X=$PIECE($GET(@GLOBAL@(TEMPLATP,"ROUOLD")),"^")
+26 IF X=""&($DATA(@GLOBAL@(TEMPLATP,"ROU"))'=0)
Begin DoDot:4
+27 DO BMES^XPDUTL("Could not find routine for template "_TEMPLATN_$CHAR(13,10)_"Please review!")
End DoDot:4
QUIT
+28 IF X=""&($DATA(@GLOBAL@(TEMPLATP,"ROU"))=0)
QUIT
+29 ;already compiled
IF $DATA(FIELD(X))
QUIT
+30 ;
+31 ; remember the template was compiled
SET FIELD(X)=""
+32 ; set up the call for fman
SET Y=TEMPLATP
+33 SET DMAX=$$ROUSIZE^DILF
+34 IF GLOBAL="^DIE"
DO EN^DIEZ
QUIT
+35 IF GLOBAL="^DIPT"
DO EN^DIPZ
QUIT
End DoDot:3
End DoDot:2
+36 ;
End DoDot:1
+37 SET (X,Y)=""
+38 DO BMES^XPDUTL("The following routine namespace was compiled:")
+39 FOR
SET X=$ORDER(FIELD(X))
IF X=""
QUIT
Begin DoDot:1
+40 SET Y=$GET(Y)+1
SET PRINT(Y)=" "_X_"*"
End DoDot:1
+41 ;
+42 DO MES^XPDUTL(.PRINT)
+43 KILL X,Y,DMAX,PRINT
+44 QUIT
+45 ;
+46 ;these are the fields that have a new cross-ref
AFIELDS ;;,.313,
+1 QUIT
+2 ;
TRIG ;Update trigger definitions
+1 NEW DGFLD
+2 DO BMES^XPDUTL("Updating trigger field definitions...")
+3 FOR DGFLD=.092,.093
SET DGFLD(2,DGFLD)=""
+4 DO T1(.DGFLD)
+5 QUIT
+6 ;
T1(DGFLD) ;Check/update triggering field definitions
+1 ;Input: DGFLD=array of fields to update
+2 NEW DGOUT,DGFILE
+3 DO TRIG^DICR(.DGFLD,.DGOUT)
+4 SET DGFILE=0
FOR
SET DGFILE=$ORDER(DGOUT(DGFILE))
IF 'DGFILE
QUIT
Begin DoDot:1
+5 SET DGFLD=0
FOR
SET DGFLD=$ORDER(DGOUT(DGFILE,DGFLD))
IF 'DGFLD
QUIT
Begin DoDot:2
+6 DO MES^XPDUTL(" Field #"_DGFLD_" of file #"_DGFILE_" updated.")
+7 QUIT
End DoDot:2
+8 QUIT
End DoDot:1
+9 QUIT
+10 ;
POST2 ;translate marital status from 'n' to 'never married'
+1 ;caused by dg*5.3*474 initially installed 10/31/2002
+2 NEW FIELD,FILE,GLO,IEN,MSCNT,PDR,VAL
+3 DO BMES^XPDUTL(" Translating MARITAL STATUS from 'N' to 'NEVER MARRIED' in the")
+4 DO MES^XPDUTL(" PATIENT DATA ELEMENTS (#391.99) file for PATIENT DATA REVIEWS.")
+5 SET GLO="^DGCN(391.98,""EVT"",3021030)"
SET FILE=2
SET FIELD=.05
SET MSCNT=0
+6 ;find first possible affected pdr
FOR
SET GLO=$QUERY(@GLO)
IF $QSUBSCRIPT(GLO,2)'="EVT"
QUIT
SET PDR=$QSUBSCRIPT(GLO,4)
IF PDR
SET IEN=$ORDER(^DGCN(391.99,"AKY",PDR,FILE,FIELD,""))
IF IEN
QUIT
+7 IF $GET(IEN)
SET IEN=IEN-1
FOR
SET IEN=$ORDER(^DGCN(391.99,"ASRT",FILE,FIELD,IEN))
IF 'IEN
QUIT
SET VAL=$GET(^DGCN(391.99,IEN,"VAL"))
IF VAL="N"
SET MSCNT=MSCNT+1
Begin DoDot:1
+8 ;loop through subsequent marital status elements and update if necessary
DO UPD(IEN,50,"NEVER MARRIED")
DO UPD(IEN,.06,"@")
End DoDot:1
+9 DO BMES^XPDUTL(" "_MSCNT_" MARITAL STATUS entries were translated.")
+10 QUIT
+11 ;
UPD(DA,FLD,VAL) ;update value
+1 LOCK +^DGCN(391.99,DA,0):10
IF '$TEST
DO BMES^XPDUTL("Unable to lock entry "_DA_" in the PATIENT DATA ELEMENT (#391.99) file.")
QUIT
+2 SET DIE="^DGCN(391.99,"
+3 SET DR=FLD_"///^S X=VAL"
+4 DO ^DIE
KILL DIE,DR
+5 LOCK -^DGCN(391.99,DA,0)
+6 QUIT