- XPDTC ;SFISC/RSD - Transport calls ;10/15/2008
- ;;8.0;KERNEL;**10,15,21,39,41,44,58,83,92,95,100,108,124,131,463,511,517,559**;Jul 10, 1995;Build 5
- ;Per VHA Directive 2004-038, this routine should not be modified.
- Q
- ;^XTMP("XPDT",XPDA,data type,file #,
- ;XPDA=ien of File 9.6, XPDNM=.01 field
- DD ;build DD
- N FILE,FGR,FNAM,Z2,Z3,Z4
- S FILE=0,FGR="^XTMP(""XPDT"",XPDA)",FNAM=$NA(^XPD(9.6,XPDA,4,"APDD"))
- F S FILE=$O(^XPD(9.6,XPDA,4,FILE)) Q:'FILE D
- .S Z2=$G(^XPD(9.6,XPDA,4,FILE,222)),Z3=$G(^(223)),Z4=$G(^(224))
- .Q:'$$DATA^XPDV(FILE,Z2)
- .D FIA^DIFROMSU(FILE,"",FNAM,FGR,Z2,Z3,Z4,XPDVER),DIERR:$D(DIERR)
- Q:'$D(^XTMP("XPDT",XPDA,"FIA"))
- ;send DD and Data
- D DDOUT^DIFROMS("","","",FGR),DIERR:$D(DIERR),DATAOUT^DIFROMS("","","",FGR),DIERR:$D(DIERR)
- Q
- ;XPDERR is checked in XPDT and will abort transport
- DIERR ;record error
- D MSG^DIALOG("EW",.XPD) S XPDERR=1
- Q
- KRN ;build Kernel Files
- ;XPDFILE=file #, XPDOLDA=ien in Build file
- N %,%1,%2,DA,EACT,FACT,FGR,XPDFILE,XPDFL,XPDOLDA,XPDI
- F XPDFILE=1:1 S Y0=$P($T(FILES+XPDFILE^XPDE),";;",2,99) Q:Y0="" S XPDI(+Y0)=Y0
- ;XPDI(XPDFILE)=file;order;x-ref;fact;eact;fpre;epre;fpos;epos;fdel
- S XPDFILE=0
- ;check we are sending something and have the executes
- F S XPDFILE=$O(^XPD(9.6,XPDA,"KRN",XPDFILE)) Q:'XPDFILE S XPDI=$G(XPDI(XPDFILE)) I $O(^(XPDFILE,"NM",0)),XPDI D Q:$D(XPDERR) D:FACT]"" ACT(FACT)
- .S FACT=$P(XPDI,";",4),EACT=$P(XPDI,";",5)
- .;need to add code to check if File and data is already being sent in the File
- .;mult. If it is, don't bother sending it again. DTL(XPDFILE)
- .S XPDOLDA=0,FGR=$$FILE^XPDV(XPDFILE) I FGR="" S XPDERR=1 Q
- .K ^TMP($J,"XPD")
- .F S XPDOLDA=$O(^XPD(9.6,XPDA,"KRN",XPDFILE,"NM",XPDOLDA)) Q:'XPDOLDA S Y0=$G(^(XPDOLDA,0)) D
- ..;XPDFL= 0-send,1-delete,2-link,3-merge,4-attach,5-disable
- ..S XPDFL=$P(Y0,U,3)
- ..;If deleting at site get an unused DA
- ..I XPDFL=1 S DA=$O(@FGR@(" "),-1)+1 F DA=DA:1 Q:'$D(^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA))
- ..;$P(Y0,U,2) is file # for this template, reset Y0 before getting DA
- ..E S:$P(Y0,U,2) $P(Y0,U)=$P(Y0," FILE #") S DA=$$ENTRY^XPDV(Y0)
- ..I 'DA S XPDERR=1 Q
- ..;(-1)=action ^ ien in Build file
- ..S ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA,-1)=+XPDFL_"^"_XPDOLDA
- ..;action 2 - verify children, 4 - verify parent
- ..I XPDFL=2!(XPDFL=4),'$$MENU^XPDV(XPDFILE,DA,XPDFL) S XPDERR=1 Q
- ..;if action is 1,4 or 5 then only send .01 field and set checksum to ""
- ..I XPDFL=1!(XPDFL>3) S ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA,0)=$P(Y0,U),$P(^XPD(9.6,XPDA,"KRN",XPDFILE,"NM",XPDOLDA,0),U,4)="" Q
- ..M ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA)=@FGR@(DA)
- ..;execute entry build action
- ..D:EACT]"" ACT(EACT)
- .;quit if no entries were saved
- .Q:'$O(^XTMP("XPDT",XPDA,"KRN",XPDFILE,0))
- .;XPDI=XPDI(XPDFILE), build x-ref of order to install
- .S %=$P(^DIC(XPDFILE,0),U),^XTMP("XPDT",XPDA,"ORD",+$P(XPDI,";",2),XPDFILE)=XPDI,^(XPDFILE,0)=%
- .Q
- Q
- QUES ;build from Install Questions multiple
- N I,J,K,X,%
- S X=""
- ;the "B" x-ref will give me the order of the questions
- F S X=$O(^XPD(9.6,XPDA,"QUES","B",X)) Q:X="" S I=$$QUES^XPDV(X) S:'I XPDERR=1 D:I
- .S J=0 F S J=$O(^XPD(9.6,XPDA,"QUES",I,J)) Q:J="" D
- ..;tranform J to DIR subscripts
- ..I $L(J)=1!(J="QQ") S ^XTMP("XPDT",XPDA,"QUES",X,$TR(J,"1ABQ","0AB?"))=^(J) Q ;^(J) ref to ^XPD(9.6,XPDA,"QUES",I,J)
- ..;set the word processing fields into DIR("?",#) structure
- ..F %=1:1 Q:'$D(^XPD(9.6,XPDA,"QUES",I,J,%,0)) S ^XTMP("XPDT",XPDA,"QUES",X,$TR(J,"AQ10","A?"),%)=^(0)
- ;send the File questions
- S K=$G(^XPD(9.6,XPDA,"QDEF")) ;Developer Defaults for Questions
- F I=1:2 S X=$P($T(QUESTION+I),";;",2,99) Q:X="" S Y=$P($T(QUESTION+I+1),";;",2) D
- .S ^XTMP("XPDT",XPDA,"QUES",$P(X,";"),0)=$P(X,";",2),^("A")=$P(X,";",3),^("B")=$S($L($P(K,U,I)):$P(K,U,I),1:$P(X,";",4)),^("??")=$P(X,";",5) S:Y]"" ^("M")=Y
- Q
- INT ;build pre,post, & enviroment init routines
- N %,I,R,X,Z
- F I="PRE","INI","INIT" I $G(^XPD(9.6,XPDA,I))]"" S X=^(I) D
- .;remove parameters and seperate routine name from tag^routine
- .S ^XTMP("XPDT",XPDA,I)=X,X=$P(X,"("),R=$P(X,U,$L(X,U)) Q:$D(^("RTN",R))
- .I '$$RTN^XPDV(X,.Z) W !,"Routine ",X,Z S XPDERR=1 Q
- .S %=$$LOAD^XPDTA(R,"0^")
- Q
- BLD ;build Build file, Package file and Order Parameter file
- N %,DIC,X,XPD,XPDI,XPDV,Y
- ;Update the 'Date Distributed' field
- S XPD(9.6,XPDA_",",.02)=$$DT^XLFDT()
- D FILE^DIE("","XPD") K XPD
- ;save version of kernel and fm
- S ^XTMP("XPDT",XPDA,"VER")=$$VERSION^XPDUTL("XU")_U_$$VERSION^XPDUTL("VA FILEMAN")
- S ^XTMP("XPDT",XPDA,"MBREQ")=$P($G(XPDT(XPDT)),U,4)
- M ^XTMP("XPDT",XPDA,"BLD",XPDA)=^XPD(9.6,XPDA)
- ;check national package file pointer
- S XPDI=$P(^XPD(9.6,XPDA,0),U,2)
- I XPDI="" W !,"No Package File Link" Q
- S $P(^XTMP("XPDT",XPDA,"BLD",XPDA,0),U,2)=$$PT^XPDTA("^DIC(9.4)",XPDI)
- ;quit if no pointer to package file
- I '$D(^DIC(9.4,XPDI)) W !,"Package File Link is corrupted" S XPDERR=1 Q
- ;update version multiple in package file,XPD=version^date distributed
- S XPD=$$VER^XPDUTL(XPDNM)_U_$P(^XTMP("XPDT",XPDA,"BLD",XPDA,0),U,4)
- ;XPD(1)=root of description field
- S:$D(^XTMP("XPDT",XPDA,"BLD",XPDA,1)) XPD(1)=$NA(^(1))
- S ^XTMP("XPDT",XPDA,"PKG",XPDI,0)=^DIC(9.4,XPDI,0),^XTMP("XPDT",XPDA,"PKG",XPDI,22,0)="^"_$P(^DD(9.4,22,0),U,2)_"^1^1"
- ;add node 20 to XTMP for Patient Merge
- M ^XTMP("XPDT",XPDA,"PKG",XPDI,20)=^DIC(9.4,XPDI,20)
- ;XPDNM'["*" is a version release
- I XPDNM'["*" D
- .S XPDV=$$PKGVER^XPDIP(XPDI,.XPD)
- .;Merge is used to set single nodes and merge multiples
- .F %=1,5,7,20,"DEV","VERSION" M ^XTMP("XPDT",XPDA,"PKG",XPDI,%)=^DIC(9.4,XPDI,%)
- .;XPDV=ien of Version Multiple
- .I $D(^DIC(9.4,XPDI,22,XPDV))'>9 W !!,"**Version multiple in Package file wasn't updated**",!! S XPDERR=1 Q
- .;get just the current version multiple and make it the first entry in version multiple
- .M ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1)=^DIC(9.4,XPDI,22,XPDV)
- .;check if SEND PATCH HISTORY is NO, kill PAH
- .I $P(XPDT(XPDT),U,5) K ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,"PAH")
- ;this is a patch, %=version number, $P(XPD,U)=patch number
- E D
- .S %=$P(XPD,U),$P(XPD,U)=$P(XPDNM,"*",3),XPDV=$$PKGPAT^XPDIP(XPDI,%,.XPD)
- .S ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,0)=^DIC(9.4,XPDI,22,+XPDV,0)
- .I $D(^DIC(9.4,XPDI,22,+XPDV,"PAH",+$P(XPDV,U,2)))'>9 W !!,"**Patch multiple in Package file wasn't updated**",!! S XPDERR=1 Q
- .M ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,"PAH",1)=^DIC(9.4,XPDI,22,+XPDV,"PAH",+$P(XPDV,U,2))
- .;if CURRENT VERSION was updated in $$PKGPAT, save to TG
- .I $P(XPDV,U,3) S ^XTMP("XPDT",XPDA,"PKG",XPDI,"VERSION")=$P(XPDV,U,3)
- ;save the version ien^patch ien on -1 node
- S ^XTMP("XPDT",XPDA,"PKG",XPDI,-1)="1^1"
- ;resolve Primary Help Frame (0;4)
- S %=+$P(^DIC(9.4,XPDI,0),U,4) S:% $P(^XTMP("XPDT",XPDA,"PKG",XPDI,0),U,4)=$$PT^XPDTA("^DIC(9.2)",%)
- Q
- ;
- ACT(%) ;execute action
- ;user can count on DA,XPDFILE,XPDFL,XPDNM,XPDOLDA being around
- ;DA=ien in ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA)
- ;XPDOLDA=ien in ^XPD(9.6,XPDA,"KRN",XPDIFLE,"NM",XPDOLDA)
- N EACT,FACT,FGR,K0,Y0
- S:%'["^" %="^"_%
- D @% Q
- ;
- ;the following are the default questions for the INSTALL QUESTIONS
- ;in file 9.6, the format is:
- ;;field .01;field 1;field 2;field 4;field 7
- ;;field 10
- QUESTION ;package install questions
- ;;XPF1;Y;Shall I write over your |FLAG| File;YES;^D REP^XPDH
- ;;D XPF1^XPDIQ
- ;;XPF2;Y;Want my data |FLAG| yours;YES;^D DTA^XPDH
- ;;D XPF2^XPDIQ
- ;;XPI1;YO;Want KIDS to INHIBIT LOGONs during the install;NO;^D INHIBIT^XPDH
- ;;D XPI1^XPDIQ
- ;;XPM1;PO^VA(200,:EM;Enter the Coordinator for Mail Group '|FLAG|';;^D MG^XPDH
- ;;D XPM1^XPDIQ
- ;;XPO1;Y;Want KIDS to Rebuild Menu Trees Upon Completion of Install;NO;^D MENU^XPDH
- ;;D XPO1^XPDIQ
- ;;XPZ1;Y;Want to DISABLE Scheduled Options, Menu Options, and Protocols;NO;^D OPT^XPDH
- ;;D XPZ1^XPDIQ
- ;;XPZ2;Y;Want to MOVE routines to other CPUs;NO;^D RTN^XPDH
- ;;D XPZ2^XPDIQ
- XPDTC ;SFISC/RSD - Transport calls ;10/15/2008
- +1 ;;8.0;KERNEL;**10,15,21,39,41,44,58,83,92,95,100,108,124,131,463,511,517,559**;Jul 10, 1995;Build 5
- +2 ;Per VHA Directive 2004-038, this routine should not be modified.
- +3 QUIT
- +4 ;^XTMP("XPDT",XPDA,data type,file #,
- +5 ;XPDA=ien of File 9.6, XPDNM=.01 field
- DD ;build DD
- +1 NEW FILE,FGR,FNAM,Z2,Z3,Z4
- +2 SET FILE=0
- SET FGR="^XTMP(""XPDT"",XPDA)"
- SET FNAM=$NAME(^XPD(9.6,XPDA,4,"APDD"))
- +3 FOR
- SET FILE=$ORDER(^XPD(9.6,XPDA,4,FILE))
- IF 'FILE
- QUIT
- Begin DoDot:1
- +4 SET Z2=$GET(^XPD(9.6,XPDA,4,FILE,222))
- SET Z3=$GET(^(223))
- SET Z4=$GET(^(224))
- +5 IF '$$DATA^XPDV(FILE,Z2)
- QUIT
- +6 DO FIA^DIFROMSU(FILE,"",FNAM,FGR,Z2,Z3,Z4,XPDVER)
- IF $DATA(DIERR)
- DO DIERR
- End DoDot:1
- +7 IF '$DATA(^XTMP("XPDT",XPDA,"FIA"))
- QUIT
- +8 ;send DD and Data
- +9 DO DDOUT^DIFROMS("","","",FGR)
- IF $DATA(DIERR)
- DO DIERR
- DO DATAOUT^DIFROMS("","","",FGR)
- IF $DATA(DIERR)
- DO DIERR
- +10 QUIT
- +11 ;XPDERR is checked in XPDT and will abort transport
- DIERR ;record error
- +1 DO MSG^DIALOG("EW",.XPD)
- SET XPDERR=1
- +2 QUIT
- KRN ;build Kernel Files
- +1 ;XPDFILE=file #, XPDOLDA=ien in Build file
- +2 NEW %,%1,%2,DA,EACT,FACT,FGR,XPDFILE,XPDFL,XPDOLDA,XPDI
- +3 FOR XPDFILE=1:1
- SET Y0=$PIECE($TEXT(FILES+XPDFILE^XPDE),";;",2,99)
- IF Y0=""
- QUIT
- SET XPDI(+Y0)=Y0
- +4 ;XPDI(XPDFILE)=file;order;x-ref;fact;eact;fpre;epre;fpos;epos;fdel
- +5 SET XPDFILE=0
- +6 ;check we are sending something and have the executes
- +7 FOR
- SET XPDFILE=$ORDER(^XPD(9.6,XPDA,"KRN",XPDFILE))
- IF 'XPDFILE
- QUIT
- SET XPDI=$GET(XPDI(XPDFILE))
- IF $ORDER(^(XPDFILE,"NM",0))
- IF XPDI
- Begin DoDot:1
- +8 SET FACT=$PIECE(XPDI,";",4)
- SET EACT=$PIECE(XPDI,";",5)
- +9 ;need to add code to check if File and data is already being sent in the File
- +10 ;mult. If it is, don't bother sending it again. DTL(XPDFILE)
- +11 SET XPDOLDA=0
- SET FGR=$$FILE^XPDV(XPDFILE)
- IF FGR=""
- SET XPDERR=1
- QUIT
- +12 KILL ^TMP($JOB,"XPD")
- +13 FOR
- SET XPDOLDA=$ORDER(^XPD(9.6,XPDA,"KRN",XPDFILE,"NM",XPDOLDA))
- IF 'XPDOLDA
- QUIT
- SET Y0=$GET(^(XPDOLDA,0))
- Begin DoDot:2
- +14 ;XPDFL= 0-send,1-delete,2-link,3-merge,4-attach,5-disable
- +15 SET XPDFL=$PIECE(Y0,U,3)
- +16 ;If deleting at site get an unused DA
- +17 IF XPDFL=1
- SET DA=$ORDER(@FGR@(" "),-1)+1
- FOR DA=DA:1
- IF '$DATA(^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA))
- QUIT
- +18 ;$P(Y0,U,2) is file # for this template, reset Y0 before getting DA
- +19 IF '$TEST
- IF $PIECE(Y0,U,2)
- SET $PIECE(Y0,U)=$PIECE(Y0," FILE #")
- SET DA=$$ENTRY^XPDV(Y0)
- +20 IF 'DA
- SET XPDERR=1
- QUIT
- +21 ;(-1)=action ^ ien in Build file
- +22 SET ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA,-1)=+XPDFL_"^"_XPDOLDA
- +23 ;action 2 - verify children, 4 - verify parent
- +24 IF XPDFL=2!(XPDFL=4)
- IF '$$MENU^XPDV(XPDFILE,DA,XPDFL)
- SET XPDERR=1
- QUIT
- +25 ;if action is 1,4 or 5 then only send .01 field and set checksum to ""
- +26 IF XPDFL=1!(XPDFL>3)
- SET ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA,0)=$PIECE(Y0,U)
- SET $PIECE(^XPD(9.6,XPDA,"KRN",XPDFILE,"NM",XPDOLDA,0),U,4)=""
- QUIT
- +27 MERGE ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA)=@FGR@(DA)
- +28 ;execute entry build action
- +29 IF EACT]""
- DO ACT(EACT)
- End DoDot:2
- +30 ;quit if no entries were saved
- +31 IF '$ORDER(^XTMP("XPDT",XPDA,"KRN",XPDFILE,0))
- QUIT
- +32 ;XPDI=XPDI(XPDFILE), build x-ref of order to install
- +33 SET %=$PIECE(^DIC(XPDFILE,0),U)
- SET ^XTMP("XPDT",XPDA,"ORD",+$PIECE(XPDI,";",2),XPDFILE)=XPDI
- SET ^(XPDFILE,0)=%
- +34 QUIT
- End DoDot:1
- IF $DATA(XPDERR)
- QUIT
- IF FACT]""
- DO ACT(FACT)
- +35 QUIT
- QUES ;build from Install Questions multiple
- +1 NEW I,J,K,X,%
- +2 SET X=""
- +3 ;the "B" x-ref will give me the order of the questions
- +4 FOR
- SET X=$ORDER(^XPD(9.6,XPDA,"QUES","B",X))
- IF X=""
- QUIT
- SET I=$$QUES^XPDV(X)
- IF 'I
- SET XPDERR=1
- IF I
- Begin DoDot:1
- +5 SET J=0
- FOR
- SET J=$ORDER(^XPD(9.6,XPDA,"QUES",I,J))
- IF J=""
- QUIT
- Begin DoDot:2
- +6 ;tranform J to DIR subscripts
- +7 ;^(J) ref to ^XPD(9.6,XPDA,"QUES",I,J)
- IF $LENGTH(J)=1!(J="QQ")
- SET ^XTMP("XPDT",XPDA,"QUES",X,$TRANSLATE(J,"1ABQ","0AB?"))=^(J)
- QUIT
- +8 ;set the word processing fields into DIR("?",#) structure
- +9 FOR %=1:1
- IF '$DATA(^XPD(9.6,XPDA,"QUES",I,J,%,0))
- QUIT
- SET ^XTMP("XPDT",XPDA,"QUES",X,$TRANSLATE(J,"AQ10","A?"),%)=^(0)
- End DoDot:2
- End DoDot:1
- +10 ;send the File questions
- +11 ;Developer Defaults for Questions
- SET K=$GET(^XPD(9.6,XPDA,"QDEF"))
- +12 FOR I=1:2
- SET X=$PIECE($TEXT(QUESTION+I),";;",2,99)
- IF X=""
- QUIT
- SET Y=$PIECE($TEXT(QUESTION+I+1),";;",2)
- Begin DoDot:1
- +13 SET ^XTMP("XPDT",XPDA,"QUES",$PIECE(X,";"),0)=$PIECE(X,";",2)
- SET ^("A")=$PIECE(X,";",3)
- SET ^("B")=$SELECT($LENGTH($PIECE(K,U,I)):$PIECE(K,U,I),1:$PIECE(X,";",4))
- SET ^("??")=$PIECE(X,";",5)
- IF Y]""
- SET ^("M")=Y
- End DoDot:1
- +14 QUIT
- INT ;build pre,post, & enviroment init routines
- +1 NEW %,I,R,X,Z
- +2 FOR I="PRE","INI","INIT"
- IF $GET(^XPD(9.6,XPDA,I))]""
- SET X=^(I)
- Begin DoDot:1
- +3 ;remove parameters and seperate routine name from tag^routine
- +4 SET ^XTMP("XPDT",XPDA,I)=X
- SET X=$PIECE(X,"(")
- SET R=$PIECE(X,U,$LENGTH(X,U))
- IF $DATA(^("RTN",R))
- QUIT
- +5 IF '$$RTN^XPDV(X,.Z)
- WRITE !,"Routine ",X,Z
- SET XPDERR=1
- QUIT
- +6 SET %=$$LOAD^XPDTA(R,"0^")
- End DoDot:1
- +7 QUIT
- BLD ;build Build file, Package file and Order Parameter file
- +1 NEW %,DIC,X,XPD,XPDI,XPDV,Y
- +2 ;Update the 'Date Distributed' field
- +3 SET XPD(9.6,XPDA_",",.02)=$$DT^XLFDT()
- +4 DO FILE^DIE("","XPD")
- KILL XPD
- +5 ;save version of kernel and fm
- +6 SET ^XTMP("XPDT",XPDA,"VER")=$$VERSION^XPDUTL("XU")_U_$$VERSION^XPDUTL("VA FILEMAN")
- +7 SET ^XTMP("XPDT",XPDA,"MBREQ")=$PIECE($GET(XPDT(XPDT)),U,4)
- +8 MERGE ^XTMP("XPDT",XPDA,"BLD",XPDA)=^XPD(9.6,XPDA)
- +9 ;check national package file pointer
- +10 SET XPDI=$PIECE(^XPD(9.6,XPDA,0),U,2)
- +11 IF XPDI=""
- WRITE !,"No Package File Link"
- QUIT
- +12 SET $PIECE(^XTMP("XPDT",XPDA,"BLD",XPDA,0),U,2)=$$PT^XPDTA("^DIC(9.4)",XPDI)
- +13 ;quit if no pointer to package file
- +14 IF '$DATA(^DIC(9.4,XPDI))
- WRITE !,"Package File Link is corrupted"
- SET XPDERR=1
- QUIT
- +15 ;update version multiple in package file,XPD=version^date distributed
- +16 SET XPD=$$VER^XPDUTL(XPDNM)_U_$PIECE(^XTMP("XPDT",XPDA,"BLD",XPDA,0),U,4)
- +17 ;XPD(1)=root of description field
- +18 IF $DATA(^XTMP("XPDT",XPDA,"BLD",XPDA,1))
- SET XPD(1)=$NAME(^(1))
- +19 SET ^XTMP("XPDT",XPDA,"PKG",XPDI,0)=^DIC(9.4,XPDI,0)
- SET ^XTMP("XPDT",XPDA,"PKG",XPDI,22,0)="^"_$PIECE(^DD(9.4,22,0),U,2)_"^1^1"
- +20 ;add node 20 to XTMP for Patient Merge
- +21 MERGE ^XTMP("XPDT",XPDA,"PKG",XPDI,20)=^DIC(9.4,XPDI,20)
- +22 ;XPDNM'["*" is a version release
- +23 IF XPDNM'["*"
- Begin DoDot:1
- +24 SET XPDV=$$PKGVER^XPDIP(XPDI,.XPD)
- +25 ;Merge is used to set single nodes and merge multiples
- +26 FOR %=1,5,7,20,"DEV","VERSION"
- MERGE ^XTMP("XPDT",XPDA,"PKG",XPDI,%)=^DIC(9.4,XPDI,%)
- +27 ;XPDV=ien of Version Multiple
- +28 IF $DATA(^DIC(9.4,XPDI,22,XPDV))'>9
- WRITE !!,"**Version multiple in Package file wasn't updated**",!!
- SET XPDERR=1
- QUIT
- +29 ;get just the current version multiple and make it the first entry in version multiple
- +30 MERGE ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1)=^DIC(9.4,XPDI,22,XPDV)
- +31 ;check if SEND PATCH HISTORY is NO, kill PAH
- +32 IF $PIECE(XPDT(XPDT),U,5)
- KILL ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,"PAH")
- End DoDot:1
- +33 ;this is a patch, %=version number, $P(XPD,U)=patch number
- +34 IF '$TEST
- Begin DoDot:1
- +35 SET %=$PIECE(XPD,U)
- SET $PIECE(XPD,U)=$PIECE(XPDNM,"*",3)
- SET XPDV=$$PKGPAT^XPDIP(XPDI,%,.XPD)
- +36 SET ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,0)=^DIC(9.4,XPDI,22,+XPDV,0)
- +37 IF $DATA(^DIC(9.4,XPDI,22,+XPDV,"PAH",+$PIECE(XPDV,U,2)))'>9
- WRITE !!,"**Patch multiple in Package file wasn't updated**",!!
- SET XPDERR=1
- QUIT
- +38 MERGE ^XTMP("XPDT",XPDA,"PKG",XPDI,22,1,"PAH",1)=^DIC(9.4,XPDI,22,+XPDV,"PAH",+$PIECE(XPDV,U,2))
- +39 ;if CURRENT VERSION was updated in $$PKGPAT, save to TG
- +40 IF $PIECE(XPDV,U,3)
- SET ^XTMP("XPDT",XPDA,"PKG",XPDI,"VERSION")=$PIECE(XPDV,U,3)
- End DoDot:1
- +41 ;save the version ien^patch ien on -1 node
- +42 SET ^XTMP("XPDT",XPDA,"PKG",XPDI,-1)="1^1"
- +43 ;resolve Primary Help Frame (0;4)
- +44 SET %=+$PIECE(^DIC(9.4,XPDI,0),U,4)
- IF %
- SET $PIECE(^XTMP("XPDT",XPDA,"PKG",XPDI,0),U,4)=$$PT^XPDTA("^DIC(9.2)",%)
- +45 QUIT
- +46 ;
- ACT(%) ;execute action
- +1 ;user can count on DA,XPDFILE,XPDFL,XPDNM,XPDOLDA being around
- +2 ;DA=ien in ^XTMP("XPDT",XPDA,"KRN",XPDFILE,DA)
- +3 ;XPDOLDA=ien in ^XPD(9.6,XPDA,"KRN",XPDIFLE,"NM",XPDOLDA)
- +4 NEW EACT,FACT,FGR,K0,Y0
- +5 IF %'["^"
- SET %="^"_%
- +6 DO @%
- QUIT
- +7 ;
- +8 ;the following are the default questions for the INSTALL QUESTIONS
- +9 ;in file 9.6, the format is:
- +10 ;;field .01;field 1;field 2;field 4;field 7
- +11 ;;field 10
- QUESTION ;package install questions
- +1 ;;XPF1;Y;Shall I write over your |FLAG| File;YES;^D REP^XPDH
- +2 ;;D XPF1^XPDIQ
- +3 ;;XPF2;Y;Want my data |FLAG| yours;YES;^D DTA^XPDH
- +4 ;;D XPF2^XPDIQ
- +5 ;;XPI1;YO;Want KIDS to INHIBIT LOGONs during the install;NO;^D INHIBIT^XPDH
- +6 ;;D XPI1^XPDIQ
- +7 ;;XPM1;PO^VA(200,:EM;Enter the Coordinator for Mail Group '|FLAG|';;^D MG^XPDH
- +8 ;;D XPM1^XPDIQ
- +9 ;;XPO1;Y;Want KIDS to Rebuild Menu Trees Upon Completion of Install;NO;^D MENU^XPDH
- +10 ;;D XPO1^XPDIQ
- +11 ;;XPZ1;Y;Want to DISABLE Scheduled Options, Menu Options, and Protocols;NO;^D OPT^XPDH
- +12 ;;D XPZ1^XPDIQ
- +13 ;;XPZ2;Y;Want to MOVE routines to other CPUs;NO;^D RTN^XPDH
- +14 ;;D XPZ2^XPDIQ